图书库存管理的设计与实现.docx

上传人:b****4 文档编号:26762962 上传时间:2023-06-22 格式:DOCX 页数:27 大小:117.92KB
下载 相关 举报
图书库存管理的设计与实现.docx_第1页
第1页 / 共27页
图书库存管理的设计与实现.docx_第2页
第2页 / 共27页
图书库存管理的设计与实现.docx_第3页
第3页 / 共27页
图书库存管理的设计与实现.docx_第4页
第4页 / 共27页
图书库存管理的设计与实现.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

图书库存管理的设计与实现.docx

《图书库存管理的设计与实现.docx》由会员分享,可在线阅读,更多相关《图书库存管理的设计与实现.docx(27页珍藏版)》请在冰豆网上搜索。

图书库存管理的设计与实现.docx

图书库存管理的设计与实现

学号:

0121110340134

根底强化训练

 

题目

图书库存管理的设计与实现

学院

计算机科学与技术

专业

计算机科学与技术

班级

计科1101班

姓名

李梦瑶

指导教师

闵联营

 

2021

9

2

 

一.任务书..............................1

二.课程设计.............................2

2.1系统描述...........................2

2.1.1问题分析........................2

2.1.2数据需求........................2

2.1.3功能需求........................2

2.2系统..............................2

2.2.1内存数据构造设计...................2

2.2.2数据文件设计......................3

2.3系统测试...........................3

2.3.1输入\输出设计.....................3

2.3.2用户界面设计......................3

三.源程序..............................5

四.评分表..............................17

 

计算机根底强化训练任务书

学生XX:

李梦瑶专业班级:

计科1101班

指导教师:

闵联营工作单位:

计算机科学与技术学院

题目:

初始条件:

理论:

学完计算机根底知识,掌握C++语言编程根底和VC开发平台的使用。

实践:

计算机科学系实验中心提供计算机及软件开发环境。

要求完成的主要任务:

〔1〕系统需求分析,得到系统的数据需求和功能需求,分析结果用表格记录。

〔2〕系统设计,包括内存数据构造设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。

要求内存数据用链表组织,数据文件用文本文件,用户界面用字符界面。

至少实现数据记录的增加、修改、删除、查询〔查询应能按不同数据项进展〕。

〔2〕编制好程序后,设计假设干测试用例,上机测试所设计的程序。

〔4〕设计报告按格式要求书写。

设计报告正文的内容应包括:

1〕系统描述包括问题说明、数据需求和功能需求。

2〕系统设计包括内存数据构造设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。

3〕系统测试包括测试用例的描述、测试方法和测试结果。

4〕设计的特点、缺乏、收获和体会。

时间安排:

1、第19周〔7月5日至7月9日〕完成。

2、7月9日8:

00到计算机学院实验中心〔三楼〕检查程序、交课程设计报告、源程序〔CD盘〕。

指导教师签名:

2021年9月31日

系主任〔或责任教师〕签名:

2021年9月31日

 

二.课程设计

2.1系统描述

2.1.1问题分析

完成程序,实现图书库存的管理。

至少实现数据记录的增加、修改、删除、查询及相应结果的显示,查询应能按不同数据项进展

2.1.2数据需求

图书本身的信息有图书的ISBN,图书的名称,图书的作者,图书的,图书的价格。

图书的库存管理信息应包含图书的上次入库时间,图书的上次出库时间,现库存图书的数目。

故所需的数据项如下:

图书的ISBNstringISBN;

图书的名称:

stringname;

图书的stringauthor;

图书上次入库时间:

stringin_date;

图书上次出库时间:

stringout_date;

图书现在库存数量:

intnum.

2.1.3功能需求

功能

程序中的实现

1、查询库存图书的信

查询某书在构造体中的位置并输出该节点的信息

2、图书入库

在构造体链表中添加相应的节点

3、图书出库

在构造体链表中删除相应的节点

4、修改某图书的库存信息

在构造体链表中修改相应的节点的信息

2.2系统设计

2.2.1内存数据构造设计

内存中,图书的相关信息用构造体链表定义,每一个节点包含某本书的全部信息

structbook{

stringISBN;

stringname;

stringauthor;

stringin_date;

stringout_date;

intnum;

book*next;

};

由于在系统退出时,相关的图书信息都用表格的形式存储在文本文档中,其中第一行存储的不是图书信息,二十对以下图书信息对应项的说明。

因此,在内存中定义了一个表示文本文档中第一行的构造体,如下:

structheadline{

stringfirstline;

book*next;

};

用来保存文本中第一行的内容。

在内存中,数据的构造如以下图所示:

firstline

ISBN

……

name

author

num

in_date

Out_date

2.2.2数据文件设计

图书的相关信息在退出系统是都保存在文本文档中。

文本文档命名为〞bookinformation〞文本文档用列表的形式表示保存的图书信息,如以下所示:

〔局部图书信息,〕

ISBN书名作者数量上次入库时间上次出库时间

7-115-13416-2C++PrimerPlusX建春52021-07-012021-07-05

7-121-01665-6算法引论黄林鹏62005-09-102005-09-15

7-302-08599-4C++程序设计谭浩强62004-06-012004-06-06

7-900643-22-2数据构造严蔚敏102006-05-012006-05-06

7-5427-2975-6Flash8培训教程柏松152006-05-012006-05-06

2.3系统测试

2.3.1输入\输出设计

把文本文档里面的初始信息当成是原始的输入,程序运行时把该信息放到构造里链表中去。

当执行查询,修改,添加,删除功能是,那么用户通过键盘输入,通过用户手动选择,实现其相应的功能。

输出那么是把每次操作执行后的链表信息保存大文本文档中,从而实现输出。

2.3.2用户界面设计

1.主菜单界面

2.查询图书界面

3.图书入库界面

4.图书出库界面

5.修改图书记录界面

6.退出系统界面

三.源程序

#include

#include

#include

usingnamespacestd;

structbook{

stringISBN;

stringname;

stringauthor;

stringin_date;

stringout_date;

intnum;

book*next;

};

structheadline{

stringfirstline;

book*next;

};

voidSearch();//函数申明

voidAdd();

voidDelete();

voidModify();

voidMenu();

headline*Creatlink()//以图书馆的现存数据创立构造体链表的代码

{

headline*head=newheadline;

stringline,temp;

ifstreamfin("bookinformation.txt");

getline(fin,line);

{

head->firstline=line;

head->next=NULL;

}

inti,j=0,k=0,n;

inta[5];

book*q,*p;

while(getline(fin,line))

{

q=newbook;

j=0,k=0;

for(i=k;i

{

if(line[i]=='\t')

{

a[j]=i;

j++;

k=i+1;

}

i++;

}

for(n=0;n

{

temp=temp+line[n];

}

q->ISBN=temp;

temp="";

for(n=a[0]+1;n

{

temp=temp+line[n];

}

q->name=temp;

temp="";

for(n=a[1]+1;n

{

temp=temp+line[n];

}

q->author=temp;

temp="";

q->num=0;//找出该行图书信息的图书的数目

for(n=a[2]+1;n

{

q->num=q->num*10+(int(line[n])-48);

}

for(n=a[3]+1;n

{

temp=temp+line[n];

}

q->in_date=temp;

temp="";

for(n=a[4]+1;n

{

temp=temp+line[n];

}

q->out_date=temp;

temp="";

if(head->next==NULL)

{

head->next=q;

p=q;

}

else

{

p->next=q;

p=q;

p->next=NULL;

}

}

fin.close();

returnhead;

}

voidmain()

{

Menu();

cout<<"谢谢使用!

"<

}

voidMenu()//主菜单的代码

{

cout<<"图书库存管理系统"<

cout<<"查询图书请输入1"<

cout<<"图书入库请输入2"<

cout<<"图书出库请输入3"<

cout<<"修改图书记录请输入4"<

cout<<"退出系统请输入5"<

cout<

charchoice;

cout<<"请输入需要执行的操作(1-5):

";

cin>>choice;

while(int(choice)<49||int(choice)>53)

{

cout<<"输入错误,请选择正确的操作(1-5)";

cin>>choice;

cout<<"\n\n\n\n";

}

switch(choice)

{

case'1':

cout<<"\n\n";Search();break;

case'2':

cout<<"\n\n";Add();break;

case'3':

cout<<"\n\n";Delete();break;

case'4':

cout<<"\n\n";Modify();break;

case'5':

exit(0);break;

}

}

voidSearch()//查找功能的代码

{

cout<<"图书查询系统:

"<

cout<<"*按ISBN序列号查询请输入1*"<

cout<<"*按书名查询请输入2*"<

cout<<"*按作者查询请输入3*"<

cout<<"*返回上级菜单请输入4*"<

cout<

cout<<"请选择查询方法:

";

charchoice;

cin>>choice;

while(int(choice)<49||int(choice)>52)

{

cout<<"请从新输入:

";

cin>>choice;

}

switch(choice)

{

case'1':

{

cout<<"请输入要查询图书的ISBN:

";

stringISBN;

cin>>ISBN;

headline*head=Creatlink();

book*p=head->next;

inttag=0;//表征是否查找成功,默认为查找不成功

while(p)

{

if(p->ISBN==ISBN)

{

tag=1;//表示查找成功

cout<<"查找的图书信息如下:

"<

cout<firstline<

cout<ISBN<<"\t"<name<<"\t"<author<<"\t"<num<<"\t"<in_date<<"\t"<out_date<

cout<

break;

}

else

p=p->next;

}

if(tag==0)

{

cout<<"未找到所要查找的图书信息!

!

\n\n";

}

break;

}

case'2':

{

cout<<"请输入要查询图书的书名:

";

stringname;

cin>>name;

headline*head=Creatlink();

book*p=head->next;

inttag=0;//表征是否查找成功,默认为查找不成功

while(p)

{

if(p->name==name)

{

tag=1;//表示查找成功

cout<<"查找的图书信息如下:

"<

cout<firstline<

cout<ISBN<<"\t"<name<<"\t"<author<<"\t"<num<<"\t"<in_date<<"\t"<out_date<

cout<

break;

}

else

p=p->next;

}

if(tag==0)

{

cout<<"未找到所要查找的图书信息!

!

\n\n";

}

break;

}

case'3':

{

cout<<"请输入要查询图书的作者:

";

stringauthor;

cin>>author;

headline*head=Creatlink();

book*p=head->next;

inttag=0;//表征是否查找成功,默认为查找不成功

while(p)

{

if(p->author==author)

{

tag=1;//表示查找成功

cout<<"查找的图书信息如下:

"<

cout<firstline<

cout<ISBN<<"\t"<name<<"\t"<author<<"\t"<num<<"\t"<in_date<<"\t"<out_date<

cout<

break;

}

else

p=p->next;

}

if(tag==0)

{

cout<<"未找到所要查找的图书信息!

!

\n\n";

}

break;

}

case'4':

{

Menu();

}

}

cout<<"是否显示所有图书的信息?

(y/n)"<

chardecision;

cin>>decision;

if(decision=='y'||decision=='Y')

{

headline*head=Creatlink();

cout<firstline<

book*p=head->next;

while(p)

{

cout<ISBN<<"\t"<name<<"\t"<author<<"\t"<num<<"\t"<in_date<<"\t"<out_date<

p=p->next;

}

}

cout<<"是否继续查询图书的信息?

(y/n)"<

cin>>decision;

if(decision=='y'||decision=='Y')

{

Search();

}

else

Menu();

}

voidAdd()//图书入库功能的代码

{

cout<<"*图书入库*"<

cout<<"请输入入库图书的相关信息:

"<

stringISBN,name,author,in_date,out_date="";

intnum;

book*addbook=newbook;

cout<<"ISBN:

";

cin>>ISBN;

cin.get();

cout<<"书名:

";

getline(cin,name);

cout<<"作者:

";

cin>>author;

cout<<"数量:

";

cin>>num;

cout<<"入库时间:

";

cin>>in_date;

addbook->ISBN=ISBN;

addbook->name=name;

addbook->author=author;

addbook->num=num;

addbook->in_date=in_date;

addbook->next=NULL;

headline*head=Creatlink();

book*p=head->next;

inttag=0;

while(p->next!

=NULL)

{

if(p->ISBN==ISBN)

{

tag=1;

p->num=p->num+num;

deleteaddbook;

break;

}

else

p=p->next;

}

if(tag==0)

{

if(p->ISBN==ISBN)

{

p->num=p->num+num;

deleteaddbook;

}

else

p->next=addbook;

}

chardecision;

cout<<"是否将改动写入文件?

(y/n)"<

cin>>decision;

if(decision=='y'||decision=='Y')

{

ofstreamfout("bookinformation.txt");

fout<firstline<

p=head->next;

while(p)

{

fout<ISBN<<"\t"<name<<"\t"<author<<"\t"<num<<"\t"<in_date<<"\t"<out_date<

p=p->next;

}

}

cout<<"是否继续图书入库?

(y/n)"<

cin>>decision;

if(decision=='y'||decision=='Y')

{

Add();

}

else

Menu();

}

voidDelete()//图书出库功能的代码

{

cout<<"*图书出库*"<

cout<<"请输入出库图书的ISBN:

"<

stringISBN;

cin>>ISBN;

headline*head=Creatlink();

book*p=head->next;

inttag=0;

if(p->ISBN==ISBN)

{

tag=1;

cout<<"该图书的信息如下:

"<

cout<<"ISBN\t书名\t作者\t数量\t入库时间"<

cout<ISBN<<"\t"<name<<"\t"<author<<"\t"<num<<"\t"<in_date<

head->next=p->next;

deletep;

}

else

{

book*q=p->next;

while(q)

{

if(q->ISBN==ISBN)

{

tag=1;

cout<<"该图书的信息如下:

"<

cout<<"ISBN\t书名\t作者\t数量\t入库时间"<

cout<ISBN<<"\t"<name<<"\t"<author<<"\t"<num<<"\t"<in_date<

p->next=q->next;

deleteq;

break;

}

else

{

p=q;

q=q->next;

}

}

}

if(tag==0)

{

cout<<"输入有错,请从新输入"<

Delete();

}

chardecision;

cout<<"是否将改动写入文件?

(y/n)"<

cin>>decision;

if(decision=='y'||decision=='Y')

{

ofstreamfout("bookinformation.txt");

fout<firstline<

p=head->next;

while(p)

{

fout<ISBN<<"\t"<name<<"\t"<author<<"\t"<num<<"\t"<in_date<<"\t"<out_date<

p=p->next;

}

}

cout<<"是否继续图书出库?

(y/n)"<

cin>>decision;

if(decision=='y'||decision=='Y')

{

Delete();

}

else

Menu();

}

voidModify()//修改图书库存信息功能的代码

{

cout<<"*图书信息的修改*"<

cout<<"请输入要修改图书的相关信息:

"<

stringISBN,in_date,out_date;

intnum;

cout<<"ISBN:

";

cin>>ISBN;

cout<<"数量:

";

cin>>num;

cout<<"上次入库时间:

";

c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1