求C++图书管理系统代码 急!急 !在线等待!!

p10305119 2007-01-09 04:12:24
求C++图书管理系统代码 急!急 !在线等待!!
...全文
3509 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
A208JASON 2011-01-04
根本就运行不了啊!
回复
程序漫步 2010-12-08
毕业项目吧~~
回复
qianqiayongga 2010-12-08
不错 不错
回复
chlgjzx 2010-12-08
毕业设计一般都是什么管理系统之类的
回复
t52693791 2010-08-21
很强大,什么时候我也可以写出来啊
回复
afagasg 2010-08-21
不错!
回复
sunner522 2008-12-28
不错
回复
ybt631 2007-01-10
这个还是用vb做好点把。。。
回复
yixiao386 2007-01-10
代码接收了
回复
northmyth 2007-01-10
路过!
回复
houdongfeng 2007-01-10
用VC来做这个总感觉大材小用了
回复
yuyunliuhen 2007-01-09



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;
}
}
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;
}
}
}
回复
yuyunliuhen 2007-01-09
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 = 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)
{
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)
{
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;
}
}
回复
yuyunliuhen 2007-01-09
#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <iomanip.h>
class reader
{
private:
char code[4]; //读者编号
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 = 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;
}
}
回复
相关推荐
发帖
C++ 语言
创建于2007-09-28

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2007-01-09 04:12
社区公告
暂无公告