数据结构课程设计计算机科学与技术2008级1班
课程设计题目:图书借阅管理系统
姓名:
学号:
一.需求分析说明
图书借阅处理过程简述处理过程主要包含:新增图书上架、办理图证、图书查询、借书、还书等。
(1)新增图书上架新书上架时,需要登记新书的:书名、作者、出版社、总册数的信息。
(2)办理图书借阅证读者办理借书证时,需要登记读者(学生)的学号、姓名。(3)图书查询读者按照图书编号查询图书基本信息,并可以得知现还有几册可以借阅。
(4)借书每个学生读者最多借5本书。读者借书时,应登记书号、借书日期(年月日)。
2.数据分析数据处理过程中涉及到两个实体:图书和会员;各实体应具有的属性如下:图书(书号、书名、作者,总册数)读者(学号、姓名、班级)由于同一种图书可以有多册上架,
每个读者最多可以借阅5本书,图书借阅的属性如下:借阅(书号、借书日期)3.功能分析系统功能模块包括:图书增加、图书删除、图书查询、借书、还书;另外还包括图书信息修改和读者信息修改。
二.基本功能
1)图书管理(增加图书、查询图书、删除图书、图书借阅、还书);
2)会员管理(增加会员、查询会员、删除会员、借书信息);
3)系统管理(初始化、载入数据、保存数据、退出程序);
三.程序设计
#include
#include
#include
#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图书管理系统"< cout<<"\t\t\t******************************"< cout<<"\t\t\t******************************"< 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******************************"< cout<<"\t\t\t******************************"< cout<<"请选择:"; do{ cin>>sel; if(sel>=1&&sel<=11)break; cout<<"选择错误!\n重新输入:"< 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输入图书的入库量:"< 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<<"添加完毕!"< if(sel=='n'||sel=='N'){ cout<<"结束添加"< } }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<<"没找到你所要的图书."< cout<<"图书编号为:"< cout<<"图书名称为:"< cout<<"图书库存量为:"< cout<<"图书借出量为:"< } 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<<"没有找到要删除的图书"< 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<<"删除图书结束"< }