数据结构课程设计范文.docx
- 文档编号:3919372
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:17
- 大小:18.68KB
数据结构课程设计范文.docx
《数据结构课程设计范文.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计范文.docx(17页珍藏版)》请在冰豆网上搜索。
数据结构课程设计范文
数据结构课程设计
数据结构课程设计
计算机科学与技术级1班
课程设计题目:
图书借阅管理系统
姓名:
学号:
一.需求分析说明
图书借阅处理过程简述处理过程主要包含:
新增图书上架、办理图证、图书查询、借书、还书等。
(1)新增图书上架新书上架时,需要登记新书的:
书名、作者、出版社、总册数的信息。
(2)办理图书借阅证读者办理借书证时,需要登记读者(学生)的学号、姓名。
(3)图书查询读者按照图书编号查询图书基本信息,并能够得知现还有几册能够借阅。
(4)借书每个学生读者最多借5本书。
读者借书时,应登记书号、借书日期(年月日)。
2.数据分析数据处理过程中涉及到两个实体:
图书和会员;各实体应具有的属性如下:
图书(书号、书名、作者,总册数)读者(学号、姓名、班级)由于同一种图书能够有多册上架,
每个读者最多能够借阅5本书,图书借阅的属性如下:
借阅(书号、借书日期)
3.功能分析系统功能模块包括:
图书增加、图书删除、图书查询、借书、还书;另外还包括图书信息修改和读者信息修改。
二.基本功能
1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书);
2)会员管理(增加会员、查询会员、删除会员、借书信息);
3)系统管理(初始化、载入数据、保存数据、退出程序);
三.程序设计
#include
#include
#include
#defineNULL0
typedefstructBookInfo{/////图书结构
intb_Code;////图书编号
charb_Name[20];/////名称
intb_Total;/////总数
intb_Out;///借出数
BookInfo*nextbook;//////下一类图书
}BookInfo;
typedefstructMemberInfo{///会员结构
longm_Code;/////会员编号
charm_Name[20];////会员名字
intl_Codes[6];/////以借书的编号,最多5
MemberInfo*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图书管理系统"< cout<<"\t\t\t******************************"< cout<<"\t\t\t******************************"< 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******************************"< cout<<"\t\t\t******************************"< cout<<"请选择: "; do{ cin>>sel; if(sel>=1&&sel<=11)break; cout<<"选择错误! \n重新输入: "< }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输入图书的入库量: "< 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<<"添加完毕! "< cout<<"还要添加吗? (Y/N)"; cin>>sel; if(sel=='n'||sel=='N'){ cout<<"结束添加"< 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<<"没找到你所要的图书."< else{ cout<<"图书编号为: "< cout<<"图书名称为: "< cout<<"图书库存量为: "< cout<<"图书借出量为: "< } } 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<<"没有找到要删除的图书"< 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]--; } memi=memi->nextmember; } free(bi); } cout<<"还有图书要删除吗? (Y/N)"; cin>>sel; if(sel=='N'||sel=='n'){ cout<<"删除图书结束"< 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<<"没有找到要借出的图书."< } else{ cout<<"此书的现存量为"<<(p->b_Total-p->b_Out)< if(! (p->b_Total-p->b_Out))cout<<"没有足够的书了,外借失败."< else{ cout<<"请输入会员编号: "; cin>>memcode; mp=SearchMember(S,memcode); if(! mp)cout<<"会员编号输入错误,外借失败"< else{ if(mp->l_Codes[0]==5)cout<<"借书量不能超过5本"; else{ p->b_Out++; mp->l_Codes[++mp->l_Codes[0]]=tempcode; cout<<"外借成功."< } } } } cout<<"\n还有图书要借出吗? (Y/N)"; cin>>sel; if(sel=='N'||sel=='n'){ cout<<"外借操作结束."< 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<<"书号输入错误."< } else{ cout<<"此书的现存量为"<<(p->b_Total-p->b_Out)< cout<<"请输入会员编号: "; cin>>membercode; if(! (mp=SearchMember(S,membercode)))cout<<"会员编号输入错误,归还失败"< 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[i]=mp->l_Codes[i+1]; i++; } mp->l_Codes[0]--; cout<<"归还成功."< } } cout<<"还有要归还的图书吗? (Y/N)"; cin>>sel; if(sel=='N'||sel=='n'){ cout<<"归还结束."< 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<<"添加完毕! "< cout<<"还要添加吗? (Y/N)"; cin>>sel; if(sel=='n'||sel=='N'){ cout<<"结束添加"< 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<<"没找到指定会员."< else{ cout<<"会员编号为: "< cout<<"名称为: "< cout<<"已借的图书有: "< for(i=1;i<=bi->l_Codes[0];i++) cout< cout< } } 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<<"删除会员出错! "< } else{ book->b_Out--; book->b_Total--; } } free(bi); } cout<<"还有会员要删除吗? (Y/N)"; cin>>sel; if(sel=='N'||sel=='n'){ cout<<"删除会员结束"< return; } }while (1); } voidStoreData(System*S){ FILE*fp; BookInfo*bi=S->BI->nextbook; if(! (fp=fopen("BookSys","wb"))){ cout<<"打开文件BookSys失败! "< 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失败"< 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*tempmi; fread(&(S->MemberTota),sizeof(int),1,fp); for(i=1;i<=S->MemberTota;i++){ tempmi=(MemberInfo*)malloc(sizeof(MemberInfo)); fread(tempmi,sizeof(MemberInfo),1,fp); mi->nextmember=tempmi; mi=tempmi; } mi->nextmember=NULL; fclose(fp); } voidExitSystem(){ charselect; cout<<"警告: 程序结束后未存储的数据将消失."< cout<<"确定要退出吗? (Y/N)"; cin>>select; if(select=='y'||select=='Y')exit(0); if(select=='n'||select=='N')return; } 四.心得体会 历经大半个学期的努力,我的图书管理系统终于如期完成了。 此次做系统给我最大的感触有两个。 第一个就是有了一个利用本专业所学到的知识,来练习,实践的机会。 第二个就是增强了自己的自信心。 经过进行图书借阅管理系统的设计,进一步明确了研制一个管理信息系统的方法和思路,将系统开发的各阶段的基本活动贯穿起来,使我更加形象、具体的了解了管理信息系统。 系统开发的过程是一个巩固以前所学的计算机知识,掌握新技能的过程。 我从这一阶段工作中收益非浅,经过前段时间的课程设计,我能够融会贯通所学的专业基础知识和专业理论知识,培养我们综合运用专业知识分析问题、解决问题的能力及运用工具软件的能力。 不但弄清了以前对系统开发的一些模糊的认识,而且提高了写代码的水平,培养了严谨的工作作风,为今后在工作岗位上用好管好计算机打下了坚实的基础。 在做系统的过程中,我遇到的最大的困难是调程序方面的。 在运行程序的过程中经常会出现程序自行中断,需要进行调试的信息。 这些信息使得我不得不重复看书,琢磨程序。 在一遍一遍的调试之下,程序终于被调通了。 那时,我终于能够上上的舒一口气了。 我的系统规模比较小同时由于我的时间和能力等多方面的因素影响,我们的系统也存在一定的缺陷。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 范文