#include <fstream.h>
#include <string.h>
#include <iomanip.h>
class reader
{
private:
char name[10]//读者姓名
public:
void get() //输入读者资料
{
cout <<"请输入读者编号: "
cin>>code
cout <<"请输入读者姓名: "
cin>>name
}
void print() //打印读者资料
{
cout <<"读者编号: " <<code <<endl
cout <<"读者姓名: " <<name <<endl
}
char* getcode()
{
return(code)
}
char* getname()
{
return(name)
}
}
class book
{
private:
char code[4]//书籍编号
char name[10]//书籍名称
char writer[10]//书籍作者
char concern[10]//书籍出版社
float price//书籍价格
public:
char flag//判断此书是否借出
book() //利用构造函数,将flag变量默认为 'N ',即没有借出
{
flag='N'
}
void get() //输入书籍资料
{
cout <<"请输入书籍编号: "
cin>>code
cout <<"请输入书籍名称: "
cin>>name
cout <<"请输入书籍作者: "
cin>>writer
cout <<"请输入书籍出版社: "
cin>>concern
cout <<"请输入书籍价格: "
cin>>price
}
void print()
{
cout <<"书籍编号: " <<code <<endl
cout <<"书籍名称: " <<name <<endl
cout <<"书籍作者: " <<writer <<endl
cout <<"书籍出版社: " <<concern <<endl
cout <<"书籍价格: " <<price <<endl
}
void getflag()
{
cout <<"确认要租此书吗?[Y/N] "
cin>>flag
}
char* getcode()
{
return(code)
}
char* getname()
{
return(name)
}
}
class readerborrowbook //用于记录租书情况的类
{
public:
char readercode[4]
char bookcode[4]
void borrowbook()
{
cout <<"请输入您的读者编号: "
cin>>readercode
cout <<"请输入您要借的书籍的编号: "
cin>>bookcode
}
void print()
{
cout <<"借书证号: " <<readercode <<endl
cout <<"借的书籍: " <<bookcode <<endl
}
}
reader readerzlk[50]//定义读者库数组(读者库)
book library[100]//定义书籍数组(书籍库)
readerborrowbook rbb[100]//定义借书记录数组(借书库)
fstream file_reader//定义读者库文件对象(全局的)
fstream file_book//定义书籍库文件对象(全局的)
fstream file_rbb//定义借书库文件对象(全局的)
int r = 0//记录读者个数
int b = 0//记录书籍本数
int t = 0//记录借书记录
void CSHreader() //初始化读者库函数
{
file_reader.open( "readerfile.txt ", ios::in)//打开文件
file_reader.read((char*)&readerzlk[0], sizeof(readerzlk[0]))//将文件内容读到读者库数组的第一个对象
if (strlen(readerzlk[0].getcode()) == 0)//判断第一个对象的内容是否为空,如为空,则文件为空
{
cout <<"读者库信息为空,请建立读者信息。 " <<endl
}
else
{
while(!file_reader.eof())//否则将文件后面的内容读到读者库数组后面的对象之中,从而达到初始化的效果
{
r++
file_reader.read((char*)&readerzlk[r], sizeof(readerzlk[r]))
if (r >= 50)
{
cout <<"读者库已满! " <<endl
break
}
}
cout <<"初始化读者库成功…… " <<endl
}
file_reader.close()
}
void CSHbook() //初始化书籍库函数(注释同读者库一样)
{
file_book.open( "bookfile.txt ", ios::in)
file_book.read((char*)&library[0], sizeof(library[0]))
if (strlen(library[0].getcode()) == 0)
{
cout <<"书籍库信息为空,请建立书籍信息。 " <<endl
}
else
{
while(!file_book.eof())
{
b++
file_book.read((char*)&library[b], sizeof(library[b]))
if (b >= 100)
{
cout <<"书籍库已满! " <<endl
break
}
}
cout <<"初始化书籍库成功…… " <<endl
}
file_book.close()
}
void CSHrbb() //初始化借书库
{
file_rbb.open( "rbb.txt ", ios::in)
file_rbb.read((char*)&rbb[0], sizeof(rbb[0]))
if (strlen(rbb[0].readercode) == 0)
{
cout <<"借书库信息为空,暂时无借书情况。 " <<endl
}
else
{
while (!file_rbb.eof())
{
t++
file_rbb.read((char*)&rbb[t], sizeof(rbb[t]))
if (t >=100)
{
cout <<"借书库已满,请速让读者归还书籍。 " <<endl
break
}
}
cout <<"初始化借书库成功…… " <<endl
}
file_rbb.close()
}
void borrowbook() //借书函数
{
int d = 0//逻辑判断值
int i = 0
char flag = 'y'
readerborrowbook temp
while (flag == 'y' || flag == 'Y')
{
temp.borrowbook()
for(i=0i<ri++)//判断有无此读者编号
{
if(strcmp(temp.readercode, readerzlk[i].getcode()) ==0)
{
d=1//为1则有此编号,否则无此编号
break
}
}
if (d == 0)
{
cout <<"对不起!您的编号不存在! " <<endl
return
}
d =0, i =0 //恢复初始值,进行书的编号的判断
for (i=0i<bi++) //判断有无此书籍编号
{
if (strcmp(temp.bookcode, library[i].getcode()) == 0)
{
d = 1//同上
break
}
}
if (d==0)
{
cout <<"对不起!我们这里没有此书籍! " <<endl
return
}
//判断书籍是否借出,本意是想通过 ".flag "是否等于 'Y '或 'y '来判断书是否借出的,可是总是判断不成功。
//本意是if (library[i].flag == 'Y ' || library[i].flag == 'y ')
// {cout <<"非常抱歉,此书已经租出。 " <<endlreturn}
int j = 0
for (j = 0 j < t j++)
{
if (strcmp(temp.bookcode, rbb[j].bookcode) == 0)
{
cout <<"非常抱歉,此书已经租出。 " <<endl
return
}
}
library[i].getflag()
if (library[i].flag == 'Y ' || library[i].flag == 'y ')
{
file_rbb.open( "rbb.txt ", ios::app)
library[i].print()
rbb[t] = temp
file_rbb.write((char*)&rbb[t], sizeof(rbb[t]))
t++
cout <<"借书成功!请按时归还! " <<endl
file_rbb.close()
}
else
{
cout <<"您不中意此书吗?借书未成功。 " <<endl
}
cout <<"要继续租书吗?[Y/N] "
cin>>flag
}
}
void Printborrowbook() //查看借书情况函数
{
int i = 0
for (i = 0 i < t i++)
{
rbb[i].print()
cout <<endl
}
}
void borrow()
{
char ch
cout <<"1.凭证借书 2.查看借书情况 3.退出 " <<endl
cout <<"请输入功能代码: "
cin>>ch
switch (ch)
{
case '1 ':
borrowbook()
break
case '2 ':
Printborrowbook()
break
case '3 ':
return
break
default:
cout <<"输入错误,请重新输入: " <<endl
}
}
void replacebook() //还书模块
{
char bookcode[4]
int i = 0, d = 0
cout <<"您要还的书籍的编号是: "
cin>>bookcode
for (i = 0 i < t i++)
{
if (strcmp(bookcode, rbb[i].bookcode) == 0)
{
d = 1//逻辑判断,为1则租出,否则没有租出
break//因为书籍编号具有唯一性,故退出循环
}
}
if (d == 0)
{
cout <<"此书尚未租出或者不存在。 " <<endl
return
}
else
{
cout <<"此书租出情况如下: " <<endl
rbb[i].print()
}
char flag
cout <<"确认要还此书吗?[Y/N] "
cin>>flag
if (flag == 'y'|| flag=='Y')
{
int p, j=0
p = t-i //P为要循环的次数
for(j= 0j<=pj++)
{
rbb[i]=rbb[i+1]
i++
}
t--
//以下为观察借书数组变化的代码
for (i=0i<ti++)
{
rbb[i].print()
cout <<endl
}
}
}
void rbbwritefile() //将借书库删除内容后的数组写入文件,以达到还书的效果,在程序结束之前调用即可
{
int i = 0
file_rbb.open( "rbb.txt ", ios::out)
for (i = 0 i < t i++)
{
file_rbb.write((char*)&rbb[i], sizeof(rbb[i]))
}
file_rbb.close()
}
void addreader() //增加读者函数
{
if (r>= 50)
{
cout <<"读者库已经满,无法添加! " <<endl
return
}
char f = 'y'
int j = 0
int p = 0//逻辑判断值
reader temp
file_reader.open( "readerfile.txt ", ios::app)
while (f == 'Y ' || f == 'y ')
{
p = 0//假设编号为不存在
temp.get()
for (j = 0 j < r j++)//判断读者编号是否重复
{
if (strcmp(temp.getcode(), readerzlk[j].getcode()) == 0)
{
cout <<"对不起!此读者编号已经存在! " <<endl
p = 1//为1则存在,为0则不存在
}
}
if (p == 0)
{
readerzlk[r] = temp
file_reader.write((char*)&readerzlk[r], sizeof(readerzlk[r]))//写入读者库
cout <<"写入读者库成功…… " <<endl
r++
}
cout <<"要继续吗?[Y/N] "
cin>>f
}
file_reader.close()
}
void addbook() //增加书籍函数
{
if(b>=100)
{
cout <<"读者库已经满,无法添加! " <<endl
return
}
char f = 'Y'
int j = 0
int p = 0
book temp
file_book.open( "bookfile.txt ", ios::app)
while (f == 'Y' || f == 'y')
{
p = 0
temp.get()
for (j = 0 j < b j++)
{
if (strcmp(temp.getcode(), library[j].getcode()) == 0)
{
cout <<"对不起!此书籍编号已经存在! " <<endl
p = 1
}
}
if (p == 0)
{
library[b] = temp
file_book.write((char*)&library[b], sizeof(library[b]))
cout <<"写入书籍库成功…… " <<endl
b++
}
cout <<"要继续吗?[Y/N] "
cin>>f
}
file_book.close()
}
void readerLC() //列出所有读者
{
for (int j = 0 j < r j++)
{
readerzlk[j].print()
cout <<endl
}
}
void bookLC() //列出所有书籍
{
for (int j = 0 j < b j++)
{
library[j].print()
cout <<endl
}
}
void readFind_code() //读者编号查找函数
{
int j = 0
int p = 0//保存对象下标
int d = 0//逻辑判断值
char flag='Y'
char code[4]
while (flag=='Y'||flag=='y')
{
d = 0//默认为没有找到
cout <<"请输入要查找的读者的编号: "
cin>>code
for (j = 0 j < r j++)
{
if (strcmp(code, readerzlk[j].getcode()) == 0)
{
p = j//将下标传给p
d = 1//为1则找到对象
break//因为code具有唯一性,故后面的不用找了,所以跳出循环.
}
}
if (d == 1)
{
readerzlk[p].print()
}
else
{
cout <<"非常抱歉!没有找到你想要的! " <<endl
}
cout <<"要继续查找吗?[Y/N] "
cin>>flag
}
}
void bookFind_code() //书籍编号查找函数
{
int j = 0
int p = 0//保存对象
int d = 0//逻辑判断值
char flag = 'Y'
char code[4]
while (flag == 'Y' || flag == 'y')
{
d = 0//默认为没有找到
cout <<"请输入要查找的书籍的编号: "
cin>>code
for (j = 0 j < b j++)
{
if (strcmp(code, library[j].getcode()) == 0)
{
p = j//将下标传给p
d = 1//为1则找到对象
break//因为code具有唯一性,故后面的不用找了,所以跳出循环.
}
}
if (d == 1)
{
library[p].print()
}
else
{
cout <<"非常抱歉!没有找到你想要的! " <<endl
}
cout <<"要继续查找吗?[Y/N] "
cin>>flag
}
}
void readFind_name() //读者姓名查找模块
{
char name[10]
char flag ='Y'
int d = 0//逻辑判断值
while (flag == 'Y'|| flag == 'y')
{
d = 0//默认为没有找到.
cout <<"请输入要查找读者的姓名: "
cin>>name
for (int i =0i<ri++)
{
if (strcmp(name, readerzlk[i].getname()) == 0)
{
d = 1//找到记录,将d值变为1
readerzlk[i].print()//因为姓名不具有唯一性,所以得循环完.
cout <<endl
}
}
if (d == 0)
{
cout <<"非常抱歉!没有找到你想要的! " <<endl
}
cout <<"要继续查找吗?[Y/N] "
cin>>flag
}
}
void bookFind_name() //书籍名称查找模块
{
char name[10]
char flag = 'Y'
int d = 0
while (flag == 'Y'|| flag == 'y')
{
d = 0
cout <<"请输入要查找书籍的名称: "
cin>>name
for (int i = 0 i < b i++)
{
if (strcmp(name, library[i].getname()) == 0)
{
d = 1
library[i].print()
cout <<endl
}
}
if (d == 0)
{
cout <<"非常抱歉!没有找到你想要的! " <<endl
}
cout <<"要继续查找吗?[Y/N] "
cin>>flag
}
}
void readerFind() //读者查找
{
char flag
while (1)
{
cout <<"1.按读者编号查找 2.按读者姓名查找 3.退出 " <<endl
cout <<"请输入功能代码: "
cin>>flag
switch (flag)
{
case '1 ':
//编号查找模块
readFind_code()
break
case '2 ':
//姓名查找模块
readFind_name()
break
case '3 ':
return
break
default:
cout <<"输入错误,请重新输入: " <<endl
}
}
}
void bookFind() //书籍查找
{
char flag
while (1)
{
cout <<"1.按书籍编号查找 2.按书名查找 3.退出 " <<endl
cout <<"请输入功能代码: "
cin>>flag
switch (flag)
{
case '1 ':
//按书籍编号查找模块
bookFind_code()
break
case '2 ':
//按书名查找模块
bookFind_name()
case '3 ':
return
break
default:
cout <<"输入错误,请重新输入: " <<endl
}
}
}
void readerdelete() //读者删除
{
char code[4]
int d = 0, i = 0, j = 0
cout <<"请输入要删除的读者的编号: "
cin>>code
for(i=0i <ri++) //首先判断读者库有没有此读者
{
if (strcmp(code, readerzlk[i].getcode()) ==0)
{
d =1//为1则有
break
}
}
if (d ==0)
{
cout <<"对不起,此读者不存在. " <<endl
return
}
d = 0, j = 0//恢复初值,在借书库进行判断
for (j = 0j<tj++)
{
if(strcmp(code, rbb[j].readercode) == 0)
{
d = 1//为1则有书未还
break
}
}
if (d == 1)
{
cout <<"此读者有书未还,还书后方可删除此读者. " <<endl
return
}
char flag
int p = r - i
cout <<"确认删除此读者吗?[Y/N] "
cin>>flag
if(flag=='Y'||flag =='y')
{
for (j = 0j <= pj++) //挪动读者数组
{
readerzlk[i] = readerzlk[i +1]
i++
}
r--
cout <<"读者删除成功 " <<endl
}
for (i= 0i<ri++)
{
readerzlk[i].print()
cout <<endl
}
}
void readerdeletefile() //删除读者文件上的 *** 作
{
int i = 0
file_reader.open( "readerfile.txt ", ios::out)
for (i = 0i <ri++)
{
file_reader.write((char*)&readerzlk[i], sizeof(readerzlk[i]))
}
file_reader.close()
}
void librarydelete() //书籍删除
{
char code[4]
int d = 0, i = 0, j = 0
cout <<"请输入要删除的书籍编号: "
cin>>code
for (i =0i<bi++) //首先判断读者库有没有此读者
{
if(strcmp(code,library[i].getcode())==0)
{
d = 1//为1则有
break
}
}
if(d==0)
{
cout <<"对不起,此书籍不存在. " <<endl
return
}
d=0,j=0//恢复初值,在借书库进行判断
for(j =0j<tj++)
{
if(strcmp(code, rbb[j].bookcode)==0)
{
d = 1//为1则有书未还
break
}
}
if(d==1)
{
cout <<"此书未还,还后方可删除此书籍. " <<endl
return
}
char flag
int p = b - i
cout <<"确认删除此书籍吗?[Y/N] "
cin>>flag
if(flag == 'Y ' || flag == 'y ')
{
for (j =0j<=pj++) //挪动读者数组
{
library[i]=library[i+1]
i++
}
b--
cout <<"书籍删除成功 "<<endl
}
for(i=0i<bi++)
{
library[i].print()
cout<<endl
}
}
void librarydeletefile() //删除书籍文件上的 *** 作
{
int i = 0
file_book.open( "bookfile.txt ", ios::out)
for(i=0i<bi++)
{
file_book.write((char*)&library[i], sizeof(library[i]))
}
file_book.close()
}
void readerWH() //读者维护
{
char flag
while (1)
{
cout<<"1.增加读者 2.删除读者 3.查找读者 4.列出所有读者 5.退出 "<<endl
cout<<"请输入功能代码: "
cin>>flag
switch (flag)
{
case '1':
addreader()//增加读者
break
case '2':
readerdelete()//删除读者
break
case '3':
readerFind()//查找读者
break
case '4':
readerLC()//列出所有读者
break
case '5':
return
break
default:
cout<<"输入错误,请重新输入: "<<endl
}
}
}
void bookWH() //图书维护
{
char flag
while(1)
{
cout<<"1.增加图书 2.删除图书 3.查找图书 4.列出所有图书书 5.退出 "<<endl
cout <<"请输入功能代码: "
cin>>flag
switch(flag)
{
case '1':
addbook()//增加图书
break
case '2':
librarydelete()//删除图书
break
case '3':
bookFind()//查找图书
break
case '4':
bookLC()//列出图书
break
case '5':
return
break
default:
cout<<"输入错误,请重新输入: " <<endl
}
}
}
void main()
{
char ch,dh
cout <<"欢迎使用简易图书馆! " <<endl
CSHreader()//初始化读者库
CSHbook()//初始化书籍库
CSHrbb()//初始化借书库
stop:
while(1)
{
cout <<"1. 进入系统 2.退出系统 " <<endl
cout <<"请输入功能代码: "
cin>>ch
switch (ch)
{
case '1':
while(1)
{
cout <<"1.借书 2.还书 3.图书维护 4.读者维护 5.返回上一层 " <<endl
cout <<"请输入功能代码: "
cin>>dh
switch (dh)
{
case '1': //借书模块
borrow() break
case '2': //还书模块
replacebook()
break
case '3': //图书维护
bookWH()
break
case '4': //读者维护
readerWH()
break
case '5':
goto stop
break
default:
cout <<endl <<"输入错误!请重新输入: " <<endl
}
}
case '2':
rbbwritefile()//重写借书库
librarydeletefile()//重写书籍库
readerdeletefile()//重写读者库
cout <<"谢谢您的使用!BYEBYE! " <<endl
return
break
default:
cout <<endl <<"输入错误!请重新输入: " <<endl
}
}
}
#include <iostream>
#include <fstream>//输入/输出文件流类
using namespace std
const int Maxr=100//最多的读者
const int Maxb=100//最多的图书
const int Maxbor=5//每位读者最多借五本书
//读者类,实现对读者的信息的描述
class Reader
cout <<setw(5) <<no <<setw(10) <<name<<"借书编号:["
for(int i=0i<Maxbori++)
if(borbook[i]!=0)
cout <<borbook[i] <<"|"
cout <<"]"<<endl
file.read((char *)&s,sizeof(s))
if (!file)break
cin >>rname
r->setname(rname)
break
case '3':
cout <<" 输入读者编号:"
cin >>readerid
r=query(readerid)
cout <<"该读者不存在"<<endl
break
//图书类,实现对图书的描述,图书的编号,书名,借出,还入等
int no//图书编号
char name[20]//书名
strcpy(name,na)
void delbook(){ tag=1}//删除图书
void addbook(int n,char *na)//增加图书
tag=0
no=n
strcpy(name,na)
onshelf=1
if (onshelf==1)
void disp()//输出图书
汇编语言
为了解决使用机器语言编写应用程序所带来的一系列问题,人们首先想到使用助记符号来代替不容易记忆的机器指令。这种助记符号来表示计算机指令的语言称为符号语言,也称汇编语言。
在汇编语言中,每一条用符号来表示的汇编指令与计算机机器指令一一对应;记忆难度大大减少了,不仅易于检查和修改程序错误,而且指令、数据的存放位置可以由计算机自动分配。用汇编语言编写的程序称为源程序。
这里举个例子。
根据图书编号,请在“订单明细表”工作表的“图书名称”列中,使用vlookup函数完成图书单价的自动填充。“图书名称”和“图书编号”的对应关系在编号对照工作表中。
首先输入“=vlookup 就会如图显示。
第一步根据什么,也就是根据图书编号,查找图书名称,输入图书编号的那个格子,逗号,如图所示。
第二步, 去哪里,也就是说要去那片区域查找需要得到的东西。“图书名称”和“图书编号”的对应关系在编号对照工作表中。所以去编号对照工作表的如图区域。
第三步,图书名称在区域的第二列,所以要填个2,逗号,然后精确匹配,回车就行了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)