图书管理系统源码.docx
- 文档编号:14967848
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:33
- 大小:20.57KB
图书管理系统源码.docx
《图书管理系统源码.docx》由会员分享,可在线阅读,更多相关《图书管理系统源码.docx(33页珍藏版)》请在冰点文库上搜索。
图书管理系统源码
将以下内容拷贝到.cpp文件即可使用
包含图书管理,职工管理,学生管理,借书,还书等功能
1、主函数
[说明]
主函数较多、较复杂,已经和主菜单函数合并,主菜单函数里还包括了各自的二级菜单,并已经开始了对各个函数的调用。
为了程序显示的清晰可读,应先清屏之后调用菜单函数。
[流程]
开始
显示一系列功能选项
输入n,判断n是否是0~4?
调用与n相应的模块
N
Y
[程序]
*/
voidmain(){
charch1,ch2,ch3,ch4,ch5;
do{
printf("\t\t请你选择操作类型:
\n");
printf("1:
<查阅图书>\n");
printf("2:
<借阅图书>\n");
printf("3:
<管理系统>\n");
printf("4:
<归还图书>\n");
printf("0:
<退出系统>\n");
printf("请输入0--4\n");
scanf("%s",&ch1);
switch(ch1){
case'1':
chabook();break;
case'2':
lendbook();;break;
case'3':
{
do
{
printf("---------------欢迎进入管理系统!
--------------\n");
printf("1:
<增加图书>\n");
printf("2:
<删除图书>\n");
printf("3:
<修改图书资料>\n");
printf("4:
<书籍统计>\n");
printf("5:
<职工管理系统>\n");
printf("6:
<学生管理系统>\n");
printf("0:
<返回>\n");
printf("请输入0--6,其他输入非法!
\n");
scanf("%s",&ch2);
switch(ch2)
{
case'1':
addbook();break;
case'2':
delbook();break;
case'3':
changebook();break;
case'4':
bookcount();getch();break;
case'5':
{do
{
printf("---------------欢迎进入职工管理系统!
--------------\n");
printf("1:
<增加员工>\n");
printf("2:
<删除员工>\n");
printf("3:
<修改员工资料>\n");
printf("4:
<员工统计>\n");
printf("0:
<返回>\n");
printf("请输入0--4,其他输入非法!
\n");
scanf("%s",&ch3);
switch(ch3)
{
case'1':
addemploy();getch();break;
case'2':
delemploy();break;
case'3':
changemploy();break;
case'4':
employcount();getch();break;
case'0':
break;
default:
printf("无此操作\n");getch();break;
}
}while(ch3!
='0');}break;
case'6':
{
do
{
printf("---------------欢迎进入学生管理系统!
--------------\n");
printf("1:
<申请新卡>\n");
printf("2:
<删除卡号>\n");
printf("3:
<借书统计>\n");
printf("4:
<卡号统计>\n");
printf("0:
<返回>\n");
printf("请输入0--4,其他输入非法!
\n");
scanf("%s",&ch4);
switch(ch4)
{
case'1':
addcar();break;
case'2':
delcar();break;
case'3':
lendcount();break;
case'4':
carcount();break;
case'0':
break;
default:
printf("无此操作\n");getch();break;
}
}while(ch4!
='0');}break;
case'0':
break;
default:
printf("无此操作\n");getch();break;
}
}while(ch2!
='0');}break;
case'4':
huanbook();break;
case'0':
break;
default:
printf("无此操作\n");getch();break;
}
}while(ch1!
='0');
}
/*
各功能模块设计
(1)查阅模块
[说明]
输入个员工信息后,浏览、查找、排序时同一个员工的所有信息都要同时显示,所以运用结构体运行。
数据信息存放在文件中,一条记录对应一条学生信息,方便管理。
[流程]
查询系统
按书名查找
按作者查找
退出
输入
不存在
*/
voidchabook(){
charch5;
do
{
printf("---------------欢迎进入图书查询系统!
--------------\n");
printf("1:
<按书名查找>\n");
printf("2:
<按作者查找>\n");
printf("0:
<返回>\n");
printf("请输入0--2,其他输入非法!
\n");
scanf("%s",&ch5);
switch(ch5)
{
case'1':
findbook();getch();break;
case'2':
findbook1();getch();break;
case'0':
break;
default:
printf("无此操作\n");getch();break;
}
}while(ch5!
='0');
returnFALSE;
}
/*按书名查找图书函数*/
voidfindbook(){
FILE*fp;
charbookname[10];
intture,i;
fp=fopen("book.txt","r");
printf("请输入你要查找的书名\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(bookname,book[i].bookname)==0)
{
if(book[i].turefalse==1)
{
printf("这本书的详细资料是:
%d%s%s此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else{printf("这本书已经有人借出\n");fclose(fp);return0;}
fclose(fp);
returnFALSE;
}
}
printf("没有你要查询的书籍\n");
fclose(fp);
returnFALSE;
}
/*按作者查找图书函数*/
voidfindbook1(){
FILE*fp;
charbookcreat[10];
intture,i;
fp=fopen("book.txt","r");
printf("请输入你要查找的作者名\n");
scanf("%s",bookcreat);
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(bookcreat,book[i].bookcreat)==0)
{
if(book[i].turefalse==1)
{
printf("这本书的详细资料是:
%d%s%s此书现在无人借阅\n按任意键返回\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else{printf("这本书已经有人借出\n");fclose(fp);return0;}
fclose(fp);
returnFALSE;
}
}
printf("没有你要查询的书籍\n");
fclose(fp);
returnFALSE;
}
/*借阅模块
[说明]
查阅完图书记录后,用户要借阅图书,系统要在操作过程中提示用户输入流程,根据用户所输入的指令,帮助其完成借阅。
[流程]
借阅系统
输入卡号
卡号存在
输入书名
已出借
不存在
借阅成功
返回
卡号不存在
[程序]*/
/*借书函数*/
voidlendbook(){
FILE*fp,*fp2;
inti,n;
intcarnum;
printf("请你输入你的卡号\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(structcar),1,fp)!
=0;i++)
{
if(car[i].carnum==carnum)
{
n=i;
fclose(fp);
printf("请输入你要借阅的书的名字\n");
scanf("%s",student[n].lendbook);
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
if(book[i].turefalse==0){printf("对不起,此书有人借出,请借其他书\n");fclose(fp);getch();return;}
else
fclose(fp);
fp=fopen("record.txt","a+");
student[n].carnum=carnum;
fwrite(&student[n],sizeof(structstudent),1,fp);
fclose(fp);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
book[i].turefalse=0;
fwrite(&book[i],sizeof(structbook),1,fp2);
continue;
}
fwrite(&book[i],sizeof(structbook),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!
=0;i++)
{
fwrite(&book[i],sizeof(structbook),1,fp);
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");
fclose(fp2);
printf("借书完毕,按任意键返回\n");
getch();
return;
}
}
printf("不存在这样的书,任意键返回\n");
fclose(fp);
getch();
return;
}
}
printf("你的卡号不存在,请申请新卡,按任意键返回\n");
fclose(fp);
getch();}
/*
管理模块
[说明]
管理模块最为复杂,管理所有的图书及职工、学生的信息。
先进入总体的管理系统,在这个系统中重点的操作是图书的管理,为其中的1至4项(分别是增加图书、删除图书、修改图书资料、书籍统计),同时系统还连接了职工、学生管理两个系统,为下一步的操作提供了条件。
职工管理系统主要有增加图书、删除图书、修改图书资料、书籍统计,学生管理系统主要有申请新卡、删除卡号、借书统计、卡号统计四个模块,用于管理学生登录信息。
[流程]
管理系统
图书管理系统
职工管理系统
学生管理系统
[程序]
*/
//图书管理系统
voidaddbook()/*增加图书函数*/
{
FILE*fp;
inti=0;
charchoice='y';
fp=fopen("book.txt","a+");
while(choice=='y'||choice=='Y')
{
printf("请你输入第%d本书的序号\n",i+1);
scanf("%d",&book[i].booknum);
printf("请你输入书名\n");
scanf("%s",book[i].bookname);
printf("请你输入书的作者\n");
scanf("%s",book[i].bookcreat);
printf("请设为1或0,1代表书还没人借,0表示书已经借出,设其他值,程序运行时无法得出正常结果\n");
printf("请你设定书的状态\n");
scanf("%d",&book[i].turefalse);
fwrite(&book[i],sizeof(structbook),1,fp);
printf("是否要输入下本书\n");
scanf("%s",&choice);
}
fclose(fp);
}
voiddelbook()/*删除图书函数*/
{
FILE*fp,*fp2;
inti;
charbookname[10],choice;
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
printf("请输入你要删除的书名\n");
printf("如果你输入的书名存在,系统自动删除该信息!
如果不存在,系统不做任何改动\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(bookname,book[i].bookname)!
=0)
{
fwrite(&book[i],sizeof(structbook),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("是否真的要删除该书籍?
删除后该书籍的所有信息将无法恢复《Y/N》\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!
=0;i++)
{
fwrite(&book[i],sizeof(structbook),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意键返回\n");
getch();
return;
}
else
{
printf("按任意键返回\n");
getch();
return;}
}
voidchangebook()/*修改图书资料函数*/
{
FILE*fp,*fp2;
charbookname[10],choice;
inti;
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
printf("请你输入要修改的书籍的书字\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(strcmp(book[i].bookname,bookname)==0)
{
printf("你所要修改的书的资料如下,请选择你要修改的内容\n");
printf("序号:
〈%d〉书名:
〈%s〉作者:
〈%s〉\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
printf("1:
修改书的序号\n");
printf("2:
修改书名\n");
printf("3:
修改作者\n");
printf("请输入1-3:
");
scanf("%s",&choice);
switch(choice)
{
case'1':
{
printf("请输入新的序号\n");
scanf("%d",&book[i].booknum);
fwrite(&book[i],sizeof(structbook),1,fp2);
}break;
case'2':
{
printf("请输入新的书名\n");
scanf("%s",book[i].bookname);
fwrite(&book[i],sizeof(structbook),1,fp2);
}break;
case'3':
{
printf("请输入新的作者\n");
scanf("%s",book[i].bookcreat);
fwrite(&book[i],sizeof(structbook),1,fp2);
}break;
defaut:
printf("没有这样的操作");break;
}
continue;
}
fwrite(&book[i],sizeof(structbook),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp2)!
=0;i++)
{
fwrite(&book[i],sizeof(structbook),1,fp);
}
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("按任意键返回\n");
getchar();
return;
}
voidbookcount()/*图书统计函数*/
{
FILE*fp;
inti,n=0;
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!
=0;i++)
{
if(book[i].booknum!
=0&&strlen(book[i].bookname)!
=0&&strlen(book[i].bookcreat)!
=0)
{
printf("第%d本书<序号:
%d书名:
%s作者:
%s状态:
%d>\n",i+1,book[i].booknum,book[i].bookname,book[i].bookcreat,book[i].turefalse);
n=n+1;
}
}
fclose(fp);
printf("目前共有%d本书\n",n);
printf("按任意键\n");
}
//职工管理系统
voidaddemploy()/*增加员工函数*/
{
FILE*fp;
charchoice='y';
inti=1;
fp=fopen("employ.txt","a+");
while(choice=='y'||choice=='Y')
{
printf("请你输入职工号码\n");
scanf("%d",&employ[i].employnum);
printf("请你输入职工名\n");
scanf("%s",employ[i].employname);
printf("请输入职工年龄\n");
scanf("%d",&employ[i].employage);
printf("请你输入性别\n");
scanf("%s",employ[i].employsex);
printf("请你输入职工的学历水平\n");
scanf("%s",employ[i].employleve);
printf("请输入职工的工资\n");
scanf("%d",&employ[i].employtage);
fwrite(&employ[i],sizeof(structemploy),1,fp);
printf("是否要输入下个职工信息?
\n");
scanf("%s",&choice);
}
printf("按任意键返回\n");
fclose(fp);
}
voiddelemploy()/*删除员工函数*/
{
FILE*fp,*fp2;
inti;
charemployname[10],choice;
fp=fopen("employ.txt","r");
fp2=fopen("bookl.txt","w");
printf("请输入你要删除的职工名\n");
printf("如果你输入的职工存在,系统自动删除该信息!
如果不存在,系统不做任何改动\n");
scanf("%s",employname);
for(i=0;fread(&employ[i],sizeof(structemploy),1,fp)!
=0;i++)
{
if(strcmp(employname,employ[i].employname)!
=0)
{
fwrite(&employ[i],sizeof(structem
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 源码