当前位置:文档之家› C语言 图书销售管理系统

C语言 图书销售管理系统

目录图书销售管理系统设计 (2)一、设计要求 (2)二、总体设计思路 (2)1. 主要功能:系统主要包括八个功能模块。

(2)2. 总体思路框图 (2)三、主要参数和函数 (3)1. 全局变量 (3)2. 主要函数 (3)四、程序调试及整体实现 (10)1. 主菜单运行界面 (10)2. 图书信息录入界面 (10)3. 图书信息浏览界面 (11)4. 图书查询界面 (11)5. 图书信息修改界面 (12)6. 图书信息删除界面 (12)7. 图书信息排序主界面 (13)8. 购书清单界面 (14)五、体会总结 (14)附件 (15)图书销售管理系统设计一、设计要求1.图书信息包括:序号、书名、作者、出版单位、价格。

2.系统以菜单方式工作。

3.图书信息录入功能(图书信息用文件保存)--输入。

4.图书信息的删除与修改功能。

5.图书信息浏览功能--输出。

6.查询功能--算法:(按书名/作者查询)。

7.排序功能--算法:(按书名排序/按价格排序)。

8.图书购买功能:统计选购图书的总价,给出清单,屏幕输出参考以下的实际购书单。

二、总体设计思路1.主要功能:系统主要包括八个功能模块。

1)图书信息的录入:将所要录入的图书信息包括序号、书名、作者、出版社、价格等录入一个文本文件中。

每录入一本书,系统提示是否继续,若不继续,则返回主界面。

2)图书信息的查询:将所有图书信息包括序号、书名、出版社、作者、价格等显示在屏幕上,最后返回主界面。

3)图书信息的查询:通过输入图书名称或作者完成图书信息的查找,并在屏幕上显示,返回主界面。

4)图书信息的修改:通过输入序号,判断此图书是否存在,若不存在则提示用户重新输入图书序号,若存在则要求输入要修改图书的序号,对该图书重新录入信息。

录入后,提示是否继续,如不继续,则返回主界面。

5)图书信息的删除:通过输入序号,判断此图书是否存在,若存在,则提示用户是否显示删除后的信息,若不存在则提示用户重新输入图书序号,删除完毕后,返回主界面。

6)图书信息的排序:通过输入书名或价格,提示用户输入想要使用的排序方式,排序后的信息显示在屏幕上,返回主界面。

7)图书的购买:通过输入要购买的图书序号,计算出总本书和总价格并连同其他购买信息一并显示在屏幕上。

8)退出系统:返回主页面。

2.总体思路框图图1. 总体思路框图三、主要参数和函数1.全局变量1)定义一个存放图书信息的结构体struct book,并定义此类型的变量struct book list[N],用来表示图书数组。

struct book /*定义结构体类型*/{int num; /*序号为整型*/char name[40]; /*书名为字符串*/char author[20]; /*作者为字符串*/char publish[50]; /*出版社为字符串*/float price; /*价格为浮点型*/};struct book list[N]; /*定义struct book类型的变量list N个*/2)int Count=0,定义全局变量,用来表示图书的个数,初始值为0。

2.主要函数1)主函数main(),控制整个系统的执行流程,使系统菜单可以循环执行。

根据图书馆信息管理系统的要求,可设计一个主函数,及定义多个用户自定义函数。

通过将switch语句与break语句联合使用来实现多分支选择结构程序的设计。

case1至case7分别实现不同的功能,并能返回主界面;case0直接返回主界面。

程序代码:void main(){int choice1;printf(" *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*\n");printf(" * 欢迎进入图书销售管理系统*\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 : 图书的购买\n");printf(" 0 : 退出系统\n");printf("###############################################################");printf("\t请选择操作:");scanf("%d", &choice1);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 ;case 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+"))==NULL){ printf("无法操作,无文件信息\n");exit(0);}for(i=0;i<N;i++){ if(fread(&list[i],sizeof(struct book),1,fp)==0){ printf("数据输出失败\n");exit(0);} }fclose(fp);}3)信息录入文件函数read(),函数类型为void。

定义指向文件的指针读取数据,把输入的图书信息保存到文件中,若指针指向NULL,则输出无法操作。

利用for循环保存信息到指定文件。

程序代码:void read(){ int i;FILE *fp;if((fp=fopen("book.txt","wr+"))==NULL){ printf("\n不能打开文件\n");exit(0); }for(i=0;i<N;i++)if(fwrite(&list[i],sizeof(struct book),1,fp)!=1)printf("文件写入错误\n");fclose(fp);}4)信息录入系统函数input(),提供录入图书信息功能。

在for循环下,一次提示用户输入图书序号、书名、作者、出版社以及价格。

每循环一次,提示用户是否继续,当选“1”时继续输入图书信息,选“2”时返回主界面;每循环一次Count自增1。

程序代码:void input(){ int i,k,j,t;for(j=0;list[j].num!=0;j++)t=j+1;for(i=t;i<N;i++){ printf("\t请输入您的图书序号:");scanf("\t%d",&list[i].num);printf("\t请输入书名:");scanf("\t%s",list[i].name);printf("\t请输入作者:");scanf("\t%s",list[i].author);printf("\t请输入出版社:");scanf("\t%s",list[i].publish);printf("\t请输入价格:");scanf("\t%f",&list[i].price);fflush(stdin);printf("\t\n是否继续录入?(1.是2.否)");scanf("%d",&k);if(k==2) break;} Count=i+1;read();}5)删除图书信息函数delete_bookinformation (struct book list[]),提供对图书信息的删除功能。

此函数运行时利用open函数打开数据文件,读取信息;利用for循环,当输入序号与循环中的某一对应数据相同时,将后一个赋值给前一个从而把要删除的图书信息删除掉。

如果i=0,则直接输出“图书销售系统没有你要输出的图书信息!!!”。

删除后会显示“删除成功”,同时Count自减1;最后还要执行read函数,重新记录图书信息。

程序代码:void delete_bookinformation (struct book list[]){ int j,k,d,i=0;open();printf("请输入要删除的图书的序号:\n");scanf("%d",&d);for(j=0;list[j].num!=0;j++){ if(list[j].num==d){ for(k=j;list[k].num!=0;k++)list[k]=list[k+1];i++;}}if(i==0)printf("图书销售系统没有你输入的图书序号,请重新选择输入\n");elseCount=Count-1;read();printf("删除成功\n");}6)修改图书信息函数modify_bookinformation (struct book list[]),提供对图书信息的修改功能。

相关主题