C语言课程设计报告-图书管理系统.doc
《C语言课程设计报告-图书管理系统.doc》由会员分享,可在线阅读,更多相关《C语言课程设计报告-图书管理系统.doc(30页珍藏版)》请在沃文网上搜索。
1、 目 录1、题目与要求22、系统总体设计(要给出必要的文字说明及必要的图示)32.1 功能需求分析(明确选题的功能需求)32.2 系统功能模块划分(要给出系统功能模块图)43、详细设计43.1重要数据的数据结构设计(即结构体的声明、变量的定义、文件)43.2 函数的规划和设计(即根据分析需要设计哪些函数及其之间的调用关系)53.3 主控模块(main函数)的流程分析与设计(要画出主函数的流程图)63.4 主要功能模块的流程分析与设计(分别要画出各主要功能模块实现的流程图)74、课程设计小结114.1 运行结果114.2设计中的难点及其解决方法184.3 不足之处.195、小组人员分工说明(明确
2、各个组员的具体分工及实际完成情况)19评语及成绩206、附录(源代码)211、题目与要求(标题的字体格式、段落格式照此,以下同!)题目:图书馆管理系统要求:能够完成图书馆日常操作,数据要能够保存,能够随时取出,并在任何操作后都能保持信息完整性,图书的原始数据需保存到磁盘文件中。2、系统总体设计(要给出必要的文字说明及必要的图示)主要分为四大部分:1、图书查找(包括按书名或作者查找)2、借阅图书3、归还图书4、管理系统(包括添加图书、修改图书、删除图书、图书统计、学生管理、职工管理等)2.1 功能需求分析(明确选题的功能需求)具体功能:图书查找n 按书名查找。n 按作者查找。图书借还n 借书l
3、判断所借书籍号是否存在,若不存在重新输入书籍号。l 判断该借书证号是否存在,若不存在重新输入借书证号(即办卡功能)。l 判断该书籍是否已借出,若是则不允许执行借书操作。l 借书处理包括在“借还书登记”中增加该借书情况,在该图书信息中加上“已借”标记。n 还书l 判断所借书是否存在,若不存在重新输入书籍。l 判断该书是否已借出,若不是则不允许执行还书操作。l 借书处理包括在“借还书登记”中增加该还书情况,在该图书信息中加上“未借”标记。管理系统:n 添加图书:增加新的图书,同时需检查新书的图书编号是否在原图书当中存在,若是则应取消添加并提示重新输入。n 删除图书资料:通过编号查询该图书,若找到则
4、允许删除,否则提示无该图书信息。删除对象包括该图书资料以及“借还书登记”中的相关记录。n 删除图书资料:通过编号查询该图书,若找到则允许删除,否则提示无该图书信息。删除对象包括该图书资料以及“借还书登记”中的相关记录。n 图书统计:统计图书馆里存有多本图书。n 学生管理:办理借书卡,统计有多少人有该图书馆的借阅卡,取消在该图书馆借阅图书,查看有多图书被借出。n 职工管理:增加该图书馆管理员工,除掉某员工,员工调职修改资料,统计员工人数等。2.2 系统功能模块划分(要给出系统功能模块图)图书管理系统图图书查找 借书按作者查询按书名查询还书管理系统学生管理添加图书删除图书图书统计职工管理修改图书申
5、请办卡删除卡号图书统计卡号统计增加员工删除员工修改员工统计员工3、详细设计3.1重要数据的数据结构设计(即结构体的声明、变量的定义、文件)11struct student /*定义学生类型,用于存放借出的书籍*/ int carnum; char lendbook10; student1000;struct employ /*定义职工类型*/ int employnum; char employname15; int employage; char employsex2; char employleve10; long int employtage; employ50;struct book
6、/*定义书的类型*/ int booknum; char bookname10; char bookcreat10; int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/ book1000;struct car /*借书卡的数据类型*/ int carnum; char studentname10; int studentclass; car100;文件有:图书保存文件:book.txt借阅卡文件:car.txt借阅信息文件:record.txt职工信息文件:employ.txt修改文件:bookl.txt3.2 函数的规划和设计(即根据分析需要设计哪些函数及其之间
7、的调用关系)主要设计的函数有:添加图书函数addbook()删除图书函数delbook()图书查询函数chabook()、findbook()、findbook1()图书统计函数bookcount()办卡函数addcar()删除卡函数delcar()卡号统计函数carcount()借书函数lendbook()借出图书统计函数lendcount()还书函数huanbook()修改员工资料函数changemploy()删除员工函数delemploy()添加员工函数addemploy()员工统计函数employcount()其中有调用关系的有:1、主函数main():查找图书函数chabook()、
8、借书函数lendbook()、添加图书函数addbook()、删除图书函数delbook()、修改图书函数changebook()、图书统计函数bookcount()、修改员工资料函数changemploy()、删除员工函数delemploy()、添加员工函数addemploy()、员工统计函数employcount()、办卡函数addcar()、删除卡函数delcar()、卡号统计函数carcount()、借出图书统计函数lendcount()。2、查找图书函数chabook():按书名查找函数findbook()、按作者查找函数findbook1()。3.3 主控模块(main函数)的流程
9、分析与设计(要画出主函数的流程图)开始I=0输入iI=1I=2I=3结束查阅图书借阅图书管理系统还书I=4Main函数流程yNyyyyNNNN主函数主要分为4个部分的功能(查阅图书、借阅图书、管理系统、还书)和一个退出系统的选择,分别用i的值判断其功能。当i=0时,为退出系统;当i=1时,为查阅图书;当i=2时,为借阅图书;当i=3时,为管理系统,当i=4时,为还书功能。3.4 主要功能模块的流程分析与设计(分别要画出各主要功能模块实现的流程图)主要的功能模块有:管理流程、职工管理、学生管理、图书查找、借书流程、还书流程管理系统I=0输入iI=1I=2I=3I=4NNNNNNI=5I=6结束添
10、加图书删除图书修改图书资料书籍统计职工管理学生管理YYYYYYY管理系统职工管理I=0输入iI=1I=2I=3I=4NNNNN结束增加员工删除员工修改员工统计员工职工管理YYYY查阅图书输入iI=0I=1I=2按书名查找按作者查找结束YYNNNY图书查找还书还书流程图输入书编号kkkKkk是否存在Kkk是否借出还书登记结束该书没借出NNYY借书输入书编号kkkKkk是否存在kkk是否借出输入ch判断是否重输Ch=y or ch=Y登记借书结束该书已借出NNYYNY借书流程图学生管理I=0输入iI=1I=2I=3I=4NNNNN结束申请新卡删除卡号借书统计卡号统计学生管理YYYY4、课程设计小结
11、4.1 运行结果如下:4.2 设计中的难点及其解决方法这个系统设计中,主要的难点在于要两个方面,一是设计的对象分为两个方面(面向书馆的管理方面和学生的借阅方面),二是历史查询的功能实现比较困难复杂。针对第一个问题,我们设计了书馆和借阅人这两个方面的结构体,分别实现不同的功能。针对第二个问题,我们主要以多方面的查询来实现这一功能的。此外,我们在借阅图书这个模块消耗了很多时间和人力,一开始总是运行不了,分析代码是没有问题的,可是就是无法实现功能。后来我们发现,主要是办卡功能被我们弄进去了,以至于借书的记录无法保存。所以我们就将办卡的功能放到图书管理那部分。4.3 不足之处首先,我们设计的界面不够美
12、观整齐,本来想弄出表格的形式,但由于时间的关系,无法具体完善。其次,这个系统中,部分功能的实现不够完善,缺乏人性化。最后,我们认为这个系统的的功能不够具体,缺少一些实用性的功能。而且,我们的系统运行繁琐,不够明朗,也没有使用清屏的功能,界面显得罗嗦。查询功能方面也不具人性化。5、小组人员分工说明(明确各个组员的具体分工及实际完成情况)学号姓名分工及完成情况评语及成绩指导教师评语: 指导教师签名: 2011年 月 日小组答辩成绩课程设计成绩评定学 号姓 名第1阶段成绩(30%)第2阶段成绩(60%)平时成绩(10%)最终成绩1931附录源代码如下:#include #include #inclu
13、de #include #include #define STACK_INIT_SIZE 10 #define OK 1 #define TRUE 1 #define FALSE 0 #define ERROR 0struct student /*定义学生类型,用于存放借出的书籍*/ int carnum; char lendbook10; student1000;struct employ /*定义职工类型*/ int employnum; char employname15; int employage; char employsex2; char employleve10; long i
14、nt employtage; employ50;struct book /*定义书的类型*/ int booknum; char bookname10; char bookcreat10; int turefalse; /*用于借书和还书模块判断一本书是否借出的条件*/ book1000;struct car /*借书卡的数据类型*/ int carnum; char studentname10; int studentclass; car100;huanbook() /*还书函数*/ FILE *fp,*fp2; /*定义两个文件指针,fp2用于修改数据时设立临时文件用,防止数据遭破坏*/
15、int i,n; int carnum; char lendbook10; printf(请你输入你的卡号n); scanf(%d,&carnum); fp=fopen(car.txt,r); /*读取卡号记录*/ for(i=0;fread(&cari,sizeof(struct car),1,fp)!=0;i+) /*for循环判断卡号是否存在*/ if(cari.carnum=carnum) /*卡号存在,进入下一循环*/ n=i; fclose(fp); printf(请输入你要还的书的名字n); scanf(%s,lendbook); fp=fopen(record.txt,r);
16、for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) /*判断是否借阅了输入的书*/ if(strcmp(studenti.lendbook,lendbook)=0) /*借阅了该书,进入下一循环,否则出错显示*/ fclose(fp); fp=fopen(record.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&studenti,sizeof(struct student),1,fp)!=0;i+) if(strcmp(studenti.lendbook,lendbook)=0
17、) continue; /*删除还掉的书的借书记录*/ fwrite(&studenti,sizeof(struct student),1,fp2); /*写入原来没还的书的记录*/ fclose(fp); fclose(fp2); fp=fopen(record.txt,w); fp2=fopen(bookl.txt,r); for(i=0;fread(&studenti,sizeof(struct student),1,fp2)!=0;i+) fwrite(&studenti,sizeof(struct student),1,fp); /*将借书记录信息写回*/ fclose(fp); f
18、close(fp2); fopen(bookl.txt,w); /*清临时文件的记录*/ fclose(fp2); fp=fopen(book.txt,r); fp2=fopen(bookl.txt,w); for(i=0;fread(&booki,sizeof(struct book),1,fp)!=0;i+) /*将书的记录写入临时文件,防止因为修改信息破坏以前的记录*/ if(i=n) booki.turefalse=1; fwrite(&booki,sizeof(struct book),1,fp2); /*将还的书的原来状态设为无人借阅的*/ continue; fwrite(&bo
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 图书 管理 系统
