1、数据结构课程设计 计算机科学和技术级1班 课程设计题目:图书借阅管理系统 姓名: 学号: 一.需求分析说明 图书借阅处理过程简述处理过程关键包含:新增图书上架、办理图证、图书查询、借书、还书等。 (1)新增图书上架新书上架时,需要登记新书:书名、作者、出版社、总册数信息。 (2)办理图书借阅证读者办理借书证时,需要登记读者(学生)学号、姓名。 (3)图书查询读者根据图书编号查询图书基础信息,并能够得悉现还有几册能够借阅。 (4)借书每个学生读者最多借5本书。读者借书时,应登记书号、借书日
2、期(年月日)。 2.数据分析数据处理过程中包含到两个实体:图书和会员;各实体应含有属性以下:图书(书号、书名、作者,总册数)读者(学号、姓名、班级)因为同一个图书能够有多册上架, 每个读者最多能够借阅5本书,图书借阅属性以下:借阅(书号、借书日期) 3.功效分析系统功效模块包含:图书增加、图书删除、图书查询、借书、还书;另外还包含图书信息修改和读者信息修改。 二.基础功效 1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书); 2)会员管理(增加会员、查询会员、删除会员、借书信息); 3)系统管理(初始化、载入数据、保留数据、退出程序); 三.程序设计 #includ
3、e
4、ct 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 M
5、emberTota; /////会员数量 }System; System* InitSystem();///// void AddBook(System*);////增加图书 BookInfo* SearchBook(System*,int);////查询图书信息 void DelBook(System*);/////删除图书 void BrrowBook(System*);///////借书处理 void TurnBackBook(System*);////还书处理 voi
6、d 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
7、\t\t\t图书管理系统"< 8、 cout<<"\t\t\t******************************"< 9、chBook(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:Exi 10、tSystem();
}
}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 11、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输入图书入库量:"< 12、
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++;
13、 }
cout<<"添加完成!"< 14、图书编号:";
cin>>bookcode;
}
else bookcode=code;
while(bi&&bi->b_Code!=bookcode)bi=bi->nextbook;
if(code==-1){
if(!bi)cout<<"没找到你所要图书."< 15、
cout<<"图书借出量为:"< 16、 cout<<"请输入要删除图书编号:";
cin>>tempcode;
while(bi){
if(bi->b_Code==tempcode)break;
pl=bi;
bi=bi->nextbook;
}
if(bi==0)cout<<"没有找到要删除图书"< 17、){
if(memi->l_Codes[i]==tempcode)break;
}
if(i<=memi->l_Codes[0]){
for(;i 18、
cin>>sel;
if(sel=='N'||sel=='n'){
cout<<"删除图书结束"< 19、 cin>>tempcode;
p=SearchBook(S,tempcode);
if(!p){
cout<<"没有找到要借出图书."< 20、r(S,memcode);
if(!mp)cout<<"会员编号输入错误,外借失败"< 21、
cin>>sel;
if(sel=='N'||sel=='n'){
cout<<"外借操作结束."< 22、<<"输入归还书号:";
cin>>tempcode;
p=SearchBook(S,tempcode);
if(!p){
cout<<"书号输入错误."< 23、lse{
p->b_Out--;
for(i=1;i<=mp->l_Codes[0];i++){
if(mp->l_Codes[i]==tempcode)break;
}
while(i 24、Y/N)";
cin>>sel;
if(sel=='N'||sel=='n'){
cout<<"归还结束."< 25、erInfo*)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<<"添加完成!"< 26、
cout<<"结束添加"< 27、while(bi&&bi->m_Code!=membercode)bi=bi->nextmember;
if(code==-1){
if(!bi)cout<<"没找到指定会员."< 28、l_Codes[i]<<' ';
cout< 29、
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]))){
c 30、out<<"删除会员犯错!"< 31、System* S){
FILE* fp;
BookInfo* bi=S->BI->nextbook;
if(!(fp=fopen("BookSys","wb"))){
cout<<"打开文件BookSys失败!"< 32、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失败"< 33、 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 34、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->nextm 35、ember=NULL;
fclose(fp);
}
void ExitSystem(){
char select;
cout<<"警告: 程序结束后未存放数据将消失."< 36、专业所学到知识,来练习,实践机会。
第二个就是增强了自己自信心。 经过进行图书借阅管理系统设计,深入明确了研制一个管理信息系统方法和思绪,将系统开发各阶段基础活动贯穿起来,使我愈加形象、具体了解了管理信息系统。系统开发过程是一个巩固以前所学计算机知识,掌握新技能过程。我从这一阶段工作中收益非浅,经过前段时间课程设计,我能够融会贯通所学专业基础知识和专业理论知识,培养我们综合利用专业知识分析问题、处理问题能力及利用工具软件能力。不仅搞清了以前对系统开发部分模糊认识,而且提升了写代码水平,培养了严谨工作作风,为以后在工作岗位上用好管好计算机打下了坚实基础。
在做系统过程中,我碰到最大困难是调程序方面。在运行程序过程中常常会出现程序自行中止,需要进行调试信息。这些信息使得我不得不反复看书,琢磨程序。在一遍一遍调试之下,程序最终被调通了。那时,我最终能够上上舒一口气了。
我系统规模比较小同时因为我时间和能力等多方面原因影响,我们系统也存在一定缺点。






