数据结构图书管理系统课程设计报告.doc

上传人:可****阿 文档编号:92329532 上传时间:2023-06-03 格式:DOC 页数:16 大小:288KB
返回 下载 相关 举报
数据结构图书管理系统课程设计报告.doc_第1页
第1页 / 共16页
数据结构图书管理系统课程设计报告.doc_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《数据结构图书管理系统课程设计报告.doc》由会员分享,可在线阅读,更多相关《数据结构图书管理系统课程设计报告.doc(16页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、一、设计题目与要求 【问题描述】设计一个计算机管理系统完成图书管理基本业务。【基本要求】(1)每种书得登记内容包括书号、书名、著作者、现存量与库存量;(2) 对书号建立索引表(线性表)以提高查找效率;(3)系统主要功能如下:采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;借阅:如果一种书得现存量大于0,则借出一本,登记借阅者得书证号与归还期限,改变现存量;归还:注销对借阅者得登记,改变该书得现存量。二、小组分工小组成员:小组分工:图书初始化、新书入库、登记读者信息、文件保存借书系统、还书系统图书信息查询、读者信息查询 三、需求分析图书管理系统共需要八个模块

2、,分别就是1图书初始化、2新书入库、3添加读者信息、4借书模块、5还书模块、6查询图书信息、7查询读者信息、退出。我负责其中得四个模块,如下所示:1) 图书初始化输入图书得一些信息,编号、作者、书名、数量,使有一定得库存。2) 新书入库新书采编入库,输入编号后如果有次数只需输入数量,没有则继续输入书名、作者、数量。3) 添加读者信息读者信息初始化,输入读书证号与姓名,只有输入书证号与姓名才能进行借书还书4) 退出与文件保存退出读书管理系统并保存读者与图书信息。图书管理系统 图书管理模块理读者管理模块借阅操作模块查询操作模块借书系统读者信息查询图书信息查询输入读者信息还书系统采编入库初始化图书信

3、息四、概要设计图书信息与读者信息都采用结构体类型保存.图书信息里面包括:图书编号、图书名称、作者、现有量、库存量、指向下一节点得指针.读者信息里面包括:读者编号、读者姓名、借书数量、可借图书数量、指向下一节点得指针.所有图书与读者都分别以链表得形式存储,并以编号为唯一主键。采用链表形式便于数据得添加与删改。主要得操作为:系统初始化,图书入库,读者信息登记,图书信息与读者信息文件得保存。五、详细设计数据结构得定义:图书信息:tpeefstructbookcharbook_um;cabo_nme20;r book_ite10;in bookxy;t bok_kc;truct bo nex;BK;读

4、者信息:ypedef struct aderchar readernum10;chr eader_ame1;int right;BO brrwMax;strut rader*next;RD;算法描述:进入系统后首先进行图书初始化,输入图书得信息。开始1)初始化输入图书编号、名称、作者与图书数量进入系统初始化之后,进入系统,显示功能列表,可选择任意系统,但在借书之前先要输入读者信息。开始输入功能所对应得数字输入得数字小于0大于6错误!请重新输入执行所选功能采编入库 )采编入库录入图书信息判断就是否有此图书否就是在原有得纪录上加上现有得图书数量向系统中加入新纪录3)输入读者信息登记读者输入读者信息

5、:读者书证号 判断就是否存在此读者结束否 向系统中添加新记录 就是重新输入读者信息5) 退出与文件保存退出系统 保存文件判断就是否保存成功错误!请重新登陆系统退出系统就是六、程序源代码incudstdio、hnclue incudeconi、fine Max4 tyedef srt ookar book_num10;char bknae20;char book_write10;in ook_x; /现有in book_; /库存strucbook net;B;tyedef truct brrwchr borrw_book_num10;carlimi_date0;BO;typde stru re

6、adechrreaer_nu0;car raerne10;it rigt;BO orrowax;stctreadernt;D;BK *hboo;D *h_rer;voidLoi(); i Men(); voidt(); oid nit_ook(); vod enu_elect(); void sertw_ok(); vFind_Bok(); vod addreader(); oid e();vod Save_Bo(); o Saveader(); void oad();oid Load_Readr(); void LoadBok(); voi Login()syste(”l”);pint(nn

7、ntt*n”);print(nnntt欢迎使用图书管理系统n);pritf(nnt*n);rintf(ntt按任意键进入系统);etch(); ystem(s);int en() /主菜单*/ intdm;print(tt图书管理系统主菜单n”);prf(=n”);pint(”t0-退出系统 n);rintf(”*t1采编入库 n);ritf(”t-登记读者 n”); nt(=n);prntf(请选择相应得代码:); for(;) sanf(”%d,dm); m输入得数字 f(dm0|m6) printf(n错误!请重新输入:); ele bra;rtundm; odMnulec()/主菜单选

8、择函数(;) swith(Men()/功能选择/: system(cs”); Save();prntf(nnt文件保存成功!n);rintf(nn欢迎下次使用本系统!n); tc(); exit(0); cae:ertNew_Book();brek; ase 2:add_radr();bra; au:rnf(”n错误!); xit(0);void Iit()/*初始化*/ p0;pitf(”图书初始化开始,请输入图书信息包括编号、书名、数量n);p0=(BK)maloc(siz(B);h_book=p; printf(请输入图书信息:n); prntf(图书编号:”); /输入图书编号(唯一)

9、/ sanf(s,p0-book_num); prtf(”图书名称:); /输入图书名称 scnf(s”,p0bookae);pritf(”图书作者:”); *输入图书作者* scanf(”%s,p0bokwriter); prinf(”图书数量:); /*输入图书数量*/ scan(d”,&p0book_kc); p0-boo_xy=0b_k; /开始时图书现有量与库存量相等/ pnext=UL; prnf(n图书信息初始化完毕!按任意键继续下一步操作n); getch(); system(ls);voidIsert_Nw_Bok()*新书入库/BK ,p,*p1; p=p1_bok;rin

10、tf(”新书入库模块n”);ritf(”请输入新书信息包括书号、书名、数量n”);p0=(B)mallc(sizeof(K)); prinf(”图书编号:); c(”%s,pbo_n); wil(strp(0boo_num,p1-boo_nm)!=&p1-nt!=NLL) p1p-net; f(srcp(p0bo_num,p1-ook_nm)=0)/*此处分两种情况,若图书编号存在,则直接进库,只须输入书得数量* printf(此编号图书已存在!直接入库!”); pintf(图书数量:”); cnf(%d,p0book_k); p1-book_k+=p0bok_c; p1book_x=p0bo

11、k_k; else/*若不存在,则需要输入其她得信息,然后在进行插入操作/ prin(图书名称:”); scnf(”s”,-bookname);prntf(”图书作者:”); snf(%s,0-boowritr); pit(图书数量:”); san(%,&p0-book_k);/库存数量while(p-nex) =pnet; f(_bok=NULL) hbook=0; /此处分两种情况,链表中没有数据,ed直接指向0处/ else ntp0; /*此处分两种情况,链表中有数据,链表中最后元素得next指向0处 pnetLL; p0bok_xy=p0-ook_kc; printf(”n新书入库完

12、毕!按任意键继续下一步操作n); getc(); yte(”cls”);void add_rade()/添加读者/ RDp0,p,*p1; nti;p=hreader; printf(n读者初始化开始,请输入读者信息、n包括书证号、姓名、n”);(p=NUL)p0(RD)mllo(szef(D); /申请新结点存储空间h_eader=0;p=hreaer; printf(”读者书证号:); scanf(s”,p0eadernm);prnf(”读者姓名:”); scnf(”,0reader_ame); pigt; for(;iax;i+) rcp(p0brroi、brow_boo_num,”0”

13、); /所借图书直接置为(即没有借书)*/ rcpy(-orrwi、lm_dte,0); p0exNUL;elsep=(RD)aloc(sizeo(RD));p1=h_redr;rnf(n请输入读者得信息:n); prnt(”读者书证号:); scanf(%”,p-eadr_num);f(;;)whle(trmp(p0reader_nm,p1reader_um)!=0&p1-ext!=NL) 1=p1next; if(strcmp(p0reaernm,1redr_num)=) printf(”n此读者编号已存在,请重新输入!n); rint(读者书证号:); anf(”,0rde_um); p

14、1=_rader; else pritf(读者姓名:”); sca(%s”,p0read_n); break; 0-rght=0; fo(=0;inxtp; pp1nxt; p1net=NULL; prtf(n读者信息初始化完毕!按任意键继续下一步操作、”); getch(); syste(cls”);void Save()/*保存信息*Sv_Reader();e_Bok();oi Save_Rad() /保存读者信息/ fp_rear; RD p,*p;p=_reader;if(fp_readr=fpen(”Reder、tx,”w”)=ULL) /创建文件,进行保存 printf(文件保存失

15、败!n请重新启动本系统n); exi(0);whie(p!=NUL) if(frite(p,seo(R),1,peader)!=1) /将链表中得信息写入文件中*/ pinf(写入文件失败!请重新启动本系统!);p0=p; p=p-net; fr(p); /*释放所有结点*/_redrNULL;fclose(fp_radr); *关闭文件void Save_Boo()*保存图书信息FIL *_bok; 创建文件型指针/B *p,p;p=h_book;if((fp_bok=oen(Book、t,wb”))=NULL) /*创建文件,进行保存 printf(n文件保存失败!n请重新启动本系统n);

16、 exit(0);wil(p!=NU) i(fwri(p,sizf(BK),1,p_boo)!=) /*将链表中得信息写入文件中/ printf(”n写入文件失败!n请重新启动本系统!); p0=p; =pnxt; free(p0); h_book=NUL;clos(fp_book); /*关闭文件voiLoad()/*加载信息/Load_Reaer();odBook();d Loa_Reer() /加载读者信息 RD 1,p2,*p; FILE *fp; /*创建文件型指针*/ fp=fopen(Redr、t”,”); /打开文件*/ p=(RD)malloc(sieof(D)); fed(

17、p,sizeof(),1,fp); hreader=p32=p1; while(!eo(p) /读出信息,重新链入链表/ p1=(RD )alloc(sizef(RD)); red(p,szeof(RD),p); pnext1; p=p; p2p; pn=NUL; free(1); clos(fp);/*关闭文件*/voi dBok()/加载图书信息/BK p,p2,p3;FILE*fp; /*创建文件型指针*/p=fp(”Bok、t”,rb); /打开文件*/ 1=(BK)alloc(sizeo(BK)); ead(,sieof(BK),1,fp); h_book=p3=p1;while(!

18、 fo(fp) /读出信息,重新链入链表 p=(BK)mloc(izeof(K)); fread(p1,sieof(K),1,p); p2nxt1; 3=p2; p2=1; p3-etNUL; fre(p1); fclose(); /*关闭文件/vid ain() FILE *fp_bk,fp_adr; 创建文件型指针* Loi(); if((fpboofope(Book、txt,”rb))=LL|(fpade=fopen(”Readr、tt”,r”))=NULL) Init(); else Load(); Menu_slect(); /调用主菜单/七、运行结果与调试分析八、课程设计总结通过这

19、次得实验,我了解了图书管理系统得流程,之前以用户得角度去认识图书管理,现在站在设计者得角度去考虑问题,并且根据实际情况设计了图书管理系统得模块,对此有了更深刻得理解。对数据得管理、存储、完整性约束等也有了全面得认识.在设计过程中,出现了一些问题,主要就是功能得划分,后来将图书管理系统得功能进行一一细分,归纳安排,才使整个系统得结构完善且冗余小。在运行程序时也遇到了一些问题,借书时只能借一本书,再借书就不能显示就是借了还就是不能借,把最多能借书得数量改了一下还就是不行,最后在每一个判断输出之后都加了gotoEND借书,就能正常借书了。程序有点长,本来一个函数就能完成一个功能,她用了两个函数就我把自己能改成一个得改了。借书系统比较复杂,不容易懂,与同学交流了一下自己瞧了瞧才明白。这次得实验还让我复习了数据结构得一些知识,如数组,ile语句,sitch语句,链表,还知道了如何使用sste(”cls)清屏,还知道了trcm就是用来比较字符串s与s2大小得,stcpy使用来把字符串s2得值赋给s1得。这次得实验增加了我们自己动手动脑得能力,希望多做一些这样得实验,很有意义,与现实生活结合得程序增加了我得兴趣。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com