




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、音像图书租借管理系统程序设计报告专业技能训练报告学 院: 计算机学院、软件学院 课程名称: C程序设计综合实践 专业班级: 计算机科学与技术 学生姓名: 学号: 学生姓名: 学号: 指导教师: 完成时间:2014年6月25日音像图书租借管理系统程序设计报告目录目录1第1部分 实训题目与要求21. 问题提出22. 功能要求23. 任务分工2第2部分 设计实训题目功能21. 总体设计22. 算法设计33. 数据结构64. 程序代码设计75. 测试与调试22第3部分 实训总结251. 个人总结252. 结束语26附录A 程序清单27附录B 用户使用说明书44参考文献44C程序设计综合实践评分表45第
2、1部分 实训题目与要求1. 问题提出在音像图书租借管理业务中,借与还、新进与报废音像图书是较典型的工作,一直以来,人们都是使用传统的人工方式进行管理,无论是对顾客还是销售人员来说,都很不方便。为了轻松、准确、高效地管理,特开发本管理系统以提高管理效率。2. 功能要求本音像图书租借管理系统主要应用于小型的音像图书店中,方便管理员对大量的音像图书信息进行查询、增加、保存、删除等操作。音像图书租借管理系统可分为六部分:创建音像图书库、租借音像图书、归还音像图书、购进音像图书、报废音像图书和音像图书库概况。3. 任务分工程序的编写基本由同学完成,同学负责编写主函数;Word文档的部分基本由同学完成,同
3、学负责测试与调试部分。第2部分 设计实训题目功能1. 总体设计主界面创建音像图书库租借音像图书归还音像图书购进音像图书报废音像图书音像图书库概况退出系统输入音像图书的信息添加租借者的信息输入编号和归还日期更新原有数据、增加新的音像图书丢失、过期的音像图书进行报废处理输出图书、VCD、录像带的数量 2. 算法设计创建音像图书库打开文件文件打开错误输入音像图书的编号输入音像图书的名称输入音像图书的原价输入音像图书的原数量输入音像图书剩余数量创建音像图书成功结束租借音像图书输入租借者姓名 输入音像图书编号无此音像图书此音像图书已全部借出 不存在 剩余数量为0 存在 输入租借日期 显示应交押金结束归还
4、音像图书输入归还的音像图书的编号输入归还日期输出租借天数输出已交押金、应交租金、应退金额删除租借者信息输出被借音像图书名结束购进音像图书此书已存在输入购进的音像图书的编号输入购进的音像图书的数量输入购进的音像图书的原价购进音像图书成功结束报废音像图书音像图书被借出输入报废的音像图书的编号编号错误不能报废不存在此书音像图书已成功报废结束音像图书库概况打开文件文件打开错误输出图书、VCD、录像带各自的数量,并输出各自被借的数量结束3. 数据结构系统数据类型:整型int,字符型char,结构体struct;struct date /租借&归还日期int year;char ch1;int month
5、;char ch2; int day;struct library /音像图书库char bianhao10;char name100;int price;int amount;int shengyu;struct borrower /租借者信息char uname100; char bianhao10;struct date borrow;int money;struct date back; int rent;4. 程序代码设计(1)创建音像图书库void build_book()char ch10,op;struct library a;FILE *fp1=NULL;fflush(std
6、in);fp1=fopen(d:Library.txt,a);if(fp1=NULL)printf(n文件打开错误!n);exit(0);printf(n 请输入音像图书的编号:);scanf(%s,a.bianhao);strcpy(ch,a.bianhao);if(ch0!=B&ch0!=V&ch0!=R)printf( 非法输入!n);printf( 请按任意键重新输入!);op=getchar();op=getchar();build_book();printf( 请输入音像图书的名称:);scanf(%s,);printf( 请输入音像图书的原价:);scanf(%d,&
7、a.price);printf( 请输入音像图书的原数量:);scanf(%d,&a.amount);printf( 请输入音像图书的剩余数量:);scanf(%d,&a.shengyu);if(a.amount bianhao,p1-name,&p1-price,&p1-amount,&p1-shengyu);p1+; n+;for(p1=b;p1bianhao)=0)p2=p1;m=1;break;if(m=0)printf(无此音像图书!n);printf(输入任意键继续!n); op=getchar();op=getchar();else if(strcmp(ch,p2-bianhao
8、)=0)&(p2-shengyu=0) printf(n此音像图书已全部借出!n);printf(输入任意键继续!n); op=getchar();op=getchar();else if(strcmp(ch,p2-bianhao)=0)&(p2-shengyu!=0) printf(应交的押金额为 %d 元!,(p2-price)*3); c.money=(p2-price)*3; p2-shengyu=p2-shengyu-1; fprintf(fp1,%dn,c.money); fclose(fp1); fclose(fp2); printf(n输入任意键继续!n); op=getcha
9、r();op=getchar();if(fp2=fopen(d:Library.txt,w)=NULL)printf(文件打开错误!n);exit(0); for(p1=b;p1bianhao,p1-name,p1-price,p1-amount,p1-shengyu); fclose(fp2);打开borrow.txt和Library.txt文件,将租借者的姓名、租借的书的编号和租借日期写入borrow.txt文件中,计算并显示应交押金,同时把押金写入borrow.txt文件该租借者的信息中,并且Library.txt文件中相应音像图书数量减少。然后关闭文件。(3)归还音像图书void ba
10、ck_book() struct library a=0,bMax=0,*p1=NULL,*p2=NULL; /b为结构数组struct borrower c=0,dMax=0,*p3=NULL,*p4=NULL;char ch10=0,ch1100,op;int day,n1=0,n2=0,m=0,rent,money_1;int x,i;int month_day213=0,31,28,31,30,31,30,31,31,30,31,30,31,0,31,29,31,30,31,30,31,31,30,31,30,31;FILE *fp1;FILE *fp2;fflush(stdin);
11、if(fp1=fopen(d:Library.txt,r)=NULL)printf(文件打开错误!n);exit(0); if(fp2=fopen(d:borrow.txt,r)=NULL)printf(文件打开错误!n);exit(0);printf(请输入您的名字: );scanf(%s,c.uname);printf(请输入归还的书的编号: );scanf(%s,c.bianhao);printf(请输入归还的日期(年/月/日): );scanf(%d%c%d%c%d,&c.back.year,&c.back.ch1,&c.back.month,&c.back.ch2,&c.back.d
12、ay); strcpy(ch,c.bianhao);strcpy(ch1,c.uname);/在文件中寻找被借的书p1=b;p3=d;while(feof(fp1)=0)fscanf(fp1,%s%s%d%d%d,p1-bianhao,p1-name,&p1-price,&p1-amount,&p1-shengyu);p1+; n1+;while(feof(fp2)=0)fscanf(fp2,%s%s%d%c%d%c%d%d,p3-uname ,p3-bianhao,&p3-borrow.year,&p3-borrow.ch1,&p3-borrow.month,&p3-borrow.ch2,&
13、p3-borrow.day,&p3-money);p3+;n2+; for(p1=b;p1bianhao)=0)p2=p1; break;for(p3=d;p3bianhao)=0&strcmp(ch1,p3-uname)=0)p4=p3;m=1;break; /当输入的姓名或者借书的编号错误时if(m=0)printf(您没有借书记录!n); printf(输入y重新填写资料,输入n返回上一菜单!n);scanf( %c,&op);if(op=y) back_book();if(op=n)system(cls);main() ;printf(n此音像图书名为%s n,p2-name);if(
14、fp1=fopen(d:Library.txt,w)=NULL)printf(文件打开错误!n);exit(0);p2-shengyu =p2-shengyu+1;for(p1=b;p1bianhao ,p1-name,p1-price ,p1-amount ,p1-shengyu ); /计算租借的总天数x=(p4-borrow.year%4=0&p4-borrow.year%100!=0|p4-borrow.year%400=0); if(p4-borrow.year=c.back.year)if(p4-borrow.month=c.back.month)day=c.back.day-p4
15、-borrow.day;elseday=month_dayxp4-borrow.month-p4-borrow.day;for(i=p4-borrow.month+1;i=p3-money)money_1=0;if(rentmoney)money_1=p3-money-rent; printf(已交押金 %d 元,应交租金 %d元,应退金额 %d 元n,p4-money,rent,money_1);fclose(fp1);fclose(fp2);/删除租借者的信息p3=d;n1=0;if(fp2=fopen(d:borrow.txt,r)=NULL)printf(文件打开错误!n);exit(
16、0);while(feof(fp2)=0)fscanf(fp2,%s%s%d%c%d%c%d%d,p3-uname ,p3-bianhao,&p3-borrow.year,&p3-borrow.ch1,&p3-borrow.month,&p3-borrow.ch2,&p3-borrow.day,&p3-money);p3+;n2+;fclose(fp2);for(p3=d;p3uname)=0)p4=p3; break;if(fp2=fopen(d:borrow.txt,w)=NULL)printf(文件打开错误!n); exit(0);for(p3=d;p3uname,p3-uname)=0
17、)continue;else fprintf(fp1,%s %s %d%c%d%c%d %d,p3-uname ,p3-bianhao,p3-borrow.year,p3-borrow.ch1,p3-borrow.month,p3-borrow.ch2,p3-borrow.day,p3-money);printf(成功删除 %s 的信息!n,p4-uname);printf(按任意键结束!);op=getchar();op=getchar(); fclose(fp2); 打开borrow.txt和Library.txt文件,输入归还者的姓名、归还的书的编号和归还日期,计算租借天数,显示已交押金
18、、应交租金、应退金额;将borrow.txt中相应租借者的信息删除,Library.txt中相应音像图书的数量增加。然后关闭文件。(4)购进音像图书void buy_book()struct library a=0,bMax=0,*p1=NULL,*p2=NULL; /b为结构数组char ch10=0,ch1100=0,op;int n=0,m=1,number;FILE *fp1;fflush(stdin); if(fp1=fopen(d:Library.txt,r)=NULL)printf(文件打开错误!n);exit(0); printf(请输入购进音像图书的编号: );scanf(%
19、s,a.bianhao); strcpy(ch,a.bianhao); p1=b;while(feof(fp1)=0)fscanf(fp1,%s%s%d%d%d,p1-bianhao,p1-name,&p1-price,&p1-amount,&p1-shengyu);p1+; n+;fclose(fp1);for(p1=b;p1bianhao)=0)p2=p1;strcpy(ch1,p1-name ); m=0;break;if(m)if(fp1=fopen(d:Library.txt,a)=NULL) printf(文件打开错误!n); exit(0);printf(请输入要购进音像图书的名
20、称: );scanf(%s,);printf(请输入要购进音像图书的原价: ); scanf(%d,&a.price); printf(请输入要购进音像图书的数量: ); scanf(%d,&a.amount);printf(购进音像图书%s成功!, );a.shengyu=a.amount;fprintf(fp1,%st%st%dt%dt%dn,a.bianhao,,a.price,a.amount,a.shengyu);fclose(fp1);elseif(fp1=fopen(d:Library.txt,w)=NULL) printf(文件打开错误!n)
21、; exit(0);printf(此书已存在!n);printf(请输入要购进图书的数量: );scanf(%d,&number);printf(购进音像图书%s成功!,ch1); p2-amount =p2-amount +number;p2-shengyu=p2-shengyu+number;for(p1=b;p1bianhao,p1-name,p1-price,p1-amount,p1-shengyu); printf(按任意键结束!);op=getchar();op=getchar(); fclose(fp1);打开Library.txt文件,写入购进音像图书的编号,若音像图书已存在,
22、则只输入购进数量;并在文件中添加原有音像图书的数量,若不存在,则输入新音像图书的名称、原价及数量,并添加到文件中,然后关闭文件。(5)报废音像图书void scrap_book()struct library a=0,bMax=0,*p1=NULL,*p2=NULL; /b为结构数组char ch10=0,op;int n=0,m=1;FILE *fp1;fflush(stdin); if(fp1=fopen(d:Library.txt,r)=NULL)printf(文件打开错误!n);exit(0); printf(请输入要报废的书的编号: );scanf(%s,a.bianhao );p1
23、=b;while(feof(fp1)=0)fscanf(fp1,%s%s%d%d%d,p1-bianhao,p1-name,&p1-price,&p1-amount,&p1-shengyu);p1+; n+;for(p1=b;p1bianhao)=0)p2=p1;m=0;break;fclose(fp1);if(m)printf(本音像图书库不存在此书!n);else if(p1-amount!=p1-shengyu) printf(%s已被借出,不能报废!n,p1-name);else if(p1-amount=p1-shengyu) if(fp1=fopen(d:Library.txt,w
24、)=NULL) printf(文件打开错误!n); exit(0); for(p1=b;p1bianhao =p2-bianhao) continue; else fprintf(fp1,%st%st%dt%dt%dn,p1-bianhao,p1-name,p1-price,p1-amount,p1-shengyu); printf(%s已成功报废!n,p2-name);fclose(fp1);printf(按任意键结束!);op=getchar();op=getchar();打开Library.txt文件,写入需要报废的音像图书的编号,若要报废的音像图书已被借出,则不能进行报废,然后关闭文件
25、。(6)音像图书库概况void storage_book()struct library a=0,bMax=0,*p1=NULL; /b为结构数组char ch10,op;int n=0,X,Y,Z,x,y,z;FILE *fp1;fflush(stdin);X=Y=Z=x=y=z=0; p1=b;if(fp1=fopen(d:Library.txt,r)=NULL)printf(文件打开错误!n);exit(0); while(feof(fp1)=0)fscanf(fp1,%s%s%d%d%d,p1-bianhao,p1-name,&p1-price,&p1-amount,&p1-sheng
26、yu);p1+; n+;for(p1=b;p1bianhao);if(ch0=B)X=X+p1-amount;x=x+p1-amount-p1-shengyu; if(ch0=V)Y=Y+p1-amount;y=y+p1-amount-p1-shengyu;if(ch0=R)Z=Z+p1-amount;z=z+p1-amount-p1-shengyu;printf(本图书库一共有图书 %d 本,其中被借 %d 本;n本图书库一共有VCD %d 个,其中被借 %d 个;n本图书库一共有录像带 %d 卷,其中被借 %d 卷!n,X,x,Y,y,Z,z); printf(按任意键结束!); op=g
27、etchar(); fclose(fp1);打开Library.txt文件,输出音像图书库中图书、VCD和录像带各自的数量,同时输出图书、VCD、录像带各自借出的数量。然后关闭文件。完整程序请参见附录A5. 测试与调试表1 创建音像图书库测试用例测试数据类型测试数据预期结果实测结果合法数据编号:B_1 名称:红楼梦原价:100 原数量:10 剩余数量:10剩余数量:100提示“创建音像图书红楼梦成功!”,并在文件中建立新音像图书的信息提示“创建音像图书红楼梦成功!”,并在文件中建立新音像图书的信息编号:B_2 名称:水浒传原价:90 原数量:1剩余数量:1提示“创建音像图书水浒传成功!”,并在
28、文件中建立新音像图书的信息提示“创建音像图书水浒传成功!”,并在文件中建立新音像图书的信息非法数据编号:b_1提示“非法输入!请按任意键重新输入!”,并让用户重新输入信息提示“非法输入!请按任意键重新输入!”,并让用户重新输入信息编号:B_1 名称:西游记原价:110 原数量:30剩余数量:40提示“原数量不得小于剩余数量!请重新输入!”,并让用户重新输入信息提示“原数量不得小于剩余数量!请重新输入!”,并让用户重新输入信息表2 租借音像图书测试用例测试数据类型测试数据预期结果实测结果合法数据姓名:编号:B_1日期:2014/3/28系统自动计算押金额,并输出“应交的押金额为 300 元!”系
29、统自动计算押金额,并输出“应交的押金额为 300 元!”姓名:编号:B_2日期:2014/5/1系统自动计算押金额,并输出“应交的押金额为 270 元!”系统自动计算押金额,并输出“应交的押金额为 300 元!”非法数据姓名:编号:123日期:2014/3/28提示“无此音像图书!”提示“无此音像图书!”姓名:编号:B_2日期:2014/3/28提示“此音像图书已全部借出!”提示“此音像图书已全部借出!”表3 归还音像图书测试用例测试数据类型测试数据预期结果实测结果合法数据姓名:编号:B_1日期:2014/5/31系统自动计算并显示输出“此音像图书名为红楼梦,一共租借了64天!已交押金300元
30、,应交租金64元,应退金额236元”,并在文件中删除“”的信息系统自动计算并显示输出“此音像图书名为红楼梦,一共租借了64天!已交押金300元,应交租金64元,应退金额236元”,并在文件中删除“”的信息(有时候会将整个文件的内容删除)姓名:编号:B_2日期:2014/6/1系统自动计算并显示输出“此音像图书名为水浒传,一共租借了31天!已交押金270元,应交租金31元,应退金额239元”,并在文件中删除“”的信息系统自动计算并显示输出“此音像图书名为水浒传,一共租借了31天!已交押金270元,应交租金31元,应退金额239元”,并在文件中删除“”的信息(有时候会将整个文件的内容删除)非法数据
31、姓名:小明编号:B_1日期:2014/2/2提示“您没有借书记录”,并显示“输入y重新填写资料,输入n返回上一菜单!”提示“您没有借书记录”,并显示“输入y重新填写资料,输入n返回上一菜单!”姓名:编号:V_1日期:2014/3/3提示“您没有借书记录”,并显示“输入y重新填写资料,输入n返回上一菜单!”提示“您没有借书记录”,并显示“输入y重新填写资料,输入n返回上一菜单!”表4 购进音像图书测试用例测试数据类型测试数据预期结果实测结果合法数据编号:B_1数量:3提示“此书已存在!”显示“购进音像图书红楼梦成功!”,并在文件中增加该书的数量提示“此书已存在!”显示“购进音像图书红楼梦成功!”
32、并在文件中增加该书的数量编号:V_1名称:变形金刚原价:60数量:5显示“购进音像图书变形金刚成功!”,并在文件中添加新图书的信息显示“购进音像图书变形金刚成功!”,并在文件中添加新图书的信息非法数据编号:asd提示“非法输入!请按任意键重新输入!”,并让用户重新输入信息提示“非法输入!请按任意键重新输入!”,并让用户重新输入信息表5 报废音像图书库测试用例测试数据类型测试数据预期结果实测结果合法数据编号:B_1显示“红楼梦已成功报废!”并在文件中删除红楼梦的信息显示“红楼梦已成功报废!”并在文件中删除红楼梦的信息非法数据编号:B_2显示“水浒传已被借出,不能报废!”显示“水浒传已被借出,不能
33、报废!”表6 音像图书库概况测试用例测试数据类型预期结果实测结果合法数据系统自动统计并显示文件夹即“图书库”中存储的图书、VCD和录像带的数目以及被借走的数目系统自动统计并显示文件夹即“图书库”中存储的图书、VCD和录像带的数目以及被借走的数目第3部分 实训总结1. 个人总结课程设计是培养学生综合运用所学知识发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的。回顾起此次课程设计,让我们感慨颇多。从拿到题目到完成整个编程
34、,从理论到实践,几个星期的日子里,不仅巩固了以前学过的知识,而且学到了很多在书本上没有学到过的知识,也懂得集体团队的重要性。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践结合起来,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说是困难重重,毕竟第一次做这样的课程设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体等。通过这次课程设计之后,一定把以前所学过的知识重新温故。本软件还是存在一些不足之处的,比如说在
35、算租借天数的时候,为了方便计算所以只能计算同一年的租借天数,即租借跟归还必须要在同一年,这是本系统还需改进的地方。2. 结束语这次的课程设计得以完成,离不开老师和同学们的帮助,在此,对在编程中给予我们帮助的同学和老师表示衷心的感谢。附录A 程序清单#include#define Max 100#include#includestruct date /租借&归还日期int year;char ch1;int month;char ch2; int day;struct library /音像图书库char bianhao10;char name100;int price;int amount;int shengyu;struct borrower /租借者信息char uname100; char bianhao10;struct date borrow;int money;struct date back; int rent;void build_book(); /创建音像图书库void borrow_book(); /租借音像图书void back_book(); /归还音像图书void buy_book(); /购进音像图书void scrap_book(); /报废音像图书void storage_book(); /图书库存储概况int bo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产企业代理记账与资金筹措合同范本
- 车辆抵押担保与汽车保险理赔服务合同
- 垃圾处理场地租赁合同安全操作与环保要求
- 活动票务销售与现场管理合同
- 建筑工程承包合同书(15篇)
- 墓区及穴墓位使用权转让合同书(16篇)
- 2025上海车展智能汽车洞察分析报告
- 金银岛阅读心得600字(4篇)
- 商品房买卖合同模板(16篇)2
- 计算机嵌入式开发技巧试题及答案
- 农村生活污水检测服务方案
- 住院患者转科交接登记本
- 幼儿园食谱播报
- 县医院麻醉计划书
- 高级宏观经济学讲义(南开大学-刘晓峰教授-罗默的教材)【完整版】
- 肺胀中医护理查房-课件
- 急诊临床思维-课件
- 立德修身诚信为本
- 小石狮【经典绘本】
- 艾里逊8000系列变速箱培训:《动力传递分析》
- 商务英语写作实践智慧树知到答案章节测试2023年中北大学
评论
0/150
提交评论