版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课程设计
姓名:郭献安
班级:054101-13
学号:1001871
《图书管理系统》
目录
一、题目要求及能实现功效.......................2
二、程序总体设计..................................2
三、具体设计
1、主函数..............................4
2、各功效模块设计..............................5
四、附录.....................................26
题目要求及能实现功效
图书管理信息包含:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等,使之
能提供以下功效:
1、新进图书基础信息输入。
2、图书基础信息查询。
3、对撤消图书信息删除。
4、办理借书手续。
5、办理还书手续
【提醒】
建立图书管理信息结构体,结构体组员包含图书馆名称、图书编号、单价啊、作者、存在状态、借书人
姓名、性别、学号。存在状态设为整型,可用不一样数字代表借还状态。借书和还书手续要注意修改结
构题组员变量存在状态值。
总体设计
具体设计
1、主函数
:\DocuaentsandSettings\Ad>inistrator\^®\Debug\X
『制作:郭献安学号:20101001871班号:054101-13』
选需
n务
E
请
查
图
书
1:鲁
理
果
2:还
统
3:书
退
4:出
妗
初
纷
0:〉
上r:
娟
▼」
“C:\DocuMentsand$6七「:£11"\4(1*11115t112101'\桌面\。61)118\13.6*6
请输入数字。一4二
1:增加图书
2:刷除图书
3:修改图书
4痼书统计
5撵生管理系统
0:返回
请输入0―5:
L说明」
主函数较多、较复杂,已经和主菜单函数合并,主菜单函数里还包含了各自二级菜单,并已经开始
了对各个函数调用。为了程序显示清楚可读,应先清屏以后调用菜单函数。
[步骤]
2、各功效模块设计
(2)查阅模块
1:技书名查装
2:按作者查找
0:.他向
清疏/.0-2:
谛布入你要查找的书名:
关率物理
为号书名
2001大华
此书习
按任孑
[说明]
输入个职员信息后,浏览、查找、排序时同一个职员全部信息全部要同时显示,所以利用结构体运
行。数据信息存放在文件中,一条统计对应一条学生信息,方便管理。
[步骤]
(3)借阅模块
y豆人借书人的:
1002
2^9
书X
大学物理
借宅完毕,按任意键返回•••
[说明]
查阅完图书统计后,用户要借阅图书,系统要在操作过程中提醒用户输入步骤,依据用户所输入指
令,帮助其完成借阅。
[步骤]
(4)管理模块
中
相
声
主3
R
加
图
1书
」
2除
图
书
修
3改
图
书
4,书
统
计
生
5于
管
理
0回
返
P五-
龄\0
U勤E-5:
J
d
国\DociiBentsand$6私11185\4(1*:1鼠5'(6'(01\桌面\口61)118\13.
B
八
请i
1
申
2第i
删
3统
号
蕖H
4
«统
回
0:返
入
请T
0-
C\Documenband$e<lng»\Admmtr<!tcr\flfi砒代启,*1Mlfnarwoemwlsystem^.
★☆双迎年)浮生管理家茨百
性别姓名班级
眠伦54B81
性刖拄名
炖华5佃2
性别姓名班级
男强学友54M1
性别姓名班级
QQPSnyin
[说明]
管理模块最为复杂,管理全部图书及职员、学生信息。优异入总体管理系统,在这个系统中关键操
作是图书管理,为其中1至4项(分别是增加图书、删除图书、修改图书资料、书籍统计),同时系统还
连接了职员、学生管理两个系统,为下一步操作提供了条件。职员管理系统关键有增加图书、删除图书、
修改图书资料、书籍统计,学生管理系统关键有申请新卡、删除卡号、借书统计、卡号统十四个模块,
用于管理学生登录信息。
[步骤]
(5)还书模块
语你祠入你的
Iwa
卞弓2
1002
吊喻入你要还的书的名字:
大学物理
近.完毕,按任意键返回...
[说明]
需要依据输入职员姓名及工号查找对应统计,找到后增加删除和修改功效。
附录
一一图书馆管理系统设计源程序清单
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<ctype.h>
#defineSTACK_INIT_SIZE10
ftdefineOK1
ftdefineTRUE1
#defineERROR0
structstudent{
intcarnum;
char1endbook[10];
}student[1000];
structbook
(
intbooknum;
charbookname[20];
floatbookprice;
charbookcreat[20];
intturefalse;
}book[1000];
structcar
(
intcarnum;
charsex[5];
charstudentname[20];
intstudentclass;
}car[1000]:
findbook()
(
FILE*fp;
charbookname[10];
inti;
fp=fopen("book,txt","r");
printf(〃请输入你要查找书名:\n〃);
scanfbookname);
for(i=0;fread(&book[i]>sizeof(structbook),1,fp)!=0;i++)
if(strcmp(bookname,book[i].bookname)==0)
if(book[i].turefalse==l)
printfC书号书名作者
\n%d%s%s
\n”,book[i].booknum,book[i].bookname,book[i].bookcreat);
printf("此书现在无人借阅\n按任意键返回\n");}
else{printf("这本书已经有些人借出\n");fclose(fp);return0;}
fclose(fp);
return0;
}
}
printf(〃没有你要查询书籍!\n");
fclose(fp);
return0;
)
findbookl()
(
FILE*fp;
charbookcreat[10];
inti;
fp=fopen("book,txt","r");
printf(〃请输入你要查找作者名:\n〃);
scanfbookcreat);
for(i=0;fread(&book[i],sizeof(structbook)»1,fp)!=0;i++)
if(strcmp(bookcreat,book[i].bookcreat)=0)
if(book[i].turefalse==l)
printf(*书号书名作者\n%d%s%s
\n”,book[i].booknum,book[i].bookname,book[i].bookereat);
prinlf(〃此书现在无人借阅\n按任意键返回\n");
)
else{printf("这本书己经有些人借出!\n");
fclose(fp);
return0;
)
fclose(fp);
return0;
)
)
printf(〃没有你要查询书籍\n〃);
fclose(fp);
return0;
)
chabook()
{
charch5;
do
(
printfC1:按书名查找\n〃);
printfC2:按作者查找\n〃);
printf(*0:返回\n");
printf("请输入0"2:\n");
ch5=getch();
switch(ch5)
case'1':findbook();getch();break;
case'2':findbookl();getch();break;
case'O':break;
default:printf("无此操作!\n");getch();break;
)
}while(ch5!=,01);
return0;
)
1endbook()
(
FILE*fp,*fp2;
inti,n;
intcarnum;
printf(”请输入借书人:\n卡号:\n");
scanf&carnum);
fp=fopenCcar.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");
scanfstudent[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].1endbook)==0)
(
if(book[i].turefalse==0){printf("对不起,此书有些人借出,请借其它书
\n");fclose(fp);getch();return0;}
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");
getchO;
return0;
)
)
printf("不存在这么书,任意键返回.・.\n");
fclose(fp);
getchO;
return0;
)
)
printf("你卡号不存在,请申请新卡,按任意键返回・・.\n");
fclose(fp);
getchO;
return0;}
huanbook()
(
FILE*fp,*fp2;
inti,n;
intcarnum;
char1endbook[10];
printff\t\t(V)欢迎进入还书界面(V)”);
printf("\n请你输入你\n卡号:\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");
scanf1endbook);
fp=fopen("record,txt","r");
for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!=0;i++)
(
if(strcmp(student[i].1endbook,1endbook)==0)
(
fclose(fp);
fp二fopen("record,txt*,"r");
fp2=fopen(^bookl.txt","w");
for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!=0;i++)
(
if(strcmp(student[i].1endbook,1endbook)=0)
continue;
)
fwrite(&student[i],sizeof(structstudent),1,fp2);
)
fclose(fp);
fclose(fp2);
fp=fopen("record,txt*,"w");
fp2=fopen(*bookl.txt*,'r");
for(i=0;fread(&student[i],sizeof(structstudent),1,fp2)!=0;i++)
(
fwrite(&student[i],sizeof(structstudent),1,fp);
)
fclose(fp);
fclose(fp2);
fopenC^bookl.txt","w");
fclose(fp2);
fp=fopen("book,txt","r");
fp2=fopenC*bookl.txt","w");
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++)
(
if(i==n)
(
book[i].turefalse=l;
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);
fopenC^bookl.txt","w");
fclose(fp2);
printf(〃还书完成,按任意键返回.・.\n");
getch();
return1;
)
)
printf(〃你没有借这么书,任意键返回...\n〃);
fclose(fp);
getch();
return0;
)
)
printf(〃没这么卡,和管理员联络,按任意键返回...\n");
fclose(fp);
getch();
return0;}
1endcount()
FILE*fp;
inti,n=0;
fp二fopen("record,txt","r");
if((fp=fopen("record,txt","r"))=0)
{printf("文件中没有数据!\n〃);
printf("按任意键返回...\n");
getch();
return(0);
)
for(i=0;fread(&student[i],sizeof(structstudent),1,fp)!=0;i++)
(
printf(〃卡号借出书籍\n");
printf("%d%s\n”,student[i].carnum,student[i].1endbook);
n=n+l;
)
fclose(fp);
printf("现在共有%d本书借出\n”,n);
printf("按任意键...\n");
getch();
returnn;
)
addcar()
(
FILE*fp;
inti=0;
fp=fopen(*car.txt","a+");
printf("卡号:\n");
scanf&car[i].carnum);
printf("性别:\n");
scanf("%s”,car[i].sex);
printf("姓名:\n");
scanfcar[i].studentname);
printf("班级:\n");
scanf&uar[i].studentclass);
fwrite(&car[i],sizeof(structcar),1,fp);
fclose(fp);
printf("输入完成,任意键返回.・.\n");
getchO;
)
delcar()
(
FILE*fp,*fp2;
inti;
intcarnum;
charchoice;
fp=fopen("car.txt","r");
fp2=fopen(^bookl.txt","w");
printf(〃要删除卡号(不存在则不作改动):\n〃);
scanf&carnum);
for(i=0;fread(&car[i],sizeof(structcar),1,fp)!=0;i++)
(
if(car[i].carnum!=carnum)
(
fwrite(&car[i],sizeof(structcar),1,fp2);
)
)
fclose(fp);
fclose(fp2);
printf("确定删除?(Y/N)!\n〃);
scanf&choice);
if(choice=二'y,||choice==,Y,)
{
fp=fopen(*car.txt*,'w");
fp2=fopen(*bookl.txt","r");
for(i=0;fread(&car[i],sizeof(structcar),1,fp2)!=0;i++)
(
fwrite(&car[i],sizeof(structcar),1,fp);
)
fclose(fp);
fclose(fp2);
fp2=fopenC"bookl.txt","w");
fclose(fp2);
printf("操作超成功!\n按任意键返回・・.\n");
getchO;
return0;
)
else
(
printf(〃操作已取消!\n按任意键返回・・.\n”);
getchO;
return0;
}
)
carcount()
FILE*fp;
inti,n=0;
fp=fopen(*car.txt","r");
for(i=0;fread(&car[i],sizeof(structcar),1,fp)!=0;i++)
{
printf("第%d张卡\n”,i+1);
printfC卡号性别姓名班级\n〃);
printfC\t\t\n*);
printf(*%d%6s%10s%3d
\n\n”,car[i],carnum,car[i].sex,car[i].studentname,car[i].studentclass);
n=n+l;
)
fclose(fp);
printf("现在共有%d个学生。\n”,n);
printf("按任意键返回...\n");
getchO;
)
addbook()
{
FILE*fp;
inti=0;
charchoice='y';
fp=fopen("book,txt","a+");
while(choice二二,y\\choice二二,Y')
printf("书号:\n");
scanf&book[i].booknum);
printf("书名:\n");
scanfbook[i].bookname);
printf(〃作者:\n〃);
scanf("%s",book[i].bookereat);
printf("单价:\n");
scanf&book[i].bookprice);
printf("请你设定书状态(1在架/0不在):\n");
scanf&book[i].turefalse);
fwrite(&book[i],sizeof(structbook),1,fp);
printf("是否要输入下本书(y/n)\n");
scanf(*%s*,&choice);
)
fclose(fp);
)
delbook()
{
FILE*fp,*fp2;
inti;
charbookname[10],choice;
fp=fopen("book,txt","r");
fp2=fopen(^bookl.txt","w");
printf("书名:\n");
scanfbookname);
for(i=0;fread(&book[i]>sizeof(structbook),1,fp)!=0;i++)
if(stremp(bookname,book[i].bookname)!=0)
fwrite(&book[i],sizeof(structbook),1,fp2);
)
)
fclose(fp);
fclose(fp2);
printf("确定删除(y/n)?\n");
scanf&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();
return0;
)
else
(
printf("按任意键返回...\n");
getch();
return0;
)
)
changebook()
(
FILE*fp,*fp2;
charbookname[10],choice;
inti;
fp=fopen("book,txt","r");
fp2=fopen(^bookl.txt","w");
printf("书名:\n");
scanfbookname);
for(i=0;fread(&book[i],sizeof(structbook),1,fp)!=0;i++)
(
if(strcmp(book[i].bookname,bookname)==0)
{
printf(〃你所要修改书资料以下,请选择你要修改内容:\n〃);
printf(〃序号书名作者\n");
printf("%d%s%s\n”,book[i].booknum,book[i].bookname,book[i].bookereat)
■
9
printf("1:修改书号:\n");
printf("2:修改书名:\n");
printfC3:修改作者:\n");
printf("4:修改单价:");
printf("请输入1—3:");
choice=getch();
switch(choice)
case'1':
printf("新书号:\n");
scanf("%d”,&book[i].booknum);
fwrite(&bouk[i],sizeof(structbook),1,fp2);
}break;
case'2':
(
printf("新书名:\n");
scanfbook[i].bookname);
fwrite(&book[i],sizeof(structbook),1,fp2);
}break;
case'3’:
(
printf("新作者:\n");
scanfbook[i].bookcreat);
fwrite(&book[i],sizeof(structbook),1,fp2);
}break;
case'4':
(
printf("新单价:");
scanf("%f”,book[i].bookprice);
fwrite(&book[i],sizeof(structbook),1,fp2);
)
default: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(fp);
fp2=fopen(*bookl.txt","w");
fclose(fp2);
printf("按任意键返回・・.\n");
getchar();
return0:
)
bookcount()
(
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&&strien(book[i].bookname)!=0&&strlen(book[i].bookcre
at)!=0)
printf(〃第%d本书\n序号书名作者单价
状态\rT,i+1);
printf("\t\t\n");
printf%d%10s
”,book[i].booknuiu,book[i].bookiiaiue);
printfC%15s%4.2f%d(l在/0不
在)\n”,book[i].bookcreat,book[i].bookprice,book[i].turefalse);
n=n+l;
)
)
fclose(fp);
printf("现在共有%d本书.\n”,n);
printf("按任意键返回...\n");
)
endO
{
printf('\t\t'n");
printf("\t\t'n");
printfC\t\t||谢谢使用本系统,再见!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年水处理絮凝剂TXY-TXY-行业技术革新分析报告
- 2026年果蔬罐头加工行业分析报告及创新报告
- 2026年秋季大学新生军训 军训纪律与文明礼貌
- 2026二上数学第一单元同步课件
- 感恩父母主题班会课件(共23张)
- 2026北师大二下全册趣味完整课件
- 2026中国污水处理技术创新与PPP模式应用评估报告
- 2026中国新能源汽车产业技术趋势与产业发展潜力评估规划分析报告
- 2026中国智能穿戴行业市场现状供需分析及投资评估规划发展趋势报告
- 2026中国智能窗户控制系统行业市场现状供需分析及投资评估规划分析研究报告
- TCACM 1460-2023 成年人中医体质治未病干预指南
- DB37-T 4581 2023 家庭养老床位设置与服务要求
- 轻烃装置操作(中级工)考试资料(题库版)
- 小学生中医药科普知识讲座
- 《水浒传》名著导读优质课教学设计(部编版九年级上册)-
- 技术支持资料投标书
- 栏杆工程施工组织设计(技术标)
- 义务教育阶段中小学学生转学申请表
- 图解缠论3:技术面、基本面、比价轮动的立体操盘
- JJG 621-2012液压千斤顶
- JJF 1751-2019菌落计数器校准规范
评论
0/150
提交评论