1、目录图书销售管理系统设计 .2一、设计要求 .2二、总体设计思路 .21. 主要功能:系统主要包括八个功能模块。 .32. 总体思路框图 .3三、主要参数和函数 .41. 全局变量 .42. 主要函数 .5四、程序调试及整体实现 .141. 主菜单运行界面 .142. 图书信息录入界面 .143. 图书信息浏览界面 .144. 图书查询界面 .155. 图书信息修改界面 .166. 图书信息删除界面 .167. 图书信息排序主界面 .178. 购书清单界面 .17五、体会总结 .18附件 .19图书销售管理系统设计一、 设计要求1. 图书信息包括:序号、书名、作者、出版单位、价格。2. 系统以
2、菜单方式工作。3. 图书信息录入功能(图书信息用文件保存)输入。4. 图书信息的删除与修改功能。5. 图书信息浏览功能输出。6. 查询功能算法:(按书名/作者查询)。7. 排序功能算法:(按书名排序/按价格排序) 。8. 图书购买功能:统计选购图书的总价,给出清单,屏幕输出参考以下的实际购书单。二、 总体设计思路1. 主要功能:系统主要包括八个功能模块。1) 图书信息的录入:将所要录入的图书信息包括序号、书名、作者、出版社、价格等录入一个文本文件中。每录入一本书,系统提示是否继续,若不继续,则返回主界面。2) 图书信息的查询:将所有图书信息包括序号、书名、出版社、作者、价格等显示在屏幕上,最后
3、返回主界面。3) 图书信息的查询:通过输入图书名称或作者完成图书信息的查找,并在屏幕上显示,返回主界面。4) 图书信息的修改:通过输入序号,判断此图书是否存在,若不存在则提示用户重新输入图书序号,若存在则要求输入要修改图书的序号,对该图书重新录入信息。录入后,提示是否继续,如不继续,则返回主界面。5) 图书信息的删除:通过输入序号,判断此图书是否存在,若存在, 则提示用户是否显示删除后的信息,若不存在则提示用户重新输入图书序号,删除完毕后,返回主界面。6) 图书信息的排序:通过输入书名或价格,提示用户输入想要使用的排序方式,排序后的信息显示在屏幕上,返回主界面。7) 图书的购买:通过输入要购买
4、的图书序号,计算出总本书和总价格并连同其他购买信息一并显示在屏幕上。8) 退出系统:返回主页面。2. 总体思路框图图 1. 总体思路框图三、 主要参数和函数1. 全局变量1) 定义一个存放图书信息的结构体 struct book,并定义此类型的变量struct book listN,用来表示图书数组。struct book /*定义结构体类型*/int num; /*序号为整型 */char name40; /*书名为字符串*/char author20; /*作者为字符串*/char publish50; /*出版社为字符串*/float price; /*价格为浮点型*/;struct b
5、ook listN; /*定义 struct book 类型的变量 list N 个*/2) int Count=0,定义全局变量,用来表示图书的个数,初始值为 0。2. 主要函数1) 主函数 main(),控制整个系统的执行流程,使系统菜单可以循环执行。根据图书馆信息管理系统的要求,可设计一个主函数,及定义多个用户自定义函数。通过将 switch 语句与 break 语句联合使用来实现多分支选择结构程序的设计。case1 至 case7 分别实现不同的功能,并能返回主界面;case0 直接返回主界面。程序代码:void main() int choice1;printf(“ *n“);pri
6、ntf(“ * 欢迎进入图书销售管理系统 *n“);printf(“ *n“);do 图书销售管理系统退出系统图书信息排序图书信息删除图书信息修改图书信息查询图书购买清单图书信息浏览图书信息录入 printf(“#“); /*显示菜单*/printf(“功能选项: n“);printf(“ 1 : 图书信息录入 n“);printf(“ 2 : 图书信息浏览 n“);printf(“ 3 : 图书信息查询 n“);printf(“ 4 : 图书信息修改 n“);printf(“ 5 : 图书信息删除 n“);printf(“ 6 : 图书信息排序 n“);printf(“ 7 : 图书的购买
7、n“);printf(“ 0 : 退出系统 n“);printf(“#“);printf(“t 请选择操作:“);scanf(“%d“, switch (choice1) /*菜单选择*/case 1 : input();break;case 2 : show_bookinformation(list); break ;case 3 : check_bookinformation (list); break ;case 4 : modify_bookinformation (list); break ;case 5 :delete_bookinformation(list);break ;ca
8、se 6 :reorder_bookinformation(list);break;case 7 :buytotal(list);break;case 0 :break ; while (choice1!=0);printf(“谢谢! 欢迎下次使用使用!n“);2) 打开数据文件函数 open(),把文件的信息打开到一个结构体数组中。定义指向文件的指针读取数据,若指针指向 NULL,则显示“无法操作,无文件信息!” ,要调用 fopen、fclose 和 fread 函数。程序代码:void open() int i;FILE *fp;if(fp=fopen(“book.txt“,“rb+“)
9、=NULL) printf(“无法操作,无文件信息!n“);exit(0);for(i=0;i0) k=j;if(k!=i) strcpy(temp,listi.name);strcpy(listi.name,listk.name);strcpy(listk.name,temp); if(fp=fopen(“book.txt“,“w“)=NULL) printf(“cant open the file!n“);exit(0);printf(“新序列为:n“);for(j=0;jCount;j+) printf(“图书序号t 图书名t 作者名t 出版社t 图书价格n“);printf(“ %dt
10、t%st%st%st%6.2fn“,listj.num,listj.name, listj.author,listj.publish,listj.price);read();break;case 2:for(k=0;listk.num!=0;k+)for(j=0;listj.num!=0;j+)if(listj.pricelistj+1.price)t=listj;listj=listj+1;listj+1=t;for(j=0;listj.num!=0;j+) printf(“图书序号t 图书名t 作者名t 出版社t 图书价格 n“);printf(“ %dtt%st%st%st%6.2fn“
11、,listj.num,listj.name, listj.author,listj.publish,listj.price);k+;read();break;10) 图书购买清单函数 buytotal(struct book list),提供统计选购图书的总价,给出清单的功能。用户输入所购图书的序号,输入“0”时结束,系统利用 for 循环,当输入序号与系统内所存序号相同时,价格相加赋新值,书本数同时计数。最后打印出想要的清单。程序代码:void buytotal(struct book list) int k,m,n,q,r,t=0;float sum=0;char e50,f50,l50,
12、o50,p50;printf(“n *n“);printf(“n 人民邮电出版社样书清单 n“); printf(“n *n“);printf(“ 请输入所购各图书的序号(输入 0 结束):n“);scanf(“%d“,do for(r=0;rCount;r+) if(q=listr.num) sum=sum+listr.price;t+; scanf(“%d“, while(q!=0);printf(“ 合计发书:%dn“,r);printf(“ 收书单位:“);scanf(“%s“,e);printf(“ 发书依据:“);scanf(“%s“,f);printf(“ 价格:%.2fn“,sum);printf(“ 邮政编码:“);scanf(“%d“,printf(“ 收货地址:“);scanf(“%s“,l);printf(“ 联系电话:“);scanf(“%d“,printf(“ 制单日期:“);scanf(“%d“,printf(“ 货运公司:“);scanf(“%s“,o);printf(“ 验书人:“);scanf(“%s“,p);四、 程序调试及整体实现1. 主菜单运行界面连接,检错完毕后,运行程序,开始进入主菜单。结果显示如下:图 5. 主菜单界面2. 图书信息录入界面在主菜单上选择“1” ,根据提示录入图书信息。屏幕显示如下: