| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8794 人关注过本帖, 2 人收藏
标题:我做的简易图书馆。
只看楼主 加入收藏
qiqiaizhuzhu
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-7-5
收藏
得分:0 

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 = 0; i < r; i++)//判断有无此读者编号

{

if (strcmp(temp.readercode, readerzlk[i].getcode()) == 0)

{

d = 1; //为1则有此编号,否则无此编号

break;

}

}

if (d == 0)

{

cout<<"对不起!您的编号不存在!"<<endl;

return;

}

d = 0; i = 0; //恢复初始值,进行书的编号的判断

for (i = 0; i < b; i++) //判断有无此书籍编号

{

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<<"非常抱歉,此书已经租出。"<<endl;return;}

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; //因为书籍编号具有唯一性,故退出循环

2005-07-07 08:46
qiqiaizhuzhu
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-7-5
收藏
得分:0 

}

}

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 = 0; j <= p; j++)

{

rbb[i] = rbb[i + 1];

i++;

}

t--;

//以下为观察借书数组变化的代码

for (i = 0; i < t; i++)

{

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)

{

2005-07-07 08:48
qiqiaizhuzhu
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-7-5
收藏
得分:0 

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 = 0; i < r; i++)

{

if (strcmp(name, readerzlk[i].getname()) == 0)

2005-07-07 08:49
qiqiaizhuzhu
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-7-5
收藏
得分: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 = 0; i < r; i++) //首先判断读者库有没有此读者

{

if (strcmp(code, readerzlk[i].getcode()) == 0)

{

d = 1;//为1则有

break;

}

}

if (d == 0)

{

cout<<"对不起,此读者不存在."<<endl;

return;

}

d = 0, j = 0;//恢复初值,在借书库进行判断

for (j = 0; j < t; j++)

{

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 = 0; j <= p; j++) //挪动读者数组;

{

readerzlk[i] = readerzlk[i +1];

i++;

}

r--;

cout<<"读者删除成功"<<endl;

}

for (i = 0; i < r; i++)

{

readerzlk[i].print();

cout<<endl;

}

}

void readerdeletefile() //删除读者文件上的操作

{

int i = 0;

file_reader.open("readerfile.txt", ios::out);

for (i = 0; i < r; i++)

{

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 = 0; i < b; i++) //首先判断读者库有没有此读者

{

if (strcmp(code, library[i].getcode()) == 0)

{

d = 1;//为1则有

break;

}

}

2005-07-07 08:51
qiqiaizhuzhu
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-7-5
收藏
得分:0 

if (d == 0)

{

cout<<"对不起,此书籍不存在."<<endl;

return;

}

d = 0, j = 0;//恢复初值,在借书库进行判断

for (j = 0; j < t; j++)

{

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 = 0; j <= p; j++) //挪动读者数组;

{

library[i] = library[i +1];

i++;

}

b--;

cout<<"书籍删除成功"<<endl;

}

for (i = 0; i < b; i++)

{

library[i].print();

cout<<endl;

}

}

void librarydeletefile() //删除书籍文件上的操作

{

int i = 0;

file_book.open("bookfile.txt", ios::out);

for (i = 0; i < b; i++)

{

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;

}

}

2005-07-07 08:51
qiqiaizhuzhu
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-7-5
收藏
得分:0 

}

};

void main()

{

}

2005-07-07 08:52
qiqiaizhuzhu
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-7-5
收藏
得分:0 
帮帮我呀
好急哦
2005-07-07 08:52
softwarelan
Rank: 1
等 级:新手上路
帖 子:209
专家分:0
注 册:2005-6-1
收藏
得分:0 
哎呀,我的地啊!What's this?

Not a hero until you reach The Greatwall!
2005-07-11 10:29
当当
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2004-4-30
收藏
得分:0 
顶一下,呵呵!

学好编程就能编出自己的未来! 加油!自信!努力!奋斗!
2006-02-21 14:49
混吃等死
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2006-2-20
收藏
得分:0 
羡慕楼主啊, 真有毅力, 写这么多你需要多长时间???

2006-02-21 16:18
快速回复:我做的简易图书馆。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020714 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved