还剩36页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
C语言程序设计超市管理系统目录课程设计目的要求
42.
42.
43.
1.
43.
1.
53.
53.
83.
83.
1.1设计目标熟悉c语言的编译连接和运行过程掌握c语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值掌握if语句及switch语句的运用方法及嵌套应用方法掌握实现循环结构的三种语句while、do-while.、for的使用掌握函数的定义方法和调用方法能够采用模块化思想调试程序指针和文件的使用,结构体的使用
1.2设计要求
1.源程序要有适当的注释,使程序容易阅读
2.必须用结构体和文件等数据结构
3.程序的运行结果要求使用文件作备份
4.至少输出一份报表,鼓励自行增加新功能课程设计任务内容
2.1课程设计题目超市管理系统
2.2课程设计任务系统为超市管理系统,在此系统当中需要用到许多函数,包括系统函数以及自定义的函数,在这个系统当中,总共分为五个模块管理员登陆、客户信息管理、商品管理、购物结算、销售结算
2.
2.1设计内容本次实习中,主要用到的C语言知识有结构体、指针、文件、数组层层镶嵌的思路将各个模块要实现的功能环环相扣其中,在管理员登陆后,进入的是主菜单,在这个环节当中,我们将菜单设计为函数,并将菜单函数放入一个单独的C文件中管理,实现层层进入功能主菜单函数又分为商品管理、客户管理、购物结算、销售结算等函数的管理,在此当中,主要采用结构体定义客户信息,文件访问等
2.
2.2各组员任务为保证设计在规定时间内完成,我们将各模块分工到个人确保任务有质量有效率的同时锻炼团队的团结协作能力第三章详细设计说明
3.1系统模块图(未完)添加用户修改用户删除用户查询用户进入超市管理系统主界面销售结算商品管理购物结算客户管理
3.2主要函数定义
3.
2.1主函数主函数主要包含的是登陆界面并且设置登陆界面其中包含
1.登录
2.关于我们
3.退出系统实现其功能主要用到如下知识一.其中使用了多种系统自定义的头文件以及用户自定义的头文件如下#includestdio.h#includestring.h#includeconio.h#includestdlib.h#includemath.h#include“MyParams.h”#include“Mymenu.h”#include“common.h”#include“CustMan.h”#include“Goodsman.h”二.使用了main函数、aboutUs函数login函数和pcontinue函数
①voidmain{charchoice=3;//存储判断的选项do{systemcls;//清屏命令printf\n\n************欢迎进入柠檬·5超市管理系统**********\n\n;printf\n请您选择操作选项\n\n;printf\t\t\t
1.登录\n;printf\t\t\t
2.关于我们\n;printf\t\t\t
3.退出系统\n;printf\n\n*******************************************\n\n;printf\n请输入您的选项123:;choice=getch;}
②voidaboutUs{systemcls;BreakLine;printf\t\t版权所有@湖南工学院网络1101班柠檬·5\n\n;printf\t\t\t柠檬·5专属,翻版必究\n\n;printf\t\t技术扶持Tell:18373440701;BreakLine;pcontinue;}
③intlogin{charupwd
[8];inti;systemcls;fori=1;i4;i++{BreakLine;printf请输入您的8位数密码;scanf%supwd;ifstrcmpupwdrealpassword==0return1;printf您好,您的密码错误,请确认后重新输入\n;printf您还有%d次输入机会3-i;}printf\n系统郑重提示,您不是合法用户,强制退出\n;exit0;}
④在common.c定义voidpcontinue函数实现按任意键继续功能voidpcontinue{printf\t按任意键继续\n;getch;}三.清屏语句,Dowhile,宏定义等的使用⑴清屏语句systemcls;⑵使用了DoWhile循环实现了在进入关于我们部分时可以再次返回登陆界面⑶使用了宏定义在头文件MyParam.h中定义BreakLine#defineBreakLineprintf\n\n***************************************************\n\n⑷使用了switch语句进行了选择并且在语句中使用了多种函数嵌套使功能完整switchchoice{case1:iflogin==1{showMainMenu;}break;case2:aboutUs;break;case0:printf\n\n系统安全退出\n\n;exit0;break;⑸在输入密码部分使用了For循环,实现了在登陆三次密码不正确的情况下强制退出系统fori=1;i4;i++{BreakLine;printf请输入您的8位密码:;scanf%supwd;//数组名代表数组的首地址,所以不要ifstrcmpupwdrealpassword==0{return1;//1表示登录成功}printf\n您好,您的密码错误,请确认后重新输入··\n;printf\n您还有第%d次输入机会3-i;}printf\n系统郑重提示,您不是合法用户,强制退出···\n;pcontinue;exit0;
3.
2.2其他函数部分voidshowMainMenu;再在voidshowMainMenu;其中嵌套voidshowGoodsMenu;voidshowCustMenu;voidshowShopMenu;voidshowSaleMenu;在这些函数中也就是商品管理,客户信息管理,购物结算和销售结算四大功能模块依照前面的嵌套方法一一实现他的功能在四大模块菜单中有voidaddGoods;voidfindGoodsAll;voidupdateGoods;voiddelGoods;voidaddcust;voiddelcust;voidupdatecust;voidfindall;voidsaveAll;voidsaveall;实现了客户管理中添加客户、查询客户、删除客户、修改客户、返回上一级商品管理中添加商品、查询商品、删除商品、修改商品、返回上一级等部分的功能在四大模块菜单中有voidshowVIP;voidGoodseffect;voidGoodssave;voidBirthdayperson;voidshowMymenue;voidshopping;实现了购物结算中商品交易信息、返回上一级销售预算中显示最具有贡献精神VIP客户排行榜显示最具有影响力的商品排行榜显示库存商品量排行榜当月生日的客户以及返回上一级等功能
3.3结构体的建立和文件的使用在实现添加功能时使用了结构体、指针等对现阶段我们来说较难理解的内容
3.
3.1结构体语句的使用我们会在程序中用到如下结构体语句Structdate/日期intyear/年intmonth/月intday/日Structcust/客户信息intno/编号charname
[20]姓名charsex/性别intage/年龄structdatebirthday/生日doubleexpenditure/花费chartel/电话号码Structgoods/商品信息ntnum/商品代码charname
[50]/商品名字intsale/商品数量floatprice/商品单价intlacation/商品位置在整个程序中我们会如下用到结构体语句,不同的结构体类型structcust{intno;charname
[20];charsex;intage;structdatebirthday;doubleexpendituer;chartel
[20];}cust
[1000];3.
3.2文件的使用客户信息管理和商品管理都有用到文件,它于我们是重点也是难点定义文件FILE*fp;inti;iffp=fopencust.datwb==NULL{printf\n无法打开文件\n;return;}fori=0;itotal;i++{fwritecust[i]sizeofstructcust1fp;}fclosefp;⑵定义函数read_message打开文件intread_message{FILE*fp;inti=0;//记数//打开文件iffp=fopencust.datrb==NULL{printf\n*****暂无任何可读消息按任意键继续**********\n;getch;return0;}//循环读取文件中的每一条记录
(3)结合循环语句,关闭文件while!feoffp{freadcust[i]sizeofstructcust1fp;ifcust[i].no=0{break;}else{i++;}}fclosefp;returni;}第四章程序设计心得与体会通过为期两周的课程设计,我们不仅复习了课本上所学知识,还通过查阅资料、询问老师同学学到了很多课本上没有的只是,从而启发我们要想写好程序,在学好课本只是的同时还需要多阅读和专业有关的书记,同时还需要多动脑子,要有缜密的逻辑思维能力和综合应用能力简而言之,我们要做到三心编写代码要细心;检查错误要耐心;完成任务要恒心除此,在学到知识的同时锻炼了我们的团结合作精神,也使得我们小组成员之间有更深的交流所以,很感谢学校和老师给我们提供这样一个机会在锻炼自己的同时让自己养成了良好的学习习惯我希望自己能一直带着这份心态和习惯大步向前参考文献[1]武爱平卜耀华孙东卫.C语言程序设计[M].长春吉林大学出版社附录柠檬·5supermarket管理系统源代码SourceFilescommon.cvoidpcontinue;voidpcontinue{printf\t按任意键继续\n;getch;}Main.c#includestdio.h#includestring.h//字符串先到系统的库找,再到用户库#includeconio.h#includestdlib.h#includeMyParams.h#includecommon.h#includemymenu.hvoidaboutUs;intlogin;charrealpassword
[8]=ningmeng;//系统的真实登录密码voidmain{charchoice=3;//存储判断的选项do{systemcls;//清屏命令//打印出程序欢迎界面printf\n\n******欢迎进入柠檬·5超市管理系统***\n\n;printf\n请您选择操作选项\n\n;printf\t\t\t
1.登录\n;printf\t\t\t
2.关于我们\n;printf\t\t\t
3.退出系统\n;printf\n\n*****************\n\n;//完成输入操作printf\n请输入您的选项123:;choice=getch;//getch从键盘输入一个字符//判断switch变量{case值1:xxx;break;defaultxxx;};switchchoice{case1:iflogin==1{showMymenue;}break;case2:aboutUs;break;case3:printf\n\n系统安全退出\n\n;exit0;break;}}while1;}voidaboutUs{systemcls;BreakLine;printf\t\t版权所有@湖南工学院网络1101班柠檬·5\n\n;printf\t\t\t柠檬·5专属,翻版必究\n\n;printf\t\t技术扶持Tell:18373440701;BreakLine;pcontinue;}intlogin{charupwd
[8];inti;systemcls;fori=1;i4;i++{BreakLine;printf请输入您的8位数密码:;scanf%supwd;ifstrcmpupwdrealpassword==0return1;printf您好,您的密码错误,请确认后重新输入\n;printf您还有%d次输入机会3-i;}printf\n系统郑重提示,您不是合法用户,为系统安全,强制退出\n;exit0;}mymenu.c#includestdio.h#includestring.h#includeconio.h#includestdlib.h#includemymenu.h#includecommon.h#includeMyParams.h#includeCustMan.h#includeGoodsman.hvoidshowGoodsmenue;voidshowCustmenue;voidshowSales;voidshowSell;voidshowMymenue{charchoice=5;while1{systemcls;BreakLine;printf\t\t
1.商品管理\n;printf\t\t
2.客户管理\n;printf\t\t
3.购物预算\n;printf\t\t
4.销售预算\n;printf\t\t
5.退出系统\n;BreakLine;printf\n\n请输入您的选择12345:;choice=getch;switchchoice{case1:showGoodsmenue;break;case2:showCustmenue;break;case3:showSell;break;case4:showSales;break;case5:printf\n\n系统安全退出\n\n;exit0;break;default:printf\n您的输入有误,请检查后重新输入\n;pcontinue;}}}voidshowGoodsmenue{charchoice=5;while1{systemcls;BreakLine;printf\t\t
1.添加商品\n;printf\t\t
2.查询商品\n;printf\t\t
3.更新商品\n;printf\t\t
4.删除商品\n;printf\t\t
5.返回上一级\n;BreakLine;printf\n\n请输入您的选择12345:;choice=getch;switchchoice{case1:addgoods;break;case2:findgoods;break;case3:updategoods;break;case4:delgoods;break;case5:showMymenue;break;default:printf\n您的输入有误,请检查后重新输入\n;pcontinue;}}}voidshowCustmenue{charchoice=5;while1{systemcls;BreakLine;printf\t\t
1.添加客户\n;printf\t\t
2.查找客户\n;printf\t\t
3.修改客户\n;printf\t\t
4.删除客户\n;printf\t\t
5.返回上一级\n;BreakLine;printf\n\n请输入您的选择12345:;choice=getch;switchchoice{case1:addcust;break;case2:findall;break;case3:updatecust;break;case4:delcust;break;case5:showMymenue;break;default:printf\n您的输入有误,请检查后重新输入\n;pcontinue;}}}voidshowSales{charchoice=5;while1{systemcls;BreakLine;printf\t\t
1.显示最具有贡献精神VIP客户排行榜\n;printf\t\t
2.显示最具有影响力的商品排行榜\n;printf\t\t
3.显示库存商品量排行榜\n;printf\t\t
4.当月生日的客户\n;printf\t\t
5.返回上一级\n;BreakLine;printf\n\t\t请输入您的选择12345:;choice=getch;switchchoice{case1:showVIP;break;case2:Goodseffect;break;case3:Goodssave;break;case4:Birthdayperson;break;case5:showMymenue;break;default:printf\n\t\t您的输入有误,请确认重新输入.\n;pcontinue;}//调用按任意键继续}}voidshowSell{charchoice=2;while1{systemcls;BreakLine;printf\t\t
1.商品交易信息\n;printf\t\t
2.返回上一级\n;BreakLine;printf\n\t\t请输入您的选择12:;choice=getch;switchchoice{case1:shopping;break;case2:showMymenue;break;default:printf\n\t\t您的输入有误,请确认重新输入.\n;pcontinue;}//调用按任意键继续}}Custman.c#includestdio.h#includestring.h#includeconio.h#includestdlib.h#includeMyParams.h#includecommon.h#includemymenu.h#includeCustMan.hread_message;structdata{intyear;intmonth;intday;};structcust{intno;//编号charname
[20];//名字doubleexpenditure;//总花费chartel
[20];//电话号码structdatabirthday;//生日}cust
[1000];//最多存1000个客户信息inttotal;//现在cust.dat文件中总的纪录条数voidsaveAll{FILE*fp;inti;iffp=fopencust.datwb==NULL{printf\n无法打开文件\n;return;}fori=0;itotal;i++{fwritecust[i]sizeofstructcust1fp;}fclosefp;}//获取现有文件中客户的总人数intread_message{FILE*fp;inti=0;//记数//打开文件iffp=fopencust.datrb==NULL{printf\n******暂无任何可读消息按任意键继续*****\n;getch;return0;}while!feoffp{freadcust[i]sizeofstructcust1fp;ifcust[i].no==0{break;}else{i++;}}//循环读取文件中的每一条记录fclosefp;returni;//存到cust结构中}voidaddcust{//定义增加的structcustnewcust;charchoice=y;FILE*fp;inti=0;do{systemcls;BreakLine;printf请输入客户的编号:;scanf%dnewcust.no;printf\n;printf请输入客户的名字:;scanf%snewcust.name;printf\n;printf请输入客户消费:;scanf%lfnewcust.expenditure;printf\n;printf请输入客户的电话号码:;scanf%snewcust.tel;printf\n;printf请输入客户的生日:格式:1999-9-9;scanf%d-%d-%dnewcust.birthday.yearnewcust.birthday.monthnewcust.birthday.day;printf\n;BreakLine;iffp=fopencust.datab==NULL{printf\n对不起不能打开指定的文件\n;return;}fwritenewcustsizeofstructcust1fp;fclosefp;printf您还要继续输入新客户信息吗y/n;choice=getch;}whilechoice==y;}voidfindall{//定义查询所有的inti;structcustc;total=read_message;systemcls;printf\n***************客户信息**************\n;printf\n客户总数%d\ntotal;iftotal0{printf\n***********显示所有客户信息*************\n;printf\n编号\t姓名\t消费\t\t电话\t\t生日;fori=0;itotal;i++{c=cust[i];printf\n%d\t%s\t%lf\t%s\t%d-%d-%d\t\nc.noc.namec.expenditurec.telc.birthday;printf\n\n\n\n\n;}}else{printf\n********系统中暂无任何客户信息**********;}pcontinue;getch;}voidupdatecust{inti;inttoupdateno;//要更新的编号intj;systemcls;total=read_message;//读出信息printf\n请输入您要更新的客户编号:;scanf%dtoupdateno;//查找fori=0;itotal;i++{iftoupdateno==cust[i].no{break;}}//i里面记录了要更新的客户的索引ifi==total{printf\n没有找到要更新的客户\n;printf按任意键继续\n;getch;return;}printf\n**********请更新用户信息**********\n;printf请输入客户姓名:;scanf%scust[i].name;printf请输入客户消费:;scanf%dcust[i].expenditure;printf请输客户电话:;scanf%scust[i].tel;printf请输入客户的生日格式1999-9-9:;scanf%d-%d-%dcust[i].birthday.yearcust[i].birthday.monthcust[i].birthday.day;BreakLine;saveAll;printf\n更新客户信息成功,按任意键继续\n;getch;}voiddelcust{inti;inttodelno;//删除客户的编号intj;charchoice=n;//记录是否真正删除systemcls;total=read_message;//先读出数据printf\n请输入您要删除的客户的编号:;scanf%dtodelno;fori=0;itotal;i++{iftodelno==cust[i].no{break;}}ifi==total{printf\n没有找到您要删除的客户\n;pcontinue;getch;return;}printf亲爱的管理员,删除后无法恢复,您确定要删除吗?yorn;choice=getch;ifchoice==n{printf\n放弃删除,返回上一级\n;printf\n按任意键继续\n;getch;return;}//真正删除,实际上是覆盖forj=i;jtotal;j++{cust[j]=cust[j+1];}total-=1;saveAll;printf\n删除客户数据成功\n;printf\n按任意键继续\n;getch;}Goodsman.c#includestdio.h#includestring.h#includeconio.h#includestdlib.h#includeMyParams.h#includecommon.h#includemymenu.h#includeGoodsman.hstructdate{intyear;intmonth;intday;};structgoods{intno;//编码charname
[20];//名称structdatescday;//生产期structdate:表示结构体类型date型scday变量名生日:-structdateintexpenda;//原价:intexpendb;//单价intsave;//库存量intsell;//出售量}goods
[100000];//定义一个全局的结构体数组100000inttotal;intread_Message{FILE*fp;inti=0;iffp=fopengoods.datrb==NULL{printf\n********暂无任何可读信息,按任意键继续*****;getch;return0;}whilefeoffp!=1{freadgoods[i]sizeofstructgoods1fp;ifgoods[i].no==0{break;}else{i++;}}fclosefp;returni;}voidsaveall{FILE*fp;inti;iffp=fopengoods.datwb==NULL{printf\n无法打开文件\n;return;}fori=0;itotal;i++{fwritegoods[i]sizeofstructgoods1fp;}fclosefp;}voidaddgoods{structgoodsnewgoods;//新加入的结构体数组charchoice=y;//是否继续录入信息FILE*fp;//文件指针,用它指向一个文件inti=0;//i是一个计数器,因为文件中最多存1000个数据do{systemcls;printf\n************添加商品信息*************\n;printf请输入商品编码:;scanf%dnewgoods.no;//取地址因为它是一个基本类型的数据BreakLine;printf请输入商品名称:;scanf%snewgoods.name;BreakLine;printf请输入商品生产期:格式如下:1999-9-9:;scanf%d-%d-%dnewgoods.scday.yearnewgoods.scday.monthnewgoods.scday.day;printf请输入商品原价:;scanf%dnewgoods.expenda;printf请输入商品单价:;scanf%dnewgoods.expendb;printf请输入商品出售量:;scanf%dnewgoods.sell;printf请输入商品库存量:;scanf%dnewgoods.save;//以上完成了输入客户信息的操作;//将newcust结构体中的数据保存到一个磁盘文件中iffp=fopengoods.datab==NULL{printf无法打开文件;return;//如果打得开文件}//要保存数据的地址这个数据类型的长度几个数组文件指针fwritenewgoodssizeofstructgoods1fp;fclosefp;//重新确认是否继续录入printf\n还要继续;录入商品信息吗y/n;choice=getch;}whilechoice==y;}voiddelgoods{intij;inttodelno;charchoice=n;systemcls;total=read_Message;printf\n请输入你要删除的商品的编码:;scanf%dtodelno;fori=0;itotal;i++{iftodelno==goods[i].no{break;}}//如果,没有找到要删除的商品ifi==total{printf\n没有找到您想删除的商品\n;printf\n按任意键继续\n;getch;return;}printf亲爱的管理员,删除后无法恢复,您确定要删除吗?y/n;choice=getch;ifchoice==n{printf\n放弃删除,返回上一级\n;printf\n按任意键继续\n;getch;return;}forj=i;jtotal;j++{goods[j]=goods[j+1];}total-=1;saveall;printf\n删除商品数据成功\n;pcontinue;getch;}voidupdategoods{inti;inttodelno;structgoodsgx;charchoice=n;systemcls;total=read_Message;printf\n请输入你要更新的商品的编号:;scanf%dtodelno;fori=0;itotal;i++{iftodelno==goods[i].no{break;}}//如果,没有找到要删除的商品ifi==total{printf\n没有找到您想更新的商品\n;pcontinue;getch;return;}printf\n****************更新商品信息************\n;printf\n请输入商品编码:;scanf%dgx.no;//为什么取地址因为它是一个基本类型的数据printf\n请输入商品名称:;scanf%sgx.name;printf\n请输入商品生产期:格式如下:1999-9-9:;scanf%d-%d-%dgx.scday.yeargx.scday.monthgx.scday.day;printf\n请输入商品原价:;scanf%dgx.expenda;printf\n请输入商品单价:;scanf%dgx.expendb;printf\n请输入商品出售量:;scanf%dgx.sell;printf\n请输入商品库存量:;scanf%dgx.save;BreakLine;printf亲爱的管理员,您确定要修改吗?y/n;choice=getch;ifchoice==n{printf\n放弃修改,返回上一级\n;printf\n按任意键继续\n;getch;return;}goods[i]=gx;total-=1;saveall;printf\n修改商品数据成功\n;pcontinue;getch;}voidfindgoods{inti;structgoodsc;total=read_Message;systemcls;printf\n********************商品信息**********\n;printf\n商品总数:%dtotal;iftotal0{printf\n***********显示所有商品信息*************\n;printf\n编号\t名称\t生产期\t\t原价\t单价\t出售量\t库存量\n;fori=0;itotal;i++{c=goods[i];printf\n%d\t%s\t%d-%d-%d\t%d\t%d\t%d\t%d\nc.noc.namec.scday.yearc.scday.monthc.scday.dayc.expendac.expendbc.sellc.save;}BreakLine;}else{printf\n**********系统中暂无任何商品信息*******\n;}printf\n按任意键继续\n;getch;}Save.c#includestdlib.h#includemath.h#includeSave.h#includecommon.h#includeMyParams.h#includemymenu.hintread_message;intread_Message;structdata{intyear;intmonth;intday;};structcust{intno;//编号charname
[20];//名字doubleexpenditure;//总花费chartel
[20];//电话号码structdatabirthday;//生日}cust
[1000];//最多存1000个客户信息inttotal;//现在cust.dat文件中总的纪录条数structgoods{intno;//编码charname
[20];//名称structdatascday;//生产期structdate:表示结构体类型date型scday变量名生日:-structdateintexpenda;//原价:intexpendb;//单价intsave;//库存量intsell;//出售量}goods
[100000];inttotal;//现在goods.dat文件中总的纪录条数//排序
1.冒泡
2.选择//指针voidshowVIP{intij;structcust*p;//指向结构体数组的指针structcust*q
[1000];//存原数据在数组中位置的指针数组structcust*temp;//用于交换的临时量//读出全部cust数据total=read_message;//将文件中所有数据存在cust数组中systemcls;iftotal=0{printf\n暂无任何客户历史数据\n;pcontinue;getch;}//将结构体数组的首地址赋给*pp=cust;//cust是数组名,数组名就是数组的首地址fori=0;itotal;i++{//循环total次,将数组中每个元素的地址赋值给*qq[i]=p++;//p++}fori=0;itotal-1;i++{//使用排序算法来进行比较,并排序注意排序是对q进行排序forj=i+1;jtotal;j++{//通过指针找元素//q[i]-expenditureifq[i]-expenditureq[j]-expenditure{temp=q[j];q[j]=q[i];q[i]=temp;}}}printf\n最具有贡献精神VIP客户排行榜\n;printf\n\t名次\t姓名\t花费\n;fori=0;itotal;i++{printf\n\t%d\t%s\t%lf\ni+1q[i]-nameq[i]-expenditure;}pcontinue;getch;}voidGoodseffect{intij;structgoods*p;//指向结构体数组的指针structgoods*q
[1000];//存原数据在数组中位置的指针数组structgoods*temp;//用于交换的临时量//读出全部Goods数据total=read_Message;//将文件中所有数据存在Goods数组中systemcls;iftotal=0{printf\n暂无此任何商品历史数据\n;printf\n按任意键继续\n;getch;}else{p=goods;fori=0;itotal;i++{q[i]=p++;}fori=0;itotal-1;i++{forj=i+1;jtotal;j++{ifq[i]-sellq[j]-sell{temp=q[j];q[j]=q[i];q[i]=temp;}}}printf\n********最具影响力的商品排行榜**********\n;printf\n\t名次\t名称\t卖出量\n;fori=0;itotal;i++{printf\n\t%d\t%s\t%d\ni+1q[i]-nameq[i]-sell;}BreakLine;pcontinue;}}voidGoodssave{intij;structgoods*p;structgoods*q
[1000];structgoods*temp;total=read_Message;systemcls;iftotal=0{printf\n暂无此任何商品历史数据\n;printf\n按任意键继续\n;getch;}else{p=goods;fori=0;itotal;i++{q[i]=p++;}fori=0;itotal-1;i++{forj=i+1;jtotal;j++{ifq[i]-saveq[j]-save{temp=q[j];q[j]=q[i];q[i]=temp;}}}printf\n**********库存商品量排行榜*************\n;printf\n\t名次\t名称\t剩余量\n;fori=0;itotal;i++{printf\n\t%d\t%s\t%d\ni+1q[i]-nameq[i]-save;}BreakLine;pcontinue;}}voidBirthdayperson{intiMonth;structcustBperson;total=read_message;systemcls;iftotal=0{printf\n暂无此任何历史数据\n;printf\n按任意键继续\n;getch;}BreakLine;printf请输入您想查询的月份:\n;scanf%dMonth;printf\n*************本月生日客户***************\n;fori=0;i=total;i++{Bperson=cust[i];ifi=total{printf\n本月没有生日客户\n;ifMonth==Bperson.birthday.month{printf\n客户编号\t名字\t\t生日\n;printf%d\t\t%s\t\t%d-%d-%d\nBperson.noBperson.nameBperson.birthday;}}}pcontinue;}Sell.c#includestdio.h#includestring.h#includeconio.h#includestdlib.h#includemath.h#includeSave.h#includecommon.h#includeMyParams.h#includemymenu.hstructdata{intyear;intmonth;intday;};structgoods{intno;//编码charname
[20];//名称structdatascday;//生产期doubleexpenda;//原价:doubleexpendb;//单价intsave;//库存量intsell;//出售量}goods
[100000];inttotal;//现在goods.dat文件中总的纪录条数voidSaveall{FILE*fp;inti;iffp=fopengoods.datwb==NULL{printf\n无法打开文件\n;return;}fori=0;itotal;i++{fwritegoods[i]sizeofstructgoods1fp;}//写入fwite(指针,长度,个数,文件指针;fclosefp;}voidshopping{intmqualityx;doubleymoney=0;intij;intnumber;structgoodsshopping;number=read_Message;systemcls;printf\n**************商品交易信息***********\n;forj=0;j1000;j++{printf\n请您输入顾客需要购买的商品编号:;scanf%dm;fori=0;inumber;i++{ifm==goods[i].no{break;}}ifi==number{printf\n没有找到您想购买的商品\n;printf\n按任意键继续\n;getch;return;}shopping=goods[i];ifshopping.save==0{//判定想购买的商品是否卖完printf\n对不起,您需要的商品已卖完,请重新购买\n\n;}else{printf\n编号\t名称\t生产期\t\t单价;printf\n%d\t%s\t%d-%d-%d\t%dshopping.noshopping.nameshopping.scday.yearshopping.scday.monthshopping.scday.dayshopping.expendb;printf\n请输入您需要购买的商品数量:;scanf\t%dquality;money+=shopping.expendb*quality;printf\n您是否继续购买?y/n:;ifgetch==ypcontinue;elsebreak;printf\n*************您应收现金¥:%d元\nmoney;printf\n*******************实收现金:\n;scanf%dx;shopping.save-=buymenu;shopping.sell+=buymenu;y==x-money;printf\n*****************找回现金:%d\ny;goods[i]=shopping;Saveall;pcontinue;}}}HeaderFilescommon.hpcontinue;MyParams.h#defineBreakLineprintf\n\n**************************\n\nMymenu.hvoidshowMymenue;CustMan.hvoidaddcust;voidfindall;voidupdatecust;voiddelcust;voidsaveAll;Goodsman.hvoidaddgoods;voidfindgoods;voidupdategoods;voiddelgoods;Save.hvoidshowVIP;voidGoodseffect;voidGoodssave;voidBirthdayperson;voidshowMymenue;Sell.hvoidshopping;。