收藏 分销(赏)

数据结构专业课程设计.doc

上传人:快乐****生活 文档编号:2683457 上传时间:2024-06-04 格式:DOC 页数:30 大小:51.04KB 下载积分:12 金币
下载 相关 举报
数据结构专业课程设计.doc_第1页
第1页 / 共30页
数据结构专业课程设计.doc_第2页
第2页 / 共30页


点击查看更多>>
资源描述
数据结构课程设计 计算机科学和技术级1班 课程设计题目:图书借阅管理系统 姓名: 学号: 一.需求分析说明 图书借阅处理过程简述处理过程关键包含:新增图书上架、办理图证、图书查询、借书、还书等。 (1)新增图书上架新书上架时,需要登记新书:书名、作者、出版社、总册数信息。 (2)办理图书借阅证读者办理借书证时,需要登记读者(学生)学号、姓名。 (3)图书查询读者根据图书编号查询图书基础信息,并能够得悉现还有几册能够借阅。 (4)借书每个学生读者最多借5本书。读者借书时,应登记书号、借书日期(年月日)。 2.数据分析数据处理过程中包含到两个实体:图书和会员;各实体应含有属性以下:图书(书号、书名、作者,总册数)读者(学号、姓名、班级)因为同一个图书能够有多册上架, 每个读者最多能够借阅5本书,图书借阅属性以下:借阅(书号、借书日期) 3.功效分析系统功效模块包含:图书增加、图书删除、图书查询、借书、还书;另外还包含图书信息修改和读者信息修改。 二.基础功效 1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书); 2)会员管理(增加会员、查询会员、删除会员、借书信息); 3)系统管理(初始化、载入数据、保留数据、退出程序); 三.程序设计 #include<stdlib.h> #include<stdio.h> #include<iostream.h> #define NULL 0 typedef struct BookInfo{ /////图书结构 int b_Code; ////图书编号 char b_Name[20]; /////名称 int b_Total; /////总数 int b_Out; ///借出数 BookInfo* nextbook; //////下一类图书 }BookInfo; typedef struct MemberInfo{ ///会员结构 long m_Code; /////会员编号 char m_Name[20]; ////会员名字 int l_Codes[6]; /////以借书编号,最多5 MemberInfo* nextmember; ////下一会员 }MemberInfo; typedef struct System{ ///管理系统结构 BookInfo* BI; MemberInfo* MI; int BookTotal; ////图书类库存量 int MemberTota; /////会员数量 }System; System* InitSystem();///// void AddBook(System*);////增加图书 BookInfo* SearchBook(System*,int);////查询图书信息 void DelBook(System*);/////删除图书 void BrrowBook(System*);///////借书处理 void TurnBackBook(System*);////还书处理 void AddMember(System*);/////添加会员 void DelMember(System*);////删除会员 MemberInfo* SearchMember(System*,int);/////查询会员信息 void StoreData(System*); void LoadData(System*); void ExitSystem(); void main() { System* S=InitSystem(); int sel; do{ cout<<"\n\t\t\t\t图书管理系统"<<endl; cout<<"\t\t\t******************************"<<endl; cout<<"\t\t\t******************************"<<endl; cout<<"\t\t\t 1.增加图书.\t 2.查询图书.\n\t\t\t 3.删除图书.\t 4.借书处理.\n\t\t\t 5.还书处理.\n\t\t\t 6.添加会员.\t 7.删除会员.\n\t\t\t 8.查询会员.\t 9.载入数据.\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){ case 1:AddBook(S);break; case 2:SearchBook(S,-1);break; case 3:DelBook(S);break; case 4:BrrowBook(S);;break; case 5:TurnBackBook(S);break; case 6:AddMember(S);break; case 7:DelMember(S);break; case 8:SearchMember(S,-1);break; case 9:LoadData(S);break; case 10: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; return S; } void AddBook(System* S) { int Tempcode; char sel; BookInfo* p=S->BI; BookInfo* t; BookInfo* m; int num; 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,int code){ BookInfo* bi=S->BI->nextbook; int bookcode; if(code==-1){ cout<<"请输入要查询图书编号:"; cin>>bookcode; } else bookcode=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; } } return bi; } void DelBook(System* S){ BookInfo* bi; BookInfo* pl=S->BI; MemberInfo* memi; char sel; int tempcode; int i; 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); } void BrrowBook(System* S) { BookInfo* bi=S->BI->nextbook; BookInfo* p; char sel; int memcode; MemberInfo* mp; int tempcode; 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); } void TurnBackBook(System* S) { BookInfo* bi=S->BI->nextbook; BookInfo* p; MemberInfo* mp; int membercode; int tempcode; int i; char sel; 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); } void AddMember(System* S) { int Tempcode; char sel; 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,int code) { MemberInfo* bi=S->MI->nextmember; int membercode; int i; if(code==-1){ cout<<"请输入要查询会员编号:"; cin>>membercode; } else membercode=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; } } return bi; } void DelMember(System* S) { MemberInfo* bi; MemberInfo* pl; BookInfo* book; char sel; int i; int tempcode; 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); } void StoreData(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); } void LoadData(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(int i=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); } void ExitSystem(){ char select; cout<<"警告: 程序结束后未存放数据将消失."<<endl; cout<<"确定要退出吗?(Y/N)"; cin>>select; if(select=='y'||select=='Y')exit(0); if(select=='n'||select=='N')return; } 四.心得体会 历经大半个学期努力,我图书管理系统最终准期完成了。此次做系统给我最大感慨有两个。 第一个就是有了一个利用本专业所学到知识,来练习,实践机会。 第二个就是增强了自己自信心。 经过进行图书借阅管理系统设计,深入明确了研制一个管理信息系统方法和思绪,将系统开发各阶段基础活动贯穿起来,使我愈加形象、具体了解了管理信息系统。系统开发过程是一个巩固以前所学计算机知识,掌握新技能过程。我从这一阶段工作中收益非浅,经过前段时间课程设计,我能够融会贯通所学专业基础知识和专业理论知识,培养我们综合利用专业知识分析问题、处理问题能力及利用工具软件能力。不仅搞清了以前对系统开发部分模糊认识,而且提升了写代码水平,培养了严谨工作作风,为以后在工作岗位上用好管好计算机打下了坚实基础。 在做系统过程中,我碰到最大困难是调程序方面。在运行程序过程中常常会出现程序自行中止,需要进行调试信息。这些信息使得我不得不反复看书,琢磨程序。在一遍一遍调试之下,程序最终被调通了。那时,我最终能够上上舒一口气了。 我系统规模比较小同时因为我时间和能力等多方面原因影响,我们系统也存在一定缺点。  
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服