文档库 最新最全的文档下载
当前位置:文档库 › 数据结构课程设计说明

数据结构课程设计说明

数据结构课程设计说明
数据结构课程设计说明

数据结构课程设计计算机科学与技术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输入图书的入库量:"<>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<<"添加完毕!"<>sel;

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<<"图书编号为:"<b_Code<

cout<<"图书名称为:"<b_Name<

cout<<"图书库存量为:"<b_Total<

cout<<"图书借出量为:"<b_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<<"没有找到要删除的图书"<

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(;il_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<<"删除图书结束"<

}

相关文档