课程设计(论文)-某高校图书管理系统.doc_第1页
课程设计(论文)-某高校图书管理系统.doc_第2页
课程设计(论文)-某高校图书管理系统.doc_第3页
课程设计(论文)-某高校图书管理系统.doc_第4页
课程设计(论文)-某高校图书管理系统.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈 阳 航 空 航 天 大 学 课程设计题目:某高校图书管理系统一、课程设计时间201011第2学期 第15周,共计1周,20学时。二、课程设计内容用c语言编写软件完成以下任务:1.录入图书信息(根据图书馆的管理情况自行设定,要具有实用性);2.借书处理(数量不足三本,不予外借,并显示相应的提示信息);3.还书处理。4 查询图书信息(根据书名或图书编号)。三、课程设计要求1. 程序质量: 贯彻结构化程序设计思想。 用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。 用户界面中的菜单至少应包括“图书信息录入”、“借书处理”、“还书处理”、“退出”、“查询图书信息”5项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、成绩六、教师评语沈阳航空航天大学设计用纸目录一、需求分析1二、设计分析3三、主要界面截图10四、技术要点13五、个人总结24六、参考文献25七、源程序2531一、需求分析 根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。经过对程序设计题目的分析可知,整个程序的设计实现大致分为5个模块,其中每一个模块对应一个函数(查询模块对应三个函数),他们的功能分别是:录入图书信息(luru);借书(jieshu);还书(huanshu);查询(chaxun)。该系统是一个较典型的数据管理系统,其使用者被假定为图书管理人员,系统应该具有易于管理、快速、稳定、功能齐全的特点。1. 管理性分析系统管理的数据涉及到图书的管理问题,数据量较大且是一种基础性数据,是管理图书的重要数据,所以应该能够快速方便调用修改增添。2. 快速性分析快速性分析,由于信息量较大且变动较为频繁,因此,该程序应该能快速的调用和增补。3. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。4. 主要功能分析(1)录入函数:主要功能是将图书信息录入书库中; (2)借书函数:主要实现学生借阅书籍的功能;(3)还书函数:实现的功能是把学生借阅的书籍还给书库;(4)查询函数:是显示图书信息(用户输入查询条件,系统规则地在界面显示查询结果,且显示的数据尽量全面。当输入图书编号时,可查询到该图书的书名,作者,出版社,数量;当输入书名时,可查询到该图书的编号,作者,出版社,数量)。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个图书都包含编号,书名,作者,出版社,数目,将图书纪录类型定义为结构体类型,数据读取自程序所在目录下的图书。二、设计分析主要有5个功能模块,每个模块对应一个c语言自定义函数。他们的功能分别是:录入图书信息(luru);借书(jieshu);还书(huanshu);查询图书信息(chaxun)。 这些函数原型及其功能简述如下:1、录入函数:void luru()/图书录入 主要功能是将图书信息录入书库中;2、借书函数:void jieshu()/借书 主要实现学生借阅书籍的功能;3、还书函数:void huanshu()/还书 实现的功能是把学生借阅的书籍还给书库;4。查询函数:void chaname() 功能是显示图书信息。当输入图书编号时,可查询到该图书的书名,作者,出版社,数量;当输入书名时,可查询到该图书的编号,作者,出版社,数量。除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个图书都包含编号,书名,作者,出版单位,库存数量,将图书纪录类型定义为结构体类型,数据读取自程序所在目录下的tushiguanli.txt。1、程序总体结构图2、主要功能模块框图(1)录入图书信息luru (2)借书函数jieshu(3)还书函数huanshu(4)查询函数chaxun 三、主要界面截图图1 程序主界面图2 录入图书信息图示3 借书功能图示4 还书功能图示5 查询功能(按书名)图示6 查询功能(按书号)四、技术要点设计的程序由七个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,输入图书信息、借阅图书信息、还书函数和查询图书函数是程序中较为核心的部分,其中查询函数调用了按书号查询和按书名查询两个函数。1、结构体的应用定义了结构体用来描述图书的编号、作者、书名、出版社以及图书的数量;并且定义了指针:头指针head和指针p1、p2。具体的定义如下:struct book int num; char author10; char name10; char publicor10; int amount; struct book *next;*head,*p1,*p2;所定义的结构体主要用于定义数组和指针。2、文件操作包括了文件的写入和读取两个方面。文件的写入操作,用于保存录入的学生数据,也用于保存所修改的数据。例如如下程序段用于保存录入的图书信息: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) 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;fclose(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-publicor,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(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,&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(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);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);6、查询函数提示按照书名或者书号来查询图书信息,如果选择按书名查询信息,则会用按书名查询函数,该函数的核心内容是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();break;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; getch();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语句的运用,及面对多分支处理的情况。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)、链表的应用:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,链表比较方便插入和删除操作。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)、指针的应用: 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,五、个人总结此次课程设计中,运用链表和文件读写技术,完成了一个简单的图书管理系统,在编写代码的过程中,对链表的应用有了更加深入的了解,对文件的读写也有了一定的认识,但是,程序依然存在不足:比如说,在处理文件异常时,没有相应的处理代码。在删除链表结点时,当链表为空时的判断不够详细,在查询和写入文件时,对输出格式的控制还不够完善,今后在代码编写中,这些都是需要注意的问题。相信通过今后的努力,我的代码编写的实际应用能力会有更大的提高!六、参考文献1 谭浩强c程序设计北京:清华大学出版社,20052 刘成等c语言程序设计实验指导与习题集北京:中国铁道出版社,2006七、源程序#include#include#include#include#define len sizeof(struct book)struct bookint 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(ttt 请输入选项编号(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)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,&p1-amount);p2-next=null;fclose(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-publicor,p1-amount);p1=p1-next;getch();fclose(fp);void huanshu()/还书 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)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);void chaname()char shuming10;p1=head;printf(n 请输入书名 );scanf(%s,shuming

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论