数据结构书店图书管理系统.docx
《数据结构书店图书管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构书店图书管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
![数据结构书店图书管理系统.docx](https://file1.bdocx.com/fileroot1/2022-11/15/5ecaeef0-4b40-4965-a098-e2d51fdb5fbd/5ecaeef0-4b40-4965-a098-e2d51fdb5fbd1.gif)
数据结构书店图书管理系统
书店图书管理程序的设计与实现
摘要:
本学期我们对《数据结构》进行了学习。
这门课程实践性非常强,为了让我们能够掌握所学的知识,并能够灵活的运用,我们进行了此次课程设计。
该设计要求掌握数据结构的内容,也需要一定的c语言基础。
课程设计的目的是:
熟练掌握基本的数据结构,熟练掌握各种算法,运用高级语言编写质量高、风格好的应用程序。
对于“书店图书管理程序的设计与实现”这个题目来说,要求掌握的主要有:
线性表的存储结构及其相关操作算法,查找的相关算法,文件的保存与读取等等。
通过此次课程设计,能够进一步的加深对数据结构的理解,同时也提高动手实践能力,进一步熟练了对visualC++平台的使用。
关键字:
查找,线性表,保存,读取
1.引言:
中小型书店、个体书店其日常管理工作都是人工操作,历史数据很难保存和利用,对于书店的经营非常不利。
针对这种状况,开发一个面向中小型书店、个体书店的图书管理系统,实现对人员、物流的全面管理,以帮助这些书店早日实现书店管理信息化。
2.需求分析:
①书店管理员能将书的信息输入到系统书库中②书店管理员能对书库内的信息进行查询,删除及修改③书店管理员对销售信息进行查询④顾客对书店书目进行查询,并决定是否购买
3.数据结构设计:
StructBook:
书的基本信息
StructBookList:
链表用以存放从书库内读取的所有信息
4.算法设计:
4.1管理员向书库内输入信息:
voidInput(BookList*Books)
{
charcommand;
Bookbook;
inti;
ClearBook(&book);
system("cls");
for(i=1;i<=80;i++)
printf("*");
printf("请输入要添加书的信息\n");
printf("Commandlist:
输入完毕,返回上级:
r退出系统:
q\n");
for(i=1;i<=80;i++)
printf("*");
printf("\n");
printf("<特别注意如果某项信息不存在请务必输入0或¨-代替>\n");
printf("\n");
printf("书号书名作者进价(元)售价(元)库存总量现存量销售额\n");
scanf("%s",book.No);
command=book.No[0];
if(command!
='r'&&command!
='q')
{
scanf("%s",book.Name);
scanf("%s",book.Author);
scanf("%f",&book.Inprice);
scanf("%f",&book.Outprice);
scanf("%d",&book.Total);
scanf("%d",&book.Biomass);
scanf("%d",&book.Sales);
fflush(stdin);
InsertBookList(Books,book);
while(command!
='r'&&command!
='q')
{
ClearBook(&book);
scanf("%s",book.No);
command=book.No[0];
if(command=='r'||command=='q')
break;
scanf("%s",&book.Name);
scanf("%s",book.Author);
scanf("%f",&book.Inprice);
scanf("%f",&book.Outprice);
scanf("%d",&book.Total);
scanf("%d",&book.Biomass);
scanf("%d",&book.Sales);
fflush(stdin);
InsertBookList(Books,book);
}
}
fflush(stdin);
SaveData(Books);
if(command=='r')
{//返回管理员界面
Manager();
}
elseif(command=='q')
{//退出
system("exit");
}
}
4.2管理员查询算法:
voidQuery(BookList*Books)
{
inti;
charcommand;
charQueryChoose[100];
Block1:
memset(QueryChoose,'\0',100);
system("cls");
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------\n");
printf("**\n");
printf("*1<按书号查询>2<按书名查询>*\n");
printf("*3<按作者查询>4<所有书目信息>*\n");
printf("**\n");
printf("-------------------------------------------------------------------\n");
for(i=1;i<=80;i++)
{
printf("*");
}
printf("CommandList:
按书号查询1按书名查询:
2按作者查询:
3\n");
printf("所有书目信息:
4返回上一级:
r退出系统3:
q\n");
for(i=1;i<=80;i++)
{
printf("*");
}
printf("EnteraCommand>>-");
command=getchar();
fflush(stdin);
while(command!
='1'&&command!
='2'&&command!
='3'&&command!
='4'&&command!
='r'&&command!
='q')
{
printf("%c为无效内部命令\n",command);
printf("Enteracommand>>-");
command=getchar();
fflush(stdin);
}
switch(command)
{
case'1':
//按书号查询
Block2:
printf("输入要查询的书号(输入e跳出输入)>>");
scanf("%s",QueryChoose);
fflush(stdin);
if(QueryChoose[0]=='e')
{
gotoBlock1;
}
QueryBookList(Books,QueryChoose);
gotoBlock2;
break;
case'2':
//按姓名删除
Block3:
printf("输入要查询的书名(输入e跳出输入)>>");
scanf("%s",QueryChoose);
fflush(stdin);
if(QueryChoose[0]=='e')
{
gotoBlock1;
}
QueryBookList1(Books,QueryChoose);
gotoBlock3;
break;
case'3':
//按作者删除
Block4:
printf("输入要查询的作者(输入e跳出输入)>>");
scanf("%s",QueryChoose);
fflush(stdin);
if(QueryChoose[0]=='e')
{
gotoBlock1;
}
QueryBookList2(Books,QueryChoose);
gotoBlock4;
break;
case'4':
//所有书目
system("cls");
QueryAll(Books);
system("pause");
gotoBlock1;
break;
case'r':
//返回
Manager();
break;
case'q':
//退出
system("exit");
break;
default:
break;
}
}
4.3管理员删除算法:
charDelete(BookList*Books)
{
inti;
charcommand;
charDeleteChoose[100];
Block1:
memset(DeleteChoose,'\0',100);
system("cls");
printf("\n");
printf("\n");
printf("----------------------------------------------------------------------------------\n");
printf("**\n");
printf("*1<按书号删除>2<按书名删除>3<按作者删除>*\n");
printf("**\n");
printf("-----------------------------------------------------------------------------------\n");
for(i=1;i<=80;i++)
{
printf("*");
}
printf("CommandList:
按书号删除:
1按书名删除:
2按作者删除:
3\n");
printf("返回上一级:
r退出系统3:
q\n");
for(i=1;i<=80;i++)
{
printf("*");
}
printf("EnteraCommand>>-");
command=getchar();
fflush(stdin);
while(command!
='1'&&command!
='2'&&command!
='3'&&command!
='r'&&command!
='q')
{
printf("%c为无效内部命令\n",command);
printf("Enteracommand>>-");
command=getchar();
fflush(stdin);
}
switch(command)
{
case'1':
//按书号删除
Block2:
printf("输入要删除的书号(输入e跳出输入)>>");
scanf("%s",DeleteChoose);
fflush(stdin);
if(DeleteChoose[0]=='e')
{//保存删除后的数据,并退出此删除模式
SaveData1(Books);
gotoBlock1;
}
DeleteBookList(Books,DeleteChoose);
gotoBlock2;
break;
case'2':
//按姓名删除
Block3:
prin