课程设计(论文)某高校图书管理系统.doc

上传人:仙人指路1688 文档编号:3993589 上传时间:2023-03-30 格式:DOC 页数:34 大小:413.50KB
返回 下载 相关 举报
课程设计(论文)某高校图书管理系统.doc_第1页
第1页 / 共34页
课程设计(论文)某高校图书管理系统.doc_第2页
第2页 / 共34页
课程设计(论文)某高校图书管理系统.doc_第3页
第3页 / 共34页
课程设计(论文)某高校图书管理系统.doc_第4页
第4页 / 共34页
课程设计(论文)某高校图书管理系统.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《课程设计(论文)某高校图书管理系统.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)某高校图书管理系统.doc(34页珍藏版)》请在三一办公上搜索。

1、沈 阳 航 空 航 天 大 学 课程设计题目:某高校图书管理系统一、课程设计时间201011第2学期 第15周,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:1.录入图书信息(根据图书馆的管理情况自行设定,要具有实用性);2.借书处理(数量不足三本,不予外借,并显示相应的提示信息);3.还书处理。4 查询图书信息(根据书名或图书编号)。三、课程设计要求1. 程序质量: 贯彻结构化程序设计思想。 用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。 用户界面中的菜单至少应包括“图书信息录入”、“借书处理”、“还书处理”、“退出”、“查询图书信息”5项。 代码应适当缩进,

2、并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、成绩六、教师评语目录一、需求分析1二、设计分析3三、主要界面截图10四、技术要点13五、个人总结24六、参考文献25七、源程序25一、需求分析 根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。经过对程序设计题目的分析可知,整个程序的设计实现大致分为5个模块,其中每一个模块对应一个函数(查询模块对应三个函数),他们的功能分别是:录入图书信息(luru);借书(jieshu);还书(hu

3、anshu);查询(chaxun)。该系统是一个较典型的数据管理系统,其使用者被假定为图书管理人员,系统应该具有易于管理、快速、稳定、功能齐全的特点。1. 管理性分析系统管理的数据涉及到图书的管理问题,数据量较大且是一种基础性数据,是管理图书的重要数据,所以应该能够快速方便调用修改增添。2. 快速性分析快速性分析,由于信息量较大且变动较为频繁,因此,该程序应该能快速的调用和增补。3. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。4. 主要功能分析(1)录入函数:主要功能是将图书信息录入书库中; (2)借书函数:主要实

4、现学生借阅书籍的功能;(3)还书函数:实现的功能是把学生借阅的书籍还给书库;(4)查询函数:是显示图书信息(用户输入查询条件,系统规则地在界面显示查询结果,且显示的数据尽量全面。当输入图书编号时,可查询到该图书的书名,作者,出版社,数量;当输入书名时,可查询到该图书的编号,作者,出版社,数量)。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个图书都包含编号,书名,作者,出版社,数目,将图书纪录类型定义为结构体类型,数据读取自程序所在目录下的图书。二、设计分析主要有5个功能模块,每个模块对应一个C语言自定义函数。他们的功能分别

5、是:录入图书信息(luru);借书(jieshu);还书(huanshu);查询图书信息(chaxun)。 这些函数原型及其功能简述如下:1、录入函数:void luru()/图书录入 主要功能是将图书信息录入书库中;2、借书函数:void jieshu()/借书 主要实现学生借阅书籍的功能;3、还书函数:void huanshu()/还书 实现的功能是把学生借阅的书籍还给书库;4。查询函数:void chaname() 功能是显示图书信息。当输入图书编号时,可查询到该图书的书名,作者,出版社,数量;当输入书名时,可查询到该图书的编号,作者,出版社,数量。除上面介绍的功能之外,程序还具有退出功

6、能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个图书都包含编号,书名,作者,出版单位,库存数量,将图书纪录类型定义为结构体类型,数据读取自程序所在目录下的tushiguanli.txt。1、程序总体结构图2、主要功能模块框图(1)录入图书信息luru (2)借书函数jieshu(3)还书函数huanshu(4)查询函数chaxun 三、主要界面截图图1 程序主界面图2 录入图书信息图示3 借书功能图示4 还书功能图示5 查询功能(按书名)图示6 查询功能(按书号)四、技术要点设计的程序由七个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求

7、的所有功能。在这些函数当中,输入图书信息、借阅图书信息、还书函数和查询图书函数是程序中较为核心的部分,其中查询函数调用了按书号查询和按书名查询两个函数。1、结构体的应用定义了结构体用来描述图书的编号、作者、书名、出版社以及图书的数量;并且定义了指针:头指针head和指针p1、p2。具体的定义如下:struct book int num; char author10; char name10; char publicor10; int amount; struct book *next;*head,*p1,*p2;所定义的结构体主要用于定义数组和指针。2、文件操作包括了文件的写入和读取两个方面。

8、文件的写入操作,用于保存录入的学生数据,也用于保存所修改的数据。例如如下程序段用于保存录入的图书信息:void luru()/图书录入 FILE *fp; fp=fopen(d:tushuguanli.txt,w); if (fp=NULL) printf(n 打开文件失败!n); exit(0); printf( 请输入图书信息(图书号为“0”时结束)n); printf( 输入顺序为:图书号、书名、作者、出版社、图书数量n); head=NULL; p1=p2=(struct book*) malloc(LEN); scanf(%d%s%s%s%d,&p1-num,p1-name,p1-a

9、uthor,p1-publicor,&p1-amount); while (p1-num) fprintf(fp,%d%s%s%s%d,p1-num,p1-name,p1-author,p1-publicor,p1-amount); n=n+1; if (n=1) head=p1; else p2-next=p1; p2=p1; p1=(struct book *)malloc(LEN); printf( 请您继续输入n); scanf(%d%s%s%s%d,&p1-num,p1-name,p1-author,p1-publicor,&p1-amount); p2-next=NULL;fclo

10、se(fp);例如如下程序段用于读取录入的图书信息:void jieshu()/借书int i;FILE *fp;fp=fopen(d:tushuguanli.txt,r);if(fp=NULL)printf(n 打开文件失败!n);exit(0);p1=head;printf(请输入你要借的书的书号n);scanf(%d,&i);while(p1!=NULL)if(i=p1-num)if(p1-amountamount-;printf( 书号 书名 作者 出版单位 剩余数量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-pub

11、licor,p1-amount);p1=p1-next;getch();fclose(fp);3、输入图书信息函数 输入图书信息,首先由程序创建一个新文件,并将录入的图书信息写入该文件当中,具体的程序段如下:void luru()/图书录入 FILE *fp;fp=fopen(d:tushuguanli.txt,w);if(fp=NULL)printf(n 打开文件失败!n);exit(0);printf( 请输入图书信息(图书号为“0”时结束)n);printf(输入顺序为:图书号、书名、作者、出版社、图书数量n);head=NULL;p1=p2=(struct book*) malloc(

12、LEN);scanf(%d%s%s%s%d,&p1-num,p1-name,p1-author,p1-publicor,&p1-amount);while(p1-num) fprintf(fp,%d%s%s%s%d,p1-num,p1-name,p1-author,p1-publicor,p1-amount);n=n+1;if(n=1) head=p1;elsep2-next=p1;p2=p1;p1=(struct book *)malloc(LEN);printf( 请您继续输入n);scanf(%d%s%s%s%d,&p1-num,p1-name,p1-author,p1-publicor

13、,&p1-amount);p2-next=NULL;fclose(fp);4、借阅图书函数该函数的核心内容是更改算法。该函数执行时,由用户输入要借阅图书的编号,而后按照该编号进行查找。如果库存少于三本了则提示库存有限无法借阅,如果库存大于等于三本时,显示借书成功,p1-amount值减1。具体程序段如下:void jieshu()/借书int i;FILE *fp;fp=fopen(d:tushuguanli.txt,r);if(fp=NULL)printf(n 打开文件失败!n);exit(0);p1=head;printf(请输入你要借的书的书号n);scanf(%d,&i);while(

14、p1!=NULL)if(i=p1-num)if(p1-amountamount-;printf( 书号 书名 作者 出版单位 剩余数量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next;getch();fclose(fp);5、还书函数提示输入要还的书的编号,如果所输入的书号在已借图书中,显示还书成功,p1-amount值加1,具体程序段如下:void huanshu()/还书 int i; FILE *fp;fp=fopen(d:tushuguanli.txt,r);i

15、f(fp=NULL)printf(n 打开文件失败!n);exit(0);p1=head;printf(请输入你要还的书的书号n);scanf(%d,&i);while(p1!=NULL)if(i=p1-num)printf(还书成功n);p1-amount+;printf( 书号 书名 作者 出版单位 剩余数量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next;getch();fclose(fp);6、查询函数提示按照书名或者书号来查询图书信息,如果选择按书名查询信息,

16、则会用按书名查询函数,该函数的核心内容是if函数嵌套以及strcmp比较字符串函数的使用;如果选择按书号查询信息,则会用按书号查询函数,该函数如果输入的书号和书库所有书号相符合,则会显示该图书信息,程序段如下:void chaxun()/查询int choose;FILE *fp;fp=fopen(d:tushuguanli.txt,r);if(fp=NULL)printf(n 打开文件失败!n);exit(0);p1=head;printf( n 书名查询请按(1),书号查询请按(2)n);scanf(%d,&choose);switch(choose)case 1: chaname();b

17、reak;case 2: chanum();break;default:printf( n Error n);fclose(fp);void chaname()char shuming10;p1=head;printf(n 请输入书名 );scanf(%s,shuming);while(p1!=NULL) if(strcmp(shuming,p1-name)=0)printf( 书号 书名 作者 出版单位 剩余数量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next; ge

18、tch();void chanum()int number;printf(n 请输入书号 );scanf(%d,&number);p1=head;while(p1!=NULL)if(number=p1-num)printf( 书号 书名 作者 出版单位 剩余数量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next; getch(); 7、所用到的主要知识点 (1)、熟练使用函数,能够自己行编写函数并调用。 void luru()/图书录入 (2)、掌握了switch语句的运

19、用,及面对多分支处理的情况。void main()int order;while(1)system(cls);caidan();fflush(stdin);scanf(%d,&order);switch (order)case 1:luru();break;case 2:jieshu();break;case 3:huanshu();break;case 4:chaxun();break;case 5:exit(0);break;default:printf(ttt输入的序号有误,请检查后重新输入.n);getch();break; (3)、链表的应用:链表是一种物理存储单元上非连续、非顺序的

20、存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。while(p1-num) fprintf(fp,%d%s%s%s%d,p1-num,p1-name,p1-author,p1-p ublicor,p1-amount);n=n+1;if(n=1) head=p1;elsep2-next=p1;p2=p1;p1=(struct book *)malloc(LEN); (4)

21、、指针的应用: p2-next = p1(5)、if else语句的应用: if(p1-amountamount-;printf( 书号 书名 作者 出版单位 剩余数量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount); (6)、定义数组: void chaname()char shuming10; (7)、占位符、换行等的应用: printf(t%dt%st%st%st%dn,五、个人总结此次课程设计中,运用链表和文件读写技术,完成了一个简单的图书管理系统,在编写代码的过程中,对链表的应用有

22、了更加深入的了解,对文件的读写也有了一定的认识,但是,程序依然存在不足:比如说,在处理文件异常时,没有相应的处理代码。在删除链表结点时,当链表为空时的判断不够详细,在查询和写入文件时,对输出格式的控制还不够完善,今后在代码编写中,这些都是需要注意的问题。相信通过今后的努力,我的代码编写的实际应用能力会有更大的提高!六、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006七、源程序#include#include#include#include#define LEN sizeof(struct book)struct b

23、ookint num;char author10;char name10;char publicor10;int amount;struct book *next;*head,*p1,*p2;int n=0;void caidan()/菜单 printf(nnnnnnn);printf(ttt*menu*n);printf(ttt* 1.图书信息录入: *n);printf(ttt* 2.借书处理: *n);printf(ttt* 3.还书处理: *n);printf(ttt* 4.查询图书信息: *n);printf(ttt* 5.退出 *n);printf(ttt*n);printf(tt

24、t 请输入选项编号(0-5):);void luru()/图书录入 FILE *fp;fp=fopen(d:tushuguanli.txt,w);if(fp=NULL)printf(n 打开文件失败!n);exit(0);printf( 请输入图书信息(图书号为“0”时结束)n);printf( 输入顺序为:图书号、书名、作者、出版社、图书数量n);head=NULL;p1=p2=(struct book*) malloc(LEN);scanf(%d%s%s%s%d,&p1-num,p1-name,p1-author,p1-publicor,&p1-amount);while(p1-num)f

25、printf(fp,%d%s%s%s%d,p1-num,p1-name,p1-author,p1-publicor,p1-amount);n=n+1;if(n=1) head=p1;elsep2-next=p1;p2=p1;p1=(struct book *)malloc(LEN);printf( 请您继续输入n);scanf(%d%s%s%s%d,&p1-num,p1-name,p1-author,p1-publicor,&p1-amount);p2-next=NULL;fclose(fp);void jieshu()/借书int i;FILE *fp;fp=fopen(d:tushugua

26、nli.txt,r);if(fp=NULL)printf(n 打开文件失败!n);exit(0);p1=head;printf(请输入你要借的书的书号n);scanf(%d,&i);while(p1!=NULL)if(i=p1-num)if(p1-amountamount-;printf( 书号 书名 作者 出版单位 剩余数量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next;getch();fclose(fp);void huanshu()/还书 int i; FILE

27、 *fp;fp=fopen(d:tushuguanli.txt,r);if(fp=NULL)printf(n 打开文件失败!n);exit(0);p1=head;printf(请输入你要还的书的书号n);scanf(%d,&i);while(p1!=NULL)if(i=p1-num)printf(还书成功n);p1-amount+;printf( 书号 书名 作者 出版单位 剩余数量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next;getch();fclose(fp);

28、void chaname()char shuming10;p1=head;printf(n 请输入书名 );scanf(%s,shuming);while(p1!=NULL) if(strcmp(shuming,p1-name)=0)printf( 书号 书名 作者 出版单位 剩余数量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next; getch();void chanum()int number;printf(n 请输入书号 );scanf(%d,&number);p

29、1=head;while(p1!=NULL)if(number=p1-num)printf( 书号 书名 作者 出版单位 剩余数量 n );printf(t%dt%st%st%st%dn,p1-num,p1-name,p1-author,p1-publicor,p1-amount);p1=p1-next; getch(); void chaxun()/查询int choose;FILE *fp;fp=fopen(d:tushuguanli.txt,r);if(fp=NULL)printf(n 打开文件失败!n);exit(0);p1=head;printf( n 书名查询请按(1),书号查询请

30、按(2)n);scanf(%d,&choose);switch(choose)case 1: chaname();break;case 2: chanum();break;default:printf( n Error n);fclose(fp);void main()int order;while(1)system(cls);caidan();fflush(stdin);scanf(%d,&order);switch (order)case 1:luru();break;case 2:jieshu();break;case 3:huanshu();break;case 4:chaxun();break;case 5:exit(0);break;default:printf(ttt输入的序号有误,请检查后重新输入.n);getch();break;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号