数据结构课程设计_数据结构课程设计全

2020-02-27 其他范文 下载本文

数据结构课程设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构课程设计全”。

数据结构课程设计

计算机科学与技术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

cout

cout

cout

cout

cout

cout

do{

cin>>sel;

if(sel>=1&&sel

cout

}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

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

cin>>sel;

if(sel=='n'||sel=='N'){

cout

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

else {

coutb_Code

coutb_Name

coutb_Total

coutb_Out

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

else{

pl->nextbook=bi->nextbook;

S->BookTotal--;

while(memi){

for(i=1;il_Codes[0];i++){

if(memi->l_Codes[i]==tempcode)break;

}

if(il_Codes[0]){

for(;il_Codes[0];i++)memi->l_Codes[i]=memi->l_Codes[i+1];memi->l_Codes[0]--;

}

memi=memi->nextmember;}

free(bi);}

cout

cin>>sel;

if(sel=='N'||sel=='n'){

cout

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

else{

coutb_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

else{

p->b_Out++;

mp->l_Codes[++mp->l_Codes[0]]=tempcode;

cout

} } } }

cout

cin>>sel;

if(sel=='N'||sel=='n'){

cout

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

else{

coutb_Total-p->b_Out)

cout

cin>>membercode;

if(!(mp=SearchMember(S,membercode)))cout

else{

p->b_Out--;

for(i=1;il_Codes[0];i++){

if(mp->l_Codes[i]==tempcode)break;

}

while(il_Codes[0]){

mp->l_Codes[i]=mp->l_Codes[i+1];

i++;

}

mp->l_Codes[0]--;

cout

}

cout

cin>>sel;

if(sel=='N'||sel=='n'){

cout

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

cout

cin>>sel;

if(sel=='n'||sel=='N'){

cout

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

else {

coutm_Code

coutm_Name

coutl_Codes[0]

for(i=1;il_Codes[0];i++)

coutl_Codes[i]

cout

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;il_Codes[0];i++){

if(!(book=SearchBook(S,bi->l_Codes[i]))){

cout

}

else{

book->b_Out--;

book->b_Total--;

} }

free(bi);}

cout

cin>>sel;

if(sel=='N'||sel=='n'){

cout

return;}

}while(1);}

void StoreData(System* S){

FILE* fp;

BookInfo* bi=S->BI->nextbook;

if(!(fp=fopen(“BookSys”,“wb”))){

cout

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

exit(0);}

BookInfo* bi=S->BI;

BookInfo* tempbi;

fread(&(S->BookTotal),sizeof(int),1,fp);

for(int i=1;iBookTotal;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;iMemberTota;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

cout

cin>>select;

if(select=='y'||select=='Y')exit(0);

if(select=='n'||select=='N')return;}

四.心得体会

历经大半个学期的努力,我的图书管理系统终于如期完成了。此次做系统给我最大的感触有两个。

第一个就是有了一个利用本专业所学到的知识,来练习,实践的机会。

第二个就是增强了自己的自信心。通过进行图书借阅管理系统的设计,进一步明确了研制一个管理信息系统的方法和思路,将系统开发的各阶段的基本活动贯穿起来,使我更加形象、具体的了解了管理信息系统。系统开发的过程是一个巩固以前所学的计算机知识,掌握新技能的过程。我从这一阶段工作中收益非浅,通过前段时间的课程设计,我能够融会贯通所学的专业基础知识和专业理论知识,培养我们综合运用专业知识分析问题、解决问题的能力及运用工具软件的能力。不仅弄清了以前对系统开发的一些模糊的认识,而且提高了写代码的水平,培养了严谨的工作作风,为今后在工作岗位上用好管好计算机打下了坚实的基础。

在做系统的过程中,我遇到的最大的困难是调程序方面的。在运行程序的过程中经常会出现程序自行中断,需要进行调试的信息。这些信息使得我不得不反复看书,琢磨程序。在一遍一遍的调试之下,程序终于被调通了。那时,我终于可以上上的舒一口气了。

我的系统规模比较小同时由于我的时间和能力等多方面的因素影响,我们的系统也存在一定的缺陷。

《数据结构课程设计.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
数据结构课程设计
点击下载文档
相关专题 数据结构课程设计全 数据结构 课程设计 数据结构课程设计全 数据结构 课程设计
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文