还剩47页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
1.1课程设计内容1设计一商场商品信息管理系统,功能包括文件操作可建立、打开、保存、关闭数据文件输入商品信息数据数据包括商品编号、商品名、商品类别、商品数量、商品价格等编辑数据可添加、删除、修改数据输入进货、销售信息输入商品编号、数量完成进货或销售操作计算应在输入进货及销售信息时,自动更改商品数量查询可按商品编号、商品名或类别查询;还可查询需进货的商品排序可按编号、名称或类型排序浏览可浏览输入、查询或排序后的数据
1.2系统功能需求分析本系统应具有以下功能文件操作功能:可建立、打开、保存、关闭数据文件数据输入功能:数据包括商品编号、商品名、商品类别、商品数量、商品价格等以及输入商品编号、数量完成进货或销售操作数据添加、修改、删除功能计算功能在输入进货及销售信息时,自动更改商品数量查询功能可按商品编号、商品名或类别查询;还可查询需进货的商品排序功能可按编号、名称或类型排序数据显示功能可浏览输入、查询或排序后的数据
1.3数据结构设计structshangpingxinxi/*结构体,用于存放主要数据*/{longnumber;/*商品编号*/2charname
[100];/*商品名*/charleibie
[100];/*商品类别*/intkucun;/*库存量*/floatjiage;/*商品价格*/structshangpingxinxi*next;/*指向下一个结构体的指针*/}intnk;/*全局变量*/structshangpingxinxi*head;/*局部变量*/structshangpingxinxi*p1*p2*p3;/*局部变量*/chartemp
[20];/*局部变量*/int/long/char/floatabcdefij;/*局部变量*/FILE*fp;/*局部变量,用于指向文件*/2系统设计
2.1总体设计3按系统分析的功能要求将系统划分为以下几个主要功能模块
2.2详细设计
2.
2.1界面设计菜单设计主菜单读取文件创建数据查询信息按编号查询按名称查询按类别查询查询须进货商品修改信息删除信息添加信息进货信息销售信息浏览信息按编号顺序浏览按名称顺序浏览按类别顺序浏览保存文件4输入界面的设计输入商品编号提示输入7位商品编号编号应为首位不为0的数字编号,当输入字符和非7位数字时提示错误;添加商品时,还应检查是否有重复编号,如有重新输入输入商品名称:提示输入商品名称可输入任意字符串,但为了对齐最好不超过八个字符,以回车为输入结束输入商品类型提示输入商品类型可输入任意字符串,但为了对齐最好不超过八个字符,以回车为输入结束输入商品库存提示输入大于零的商品库存(大于0)可输入0~32767的任意数字,当输入为字符和小于0的数字时提示错误,重新输入输入商品价格提示输入大于零的商品价格(大于0)可输入0~
3.4×1038的任意浮点数,当输入为字符和小于0的数字时提示错误,重新输入
3、信息显示界面的设计菜单信息显示在页面中央以阶梯状加半框形式显示,页面底部显示提示信息商品信息显示应显示商品编号、商品名称、商品类别、库存数量、商品价格五种信息,并以表格形式显示
52.
2.2各功能模块的设计根据划分的功能模块,定义以下函数实现各功能(这部分应介绍各函数的原型,各功能模块实现所用的算法,可用流程图描述)主函数main定义变量进入欢迎界面输入密码Y密码正确?N进入主菜单返回重新输入密码switchk返回主菜单退出程序k=1读取文件k=2创建信息k=3查询信息k=4修改信息k=5删除信息k=6添加信息k=7进货信息k=8销售信息k=9浏览信息k=10保存文件读取文件函数structshangpingxinxi*loadstructshangpingxinxi*head6定义变量输入所要打开的文件路径及文件名Y文件是否存在N打开文件退出本函数读取文件中的目录开辟一个内存空间读取一个信息再开辟一个空间ifp1-number!=0关闭文件输出读入的信息到屏幕退出本函数再开辟一个内存空间读取信息到内存空间创建链表函数(输入数据函数)structshangpingxinxi*creatvoid查询函数structshangpingxinxi*searchstructshangpingxinxi*head7定义变量Y内存中是否有数据信息N进入选择菜单退出此函数switcha返回选择菜单退出此函数a=1按商品编号查询a=2按商品名查询a=3按商品类别查询a=4查询需进货商品添加函数structshangpingxinxi*addinformation*headinformation*newgoods定义变量开辟一个新内存空间输入需添加商品的编号并判断是否合法和重复输入需添加商品的名称输入需添加商品的类别输入需添加商品的库存判断是否合法输入需添加商品的价格判断是否合法Y是否保存N将所开辟空间链接到已有链表末尾返回重输退出此函数修改函数structshangpingxinxi*amendstructshangpingxinxi*head8定义变量Y内存中是否有数据N输入需修改的商品编号并查询是否存在退出此函数输入修改后的商品编号并判断是否合法和重复输入修改后的商品名称输入修改后的商品类别输入修改后的商品库存并判断是否合法输入修改后的商品价格并判断是否合法显示修改后的信息Y确认修改?N修改成功返回重输退出此函数删除函数structshangpingxinxi*delstructshangpingxinxi*head定义变量Y内存中是否有数据N输入需删除的商品编号退出此函数Y是否存在?N显示该商品信息返回重输Y是否删除?N删除该商品信息返回重输退出此函数进货函数structshangpingxinxi*purchasestructshangpingxinxi*head9定义变量Y内存中是否有数据N输入所进货商品的编号退出此函数Y是否存在?N显示该商品信息返回重输输入进货量显示该商品信息退出此函数销售函数structshangpingxinxi*salesstructshangpingxinxi*head定义变量Y内存中是否有数据N输入所销售商品的编号退出此函数Y是否存在?N显示该商品信息返回重输输入销售量Y库存销售量?N显示该商品信息返回重输退出此函数排序函数(输出函数)voidprintstructshangpingxinxi*head10定义变量Y内存中是否有数据信息N进入选择菜单退出此函数switcha退出此函数a=1按商品编号顺序浏览a=2按商品名顺序浏览a=3按商品类别顺序浏览a=0返回选择菜单保存函数voidsavestructshangpingxinxi*p1定义变量Y内存中是否有数据N输入文件地址和文件名退出此函数Y能否打开?N打开文件退出此函数把内存中的信息保存到文件在屏幕上显示信息关闭文件退出此函数3系统代码设计
3.1main函数#includemalloc.h11#includestdio.h#includestring.h#includestdlib.h#defineLENsizeofstructshangpingxinxistructshangpingxinxi{longnumber;/*7位商品编号*/charname
[100];/*商品名*/charleibie
[100];/*商品类别*/intkucun;/*库存量*/floatjiage;/*商品价格*/structshangpingxinxi*next;};typedefstructshangpingxinxiinformation;intnk;/*nk为全局变量,本程序中的函数均可以使用它*/voidmain/*主函数main功能通过调用各函数,实现商品信息管理系统的功能*/{information*head=0*newgoods=0;intk=0;chara
[10];intj;charch;pp:systemcls;/*清屏*/printf请输入密码;j=0;whilech=getch!=13{putchar*;a[j]=ch;j++;}a[j]=\0;ifstrcmpazeus880825!=0{printf\n\n密码错误!;getch;gotopp;}systemcls;/*清屏*/{lp:k=menuk;switchk/*用switch语句实现功能选择*/12{case1:head=loadhead;break;/*从文件调入记录函数*/case2:head=creat;break;/*调用创建链表函数*/case3:head=searchhead;break;/*调用信息查询函数*/case4:head=amendhead;break;/*调用修改信息的函数*/case5:head=delhead;break;/*调用删除信息函数*/case6:head=addheadnewgoods;break;/*调用追加信息资料函数*/case7:head=purchasehead;break;/*调用输入进货信息的函数*/case8:head=saleshead;break;/*调用输入销售信息的函数*/case9:printhead;break;/*调用显示信息资料函数*/case10:savehead;break;/*调用保存函数*/case0:exit0;/*退出系统,返回主界面*/default:printf输入错误请重试!\n;}gotolp;}}
3.2load函数information*loadinformation*head/*函数load,功能:从文件读入商品信息*/{information*p1*p2;charfilepn
[10];FILE*fp;systemcls;/*清屏*/printf请输入文件路径及文件名:;scanf%sfilepn;/*输入文件路径及名称*/iffp=fopenfilepnr+==NULL{printf不能打开文件!\n;getch;systemcls;/*清屏*/return0;}fp=fopenfilepnr+;fscanffp\n商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;n=0;p1=p2=information*mallocLEN;/*开辟一个新单元*/fscanffp%ld\t\t%s\t\t%s\t\t%d\t\t%f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;head=p1;13ll:n=n+1;p2=p1;p1=information*mallocLEN;/*开辟一个新单元*/fscanffp%ld\t\t%s\t\t%s\t\t%d\t\t%f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;p2-next=p1;ifp1-number!=0gotoll;p2-next=NULL;fclosefp;/*结束读入,关闭文件*/printf\n总有%d种商品的信息\nn;printf\n商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;p2=p1=head;do{printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;p1=p1-next;}whilep1!=NULL;getch;systemcls;/*清屏*/returnhead;}
3.3creat创建链表函数information*creatvoid/*函数creat功能创建链表,此函数带回一个指向链表头的指针*/{information*head;information*p1*p2*p3;inti;systemcls;/*清屏*/n=0;p1=p2=p3=information*mallocLEN;head=p3;/*开辟一个新单元*/repeat1:printf请输入7位商品编号(退出请按“0”);/*输入编号,编号应大于0*/scanf%dp1-number;ifp1-number==0gotoend;14else{whilep1-number1000000||p1-number=10000000{printf输入错误!;gotorepeat1;}p3=head;ifn0{fori=0;in;i++{ifp1-number!=p3-numberp3=p3-next;else{printf编号重复请重输!\n;gotorepeat1;/*当输入的编号已经存在,程序报错,返回前面重新输入*/}}}}printf请输入商品名;scanf%sp1-name;/*输入商品商品名*/printf请输入商品类别;/*输入商品类别*/scanf%sp1-leibie;printf请输入商品库存(大于0);/*输入商品库存*/scanf%dp1-kucun;whilep1-kucun0{printf输入错误,请重新输入商品数量;/*输入错误,重新输入商品库存直到正确为止*/scanf%dp1-kucun;}printf请输入商品价格(大于0);/*输入商品价格*/scanf%fp1-jiage;whilep1-jiage0{printf输入错误,请重新输入商品价格;scanf%fp1-jiage;}/*输入错误,重新输入商品价格直到正确为止*/head=NULL;whilep1-number!=015{n=n+1;ifn==1head=p1;elsep2-next=p1;p2=p1;p1=information*mallocLEN;repeat2:printf请输入7位商品编号(退出请按“0”);scanf%dp1-number;/*输入编号,编号应大于0*/ifp1-number==0gotoend;else{whilep1-number1000000||p1-number=10000000{printf输入错误!;gotorepeat2;}p3=head;ifn0{fori=0;in;i++{ifp1-number!=p3-numberp3=p3-next;else{printf编号重复请重输!\n;gotorepeat2;/*当输入的编号已经存在,程序报错,返回前面重新输入*/}}}}printf请输入商品名;scanf%sp1-name;/*输入商品商品名*/printf请输入商品类别;/*输入商品类别*/scanf%sp1-leibie;printf请输入商品库存(大于0);/*输入商品库存*/scanf%dp1-kucun;whilep1-kucun0{printf输入错误,请重新输入商品数量;/*输入错误,重新输入商品库存直到正确为止*/16scanf%dp1-kucun;}printf请输入商品价格(大于0);/*输入商品价格*/scanf%fp1-jiage;whilep1-jiage0{printf输入错误,请重新输入商品价格;scanf%fp1-jiage;}/*输入错误,重新输入商品价格直到正确为止*/}end:p1=head;p3=p1;p2-next=NULL;/*链表结尾*/printf\n\n输入的商品数为:%d个!\nn;getch;systemcls;/*清屏*/returnhead;}
3.4search函数information*searchinformation*head/*函数search功能查询商品信息*/{information*p1*p2;intab;longc;chart
[100];systemcls;/*清屏*/ifhead==NULL{printf\n\n\n没有任何商品资料,请先建立商品资料!\n;getch;systemcls;returnhead;}p2=p1=head;lp2:{systemcls;/*清屏*/printf\n\n\n\n;printf$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n;printf$$\n;printf$$1*按商品编号查询\n;printf$$\n;17printf$$\t2*按商品名称查询\n;printf$$\n;printf$$\t\t3*按商品类别查询\t\t\t$$\n;printf$$\t\t\t\t\t\t\t$$\n;printf\t\t\t4*查询需进货商品库存小于50$$\n;printf\t\t\t\t\t\t\t\t$$;printf\t\t\t\t\t\t0*退出\t\t$$\n;printf\t\t\t\t\t\t\t\t$$;printf\n\t\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;printf\n\n\n\n\n\n;printf请选择您所要的查询方式:;scanf%da;/*选择操作*/}switcha/*用switch语句实现功能选择*/{/*============================================================*/case1:{systemcls;/*清屏*/lp3:printf请输入所要查询商品的7位编号按0返回选择界面:;lp10:scanf%ldc;b=0;ifc==0gotolp2;whilec1000000||c=10000000{printf输入错误\n;gotolp3;}whilec!=0{p1=head;whilec!=p1-numberp1-next!=NULL{p2=p1;p1=p1-next;}ifc==p1-number{printf\n商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\n\np1-numberp1-namep1-leibiep1-kucunp1-jiage;b=1;}18ifb==0printf不存在%d该商品!\nc;printf请输入要查询的商品的编号按0返回选择界面:;gotolp10;}}break;/*============================================================*/case2:{systemcls;/*清屏*/lp7:printf输入所要查询商品的名称按0返回选择界面:;scanf%st;b=0;ifstrcmpt0==0gotolp2;whilestrcmpt0!=0{p1=head;ifstrcmptp1-name!=0p1-next!=NULL{p2=p1;p1=p1-next;}ifstrcmptp1-name==0{printf\n商品名称\t商品编号\t商品类别\t库存数量\t商品价格\n;printf%s\t\t%ld\t\t%s\t\t%d\t\t%.2f\np1-namep1-numberp1-leibiep1-kucunp1-jiage;b=1;}ifb==0{printf\n不存在%s该商品!\nt;printf\n请输入要查询的商品的名称按0返回选择界面:;scanf%st;}elsegotolp7;}}break;/*============================================================*/19case3:{systemcls;/*清屏*/lp8:printf输入所要查询商品的类别按0返回选择界面:;scanf%st;b=0;ifstrcmpt0==0gotolp2;p1=head;printf\n商品类别\t商品编号\t商品名称\t库存数量\t商品价格\n;do{ifstrcmptp1-leibie==0{printf%s\t\t%ld\t\t%s\t\t%d\t\t%.2f\np1-leibiep1-numberp1-namep1-kucunp1-jiage;b++;}p1=p1-next;}whilep1!=NULL;ifb==0{printf\n不存在%s该类型商品!\nt;gotolp8;}gotolp8;}break;/*============================================================*/case4:{systemcls;/*清屏*/b=0;printf商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;p1=head;ifhead!=NULLdo{ifp1-kucun50{printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;b++;20}p1=p1-next;}whilep1!=NULL;printf\n需要进货的商品有以上%d种!b;getch;systemcls;/*清屏*/};break;case0:{systemcls;returnhead;}default:printf输入错误请重试!\n;}gotolp2;}
3.5add数information*addinformation*headinformation*newgoods/*函数add功能追加商品信息*/{information*p0*p1*p2;intia;p1=newgoods=information*mallocLEN;/*开辟一个新单元*/systemcls;/*清屏*/repeat:printf请输入你想添加的商品的7位商品编号(退出请按“0”):;scanf%ldnewgoods-number;ifnewgoods-number==0gotoend2;else{whilep1-number1000000||p1-number=10000000{printf输入错误,请重新输入7位商品编号:;scanf%dp1-number;}p1=head;ifn0{fori=0;in;i++{21ifnewgoods-number!=p1-numberp1=p1-next;else{printf编号重复请重输!\n;gotorepeat;}}}}printf请输入商品名;scanf%snewgoods-name;printf请输入商品类别;scanf%snewgoods-leibie;printf请输入商品库存(大于0);/*输入商品库存*/scanf%dnewgoods-kucun;whilenewgoods-kucun0{printf输入错误,请重新输入商品数量;/*输入错误,重新输入商品库存直到正确为止*/scanf%dnewgoods-kucun;}printf请输入商品价格(大于0);/*输入商品价格*/scanf%fnewgoods-jiage;whilenewgoods-jiage0{printf输入错误,请重新输入商品价格;scanf%fnewgoods-jiage;}printf\n商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\nnewgoods-numbernewgoods-namenewgoods-leibienewgoods-kucunnewgoods-jiage;printf你确定要新增这个商品吗\n;printf是请按
(1),否请按
(0)!\n;scanf%da;ifa==1{p0=head;p2=newgoods;ifhead==NULL{head=p2;p2-next=NULL;22}/*当原来链表为空时,从首结点开始存放资料*/else/*原来链表不为空*/{ifp0-next==NULL/*找到原来链表的末尾*/{p0-next=p2;p0-next=NULL;/*将它与新开单元相连接*/}else{whilep0-next!=NULL/*还没找到末尾,继续找*/{p2=p0;p0=p0-next;}p0-next=p2;p2-next=NULL;}}n=n+1;printf\n输入的商品数为:%d个!\nn;}elsegotorepeat;getch;end2:systemcls;/*清屏*/returnhead;}
3.6amend函数information*amendinformation*head/*定义一个修改商品信息信息的函数此函数带回一个指向链表头的指针*/{intt;longnum;information*p1*p2;systemcls;/*清屏*/ifhead==NULL{printf\n\n\n没有任何商品资料,请先建立商品资料!\n;getch;systemcls;returnhead;}23printf输入要修改的7位商品的编号按0退出:;pp:scanf%ldnum;ifnum==0{systemcls;gotoend;}elsewhilenum1000000||num=10000000{printf输入错误,请重新输入商品编号:;scanf%dnum;}whilenum!=0{p1=head;whilenum!=p1-numberp1-next!=NULL{p2=p1;p1=p1-next;}ifnum==p1-number{printf\n商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;printf修改请按
(1)!退出请按
(0)!;scanf%dt;ift==1{rt:printf请输入修改后的编号;scanf%ldp1-number;whilep1-number1000000||p1-number=10000000{printf输入错误,请重新输入7位商品编号:;scanf%dp1-number;}printf请输入修改后的商品名;scanf%sp1-name;printf请输入修改后的商品类别;scanf%sp1-leibie;printf请输入修改后的库存数量(大于0);scanf%dp1-kucun;whilep1-kucun024{printf输入错误,请重新输入商品数量;/*输入错误,重新输入商品库存直到正确为止*/scanf%dp1-kucun;}printf请输入修改后的商品价格(大于0);scanf%fp1-jiage;whilep1-jiage0{printf输入错误,请重新输入商品价格;scanf%fp1-jiage;}printf修改后的商品信息为;printf\n商品编号\t商品名称\t商品类别\t进货数量\t商品价格\n;printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;printf确认请按
(1)!重新请按
(2)!\n;scanf%dt;ift==1{systemcls;returnhead;}elsegotort;}else{systemcls;returnhead;}}elseprintf%d不存在此商品!\nnum;printf请输入要查询的商品的编号按0退出:;gotopp;}end:returnhead;}
3.7del函数information*delinformation*head/*函数del,功能删除商品信息*/{25information*p1*p2;inta;longnum;systemcls;/*清屏*/ifhead==NULL{printf\n\n\n没有任何商品资料,请先建立商品资料!\n;getch;systemcls;returnhead;}lp:printf请输入你需要删除的商品的编号(7位)按0退出:;scanf%ldnum;ifnum==0{systemcls;returnhead;}whilenum1000000||num=10000000{printf输入错误,请重新输入商品编号:;scanf%dnum;}p1=head;whilenum!=p1-numberp1-next!=NULL/*p1指向的不是所要找的首结点,并且后面还有结点*/{p2=p1;p1=p1-next;}/*p1后移一个结点*/ifnum==p1-number/*找到了*/{printf\n商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;printf你确定要删除这个商品的信息吗\n;printf是请按
(1),否请按
(0)!\n;scanf%da;ifa==1{ifp1==headhead=p1-next;/*若p1指向的是首结点,把地二个结点地址赋予head*/26elsep2-next=p1-next;/*否则将下一个结点地址赋给前一结点地址*/printf已经删除了该商品!\n;n=n-1;}elsegotolp;}else{printf没有找到%l这件商品!num;/*找不到该商品*/gotolp;}printf\n现在的商品数为:%d个!\nn;getch;systemcls;returnhead;}
3.8purchase函数information*purchaseinformation*head/*定义输入进货信息的函数此函数带回一个指向链表头的指针*/{intt;longnum;information*p1*p2;systemcls;/*清屏*/ifhead==NULL{printf\n\n\n没有任何商品资料,请先建立商品资料!\n;getch;systemcls;returnhead;}printf请输入所进商品的商品7位编号按0退出;lp3:scanf%ldnum;ifnum==0{systemcls;gotoend;}whilenum1000000||num=1000000027{printf输入错误,请重新输入商品编号:;gotolp3;}whilenum!=0{p1=head;whilenum!=p1-numberp1-next!=NULL{p2=p1;p1=p1-next;}ifnum==p1-number{printf\n该商品的信息是\n;printf\n商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;printf\n请输入该商品的进货量;scanf%dt;p1-kucun=p1-kucun+t;printf\n该商品现在的信息是;printf\n商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;break;}else{printf不存在%d号商品!\nnum;printf请重新输入商品的编号按0退出:;gotolp3;}}getch;systemcls;end:returnhead;}
3.9sales函数information*salesinformation*head/*定义输入销售信息的函数此函数带回一个指向链表头的指针*/{28intt;longnum;information*p1*p2;systemcls;/*清屏*/ifhead==NULL{printf\n\n\n没有任何商品资料,请先建立商品资料!\n;getch;systemcls;returnhead;}printf请输入所售商品的商品7位编号按0退出;lp4:scanf%ldnum;ifnum==0{systemcls;gotoend;}elsewhilenum1000000||num=10000000{printf输入错误,请重新输入商品编号:;gotolp4;}whilenum!=0{p1=head;whilenum!=p1-numberp1-next!=NULL{p2=p1;p1=p1-next;}ifnum==p1-number{printf\n该商品的信息是\n;printf\n商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;lp5:printf\n请输入该商品的售货量;scanf%dt;ifp1-kucunt{printf售货量大于库存!\n请重输!\n;gotolp5;29}p1-kucun=p1-kucun-t;printf\n该商品现在的信息是;printf\n商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;break;}else{printf不存在%d号商品!\nnum;printf请重新输入商品的编号按0退出:;gotolp4;}}getch;systemcls;end:returnhead;}
3.10print函数voidprintinformation*head/*函数print功能显示商品信息*/{information*p1*p2;intaijeb=0;longc;floatd;chart
[100];systemcls;/*清屏*/ifhead==NULL{printf\n\n\n没有任何商品资料,请先建立商品资料!\n;getch;systemcls;return;}lp2:{printf\n\n\n\n\n\n;printf\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n;printf\t$$\n;printf\t$$1*按商品编号顺序浏览\n;printf\t$$\n;30printf\t$$\t2*按商品名称顺序浏览\n;printf\t$$\t\t\t\t\t\t$$\n;printf\t$$\t\t3*按商品类别顺序浏览\t$$\n;printf\t\t\t\t\t\t\t$$\n;printf\t\t\t\t\t0*退出\t$$\n;printf\t\t\t\t\t\t\t$$;printf\n\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$;printf\n\n\n\n\n\n\n;printf请选择您所要的浏览方式:;scanf%da;/*选择操作*/}switcha/*用switch语句实现功能选择*/{/*============================================================*/case1:/*按商品编号顺序浏览*/{systemcls;/*清屏*/printf总有%d种商品的信息\nn;printf商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;p2=p1=head;fori=1;in;i++{forj=i+1;j=n;j++{p2=p1;p1=p1-next;ifp2-numberp1-number{c=p2-number;p2-number=p1-number;p1-number=c;/*交换前后结点中的编号值,使得编号大者移到后面的结点中*/strcpytp2-name;strcpyp2-namep1-name;strcpyp1-namet;/*交换前后结点中的商品名,使之与编号相匹配*/strcpytp2-leibie;strcpyp2-leibiep1-leibie;strcpyp1-leibiet;/*交换前后结点中的商品类别,使之与编号相匹配*/e=p2-kucun;p2-kucun=p1-kucun;p1-kucun=e;/*交换前后结点中的商品数量,使之与编号相匹配*/d=p2-jiage;p2-jiage=p1-jiage;p1-jiage=d;/*交换前后结点中的商品价格,使之与编号相匹配*/31}}p2=head;p1=head;/*重新使p2p1指向链表头*/}do{printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;p1=p1-next;}whilep1!=NULL;}getch;systemcls;break;/*============================================================*/case2:/*按商品名称顺序浏览*/{systemcls;/*清屏*/printf总有%d种商品的信息\nn;printf商品名称\t商品编号\t商品类别\t库存数量\t商品价格\n;p2=p1=head;fori=1;in;i++{forj=i+1;j=n;j++{p2=p1;p1=p1-next;ifstrcmpp2-namep1-name0{c=p2-number;p2-number=p1-number;p1-number=c;/*交换前后结点中的编号值,使得编号大者移到后面的结点中*/strcpytp2-name;strcpyp2-namep1-name;strcpyp1-namet;/*交换前后结点中的商品名,使之与编号相匹配*/strcpytp2-leibie;strcpyp2-leibiep1-leibie;strcpyp1-leibiet;/*交换前后结点中的商品类别,使之与编号相匹配*/e=p2-kucun;p2-kucun=p1-kucun;p1-kucun=e;/*交换前后结点中的商品数量,使之与编号相匹配*/32d=p2-jiage;p2-jiage=p1-jiage;p1-jiage=d;/*交换前后结点中的商品价格,使之与编号相匹配*/}}p1=head;p2=head;/*重新使p2p1指向链表头*/}do{printf%s\t\t%ld\t\t%s\t\t%d\t\t%.2f\np1-namep1-numberp1-leibiep1-kucunp1-jiage;p1=p1-next;}whilep1!=NULL;}getch;systemcls;break;/*============================================================*/case3:/*按商品类别顺序浏览*/{systemcls;/*清屏*/printf总有%d种商品的信息\nn;printf商品类别\t商品编号\t商品名称\t库存数量\t商品价格\n;p2=p1=head;fori=1;in;i++{forj=i+1;j=n;j++{p2=p1;p1=p1-next;ifstrcmpp2-leibiep1-leibie0{c=p2-number;p2-number=p1-number;p1-number=c;/*交换前后结点中的编号值,使得编号大者移到后面的结点中*/strcpytp2-name;strcpyp2-namep1-name;strcpyp1-namet;/*交换前后结点中的商品名,使之与编号相匹配*/strcpytp2-leibie;strcpyp2-leibiep1-leibie;strcpyp1-leibiet;/*交换前后结点中的商品类别,使之与编号相匹配*/33e=p2-kucun;p2-kucun=p1-kucun;p1-kucun=e;/*交换前后结点中的商品数量,使之与编号相匹配*/d=p2-jiage;p2-jiage=p1-jiage;p1-jiage=d;/*交换前后结点中的商品价格,使之与编号相匹配*/}}p2=head;p1=head;/*重新使p2p1指向链表头*/}do{printf%s\t\t%ld\t\t%s\t\t%d\t\t%.2f\np1-leibiep1-numberp1-namep1-kucunp1-jiage;p1=p1-next;}whilep1!=NULL;}getch;systemcls;break;/*============================================================*/case0:{systemcls;return;}/*返回选择界面*/default:printf输入错误请重试!\n;}gotolp2;}
3.11save函数voidsaveinformation*p1/*函数save功能保存商品信息*/{FILE*fp;charfilepn
[20];/*用来存放文件保存路径以及文件名*/systemcls;/*清屏*/ifp1==NULL{printf\n\n\n没有任何商品资料,请先建立商品资料!\n;getch;systemcls;34return0;}printf请输入文件路径及文件名:;scanf%sfilepn;iffp=fopenfilepnw+==NULL{printf不能打开文件!\n;return0;}fprintffp商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;printf商品编号\t商品名称\t商品类别\t库存数量\t商品价格\n;whilep1!=NULL{fprintffp%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;printf%ld\t\t%s\t\t%s\t\t%d\t\t%.2f\np1-numberp1-namep1-leibiep1-kucunp1-jiage;p1=p1-next;/*下移一个结点*/}fprintffp0;fclosefp;printf文件已经保存!\n;getch;systemcls;/*清屏*/return0;}
3.12menu函数intmenuk/*函数menu功能菜单选择界面*/{inti;printf\t\t★☆★商场商品信息管理系统☆★☆\n;fori=0;i80;i++printf$;printf$\t1*从文件调入信息*\n\n;printf$\t2*输入商品的信息*\n\n;printf$\t3*查询商品的信息*\n\n;printf$\t\t4*修改商品的信息*\n\n;printf$\t\t5*删除商品的信息*\n\n;printf$\t\t\t6*新增商品的信息*\t¥\n\n;printf\t\t\t7*输入进货的信息*\t¥\n\n;printf\t\t\t\t8*输入销售的信息*\t¥\n\n;printf\t\t\t\t9*浏览商品的信息*¥\n\n;35printf\t\t\t\t\t10*保存信息到文件*¥\n;/*菜单选择界面*/fori=0;i40;i++printf¥;printf\n;printf请选择您所要的操作选择0退出:;scanf%dk;/*选择操作*/returnk;}4系统运行首先进入欢迎界面按任意键进入下一页面36输入密码(zeus880825),输入正确进入主菜单,不正确则重新输入进入主菜单,通过数字键进入相对应的功能页面,按“0”退出程序加载文件,输入文件路径及文件名,存在且能打开则加载并显示所加载信息,否则退出37输入商品信息,按要求输入商品信息,按“0”完成输入并退出进入查询的选择子页面通过数字键进入相对应的功能页面,按“0”退出进行查询,按所选类型输入所查询信息,存在则显示,否则重输,按“0”退出38查询需进货商品,显示需要进货的商品的信息,按任意键退出修改商品信息,输入所要修改商品的编号,存在则显示该商品信息,确认是否修改,确认则按要求修改并同时确认,按“0”退出删除商品信息输入需删除商品编号,存在则显示,并确认是否删除,按“0”退出添加商品信息输入需添加商品编号,查询是否重复,不重复则按要求输入所添加商品的信息,输完显示信息,并确认是否添加,按“0”退出39输入进货信息输入进货商品的编号,查询是否存在,存在则显示广商品信息并输入进货量,更新商品信息,按任意键退出输入销售信息输入所销售商品的编号,查询是否存在,存在则显示广商品信息并输入销售量,判断是销售量是否超过库存,不超则更新商品信息,按任意键退出进入浏览选择子菜单通过数字键进入相对应的功能页面,按“0”退出40浏览商品信息按所选要求输出商品信息,按任意键退出保存文件输入文件路径及文件名,保存成功则显示所保存信息,按任意键退出退出程序5总结程序设计过程有如解决一实际问题,从解决实际问题的角度,我们可以这样来看首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要41求是什么;其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、指针、链表、命令、函数,然后确定处理过程--算法可得最后结论通过此次的课程设计,我基本上了解并掌握数据结构与算法的设计方法,具备了初步的独立分析和设计能力和初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能在这次课程设计中,我在完成自己的课题之余,我还协助了许多同学完成他们的作业,在这过程中不但对其它八个课题也有了较深了解,同时在和同学的交流中也发现了很多不同的算法,以及各种新颖的想法这大大拓宽了自己在编程方面的思路,为以后在编程学习中积累了一些经验题目公司产品管理系统专业班级2014级软件4班姓名苏旺春学号1417700221指导教师马威成绩定义变量开辟一个内存空间开辟内存空间输入商品编号并判断是否有效和重复输入商品名称并判断是否有效输入商品类别并判断是否有效输入商品库存并判断是否有效输入商品价格并判断是否有效判断是否输入结束退出函数。