数据结构课程设计报告——图书管理系统.docx_第1页
数据结构课程设计报告——图书管理系统.docx_第2页
数据结构课程设计报告——图书管理系统.docx_第3页
数据结构课程设计报告——图书管理系统.docx_第4页
数据结构课程设计报告——图书管理系统.docx_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计报告课设课题:课程设计一一图书治理系统学院:电子信息学院专业:网络工程姓名:班级学号:BX1213指导教师:张艳报告日期:错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错误!未定义书签.错

2、误!未定义书签.错误!未定义书签.一、需求分析系统开发背景和意义设计题目与要求二、总体结构设计-三、各子模块设计初始化图书信息系统主界面米编入库输入读者信息借阅图书归还图书查询图书信息、查询读者信息四、程序设计调试情况分析五、测试结果欢送界面初始化图书信息系统主界面米编入库输入读者信息借阅图书归还图书查询图书信息查询读者信息保存文件,退出六、总结七、参考文献八、附录源代码、需求分析系统开发背景和意义图书治理作为计算机应用的一个分支,有着手工治理无法比较的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、本钱低等.这些优点能够极大地提升图书治理的效率.因此,开发一套能够为用户提供

3、充足的信息和快捷的查询手段的图书治理系统,将是非常必要的,也是十分及时的.图书治理系统需要满足来自图书馆工作人员、普通用户和借阅者三方面人员的需求.图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时还可通过图书编号等查询相应的借阅情况;普通用户的需求是查询图书馆所存的图书的相关情况;图书借阅者的需求是查看自己的相关信息及查询自己的借阅情况.设计题目与要求【问题描述】设计一个计算机治理系统完成图书治理根本业务.【根本要求】1每种书的登记内容包括书号、书名、著作者、现存量和库存量;2对书号建立索引表线性表以提升查找效率;3系统主要功能如下:*采编入库:新购一种书,确定书号后,登记到图书帐目表

4、中,如果表中已有,那么只将库存量增加;*借阅:如果一种书的现存量大于0,那么借出一本,登记借阅者的书证号和归还期限,改变现存量;*归还:注销对借阅者的登记,改变该书的现存量.、总体结构设计有八个模块1图书初始化输入图书的一些信息,编号、作者、书名、数量,使有一定的库存.2新书入库新书采编入库,输入编号后如果有次数只需输入数量,没有那么继续输入书名、作者、数量.3添加读者信息读者信息初始化,输入读书证号和姓名,只有输入书证号和姓名才能进行借书还书4借书模块读者输入读书证号,证号存在输入要借的图书编号,不能借同一本书,如果借书数量以到达最大也不能借书.5还书模块归还已借的图书,要先输入读者书证号,

5、书证号存在继续输入要还的图书编号,图书编号存在并且借来此书,归还成功.6查询图书信息7查询读者信息可查询读者姓名书证号,借了几本书,都是什么书和还书日期,还可以借几本书.8退出退出读书治理系统并保存读者和图书信息.图书治理系统图书管理模块读者管理模块借阅操作模块查询操作模块图书信息查询读者信息查询还书系统借书系统输入读者信息采编入库初始化图书信息初始化图书信息三、各子模块设计系统主界面初始化之后,进入系统,显示功能列表,可选择任意系统,但在借书之前米编入库选择采编入库的功能后,先输入图书编号判断是否存在,假设存在,那么在原有记录上加上添加的图书数量;假设不存在,那么参加新的记录.图3-3米编入

6、库流程图输入读者信息选择读者登记后,输入读者编号跟姓名.开始输入读者信息:读者书证号、姓名结束图3-4输入读者信息流程图借阅图书选择借阅图书功能后,输入读者证号,判断该读者是否存在,假设存在那么输入借阅图书的编号,判断该图书编号是否存在,假设存在,那么判断读者借阅的图书数量是否满了和是否借阅了相同的书籍,判断成功后,那么输入归还该图书的日期,该图书现有量减一,借阅成功;假设读者不存在那么返回.否图3-5借阅图书流程图归还图书实现归还图书功能时,首先输入读者编号,并判断是否存在,假设不存在就按任意键返回,;假设存在输入归还的图书编号并判断是否存在,假设归还图书编号不存在,那么返回.存在后,将读者

7、借阅该图书的信息清空,该图书的现有量加一.最后按任意键返回输入读者还书编号*图3-6y还图书流程图查询图书信息查询图书信息时,输入图书的编号,判断是否存在.不存在那么返回;存在那么输出图书的编号,输出图书信息:编号、名称、作者、现有和库存图3-7查询图书信息流程图查询读者信息查询读者信息时,首先判断读者的编号是否存在,不存在就按任意键返回.假设存在,那么输出读者的证号,姓名,和借阅的图书编码及其还书日期.图3-8查询读者信息流程图四、程序设计调试情况分析在整个课程设计中,我们遇到了许多的问题.有些问题吧,我们在苦思冥想的时候,忽然我们的编译器显示出了正确的结果,当我们欣喜假设狂的在运行下一次的

8、时候又会出现相同的问题,在借阅的过程中,在一个读者借阅了两本书以上的时候,上一本书的归还日期上还有下一本书上的编号,最后一本书输出的才是正确的结果.下列图是借阅了两本书的截图:图4-1看到这里我们也知道是第一本书的还书日期的地址空间跟第二本书的编号连接在了一起导致输出的时候一直到第二本书编号的的字符串后面的/0'结束.最后发现是我们在定义还书日期这个字符串的时候开辟的空间太小.我们把charlimit_date8;改为charlimit_date10就好了.图4-2五、测试结果欢送界面程序运行显示“欢送使用图书治理系统,按任意键进入到主菜单如图5-1所示.图5-1欢送界面初始化图书信息

9、在没有文件的时候会进入到初始化界面,需要输入一本图书的相关信息,如图5-2所示.图5-2初始化图书信息系统主界面接着进入的系统的主菜单,如图5-3所示.图5-3系统主界面米编入库实现采编入库功能根据系统提示输入信息.如图5-4o如果该图书已存在,那么直接输入图书的数量如图5-5所示.图5-4采编入库书不存在图5-5采编入库书已存在输入读者信息根据要求输入读者信息,如图5-6所示.图5-6输入读者信息借阅图书根据要求先输入读者证号,在输入借阅的图书编号如图5-7所示.如果读者已经借阅了一本书之后不能借阅同一本图书如图5-8所示.图5-7借阅图书图5-8同一个读者不能借阅同一本图书归还图书归还图书

10、的要求按着图5-9输入即可.图5-9归还图书查询图书信息图5-10是没有借阅之前的图书的相关信息,图5-11是读者借阅了图书之后的信息,只改变了现有量.图5-10借阅登记后图5-11归还图书后查询读者信息查询读者的信息时,会输出相关借阅的图书编号以及还书日期如图5-12,5.13所不.图5-12查询读者信息一图5-13查询读者信息二保存文件,退出在系统的主菜单后,按'0'功能保存并退出系统.六、总结个人觉得课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题锻炼实践水平的重要环节,是对学生实际工作水平的具体练习和考察过程.在生活中可以说得是无处不在.因此作为新世纪

11、的大学来说能够分析,并解决程序中出现的问题是十分重要的.课程设计就能表到达这一方面.能够将你所学到的理论跟实际结合在一起.通过本次课程设计感慨良多.从课堂上听到的到课后应用到的根本就不是一回事.课堂上,老师在上面说,自己在下面听,到也能听懂.可是到了应用上,自己倒也是知道要用到哪方面的内容,但是偏偏不知道从何处下手;好不容易写好的一小段代码,还要跟其他功能不相冲突,这又需要我们自己去想方法去兼容好他们.通过本次课程设计试我懂得理论要跟实践相结合.正所谓“台上十分钟,台下十年功,别人在台上表演了十分钟,你觉得很容易,可那里知道别人在下面做的努力呢.同样的,我们在课堂上听老师讲确实觉得是那么回事,

12、但是真正做下去,也只有自己知道是何种滋味.理论始终是理论,不能都熟练应用自己所学到的知识,到头来也是一场空.在这次的课程设计过程中,我们也遇到了不能解决的难题,比方说在读者查询的时候,第二个读者始终会覆盖第一个读者的数据.我们始终没有搞明白问题的所在,只知道不是在输出读者信息的问题,应该是添加读者过程中指针始终指在第一个地址,没有移动.我们根据查询图书的函数重新编写了一次还是同样问题.一直到辩论前一天晚上还没有解决,之后只能放弃.还有在最开始的时候我们的程序功能并没有清屏功能,整个界面看起来并不是那么整洁.于是我用用getch();system(“cis);来进行清屏,最后会出先一个小问题,在

13、我们查询了一些资料后,又再次根底上加上了gotoend;这个函数来加以完善.这次课程设计,我们也遇到了很多问题,比方说,我们再输入第二个读者的信息后会覆盖第一个读者的信息、,想了半天没有弄懂是哪里错了,最后才看出来我们定义的结构体指针没有移动,导致我们输入的读者信息一直存放在同一个地址中.也有些不懂需要在网上查询的代码,组员之间相互配合,不懂就询问其他同学或者查询资料亦或者自己去弄懂问题的根结,团结协作的精神在这次课程设计中表现的淋漓尽致.我们不仅将以前的知识复习一遍;同时也弄懂了一些平常自己似懂非懂的;最后同学之间的友谊也慢慢变的深厚起来小组分工:孙泽铭:采编入库、查询图书信息、查询读者信息

14、黄响:添加读者、借阅图书、归还图书1严蔚敏吴伟民编著2黄国瑜叶乃菁编著3胡学钢编著4王士元编著5李强根主编6杨正宏编著7胡学钢编著8殷人昆徐孝凯编著9李春葆编著10咨讯教育小组编著七、参考文献?数据结构?数据结构?数据结构算法设计指导?数据结构与数据库系统?数据结构C+描述?数据结构?数据结构算法设计指导?数据结构习题解析?数据结构习题与解析?数据结构数据结构版?清华大学出版社,2000清华大学出版社,2001清华大学出版社,1999南开大学出版社,2000中国水利水电出版社,2001中国铁道出版社,2002清华大学出版社,1999清华大学出版社,2002清华大学出版社,2001中国铁道出版社

15、,2002八、附录源代码#include<># include<># include<>#include<># defineMax4typedefstructbook(charbook_num10;charbook_name20;charbook_writer10;intbook_xy;intbookkc;intn;structbook%ext;BK;typedefstructborrow(charborrow_book_numl0;charlimit_date10;BO;typedefstructreader(charreader_num10;

16、charreader_name10;intright;intm;BOborrowMax;structreader*next;RD;BK*hbook;RD*h_reader;intn=0;intm=0;voidLogin();intMenu();voidInit();voidMenu_select();voidInsert_New_Book();voidadd_reader();voidPrint_reader();voidPrint_book();voidBorrow_Book();voidReturn_Book();voidSave();voidSave_Book();voidSave_Re

17、ader();voidLoad();voidLoad_Reader();voidLoad_Book();voidLogin()system(Hcls");prmtf(Annntt*壮壮壮壮*:*0*5壮壮")欢送使用图书治理系统prmtf(Annntt*壮壮壮壮*:*0*5壮壮")printf(unnntt按任意键进入系统)getch();system(Hcls");intMenu/*主菜单*/intdm;printfHntt图书治理系统主菜单n;printfn*tl-采编入库nH;printf"叭t2一登记读者nH;printf也t3借阅登记

18、nH;printfn*t4-还书治理nH;printfn*t5-查询图书信息n"printfn*t6-查询读者信息n"printfn*tO-退出系统nH;?,=0,';printf"请选择相应的代码:;for;scanfC%du,&dm;n包括编号.书名.数量.An;pO=BK*mallocsizeofBK;h_book=pO;:nu;/*输入图书编号唯一*/*输入图书名称*/*输入图书作者*/*输入图书数量*/printfnn请输入图书信息printfM图书编号:;scanfitH%s'pO->book_num;printfM图书名

19、称:;scanR"s,pO->book_name;printfM图书;scanR"s,pO->book_writer;printfH图书数量:;scanfH%dH,&pO->book_kc;pO->book_xy=pO->book_kc;开始时图书现有量和库存量相等*/pO->next=NULL;pO->n=+n;printf(An图书信息初始化完毕!按任意键继续下一步操作.n);getch();system(Hcls");)voidInsert_New_Book()/*新书入库*/(BKpO,*pl;p=pl=h

20、_book;printf(n新书入库模块n");printf(An请输入新书信息.An包括书号.书名.数量.An);pO=(BK*)malloc(sizeof(BK);printf(H图书编号:);scanfiH%s'pO->book_num);while(strcmp(pO->book_num,pl->book_num)!=0&&pl->next!=NULL)pl=pl->next;if(strcmp(pO->book_num,pl->book_num)=0)/*此处分两种情况,假设图书编号存在,那么直接进库,只须输

21、入书的数量*/(printf(nn此编号图书已存在!!直接入库!n");printf(n图书数量:);scanf(n%dn,&pO->book_kc);p1->book_kc+=pO->book_kc;p1->book_xy+=pO->book_kc;else/*假设不存在,那么需要输入其他的信息,然后在进行插入操作*/printf(H图书名称:);scanf("s,pO->book_name);printf(H图书);scanf("s,pO->book_writer);printf(n图书数量:);scanf(&

22、quot;d,&pO->book_kc);n");getch();system(Hcls");)voidadd_reader()/*添加读者*/(RD午0;inti;printfC'Xn读者初始化开始,请输入读者信息.n包括书证号.姓名.P);pO=(RD*)maUoc(sizeof(RD);/*申请新结点存储空间*/h_reader=pO;printf(nn请输入读者的信息:nn);printf(n读者书证号:);scanf(H%sH,pO->reader_num);printf(n读者姓名:)scanfiH%sn,pO->reader_

23、name);pO->right=O;for(i=0;i<Max;i+)(strcpy(pO->borrowi.borrow_book_num,nOn);/*所借图书直接置为(即没有借书)*/strcpy(pO->borrowi.limit_date,nOn);pO->next=NULL;p0->m=+m;getch();system(Hcls");)voidBorrow_Book()/*借书模块*/(BK*p0;RD*pl;charbo_num10,rea_num10,lim_date8;inti;pO=h_book;pl=h_reader;pri

24、ntf(*,n借书模块.n");printf(Hn请输入借书的读者书证号:);scanR"s,rea_num);while(pl->next!=NULL&&strcmp(rea_num,pl->reader_num)!=O)pl=pl->next;iRpl->next=NULL&&strcmp(rea_num,pl->reader_num)!=0)(printfCn此读者编号不存在!按任意键返回.An1');gotoEND;printfHn请输入你要借的书的编号:;scanf(s,bo_num);whil

25、e(strcmp(bo_nurn,p0->book_num)!=0&4Sq)0->next!=NULL)pO=pO->next;if(p0->next=NULL&&strcmp(bo_num,p0->book_num)!=0)(printfCn此图书编号不存在!按任意键返回.P);gotoEND;elseif(p0->book_xy<=0)printf(1n抱歉,此书已借完!请等待新书的到来!n按任意键返回gotoEND;elseif(pl->right>Maxllpl->right=Max)printf(*&

26、#39;n不好意思,借书数目已满!不能借书!n按任意键返回gotoEND;elseif(strcmp(pl->borrow0.borrow_book_num,n0n)!=0)ft)r(i=O;i<Max;i+)if(strcmp(pl->borrowi.borrow_book_num,bo_num)=0)(printf(Hn抱歉!同一个读者不能同借两本相同的书!n按任意键返回*;gotoEND;elseif(strcmp(p1->borrowi.borrow_book_num,"0")=0)printf("n请输入你要归还图书的日期:);s

27、canf("s,lim_date);strcpy(pl->borrowp1->right+.borrow_book_num,bo_num);strcpy(p1->borrowp1->right-1.limit_date,lim_date);pO->book_xy-;操作.H,pl->reader_num);gotoEND;else(printf("n请输入你要归还图书的日期:);scanf(H%sn,lim_date);strcpy(p1->borrowp1->right+4-.borrow_book_num,bo_num);

28、strcpy(p1->borrowp1->right-l.limit_date,lim_date);pO->book_xy-;pO->book_kc-;printf("n读者编号%s借书完毕!按任意键继续下步操作.,p1->reader_num);gotoEND;)END:getch();system(Hclsn);)voidReturn_Book()/*还书模块*/(BK*p;RDinti,j,find=O;charreturn_book_num10,return_reader_num10;p=h_book;q=h_reader;printf(n请输入

29、要还书的读者编号:);scanR"s,return_reader_num);while(q->next!=NUIJL<&&strcmp(return_reader_nurn,q->reader_num)!=O)q=q->next;if(q->next=NULL&&strcmp(return_reader_num,q->reader_num)!=O)(find=2;printfCn此读者编号不存在!按任意键返回.An1');gotoend;)printf(nn请输入读者还书的编号:);scanR"s,

30、retum_book_num);while(p->next!=NULL&&strcmp(return_book_num,p->book_num)!=0)p=p->next;if(p->next=NULL&&strcmp(return_book_num,p->book_num)!=0)(find=2;printf("n错误!此图书编号不存在!按任意键返回.nH);gotoend;)ft)r(i=O;i<Max;i+)如果it(strcmp(return_book_num,q->borrowi.borrow_boo

31、k_num)=0)/*此读者借了此书*/(find=l;fbr(j=i;j<Max-l;j+)strcpy(q->borrowj.borrow_book_num,q->borrowj+l.borrow_book_num);strcpy(q->borrow(j.limit_date,q->borrowj4-l.limit_date);strcpy(q->borrowMax-l.borrow_book_num,0");strcpy(q->borrowMax-1.limit_date,"0");p->book_xy+;q-

32、>right;printf("n编号%s的读者还书完毕!按任意键继续下步操作.,return_reader_num);gotoend;)if(find=0)printfCn错误!此读者未借此书!按任意键返回.n“);end:getch();systemC'cls");)voidPrint_book()/*查询图书信息*/(BK*p;inti;chare10;p=h_book;printtV输入查询的图书编号:);scanftH%s",e);tbr(i=O;i<n;i+)(if(strcmp(p>>book_num,e)=0)prin

33、tfCAn图书信息如下:nrT);printfH图书编号t图书名称t图书作者t现有t库存nH;printf(H%stt%stt%stt%dt%dnn,p->book_num,p->book_name,p->book_writer,p->book_xy,p->book_kc);break;)elsep=p->next;)printf("n图书信息打印完毕!按任意键继续下一步操作getch();system(ncls");)voidPrint_reader()/*查询读者信息*/(RD午;inti,j;chare10;p=h_reader;p

34、rintf(u输入查询的读者编号:);scanR"s",e);tbr(j=O;j<m;j+)(if(strcmp(p->reader_num,e)=O)(printfCVi读者信息如下:nrT);printf(n读者书证号t读者姓名nn);printf("stt%s,p->reader_num,p->reader_name);fbr(i=0;i<Max;i4-+)printf(Hnn);printf(H图书编号printf(At还书日期printf(,'nn);printsAt%s,p->borrowi.borrow_b

35、ook_num);printf(Htt%sn,p->borrowi.limit_date);printf"");break;)elsep=p->next;)printf("n读者信息打印完毕!按任意键继续下一步操作getch();systemicIs");)voidSave()/*保存信息*/(Save_Reader();Save_Book();)voidSave_Reader()/*保存读者信息*/(FILE饰_reader;RD节,节0;创立文件,进行保存*/p=h_reader;if(ip_reader=fopen(,n,uwbM)=NULL)/*printf(Mn文件保存失败!n请重新启动本系统.nH);exit(O);)whUe(p!=NULL)(if(iwrite(p,sizeof(RD),l,tp_reader)!=l)/*将链表中的信息写入文件中*/printf(An写入文件失败M请重新启动本系统!n");pO=p;p=p->next;free(pO);/*释

温馨提示

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

评论

0/150

提交评论