1、in bookxy;t bok_kc;truct bo nex;BK;读者信息:ypedef struct aderchar readernum10;chr eader_ame1;int right;BO brrwMax;strut rader*next;RD;算法描述:进入系统后首先进行图书初始化,输入图书得信息。1)初始化开始输入功能所对应得数字错误!请重新输入执行所选功能输入得数字小于0大于6采编入库 初始化之后,进入系统,显示功能列表,可选择任意系统,但在借书之前先要输入读者信息。)采编入库录入图书信息判断就是否有此图书在原有得纪录上加上现有得图书数量向系统中加入新纪录登记读者输入读者
2、信息:读者书证号向系统中添加新记录结束判断就是否存在此读者重新输入读者信息就是否 退出系统保存文件判断就是否保存成功请重新登陆系统 否3)输入读者信息 就是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
3、 readechrreaer_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(nnntt*n”
4、);print(nnntt欢迎使用图书管理系统n);pritf(nnt*n);rintf(ntt按任意键进入系统);etch(); ystem(s);int en() /主菜单*/ intdm;tt图书管理系统主菜单n”);prf(=n”);pint(”t0-退出系统 n);rintf(”*t1采编入库 n);ritf(”t-登记读者 n”);nt(=nprntf(请选择相应得代码:for(;) sanf(”%d,dm); m输入得数字 f(dm0|m6) printf(n错误!请重新输入: ele bra;rtundm;odMnulec()/主菜单选择函数(;swith(Men()/功能选择
5、/: system(cs”); Save();nnt文件保存成功!nnn欢迎下次使用本系统!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(图书编号:”); /输入图书编号(唯一)/ sanf(s,p0-book_num); prtf(”图书名称: /输入
6、图书名称 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;rintf(”新书入库模块n”);ritf(”请输入新书信息包括书号、书名、数量n”);p0=(
7、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=p0bok_k; else/*若不存在,则需要输入其她得信息,然后在进行插入操作/ prin(图书名称: sc
8、nf(”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新书入库完毕!按任意键继续下一步操作n); getc(); yte(”cls”);void add_rade()/添加读者/ RD
9、p0,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”); /所借图书直接置为(即没有借书)*/ rcpy(-orrwi、lm_dte,0 p0exNUL;else p=(RD
10、)aloc(sizeo(RD); p1=h_redr;rnf(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); p1=_rader; else pritf(读者姓名: sca(%s”,p0read_n); break; 0-rght=0; fo(=0
11、;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) /创建文件,进行保存文件保存失败!n请重新启动本系统n); exi(0);whie(p!=NUL) if(frite(p,seo(R),1,peader)!=1) /将链表中得信息写入文件中
12、*/ 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 exit(0);wil(p!=NU) i(fwri(p,sizf(BK),1,p_boo)!=) /*将链表中得信息写入文件中/ printf(”n写入文件失败!n请重新
13、启动本系统!); p0=p; =p 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(p,sizeof(),1,fp); hreader=p32=p1; while(!eo(p) /读出信息,重新链入链表/ p1=(RD )alloc(sizef(RD); red(p,
14、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(! fo(fp) /读出信息,重新链入链表 p=(BK)mloc(izeof(K); fread(p1,sieof(K),1,p); p2nxt1; 3=p2; p2=1; p3-etNUL;
15、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(); /调用主菜单/七、运行结果与调试分析八、课程设计总结通过这次得实验,我了解了图书管理系统得流程,之前以用户得角度去认识图书管理,现在站在设计者得角度去考虑问题,并且根据实际情况设计了图书管理系统得模块,对此有了更深刻得理解。对数据得管理、存储、完整性约束等也
16、有了全面得认识.在设计过程中,出现了一些问题,主要就是功能得划分,后来将图书管理系统得功能进行一一细分,归纳安排,才使整个系统得结构完善且冗余小。在运行程序时也遇到了一些问题,借书时只能借一本书,再借书就不能显示就是借了还就是不能借,把最多能借书得数量改了一下还就是不行,最后在每一个判断输出之后都加了gotoEND借书,就能正常借书了。程序有点长,本来一个函数就能完成一个功能,她用了两个函数就我把自己能改成一个得改了。借书系统比较复杂,不容易懂,与同学交流了一下自己瞧了瞧才明白。这次得实验还让我复习了数据结构得一些知识,如数组,ile语句,sitch语句,链表,还知道了如何使用sste(”cls)清屏,还知道了trcm就是用来比较字符串s与s2大小得,stcpy使用来把字符串s2得值赋给s1得。这次得实验增加了我们自己动手动脑得能力,希望多做一些这样得实验,很有意义,与现实生活结合得程序增加了我得兴趣。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1