ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:398.59KB ,
资源ID:4028281      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4028281.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实用参考C语言图书销售管理系统doc.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实用参考C语言图书销售管理系统doc.docx

1、实用参考C语言图书销售管理系统doc图书销售管理系统设计 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) 定义一个存放图书信息的结构体structbook,并定义此类型的变量structbooklistN,用来表示图书数组。structbook/G定义结构体类型G/intnum;/G序号为整型G/charname40;/G书名为字符串G/charauthor20;/G作者为字符串G/charpublish50;/G出版社为字符串G/floatprice;/G价格为浮点型G/;structbooklistN;/G定义structbook类型

5、的变量listN个G/2) intCount=0,定义全局变量,用来表示图书的个数,初始值为0。2. 主要函数1) 主函数main(),控制整个系统的执行流程,使系统菜单可以循环执行。根据图书馆信息管理系统的要求,可设计一个主函数,及定义多个用户自定义函数。通过将switch语句与break语句联合使用来实现多分支选择结构程序的设计。case1至case7分别实现不同的功能,并能返回主界面;case0直接返回主界面。程序代码:voidmain()intchoice1;printf(GGn);printf(G欢迎进入图书销售管理系统Gn);printf(GGn);do printf(#);/G显

6、示菜单G/ 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)/G菜单选择G/ case1:input();break; case2:show_bookinformation(list);break;

7、case3:check_bookinformation(list);break; case4:modify_bookinformation(list);break; case5:delete_bookinformation(list);break; case6:reorder_bookinformation(list);break; case7:buytotal(list);break; case0:break; while(choice1!=0);printf(谢谢!欢迎下次使用使用!n);2) 打开数据文件函数open(),把文件的信息打开到一个结构体数组中。定义指向文件的指针读取数据,若

8、指针指向NULL,则显示“无法操作,无文件信息!”,要调用fopen、fclose和fread函数。程序代码:voidopen()inti;FILEGfp;if(fp=fopen(book.tGt,rb+)=NULL) printf(无法操作,无文件信息!n);eGit(0);for(i=0;iN;i+) if(fread(&listi,sizeof(structbook),1,fp)=0) printf(数据输出失败!n);eGit(0);fclose(fp);3) 信息录入文件函数read(),函数类型为void。定义指向文件的指针读取数据,把输入的图书信息保存到文件中,若指针指向NULL

9、,则输出无法操作。利用for循环保存信息到指定文件。程序代码:voidread()inti;FILEGfp;if(fp=fopen(book.tGt,wr+)=NULL)printf(n不能打开文件!n);eGit(0);for(i=0;iN;i+)if(fwrite(&listi,sizeof(structbook),1,fp)!=1) printf(文件写入错误!n);fclose(fp);4) 信息录入系统函数input(),提供录入图书信息功能。在for循环下,一次提示用户输入图书序号、书名、作者、出版社以及价格。每循环一次,提示用户是否继续,当选“1”时继续输入图书信息,选“2”时返

10、回主界面;每循环一次Count自增1。程序代码:voidinput()inti,k,j,t;for(j=0;listj.num!=0;j+)t=j+1;for(i=t;iN;i+)printf(t请输入您的图书序号:);scanf(t%d,&listi.num);printf(t请输入书名:);scanf(t%s,listi.name);printf(t请输入作者:);scanf(t%s,listi.author);printf(t请输入出版社:);scanf(t%s,listi.publish);printf(t请输入价格:);scanf(t%f,&listi.price);fflush(s

11、tdin); printf(tn是否继续录入?(1.是2.否);scanf(%d,&k);if(k=2)break;Count=i+1;read();5) 删除图书信息函数delete_bookinformation(structbooklist),提供对图书信息的删除功能。此函数运行时利用open函数打开数据文件,读取信息;利用for循环,当输入序号与循环中的某一对应数据相同时,将后一个赋值给前一个从而把要删除的图书信息删除掉。如果i=0,则直接输出“图书销售系统没有你要输出的图书信息!”。删除后会显示“删除成功”,同时Count自减1;最后还要执行read函数,重新记录图书信息。程序代码:

12、voiddelete_bookinformation(structbooklist)intj,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(图书销售系统没有你输入的图书序号,请重新选择输入!n);elseCount=Count-1;read();printf(删除成功n);6) 修改图书信息函数modify_bookinformation(structb

13、ooklist),提供对图书信息的修改功能。首先提示用户输入要修改的图书序号,利用for循环找到要修改的list,系统提示用户依次输入修改后的图书序号、图书名、作者、出版社、价格。如果输入的序号a为0,则提示“未发现您要找的书!”。程序代码:voidmodify_bookinformation(structbooklist)intj,k=0,number;open();printf(t请输入您要修改的图书的序号:);scanf(%d,&number);for(j=0;listj.num!=0;j+) if(listj.num=number) printf(nt请输入您修改后的图书信息:nn);

14、printf(t请输入您要修改的图书的序号:);scanf(%d,&listj.num);printf(t请输入您修改后的书名:);scanf(%s,listj.name);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(nnt找不到需要修改的图书!);7) 图书信息输出函数show_booki

15、nformation(structbooklist),提供图书信息输出功能,浏览图书信息。通过printf()语句将所有的图书信息包括包括编号、书名、出版社、作者、价格等信息显示在屏幕上。运用for语句加printf()实现图书信息的循环输出显示。程序代码:voidshow_bookinformation(structbooklist)inti;open();printf(nGGGGGGGGGGGGGGGGGGGG图书信息显示GGGGGGGGGGGGGGGGGGGGGGGGn);printf(图书序号t图书名t作者名t出版社t图书价格n);for(i=0;listi.num!=0;i+)pri

16、ntf(%dtt%st%st%st%6.2fn,listi.num,listi.name,listi.author,listi.publish,listi.price);8) 图书信息查询函数check_bookinformation(structbooklist),提供用户根据图书书名或作者查询图书信息功能。通过printf()语句将所有的图书信息包括包括编号、书名、出版社、作者、价格等信息显示在屏幕上。运用for语句加printf()实现图书信息的循环输出显示。通过将switch语句与break语句联合使用来实现多分支选择结构。若选“1”实现按书名查询;若选“2”实现按作者查询。两者代码类

17、似,都利用字符串操作,最后依次显示查询后的结果。程序代码:voidcheck_bookinformation(structbooklist)/G查询图书信息G/intj,i,t,k=0;charc20,d20;printf(请输入查询方式:n1.按书名查询2按作者查询:n);scanf(%d,&t);if(t=1) open();printf(请输入要查询的书名号:n);scanf(%s,c);printf(nGGGGGGG你想要查询的图书信息(按作者名)GGGGGGGGGn);for(j=0;listj.num!=0;j+)if(strcmp(c,listj.name)=0) printf(

18、图书序号t图书名t作者名t出版社t图书价格n); printf(%dtt%st%st%st%6.2fn,listj.num,listj.name,listj.author,listj.publish,listj.price); k+;if(k=0)printf(n不存在你要查询的图书信息!n);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%s

19、t%6.2fn,listi.num,listi.name,listi.author,listi.publish,listi.price); k+;if(k=0)printf(n不存在你要查询的图书信息!n);9) 图书信息排序函数reorder_bookinformation(structbooklist),提供对图书信息按书名和价格排序功能。排序共有两种可选择的方式,按书名排序和按价格排序。利用switch和break实现功能的选择。按书名排序:利用选择排序法和strcmp、strcpy函数在for循环下依次重新循环赋值,按字母的先后顺序依次排序。如果定义的指针fp指向NULL则显示“can

20、topenthefile!”,再利用for循环向屏幕输出排序后的全部图书信息,最后要返回主界面。按价格排序:价格按大小排序。利用冒泡排序法,在for循环下依次重新循环赋值,再利用for循环向屏幕输出排序后的全部图书信息,最后返回主界面。程序代码:voidreorder_bookinformation(structbooklist)inti,j,a,k;structbookt;FILEGfp;chartemp40;open();printf(n请选择排序方式n1-书名(按字母顺序)n2-价格(按从高到低)n);scanf(%d,&a);switch(a)case1:for(i=0;iCount-

21、1;i+)k=i;for(j=i+1;j0)k=j; if(k!=i) strcpy(temp,listi.name); strcpy(listi.name,listk.name); strcpy(listk.name,temp);if(fp=fopen(book.tGt,w)=NULL) printf(cantopenthefile!n);eGit(0); printf(新序列为:n);for(j=0;jCount;j+) printf(图书序号t图书名t作者名t出版社t图书价格n); printf(%dtt%st%st%st%6.2fn,listj.num,listj.name,listj

22、.author,listj.publish,listj.price);read();break;case2: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,listj.num,listj.name,listj.author,listj.publish,listj.

23、price); k+; read();break;10) 图书购买清单函数buytotal(structbooklist),提供统计选购图书的总价,给出清单的功能。用户输入所购图书的序号,输入“0”时结束,系统利用for循环,当输入序号与系统内所存序号相同时,价格相加赋新值,书本数同时计数。最后打印出想要的清单。程序代码:voidbuytotal(structbooklist)intk,m,n,q,r,t=0;floatsum=0;chare50,f50,l50,o50,p50;printf(nGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

24、Gn);printf(n人民邮电出版社样书清单n);printf(nGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGn);printf(请输入所购各图书的序号(输入0结束):n);scanf(%d,&q);do for(r=0;rCount;r+) if(q=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(价格:%.

25、2fn,sum);printf(邮政编码:);scanf(%d,&k);printf(收货地址:);scanf(%s,l);printf(联系电话:);scanf(%d,&m);printf(制单日期:);scanf(%d,&n);printf(货运公司:);scanf(%s,o);printf(验书人:);scanf(%s,p);四、 程序调试及整体实现1. 主菜单运行界面连接,检错完毕后,运行程序,开始进入主菜单。结果显示如下:图5.主菜单界面2. 图书信息录入界面在主菜单上选择“1”,根据提示录入图书信息。屏幕显示如下:图6.图书信息录入界面3. 图书信息浏览界面在主菜单上选择“2”,显

26、示以下全部图书信息并回到主界面。图7.图书信息浏览界面4. 图书查询界面在主菜单上选择“3”,然后根据提示选择查询方式。选择“1”时,若图书名存在,则显示以下全部图书信息并回到主界面。图8.按书名图书查询界面选择“2”时,若图书作者存在,则显示以下全部图书信息并回到主界面。图9.按作者图书查询界面5. 图书信息修改界面在主界面上选择“4”,若图书序号存在,根据提示输入修改信息,显示以下结果:图10.图书信息修改界面在主菜单上选择“2”,显示修改后的信息。6. 图书信息删除界面在主菜单上选择“5”,然后根据提示选择删除的图书序号。若图书序号存在,则删除选择结果如下:图11.图书信息删除界面在主菜

27、单上选择“2”,显示删除后的信息。下图为删除后的信息:图12.删除后结果7. 图书信息排序主界面在主菜单上选择“6”,然后根据提示选择排序方式。选择“1”时,按书名排序(根据英文字母排序)。显示结果为:图13.按书名排序结果选择“2”,按价格排序(价格由高到低)。排序结果如下:图14.按价格排序结果8. 购书清单界面在主菜单上选择“7”进入购书界面,选择想购书的序号最后输入“0”回车,即可显示购书数量和总价,根据提示输入相关信息完成清单。购书清单如下:图15.购书清单示例五、 体会总结通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,所以后在学习过程中,我会更加注视实践操作。在课程设计过程中,收获知识,提高能力的同时,我也懂得怎么样去制定、实现计划,课程设计是培养学生综合运用所学知识发现提出分析和解决实际问题锻炼实践能力的重要环节是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,自从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的东

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

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