图书借还系统.docx
- 文档编号:26152220
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:17
- 大小:242.92KB
图书借还系统.docx
《图书借还系统.docx》由会员分享,可在线阅读,更多相关《图书借还系统.docx(17页珍藏版)》请在冰豆网上搜索。
图书借还系统
C语言程序设计
题目
图书借还系统,具体要求如下:
1)每人每次只允许借1本;累计最多5本,否则不能借阅。
2)一次可以还书多本。
3)能够随时显示学生累计情况、书库库存情况。
4)能够随时保存学生累计情况、书库库存情况。
需求分析
经过对题目的分析可知,整个程序的设计实现大致分为九个模块,分别是:
读取学生信息模块,读取书本数据模块,判断是否可借模块,借书系统模块,还书系统模块,显示库存模块,菜单模块,保存数据模块,根据学号获得学生数据的模块。
程序流程图
1程序总体流程图
2具体功能函数
(1)读取学生信息模块
(2)读取书本数据模块
(3)判断是否可借模块
(4)借书模块
if(rst==BOOK_
ALL_BORROWED)
是否
(5)还书系统模块
(6)显示库存模块
(7)菜单模块
(8)保存数据模块
(9)据学号获得学生数据的模块
关键技术分析
(1)本程序运用了结构体这一关键技术,并多次应用。
比如:
/*定义学生结构体*/
typedefstruct_student
/*定义图书结构体*/
typedefstruct_book{
intno;/*书本编号*/
intprice;/*定价*/
intnum;/*库存*/
}book;
(2)实现还书环节是本程序的另一个重要模块,其中应用的技术请参见每个语句后的注释:
/*还书*/
/*bk书本数据*/
/*stu想要还书的学生数据*/
printf("请选择你要还的书的编号:
\n");
scanf("%d",&shuhao);
shuhao--;
for(k=0;k { if(shuhao==menber[i][k]) { b[shuhao].kucun++; } } a[i].jieshuliang--; printf("要继续还书吗? yorn\n"); scanf("%s",&c); if(c=='y'||c=='Y') continue; else break; } case3: { printf("你一共借了%d本书\n",a[i].jieshuliang); break; } 完整的源程序 #include #include #include typedefstructstudent/*定义学生结构体*/ { charnum[12]; charname[12]; intjieshuliang; }student; typedefstructbook/*定义图书结构体*/ { intnum; charname[8]; charpublish[8]; intprice; intkucun; }book; voidmain()/*主函数*/ { FILE*fp1; FILE*fp2; inti,j=0,k,m,n,l; intmenber[8][5]; if((fp1=fopen("file20_1.txt","ab+"))==NULL) { printf("cannotopenthisfile\n"); exit(0); } if((fp2=fopen("file20_2.txt","ab+"))==NULL) { printf("cannotopenthisfile\n"); exit(0); } studenta[8]; bookb[5]; for(i=0;i<8;i++) { for(j=0;j<12;j++) a[i].num[j]='0'; a[i].name[j]='0'; a[i].jieshuliang=0; } for(i=0;i<5;i++) { b[i].kucun=0; } for(i=0;i<8;i++) { fscanf(fp1,"%s\t%s\t%d",&a[i].num,&a[i].name,&a[i].jieshuliang); } for(i=0;i<5;i++) {fscanf(fp2,"%d\t%s\t%s\t%d\t%d\n",&b[i].num,&b[i].name,&b[i].publish,&b[i].price,&b[i].kucun); } for(;;) { printf("****图书借还系统****\n"); printf("****1: 学生登陆****\n"); printf("****2: 显示学生累计情况****\n"); printf("****3: 显示书库库存情况****\n"); printf("****0: 退出****\n"); printf("请您选择操作序号并按Enter键确认: \n"); scanf("%d",&n); switch(n) { case1: { charxuehao[12]; for(l=0;l<12;l++) xuehao[l]='9'; intshuhao=0; charc; printf("请输入学号并按Enter键确认: \n"); scanf("%s",&xuehao); for(i=0;i<8;i++) { if(xuehao[11]==a[i].num[11]) { printf("登陆成功\n"); printf("********************************\n"); printf("*****请选择您要进行的操作: *****\n"); printf("*****1: 借书*****\n"); printf("*****2: 还书*****\n"); printf("*****3: 显示累计情况*****\n"); printf("*****0: 退出*****\n"); printf("********************************\n"); printf("请输入您的选择并按Enter键确认: \n"); scanf("%d",&j); break; } if(i==8) { printf("您输入的学号不存在\n"); break; } } switch(j) { case1: { if(a[i].jieshuliang==5) { printf("已借满5本书! \n"); } else { printf("请输入要借的书的编号: \n"); scanf("%d",&shuhao); shuhao--; if(b[shuhao].kucun==0) printf("没有你要借的书! \n"); else { printf("要借这一本书吗? yorn? \n"); scanf("%s",&c); if(c=='y'||c=='Y') { b[shuhao].kucun--; menber[i][a[i].jieshuliang]=b[shuhao].num; a[i].jieshuliang++; } } } break; } case2: {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 系统