数据结构专业课程设计_第1页
数据结构专业课程设计_第2页
数据结构专业课程设计_第3页
数据结构专业课程设计_第4页
数据结构专业课程设计_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

数据结构课程设计计算机科学和技术级1班课程设计题目:图书借阅管理系统 姓名: 学号: 一.需求分析说明图书借阅处理过程简述处理过程关键包含:新增图书上架、办理图证、图书查询、借书、还书等。(1)新增图书上架新书上架时,需要登记新书:书名、作者、出版社、总册数信息。(2)办理图书借阅证读者办理借书证时,需要登记读者(学生)学号、姓名。(3)图书查询读者根据图书编号查询图书基础信息,并能够得悉现还有几册能够借阅。(4)借书每个学生读者最多借5本书。读者借书时,应登记书号、借书日期(年月日)。2.数据分析数据处理过程中包含到两个实体:图书和会员;各实体应含有属性以下:图书(书号、书名、作者,总册数)读者(学号、姓名、班级)因为同一个图书能够有多册上架,每个读者最多能够借阅5本书,图书借阅属性以下:借阅(书号、借书日期)3.功效分析系统功效模块包含:图书增加、图书删除、图书查询、借书、还书;另外还包含图书信息修改和读者信息修改。二.基础功效1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书);2)会员管理(增加会员、查询会员、删除会员、借书信息);3)系统管理(初始化、载入数据、保留数据、退出程序);三.程序设计#include<stdlib.h>#include<stdio.h>#include<iostream.h>#defineNULL0typedefstructBookInfo{/////图书结构intb_Code;////图书编号charb_Name[20];/////名称intb_Total;/////总数intb_Out;///借出数BookInfo*nextbook;//////下一类图书}BookInfo;typedefstructMemberInfo{///会员结构longm_Code;/////会员编号charm_Name[20];////会员名字intl_Codes[6];/////以借书编号,最多5MemberInfo*nextmember;////下一会员}MemberInfo;typedefstructSystem{///管理系统结构BookInfo*BI;MemberInfo*MI;intBookTotal;////图书类库存量intMemberTota;/////会员数量}System;System*InitSystem();/////voidAddBook(System*);////增加图书BookInfo*SearchBook(System*,int);////查询图书信息voidDelBook(System*);/////删除图书voidBrrowBook(System*);///////借书处理voidTurnBackBook(System*);////还书处理voidAddMember(System*);/////添加会员voidDelMember(System*);////删除会员MemberInfo*SearchMember(System*,int);/////查询会员信息voidStoreData(System*);voidLoadData(System*);voidExitSystem();voidmain(){System*S=InitSystem();intsel;do{cout<<"\n\t\t\t\t图书管理系统"<<endl;cout<<"\t\t\t******************************"<<endl;cout<<"\t\t\t******************************"<<endl;cout<<"\t\t\t1.增加图书.\t2.查询图书.\n\t\t\t3.删除图书.\t4.借书处理.\n\t\t\t5.还书处理.\n\t\t\t6.添加会员.\t7.删除会员.\n\t\t\t8.查询会员.\t9.载入数据.\n\t\t\t10.保留数据.\t11.退出程序.\n";cout<<"\t\t\t******************************"<<endl;cout<<"\t\t\t******************************"<<endl;cout<<"请选择:";do{cin>>sel;if(sel>=1&&sel<=11)break;cout<<"选择错误!\n重新输入:"<<endl;}while(1);switch(sel){case1:AddBook(S);break;case2:SearchBook(S,-1);break;case3:DelBook(S);break;case4:BrrowBook(S);;break;case5:TurnBackBook(S);break;case6:AddMember(S);break;case7:DelMember(S);break;case8:SearchMember(S,-1);break;case9:LoadData(S);break;case10:StoreData(S);break;default:ExitSystem();}}while(1);}System*InitSystem(){System*S=(System*)malloc(sizeof(System));S->BI=(BookInfo*)malloc(sizeof(BookInfo));S->BookTotal=0;S->BI->nextbook=NULL;S->MI=(MemberInfo*)malloc(sizeof(MemberInfo));S->MemberTota=0;S->MI->nextmember=NULL;returnS;}voidAddBook(System*S){intTempcode;charsel;BookInfo*p=S->BI;BookInfo*t;BookInfo*m;intnum;do{cout<<"输入图书编号:";cin>>Tempcode;if(m=SearchBook(S,Tempcode)){cout<<"这类书以有库存.\n输入图书入库量:"<<endl;cin>>num;m->b_Total+=num;}else{t=(BookInfo*)malloc(sizeof(BookInfo));t->b_Code=Tempcode;cout<<"输入图书名称:";cin>>t->b_Name;cout<<"输入图书入库量:";cin>>t->b_Total;t->b_Out=0;t->nextbook=p->nextbook;p->nextbook=t;S->BookTotal++;}cout<<"添加完成!"<<endl;cout<<"还要添加吗?(Y/N)";cin>>sel;if(sel=='n'||sel=='N'){cout<<"结束添加"<<endl;return;}}while(1);}BookInfo*SearchBook(System*S,intcode){BookInfo*bi=S->BI->nextbook;intbookcode;if(code==-1){cout<<"请输入要查询图书编号:";cin>>bookcode;}elsebookcode=code;while(bi&&bi->b_Code!=bookcode)bi=bi->nextbook;if(code==-1){if(!bi)cout<<"没找到你所要图书."<<endl;else{cout<<"图书编号为:"<<bi->b_Code<<endl;cout<<"图书名称为:"<<bi->b_Name<<endl;cout<<"图书库存量为:"<<bi->b_Total<<endl;cout<<"图书借出量为:"<<bi->b_Out<<endl;}}returnbi;}voidDelBook(System*S){BookInfo*bi;BookInfo*pl=S->BI;MemberInfo*memi;charsel;inttempcode;inti;do{pl=S->BI;bi=pl->nextbook;memi=S->MI->nextmember;cout<<"请输入要删除图书编号:";cin>>tempcode;while(bi){if(bi->b_Code==tempcode)break;pl=bi;bi=bi->nextbook;}if(bi==0)cout<<"没有找到要删除图书"<<endl;else{pl->nextbook=bi->nextbook;S->BookTotal--;while(memi){for(i=1;i<=memi->l_Codes[0];i++){if(memi->l_Codes[i]==tempcode)break;}if(i<=memi->l_Codes[0]){for(;i<memi->l_Codes[0];i++)memi->l_Codes[i]=memi->l_Codes[i+1];memi->l_Codes[0]--;}memi=memi->nextmember;}free(bi);}cout<<"还有图书要删除吗?(Y/N)";cin>>sel;if(sel=='N'||sel=='n'){cout<<"删除图书结束"<<endl;return;}}while(1);}voidBrrowBook(System*S){BookInfo*bi=S->BI->nextbook;BookInfo*p;charsel;intmemcode;MemberInfo*mp;inttempcode;do{cout<<"输入要借出书号:";cin>>tempcode;p=SearchBook(S,tempcode);if(!p){cout<<"没有找到要借出图书."<<endl;}else{cout<<"此书现存量为"<<(p->b_Total-p->b_Out)<<endl;if(!(p->b_Total-p->b_Out))cout<<"没有足够书了,外借失败."<<endl;else{cout<<"请输入会员编号:";cin>>memcode;mp=SearchMember(S,memcode);if(!mp)cout<<"会员编号输入错误,外借失败"<<endl;else{if(mp->l_Codes[0]==5)cout<<"借书量不能超出5本";else{p->b_Out++;mp->l_Codes[++mp->l_Codes[0]]=tempcode;cout<<"外借成功."<<endl;}}}}cout<<"\n还有图书要借出吗?(Y/N)";cin>>sel;if(sel=='N'||sel=='n'){cout<<"外借操作结束."<<endl;return;}}while(1);}voidTurnBackBook(System*S){BookInfo*bi=S->BI->nextbook;BookInfo*p;MemberInfo*mp;intmembercode;inttempcode;inti;charsel;do{cout<<"输入归还书号:";cin>>tempcode;p=SearchBook(S,tempcode);if(!p){cout<<"书号输入错误."<<endl;}else{cout<<"此书现存量为"<<(p->b_Total-p->b_Out)<<endl;cout<<"请输入会员编号:";cin>>membercode;if(!(mp=SearchMember(S,membercode)))cout<<"会员编号输入错误,归还失败"<<endl;else{p->b_Out--;for(i=1;i<=mp->l_Codes[0];i++){if(mp->l_Codes[i]==tempcode)break;}while(i<mp->l_Codes[0]){mp->l_Codes[i]=mp->l_Codes[i+1];i++;}mp->l_Codes[0]--;cout<<"归还成功."<<endl;}}cout<<"还有要归还图书吗?(Y/N)";cin>>sel;if(sel=='N'||sel=='n'){cout<<"归还结束."<<endl;return;}}while(1);}voidAddMember(System*S){intTempcode;charsel;MemberInfo*p=S->MI;MemberInfo*t;do{cout<<"输入会员编号:";cin>>Tempcode;t=(MemberInfo*)malloc(sizeof(MemberInfo));t->m_Code=Tempcode;cout<<"输入会员姓名:";cin>>t->m_Name;t->l_Codes[0]=0;t->nextmember=p->nextmember;p->nextmember=t;S->MemberTota++;cout<<"添加完成!"<<endl;cout<<"还要添加吗?(Y/N)";cin>>sel;if(sel=='n'||sel=='N'){cout<<"结束添加"<<endl;return;}}while(1);}MemberInfo*SearchMember(System*S,intcode){MemberInfo*bi=S->MI->nextmember;intmembercode;inti;if(code==-1){cout<<"请输入要查询会员编号:";cin>>membercode;}elsemembercode=code;while(bi&&bi->m_Code!=membercode)bi=bi->nextmember;if(code==-1){if(!bi)cout<<"没找到指定会员."<<endl;else{cout<<"会员编号为:"<<bi->m_Code<<endl;cout<<"名称为:"<<bi->m_Name<<endl;cout<<"已借图书有:"<<bi->l_Codes[0]<<"本."<<endl;for(i=1;i<=bi->l_Codes[0];i++)cout<<bi->l_Codes[i]<<'';cout<<endl;}}returnbi;}voidDelMember(System*S){MemberInfo*bi;MemberInfo*pl;BookInfo*book;charsel;inti;inttempcode;do{bi=S->MI->nextmember;pl=S->MI;cout<<"请输入要删除会员编号:";cin>>tempcode;while(bi){if(bi->m_Code==tempcode)break;pl=bi;bi=bi->nextmember;}if(!bi)cout<<"没有找到要删除会员编号.";else{pl->nextmember=bi->nextmember;S->MemberTota--;for(i=1;i<=bi->l_Codes[0];i++){if(!(book=SearchBook(S,bi->l_Codes[i]))){cout<<"删除会员犯错!"<<endl;}else{book->b_Out--;book->b_Total--;}}free(bi);}cout<<"还有会员要删除吗?(Y/N)";cin>>sel;if(sel=='N'||sel=='n'){cout<<"删除会员结束"<<endl;return;}}while(1);}voidStoreData(System*S){FILE*fp;BookInfo*bi=S->BI->nextbook;if(!(fp=fopen("BookSys","wb"))){cout<<"打开文件BookSys失败!"<<endl;exit(0);}fwrite(&(S->BookTotal),sizeof(int),1,fp);while(bi){fwrite(bi,sizeof(BookInfo),1,fp);bi=bi->nextbook;}MemberInfo*mi=S->MI->nextmember;fwrite(&(S->MemberTota),sizeof(int),1,fp);while(mi){fwrite(mi,sizeof(MemberInfo),1,fp);mi=mi->nextmember;}fclose(fp);}voidLoadData(System*S){FILE*fp;if(!(fp=fopen("BookSys","rb"))){cout<<"打开文件BookSys失败"<<endl;exit(0);}BookInfo*bi=S->BI;BookInfo*tempbi;fread(&(S->BookTotal),sizeof(int),1,fp);for(inti=1;i<=S->BookTotal;i++){tempbi=(BookInfo*)malloc(sizeof(BookInfo));fread(tempbi,sizeof(BookInfo),1,fp);bi->nextbook=tempbi;bi=tempbi;}bi->nextbook=NULL;MemberInfo*mi=S->MI;MemberInfo*te

温馨提示

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

评论

0/150

提交评论