《图书管理系统课程设计报告-学位论文.doc》由会员分享,可在线阅读,更多相关《图书管理系统课程设计报告-学位论文.doc(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、课程设计报告题 目:图书信息管理系统设 计 者:王杰、纪浩、方新新、殷文涛、熊健专业班级:信管2011学 号:1165138121 1165138124 1165138126 1165138123 1165138125指导教师: 聂维同(工程师)2013年7月9日目 录一、设计任务书3二、本组课题及本人任务3三、程序功能简介3四、主体内容31设计分析32程序结构43各模块的功能及程序说明54. 源程序55操作方法.166试验结果167设计体会.五、附录201.流程图20 2.过程列表24一、设计任务书1.目的1)复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握。2)课程设计为学生提供
2、了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。3)培养学生在项目开发中团队合作精神、创新意识及能力。2.要求:1、对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理。2、系统设计要实用,编程简练,可用,功能全面。3、说明书、流程图要清楚。4、记录设计情况(备查,也为编写设计说明书作好准备)。 5、要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式。6、设计上交内容:设计报告一份(按格式书写);源程序一份,能
3、编译成可执行文件并能正常运行。二、本组课题及本人任务课题:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:1.系统以菜单方式工作。2.图书信息录入功能(图书信息用文件保存)输入。3.图书信息浏览功能输出。4.查询和排序功能:(至少一种查询方式)算法。a. 按书名查。b.按作者名查询。本人任务:负责设计和编写图书信息管理系统的修改图书信息部分。三、程序功能简介 本系统是以visual C+ 6.0 环境下用C语言开发的一个图书管理系统。本系统具有图书信息录入、浏览、删除、修改、查找(包括按书名、作者查找)功
4、能。其中图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间、价格,并且对信息以文件形式储存。另外本系统具备实用性的同时代码逻辑谨慎清晰易懂,且界面美观。四、主体内容1设计分析本系统共分为一个主页面模块(主函数部分),五个功能模块(功能函数)分别为图书信息录入、图书信息浏览、图书信息查询、图书信息删除、图书信息修改。设计时应该先写好主函数、定义好全局变量和功能函数,再对五个功能函数进行设计。在每个功能函数和主函数应中加入控制条件使用户可以随时退出系统,并在用户输入指令错误的时候给予提醒和退出选项。小组中的五个人分别承担一个功能模块进行设计。并在每个人设计完成后通过主函数进行链接调试正确
5、后方为完成。2程序结构(流程图)系统运行选择功能1.信息录入键入信息2.信息浏览返回主菜单返回主菜单3.信息查询按书名查找按作者查找返回主菜单输入书名输入作者信息存在?是否输出信息返回主菜单4.信息删除输入删出信息代号输出删除后的信息返回主菜单5.信息修改输入修改信息代号修改信息存在?是信息修改否返回主菜单输出修改后的信息6.退出系统3各模块的功能及程序说明A、录入模块:本模块主要执行信息录入功能。信息录入是为了把新来的图书进行进库操作,也就是将新到来的图书的信息放入数据库当中,方便图书管理员的管理和操作,帮助图书管理员更好的管理图书的进库出库的情况,录入模块主要是方便了图书管理员对于图书的更
6、好的管理,有助于挺高图书管理员的工作效率。B、浏览模块:本模块主要是执行把已有信息输出浏览功能。该模块的主要作用是为了对于所有图书信息的浏览,全方位的操作和宏观上的管理,对于图书馆已有的图书可以有一个宏观上的认识,是图书管理员做到了心中有数,在总体上把握图书的所有信息,方便以后的查询、删除和修改。浏览模块对于增强图书管理员的宏观把握提供了一个有效的途径和方法,是图书馆里系统的关键所在。C、查询模块:本模块主要是执行按书名和按作者名查找图书信息的功能。众所周知,如果图书管理员想找到某本图书或者是读者希望找到某本图书,应该对其进行查询操作,查询功能是图书管理系统的关键一环,如果没有查询功能,该图书
7、管理系统就是一个欠缺的甚至不完整的系统,查询系统不仅方便了图书管理人员而且方便了读者对于查询图书的有效性和连贯性。D、删除模块:本模块主要执行删除图书信息的功能。删除模块是图书管理系统的重中之重,删除模块的功能是为了当图书馆发生某种意外因素或者是对图书进行了更新,造成了某种图书的丢失或缺少,所以在此基础上要对于图书数据的更新和图书信息的重新整理,删除模块是对于图书管理系统的补充,是图书管理系统的“增、删、改、查”的功能更加的完善,因此上来说,删除模块也是图书管理系统最重要的和最关键的一环。E、修改模块(本人设计模块):本模块主要执行图书信息修改功能。在用户选择该功能后。首先,系统会弹出已存在信
8、息列表并让用户选择所要修改的信息项目。然后,当用户选定要修改的信息后会弹出信息目录,用户需按顺序依次修改信息内容。最好当所有信息项目都修改完成之后,按回车键会在窗口上输出修改后的内容。4. 源程序#include#include#include#include#define MAX 100struct Studentint num;/*登录号*/char name100;/*书名*/char author100;/*作者名*/char fn100;/*分类号*/char place100;/*出版单位*/char day100;/*出版时间*/float money;/*价格*/stuMAX;
9、main()/*主函数*/void Input();/*输入*/void Display();/*输出*/void Find();/*查找*/void Modify();/*删除*/void Change();/*修改*/int n; for(;)printf(n); printf(n); printf( n); printf( 欢迎来到图书信息管理系统 n); printf( n); printf( n);printf( 主菜单 n);printf( n); printf( 1.图书信息录入 n); printf( n);printf( 2.图书信息浏览 n); printf( n);pri
10、ntf( 3.图书信息查询 n); printf( n);printf( 4.图书信息删除 n); printf( n);printf( 5.图书信息修改 n); printf( n);printf( 6.退出系统 n); printf( n); printf(nn); printf(请输入选择项(1-6):); scanf(%d,&n); printf(nnnn); if(n0&n7)switch(n) case 1:Input();break; case 2:Display();break; case 3:Find();break; case 4:Modify();break; case
11、5:Change();break; case 6:printf(n); printf( n); printf( 谢谢使用! n); printf( 再见! n); printf( n); printf(n); exit(0); else printf(n); printf( n); printf( 输入错误! n); printf( 请退出! n); printf( n); printf(n); break;void Find()/*查找*/ FILE *fp;int i;int choose,t;char ans100; doprintf(1.按书名查找n);printf(2.按作者名查找n
12、);printf(返回主菜单(其他数字)n);scanf(%d,&choose);if(choose=1)printf(输入所查书名:n);scanf(%s,ans);t=-1;if(choose=1)for(i=0;iMAX;i+) if(strcmp(ans,stui.name)=0) t=i; fp=fopen(student,rb);for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+)printf(%d %s %s %s %s %s %fn,stut.num,stut.name,stut.author,stut.fn,stut.p
13、lace,stut.day,stut.money);if(t=-1) printf(不存在该信息n);else if(choose=2)printf(输入所查作者名:n);scanf(%s,ans);t=-1;if(choose=2)for(i=0;iMAX;i+)if(strcmp(ans,stui.author)=0) t=i; fp=fopen(student,rb);for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+) printf(%d %s %s %s %s %s %fn,stut.num,stut.name,stut.aut
14、hor,stut.fn,stut.place,stut.day,stut.money);if(t=-1) printf(不存在该信息n);else return;while(1);void Display()/*输出*/FILE *fp; int i; fp=fopen(student,rb); printf(n); printf( 图书列表n); printf(-n); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(-n); for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+)printf(%
15、6d %8s %8s %8s %8s %8s %8.2fn,stui.num,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money);fclose(fp);void Input()/*输入*/FILE *fp;int n;fp=fopen(student,ab+); for(n=0;nMAX;n+)printf(n=%d 输入序号n(当输入n=-1时,返回),n=,n+); scanf(%d,&n);if(n=-1) fclose(fp);return;elseprintf(请输入登录号 书名 作者名 分类号 出版单位 出版时
16、间 价格n);scanf(%d%s%s%s%s%s%f,&stun.num,stun.name,stun.author,stun.fn,stun.place,stun.day,&stun.money); fwrite(&stun,sizeof(struct Student),1,fp);fclose(fp);void Modify()/*删除*/FILE *fp;int i,flag,n,s,j; fp=fopen(student,rb+); rewind(fp); printf( 图书列表n); printf(-n); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n)
17、; printf(-n); for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+) printf(%6d %8s %8s %8s %8s %8s %8.2fn,stui.num,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money); printf(n); n=i;printf(输入待删除图书号:n);scanf(%d,&s);for(i=0,flag=1;flag∈i+)if(s=stui.num)for(j=i;jn-1;j+)stuj.num=stuj+1.nu
18、m; strcpy(stuj.name,stuj+1.name); strcpy(stuj.author,stuj+1.author); strcpy(stuj.fn,stuj+1.fn); strcpy(stuj.place,stuj+1.place);strcpy(stuj.day,stuj+1.day);stuj.money=stuj+1.money;flag=0;if(!flag)n=n-1;else printf(没有此号n);fp=fopen(student,wb);for(i=0;in;i+)fwrite(&stui,sizeof(struct Student),1,fp); f
19、close(fp);fp=fopen(student,r); printf( 图书列表n); printf(-n); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(-n); for(i=0;in;i+) fread(&stui,sizeof(struct Student),1,fp); printf(%6d %8s %8s %8s %8s %8s %8.2fn,stui.num,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money); printf(n); fclose(fp);vo
20、id Change()/*修改*/ FILE *fp; int i,num,n; int flag=0; fp=fopen(student,rb); printf(n); printf( 图书列表n); printf(-n); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(-n); for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+)printf(%6d %8s %8s %8s %8s %8s %8.2fn,stui.num,stui.name,stui.author,stui.fn,stui.
21、place,stui.day,stui.money);fclose(fp); printf(请输入要修改的图书号:); scanf(%d,&num); for(i=0;i=MAX;i+) if(stui.num=num) printf( 图书列表n); printf(-n); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(-n); printf(%6d %8s %8s %8s %8s %8s %8.2fn,stui.num,stui.name,stui.author,stui.fn,stui.place,stui.day,stui.money); p
22、rintf(-nn); n=i; flag=1; break; if(flag=0)printf(n); printf( 输入错误!n); printf( 请返回!n); printf(n); return; printf(nnn); fp=fopen(student,rb+); fseek(fp,n*sizeof(struct Student),0); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); scanf(%d%s%s%s%s%s%f,&stun.num,stun.name,stun.author,stun.fn,stun.place,stun.day,&s
23、tun.money); fwrite(&stui,sizeof(struct Student),1,fp); fclose(fp); fp=fopen(student,rb); printf( 图书列表n); printf(-n); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(-n); for(i=0;fread(&stui,sizeof(struct Student),1,fp)=1;i+) printf(%6d %8s %8s %8s %8s %8s %8.2fn,stui.num,stui.name,stui.author,stui.fn,s
24、tui.place,stui.day,stui.money); printf(-nn); fclose(fp);5操作方法(流程)第一步:双击打包好的.exe程序,打开程序。第二步:根据窗口提示内容作出选择。第三步:根据弹出的二级菜单作出选择。第四步:根据所选内容进行相应的操作。第五步:操作完毕,根据提示返回主菜单会直接退出该系统。6试验结果A、图书信息录入:数据输入:数据输出:B、图书信息浏览输入数据:数据输出:C、图书信息查询输入数据:输出数据:D、图书信息删除:输入数据:输出数据:E、图书信息修改输入数据:输出数据:F、系统退出输入数据:数据输出:7设计体会。一学期的C语言课程学习,已经
25、接近尾声。在这学期的学习中,虽然没有达到对C语言很了解,但是在今后的生活中,不断积累,不断学习这门课程。因为都知道这门课程的重要性以及参加工作后的必要性。学好C语言,对今后找工作各方面都有着很大的帮助,所以我们有机会学习这门课程,就必须学好。仔细想想学习C语言 的过程中,烦恼多多。C 语言程序设计到底是有什么用。这门课程是用来做什么的。这就是我最初的疑惑。后来慢慢的接触多了,渐渐的有了点认识。其实我十分不喜欢这门课程,真的。当上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。通过半个学期的学习,我了解了基本知识。知道编程的基本格式,学会了一些基本语句,在程序
26、中一些符号所代表的含义以及在程序中所要表示的含义。编写程序时,要注意的地方很多,一个小小的符号错误就会导致程序编译失败,很纠结的事情。所以编程时要十分仔细小心。学了各种语句,编写了几个程序,这只不过是C语言中基本再基本的东西了,但还是挺模糊的,对学习这门课程讲究的是过程。学习编译基本程序后,才可以编译更加难的程序。慢慢来吧,有些事情做了不一定成功,但是不去做肯定不会成功。我相信只要努力学习。总有一天我会学好这门课程的。七、附录1.流程图主页面:信息录入:信息浏览:信息查询:信息删除:信息修改:系统退出:2.主要过程列表A、程序开头定义:#include:#include是编译预处理指令,就是在
27、编译前将stdio.h这个文件里的函数都添加到你写的cpp文件中。#include:在编译前C语言里面关于字符数组的函数定义的头文件,就是在编译前将stdio.h这个文件里的函数都添加到你写的cpp文件中。#include:在编译前将stdlib.h这个文件里的函数都添加到你写的cpp文件中。#include:在编译前将conio.h这个文件里的函数都添加到你写的cpp文件中。#define MAX 100:#define 就是在编译器编译之前对代码进行字符串替换,即是把MAX换成100.B、struct Student:结构体,定义的结构体是整个程序的共用体,即是该结构体可在每个模块中不从新
28、定义就使用。C、main()主函数模块主要变量、函数:void Input():自定义输入函数。void Display():自定义输出函数。void Find():自定义查找函数。void Modify():自定义删除函数。void Change():自定义修改函数。for():循环函数。switch():选择函数,判断用户输入的数字进行功能选择。exit():退出循环函数。D、void Input()输入模块主要变量、函数:FILE *fp:声明fp是指针,用来指向FILE类型的对象。fopen():fopen函数用来打开一个文件。printf():输出函数,以程序员规定数据类型把数据输出
29、到窗口上。scanf():输入函数,以程序员规定的的数据类型输入数据。if()else:条件判断函数。fclose():关闭文件的函数,功能为关闭打开的文件,以防止数据丢失。fwrite():向文件写入一个数据块。sizeof():以字节形式给出了其操作数的存储大小。for():循环函数。E、void Display()输出函数主要变量、函数: FILE *fp:声明fp是指针,用来指向FILE类型的对象。fread():在文件中读出一个数据块赋值给某一个变量fopen():fopen函数用来打开一个文件。fclose():关闭文件的函数,功能为关闭打开的文件,以防止数据丢失。printf()
30、:输出函数,以程序员规定数据类型把数据输出到窗口上。scanf():输入函数,以程序员规定的的数据类型输入数据。if()else:条件判断函数。for():循环函数。F、void Find()查找函数主要的变量和函数: FILE *fp:声明fp是指针,用来指向FILE类型的对象。 char ans100:一个定义为字符型的有100个元素的数组。strcmp(,):比较函数。比较逗号两边的值是否一样,如果一样返回值为0,否则为1 。do.while:循环函数,当函数返回值为1时退出循环,否则继续循环。fopen():fopen函数用来打开一个文件。fclose():关闭文件的函数,功能为关闭打开的文件,以防止数据丢失。if()else:条件判断函数。for():循环函数。printf():输出函数,以程