C语言图书销售管理系统_第1页
C语言图书销售管理系统_第2页
C语言图书销售管理系统_第3页
C语言图书销售管理系统_第4页
C语言图书销售管理系统_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录图书销售管理系统设计2一、设计要求2二、总体设计思路21.主要功能:系统主要包括八个功能模块。32.总体思路框图3三、主要参数和函数41.全局变量42.主要函数5四、程序调试及整体实现141.主菜单运行界面142.图书信息录入界面143.图书信息浏览界面144.图书查询界面155.图书信息修改界面166.图书信息删除界面167.图书信息排序主界面178.购书清单界面17五、体会总结18附件19 图书销售管理系统设计一、 设计要求1. 图书信息包括:序号、书名、作者、出版单位、价格。2. 系统以菜单方式工作。v3. 图书信息录入功能(图书信息用文件保存)输入。v4. 图书信息的删除与修改功能

2、。5. 图书信息浏览功能输出。v6. 查询功能算法:(按书名/作者查询)。7. 排序功能算法:(按书名排序/按价格排序)。8. 图书购买功能:统计选购图书的总价,给出清单,屏幕输出参考以下的实际购书单。二、 总体设计思路1. 主要功能:系统主要包括八个功能模块。1) 图书信息的录入:将所要录入的图书信息包括序号、书名、作者、出版社、价格等录入一个文本文件中。每录入一本书,系统提示是否继续,若不继续,则返回主界面。2) 图书信息的查询:将所有图书信息包括序号、书名、出版社、作者、价格等显示在屏幕上,最后返回主界面。3) 图书信息的查询:通过输入图书名称或作者完成图书信息的查找,并在屏幕上显示,返

3、回主界面。4) 图书信息的修改:通过输入序号,判断此图书是否存在,若不存在则提示用户重新输入图书序号,若存在则要求输入要修改图书的序号,对该图书重新录入信息。录入后,提示是否继续,如不继续,则返回主界面。 5) 图书信息的删除:通过输入序号,判断此图书是否存在,若存在, 则提示用户是否显示删除后的信息,若不存在则提示用户重新输入图书序号,删除完毕后,返回主界面。6) 图书信息的排序:通过输入书名或价格,提示用户输入想要使用的排序方式,排序后的信息显示在屏幕上,返回主界面。7) 图书的购买:通过输入要购买的图书序号,计算出总本书和总价格并连同其他购买信息一并显示在屏幕上。8) 退出系统:返回主页

4、面。2. 总体思路框图图书销售管理系统退出系统图书信息排序图书信息删除图书信息修改图书信息查询图书购买清单图书信息浏览图书信息录入图1. 总体思路框图三、 主要参数和函数1. 全局变量1) 定义一个存放图书信息的结构体struct book,并定义此类型的变量struct book listn,用来表示图书数组。struct book /*定义结构体类型*/ int num; /*序号为整型*/ char name40; /*书名为字符串*/ char author20; /*作者为字符串*/ char publish50; /*出版社为字符串*/ float price; /*价格为浮点型*

5、/ ;struct book listn; /*定义struct book类型的变量 list n个*/2) int count=0,定义全局变量,用来表示图书的个数,初始值为0。2. 主要函数1) 主函数main(),控制整个系统的执行流程,使系统菜单可以循环执行。根据图书馆信息管理系统的要求,可设计一个主函数,及定义多个用户自定义函数。通过将switch语句与break语句联合使用来实现多分支选择结构程序的设计。case1至case7分别实现不同的功能,并能返回主界面;case0直接返回主界面。程序代码:void main() int choice1; printf(" *n&q

6、uot;); printf(" * 欢迎进入图书销售管理系统 *n"); printf(" *n"); do printf("#"); /*显示菜单*/printf("功能选项: n");printf(" 1 : 图书信息录入 n");printf(" 2 : 图书信息浏览 n");printf(" 3 : 图书信息查询 n");printf(" 4 : 图书信息修改 n");printf(" 5 : 图书信息删除 n&quo

7、t;); 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 : che

8、ck_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(),把文件的信息打开

9、到一个结构体数组中。定义指向文件的指针读取数据,若指针指向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(&listi,sizeof(struct book),1,fp)=0) printf("数据输出失败!n&qu

10、ot;); 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(&listi,sizeof(struc

11、t 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;listj.num!=0;j+) t=j+1; for(i=t;i<n;i+) printf("t请输入您的图书序号:"); scanf(

12、"t%d",&listi.num); printf("t请输入书名:"); scanf("t%s",); printf("t请输入作者:"); scanf("t%s",listi.author); printf("t请输入出版社:"); scanf("t%s",listi.publish); printf("t请输入价格:"); scanf("t%f",&listi.price);

13、 fflush(stdin); printf("tn是否继续录入?(1.是 2.否)"); scanf("%d",&k); if(k=2) break; count=i+1; read();5) 删除图书信息函数delete_bookinformation (struct book list),提供对图书信息的删除功能。此函数运行时利用open函数打开数据文件,读取信息;利用for循环,当输入序号与循环中的某一对应数据相同时,将后一个赋值给前一个从而把要删除的图书信息删除掉。如果i=0,则直接输出“图书销售系统没有你要输出的图书信息!”。删除后会

14、显示“删除成功”,同时count自减1;最后还要执行read函数,重新记录图书信息。程序代码:void delete_bookinformation (struct book list) int j,k,d,i=0; open(); printf("请输入要删除的图书的序号:n"); scanf("%d",&d); for(j=0;listj.num!=0;j+) if(listj.num=d) for(k=j;listk.num!=0;k+) listk=listk+1; i+; if(i=0) printf("图书销售系统没有你输入

15、的图书序号,请重新选择输入!n"); else count=count-1; read(); printf("删除成功n");6) 修改图书信息函数modify_bookinformation (struct book list),提供对图书信息的修改功能。首先提示用户输入要修改的图书序号,利用for循环找到要修改的list,系统提示用户依次输入修改后的图书序号、图书名、作者、出版社、价格。如果输入的序号a为0,则提示“未发现您要找的书!”。程序代码:void modify_bookinformation (struct book list) int j,k=0,

16、number; open(); printf("t请输入您要修改的图书的序号:"); scanf("%d",&number); for (j=0;listj.num!=0;j+) if (listj.num=number) printf("nt请输入您修改后的图书信息:nn"); printf("t请输入您要修改的图书的序号:"); scanf("%d",&listj.num); printf("t请输入您修改后的书名:"); scanf("%s&q

17、uot;,); printf("t请输入您修改后的作者名:"); scanf("%s",listj.author); printf("t请输入您修改后的出版社:"); scanf("%s",listj.publish); printf("t请输入您修改后的书的价格:"); scanf("%f",&listj.price); read(); printf("n修改成功!"); k+; if (k=0) printf("n

18、nt找不到需要修改的图书!");7) 图书信息输出函数show_bookinformation(struct book list),提供图书信息输出功能,浏览图书信息。通过printf()语句将所有的图书信息包括包括编号、书名、出版社、作者、价格等信息显示在屏幕上。运用for语句加printf()实现图书信息的循环输出显示。程序代码:void show_bookinformation(struct book list)int i;open();printf("n*图书信息显示*n");printf("图书序号t图书名t作者名t出版社t图书价格n"

19、;); for(i=0;listi.num!=0;i+) printf(" %dtt%st%st%st%6.2fn",listi.num,, listi.author,listi.publish,listi.price); 8) 图书信息查询函数check_bookinformation (struct book list),提供用户根据图书书名或作者查询图书信息功能。通过printf()语句将所有的图书信息包括包括编号、书名、出版社、作者、价格等信息显示在屏幕上。运用for语句加printf()实现图书信息的循环输出显示。通过将switch语句与bre

20、ak语句联合使用来实现多分支选择结构。若选“1”实现按书名查询;若选“2”实现按作者查询。两者代码类似,都利用字符串操作,最后依次显示查询后的结果。程序代码:void check_bookinformation (struct book list) /*查询图书信息*/int j,i,t,k=0;char c20,d20;printf("请输入查询方式:n 1.按书名查询 2按作者查询:n");scanf("%d",&t); if(t=1) open(); printf("请输入要查询的书名号:n"); scanf("

21、;%s",c); printf("n *你想要查询的图书信息(按作者名)* n"); for(j=0;listj.num!=0;j+) if(strcmp(c,)=0) printf("图书序号t图书名t作者名t出版社t图书价格n"); printf(" %dtt%st%st%st%6.2fn",listj.num,, listj.author,listj.publish,listj.price); k+; if(k=0) printf("n不存在你要查询的图书信息!n&qu

22、ot;); if(t=2) open(); printf("请输入要查询的作者名:n"); scanf("%s",d); for(i=0;listi.num!=0;i+) if(strcmp(d,listi.author)=0) printf("图书序号t图书名t作者名t出版社t图书价格n"); printf(" %dtt%st%st%st%6.2fn",listi.num,, listi.author,listi.publish,listi.price); k+; if(k=0) printf

23、("n不存在你要查询的图书信息!n");9) 图书信息排序函数reorder_bookinformation(struct book list),提供对图书信息按书名和价格排序功能。排序共有两种可选择的方式,按书名排序和按价格排序。利用switch和break实现功能的选择。按书名排序:利用选择排序法和strcmp、strcpy函数在for循环下依次重新循环赋值,按字母的先后顺序依次排序。如果定义的指针fp指向null则显示“cant open the file!”,再利用for循环向屏幕输出排序后的全部图书信息,最后要返回主界面。按价格排序:价格按大小排序。利用冒泡排序法

24、,在for循环下依次重新循环赋值,再利用for循环向屏幕输出排序后的全部图书信息,最后返回主界面。程序代码:void reorder_bookinformation(struct book list)int i,j,a,k;struct book t;file *fp;char temp40;open();printf("n请选择排序方式n1-书名(按字母顺序)n2-价格(按从高到低)n");scanf("%d",&a);switch(a)case 1: for(i=0;i<count-1;i+) k=i; for(j=i+1;j<c

25、ount;j+) if(strcmp(,)>0) k=j; if(k!=i) strcpy(temp,); strcpy(,);strcpy(,temp); if(fp=fopen("book.txt","w")=null) printf("can't open the file!n"); exit(0); printf("新序列为:n"); for(j=0;j<count;j

26、+) printf("图书序号t图书名t作者名t出版社t图书价格n"); printf(" %dtt%st%st%st%6.2fn",listj.num,, 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.price<listj+1.price) t=listj;listj=listj+1;listj+1=t; for(j=0;listj.

27、num!=0;j+) printf("图书序号t图书名t作者名t出版社t图书价格n"); printf(" %dtt%st%st%st%6.2fn",listj.num,, listj.author,listj.publish,listj.price); k+; read(); break;10) 图书购买清单函数buytotal(struct book list),提供统计选购图书的总价,给出清单的功能。用户输入所购图书的序号,输入“0”时结束,系统利用for循环,当输入序号与系统内所存序号相同时,价格相加赋新值,书本数同时计数。最

28、后打印出想要的清单。程序代码: void buytotal(struct book list) int k,m,n,q,r,t=0; float sum=0; char e50,f50,l50,o50,p50; printf("n *n"); printf("n 人民邮电出版社样书清单 n"); printf("n *n"); printf(" 请输入所购各图书的序号(输入0 结束):n"); scanf("%d",&q); do for(r=0;r<count;r+) if(q=

29、listr.num) sum=sum+listr.price; t+; scanf("%d",&q); while(q!=0); printf(" 合计发书:%dn",r); printf(" 收书单位:"); scanf("%s",e); printf(" 发书依据:"); scanf("%s",f); printf(" 价格:%.2fn",sum); printf(" 邮政编码:"); scanf("%d"

30、;,&k); printf(" 收货地址:"); scanf("%s",l); printf(" 联系电话:"); scanf("%d",&m); printf(" 制单日期:"); scanf("%d",&n); printf(" 货运公司:"); scanf("%s",o); printf(" 验书人:"); scanf("%s",p);四、 程序调试及整体实现1. 主

31、菜单运行界面连接,检错完毕后,运行程序,开始进入主菜单。结果显示如下:图5. 主菜单界面2. 图书信息录入界面在主菜单上选择“1”,根据提示录入图书信息。屏幕显示如下:图6. 图书信息录入界面3. 图书信息浏览界面在主菜单上选择“2”,显示以下全部图书信息并回到主界面。图7. 图书信息浏览界面4. 图书查询界面在主菜单上选择“3”,然后根据提示选择查询方式。选择“1”时,若图书名存在,则显示以下全部图书信息并回到主界面。图8. 按书名图书查询界面选择“2”时,若图书作者存在,则显示以下全部图书信息并回到主界面。图9. 按作者图书查询界面5. 图书信息修改界面在主界面上选择“4”, 若图书序号存

32、在,根据提示输入修改信息,显示以下结果:图10. 图书信息修改界面在主菜单上选择“2”,显示修改后的信息。6. 图书信息删除界面 在主菜单上选择“5”,然后根据提示选择删除的图书序号。若图书序号存在,则删除选择结果如下:图11. 图书信息删除界面在主菜单上选择“2”,显示删除后的信息。下图为删除后的信息:图12. 删除后结果7. 图书信息排序主界面在主菜单上选择“6”,然后根据提示选择排序方式。选择“1”时,按书名排序(根据英文字母排序)。显示结果为:图13. 按书名排序结果选择“2”,按价格排序(价格由高到低)。排序结果如下:图14. 按价格排序结果8. 购书清单界面在主菜单上选择“7”进入

33、购书界面,选择想购书的序号最后输入“0”回车,即可显示购书数量和总价,根据提示输入相关信息完成清单。购书清单如下:图15. 购书清单示例五、 体会总结通过这次课程设计,使我对c语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,通过学习也有所改进;再有对c语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对c语言中经常出现的错误也不了解,所以后在学习过程中,我会更加注视实践操作。 在课程设计过程中,收获知识,提高能力的同时,我也懂得怎么样去制定、实现计划,课程设计是培养学生综合运用所学知识发现提出分析和解决实际问

34、题锻炼实践能力的重要环节是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,自从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。附件/*定义结构体*/#include "stdafx.h"#include "string.h"#include "stdlib.h"#define n 100 /*定义图书总容量为100*/int count=0; /*定义全局变量,用来表示图书的个数*/struct book /*定义结构体类型

35、*/ int num; /*序号为整型*/ char name40; /*书名为字符串*/ char author20; /*作者为字符串*/ char publish50; /*出版社为字符串*/ float price; /*价格为浮点型*/ ;struct book listn; /*定义struct book类型的变量 list n个*/void show_bookinformation(struct book list); /*声明图书信息浏览函数*/void check_bookinformation (struct book list); /*声明图书信息查询函数*/void m

36、odify_bookinformation (struct book list); /*声明图书信息修改函数*/void delete_bookinformation (struct book list); /*声明图书信息删除函数*/void reorder_bookinformation(struct book list); /*声明图书信息排序函数*/void buytotal(struct book list); /*声明图书购买信息函数*/void read(); /*声明数据读入函数*/ void input(); /*声明图书信息录入函数*/ void open(); /*声明数

37、据信息打开函数*/*主函数*/void main() int choice1; printf(" *n"); printf(" * 欢迎进入图书销售管理系统 *n"); printf(" *n"); do printf("#"); /*显示菜单*/printf(" 功能选项: n");printf(" 1 : 图书信息录入 n");printf(" 2 : 图书信息浏览 n");printf(" 3 : 图书信息查询 n");print

38、f(" 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

39、; 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)

40、; printf("谢谢! 欢迎下次使用使用!n");/*打开文件函数*/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(&listi,sizeof(struct book),1,fp)=0) printf("数据输出失败!n"); exit(0);fclose(fp);/*录入文件函数*

41、/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(&listi,sizeof(struct book),1,fp)!=1) printf("文件写入错误!n"); fclose(fp); /*录入函数*/void input() int i,k,j,t; for(j=0;listj.num!=0;j+) t=j+

42、1; for(i=0;i<n;i+) printf("t请输入您的图书序号:"); scanf("t%d",&listi.num); printf("t请输入书名:"); scanf("t%s",); printf("t请输入作者:"); scanf("t%s",listi.author); printf("t请输入出版社:"); scanf("t%s",listi.publish); printf(&

43、quot;t请输入价格:"); scanf("t%f",&listi.price); fflush(stdin); printf("tn是否继续录入?(1.是 2.否)"); scanf("%d",&k); if(k=2) break; count=i+1; read();/*删除函数*/void delete_bookinformation (struct book list) int j,k,d,i=0; open(); printf("请输入要删除的图书的序号:n"); scanf(

44、"%d",&d); for(j=0;listj.num!=0;j+) if(listj.num=d) for(k=j;listk.num!=0;k+) listk=listk+1; i+; if(i=0) printf("图书销售系统没有你输入的图书序号,请重新选择输入!n"); else count=count-1; read(); printf("删除成功n");/*修改函数*/void modify_bookinformation (struct book list) int j,k=0,number; open();

45、printf("t请输入您要修改的图书的序号:"); scanf("%d",&number); for (j=0;listj.num!=0;j+) if (listj.num=number) printf("nt请输入您修改后的图书信息!nn"); printf("t请输入您要修改的图书的序号:"); scanf("%d",&listj.num); printf("t请输入您修改后的书名:"); scanf("%s",)

46、; printf("t请输入您修改后的作者名:"); scanf("%s",listj.author); printf("t请输入您修改后的出版社:"); scanf("%s",listj.publish); printf("t请输入您修改后的书的价格:"); scanf("%f",&listj.price); read(); printf("n修改成功!n"); k+; if (k=0) printf("nnt找不到需要修改的图书!&q

47、uot;);/*输出函数*/void show_bookinformation(struct book list)int i;open();printf("n*图书信息显示*n");printf("图书序号t图书名tt作者名tt出版社tt图书价格n"); for(i=0;listi.num!=0;i+) printf(" %dtt%st%stt%st%6.2fn",listi.num,, listi.author,listi.publish,listi.price); /*查询函数*/void check_book

48、information (struct book list) /*查询图书信息*/int j,i,t,k=0;char c20,d20;printf("请输入查询方式:n 1.按书名查询 2按作者查询:n");scanf("%d",&t); if(t=1) open(); printf("请输入要查询的书名号:n"); scanf("%s",c); printf("n *你想要查询的图书信息(按作者名)* n"); printf("图书序号t图书名tt作者名tt出版社tt图书价格n"); for(j=0;listj.num!=0;j+) if(strcmp(c,)=0) printf(" %dtt%st%stt%st%6.2fn",listj.num,, listj.author,listj.publish,listj.price);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论