C语言商店商品管理系统设计报告与源代码
- 格式:doc
- 大小:422.92 KB
- 文档页数:27
兰州商学院陇桥学院工学系课程设计报告课程名称:高级程序设计语言课程设计设计题目:商店存货管理系统系别:工学系专业 (方向):网络工程年级、班:网络工程1301********学生学号:******************2014年7月03日目录一、系统开发的背景 (1)二、系统分析与设计 (1)(一)系统功能要求 (1)(二)系统模块结构设计 (2)三、系统的设计与实现 (2)(一)显示货物信息:DISPLAY() (2)(二)插入新进货物:INPUT() (4)(三)删除已卖货物:OUTPUT() (4)(四)查询库存:SEARCH() (5)(五)主界面:ZHUJIEMIAN() (6)四、系统测试 (7)(一)测试DISPLAY ()函数 (7)(二)测试INPUT()函数。
(8)(三)测试OUTPUT ()函数。
(10)(四)测试SEARCH ()函数。
(11)五、总结 (11)六、源代码 (12)商店存货管理系统一、系统开发的背景根据题目要求,要对商店存货进行相应的管理,方便主人对自己的店铺货品的了解和调用。
首先,应当把商品信息用结构体形式输入,在主函数main下只放入声明的四个函数,分别是展示函数display(),录入函数input(),删除函数output(),查询函数search()。
这四个可以分为四个模块,每个都是独立存在的,在运行时又是彼此串联的,在定义这四个函数的类型为void,意为函数无类型,即无函数值,也就是说,执行这四个函数后不会把任何值带回main函数。
在执行过程中不断进行函数的调用,让整个程序的活力尽现,在展示模块中,利用选择排序,对商品保质期进行排序,让保质期前的商品优先输出,保证整个商店的货品新鲜。
中间用了结构体来储存数据,展出数据,用文件插入新货品,用字符串函数修改删除货品。
其中一直被调用的是zhujiemian()函数,这是为了让程序变得美观大方有思想。
商品管理系统c语言简介商品管理系统是一个广泛应用于商业领域的软件系统,用于管理商品的库存、销售、采购以及相关的数据统计和报表分析等功能。
本文将从系统设计的角度出发,探讨如何使用C语言实现一个简单的商品管理系统。
系统需求分析在设计商品管理系统之前,首先需要明确系统的功能需求。
根据实际商业场景的特点,我们可以确定以下功能: 1. 商品信息管理:包括商品的基本信息(名称、编号、价格等)以及库存管理(进货、出货、盘点等)。
2. 销售管理:记录商品的销售情况,统计销售额、销售量等数据。
3. 采购管理:记录商品的采购情况,统计采购额、采购量等数据。
4. 数据统计和报表分析:根据销售和采购数据,生成各种报表进行数据分析。
数据结构设计在实现商品管理系统时,需要合理设计数据结构来存储商品的信息和相关操作。
以下是主要的数据结构设计: 1. 商品结构体:包含商品的编号、名称、价格、库存数量等信息。
2. 销售记录结构体:包含销售的商品编号、销售数量、销售日期等信息。
3. 采购记录结构体:包含采购的商品编号、采购数量、采购日期等信息。
4. 统计信息结构体:包含销售额、采购额、库存总量等信息。
系统流程设计商品信息管理流程1.显示主菜单:包含商品信息管理、销售管理、采购管理、数据统计和报表分析四个功能选项。
2.商品信息管理功能:包含商品的新增、删除、修改和查询功能。
1.新增商品:输入商品的编号、名称、价格、库存数量等信息,将商品添加到商品列表中。
2.删除商品:输入要删除的商品编号,从商品列表中删除该商品。
3.修改商品:输入要修改的商品编号,根据提示修改商品的相关信息。
4.查询商品:输入要查询的商品编号或名称,显示商品的详细信息。
3.销售管理功能:包含销售记录的新增和查询功能。
1.新增销售记录:输入销售的商品编号和销售数量等信息,将销售记录添加到销售记录列表中。
2.查询销售记录:输入要查询的销售日期,显示该日期的销售记录。
用c语言编写商品管理系统-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<dos.h>#include<string.h>#define LEN sizeof(struct commdity)#define FORMAT "%-8d%-15s%-12.11f%-12.11f%-12.11f\n"#define DATA comm[i].num,comm[i].name,comm[i].price,comm[i].count,comm[i].total /*定义商品的结构体*/struct commdity{int num;char name[15];double count;double total;}comm[100000],t;/*函数的声明*/void in(); /*商品录入并保存*/void show(); /*显示商品记录*/void order(); /*商品记录排序*/void del(); /*商品记录删除*/void modify(); /*商品记录修改*/void menu(); /*主菜单*/void insert(); /*商品记录插入*/void total(); /*商品统计*/void search(); /*查看商品记录*/void main(){int n;menu();scanf("%d",&n);while(n){switch(n){case 0:break;case 1:in();break;case 2:search();break;case 3:del();break;case 4:modify();break;case 5:insert();break;case 6:order();break;case 7:total();break;default:printf("error! 操作错误.....\n");break;}getch();menu();scanf("%d",&n);}}/**************************自定义主菜单函数************************/ void menu(){system("cls"); /*清屏*/printf("\n\n\n\n\n");printf("\t\t--------欢迎将进入商品管理系统----------------\n");printf("\t\t|\t0.退出 |\n");printf("\t\t|\t1.录入记录 |\n");printf("\t\t|\t2.查找记录 |\n");printf("\t\t|\t3.删除记录 |\n");printf("\t\t|\t4.修改记录 |\n");printf("\t\t|\t5.插入记录 |\n");printf("\t\t|\t6.排序记录 |\n");printf("\t\t|\t7.统计记录 |\n");printf("\t\t|--------------------------------------------|\n");printf("\t\t\t请输入您的操作类型【0-7】: \n");}/**************************自定义商品录入并保存函数************************/void in(){int i,m=0;char ch[2];FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){ printf("不能打开文件!\n");return; }while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0)printf("无商品记录........\n");else{ system("cls");show();}if((fp=fopen("data.txt","wb"))==NULL){ printf("不能打开文件!\n");return;}for(i=0;i<m;i++)fwrite(&comm[i],LEN,1,fp);printf("是否输入(y/n):\n");scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){ printf("编号:\n");scanf("%d",&comm[m].num);for(i=0;i<m;i++)if(comm[m].num==comm[i].num){ printf("该记录已经存在,按任意键返回......\n"); getch();fclose(fp);return;}printf("商品名:\n");scanf("%s",comm[m].name);printf("单价:\n");scanf("%lf",&comm[m].price);printf("数量:\n");scanf("%lf",&comm[m].num);comm[m].total=comm[m].count*comm[m].price;if(fwrite(&comm[m],LEN,1,fp)!=1){ printf("不能保存!\n");getch();return;}else{ printf("%s 已经保存!\n",comm[m].name);m++;printf("是否继续(y/n):\n");scanf("%s",ch);}fclose(fp);printf("OK!\n");return;}/**************************自定义显示商品记录函数************************/void show(){int i,m=0;FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开记录!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf("无商品记录........\n");}else{printf("编号商品名称单价数量总金额\t\n");for(i=0;i<m;i++){printf(FORMAT,DATA);}}}/**************************自定义商品查看函数************************/ void search(){ FILE *fp;int snum,i,m=0;char ch[2];if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开文件!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)fclose(fp);if(m==0){ printf("无商品记录........\n");return;}printf("编号:\n");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==comm[i].num){printf("已经找到记录,是否显示(y/n):\n");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){printf("编号商品名称单价数量总金额\t\n"); printf(FORMAT,DATA);break;}elsereturn;}if(i==m){printf("没有找到相应的记录....\n");}}/**************************自定义商品记录删除函数************************/void del(){int i,m=0,j,snum;char ch[2];FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开文件!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf("无商品记录........\n");return;}printf("请输入编号:\n");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==comm[i].num)break;if(i==m){printf("没有找到.....\n");getch();return;}printf("已经找到记录,是否删除(y/n):\n");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){for(j=i;j<m;j++)comm[j]=comm[j+1];m--;printf("删除成功....\n");}if((fp=fopen("data.txt","wb"))==NULL){printf("不能打开文件!\n");return;}for(i=0;i<m;i++)if(fwrite(&comm[j],LEN,1,fp)!=1){printf("不能保存!\n");getch();}fclose(fp);}/**************************自定义商品记录修改函数************************/void modify(){int i,m=0,snum;char ch[2];FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开文件!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf("无商品记录........\n");fclose(fp);return;}printf("请输入您要修改信息的编号:\n");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==comm[i].num)break;if(i<m){printf("已经找到该记录,是否修改(y/n):\n");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){printf("商品名:\n");scanf("%s",comm[i].name);printf("单价:\n");scanf("%lf",&comm[i].price);printf("数量:\n");scanf("%lf",&comm[i].num);comm[i].total=comm[i].count*comm[i].price;}elsereturn;}else{printf("没有找到......\n");getchar();return;}if((fp=fopen("data.txt","wb"))==NULL){printf("不能打开文件!\n");return;}for(i=0;i<m;i++)if(fwrite(&comm[i],LEN,1,fp)!=1){printf("不能保存!\n");getch();}fclose(fp);}/**************************自定义商品记录插入函数************************/void insert(){int i,m=0,j,k,snum;FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开文件!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}if(m==0){printf("无商品记录........\n");fclose(fp);return;}printf("请输入要插入记录的位置【即编号】:\n");scanf("%d",&snum);for(i=0;i<m;i++)if(snum==comm[i].num)break;for(j=m-1;j>i;j--)comm[j+1]=comm[j];printf("请输入您要插入的信息:\n");printf("编号:\n");scanf("%d",&comm[i+1].num);for(k=0;k<m;k++)if(comm[k].num==comm[i+1].num&&k!=i+1){ printf("该编号已经存在,按任意键继续......\n"); getch();fclose(fp);return;}printf("商品名:\n");scanf("%s",comm[i+1].name);printf("单价:\n");scanf("%lf",&comm[i+1].price);printf("数量:\n");scanf("%lf",&comm[i+1].num);comm[i+1].total=comm[i+1].count*comm[i+1].price;if((fp=fopen("data.txt","wb"))==NULL){printf("不能打开文件!\n");return;}for(k=0;k<m+1;k++)if(fwrite(&comm[k],LEN,1,fp)!=1){printf("不能保存!\n");getch();}fclose(fp);}/**************************自定义商品记录统计函数************************/void total(){int i,m=0;FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开记录!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}if(m==0){printf("无商品记录........\n");fclose(fp);}else{printf("编号商品名称单价数量\t\n");for(i=0;i<m;i++){printf("%-8d%-15s%-12.11f%-12.11f\n",comm[i].num,comm[i].name,comm[i].price,comm[i].count);} printf("一共有%d条记录!\n",m);fclose(fp);}}/**************************自定义商品记录排序函数************************/void order(){int i,j,m=0;FILE *fp;if((fp=fopen("data.txt","ab+"))==NULL){printf("不能打开记录!\n");return;}while(!feof(fp)){if(fread(&comm[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf("无商品记录........\n");}else{for(i=0;i<m;i++)for(j=i+1;j<m;j++){if(comm[i].total<comm[j].total){t=comm[i];comm[i]=comm[j];comm[j]=t;}}printf("编号商品名称单价数量总金额\t\n");for(i=0;i<m;i++){printf(FORMAT,DATA);}}}11。
一题目与运行说明商品进销存管理程序1、题目描述设计一个商品进销管理程序,该程序具有以下功能:(1) 录入商品信息;(2) 给定商品编号,修改该商品信息;(3) 给定商品编号,删除该商品信息;(4) 录入商品的进货和销售信息;(5) 给定商品编号或商品名,查看该商品与库存信息;(6) 统计功能:提供一些统计各类信息的功能。
2、题目要求(1) 按照分析、设计、编码、调试和测试过程完成应用程序;(2) 学习并使用流程图等工具,并在撰写报告中使用;(3) 程序的各项功能在程序运行时,以菜单形式选择并执行;(4) 要求用户输入数据时,要给出清晰、明确的提示,包括:输入数据的内容、格式与其完毕方式等(5) 所有的信息存储在一个文件或多个中,并实现文件读写操作。
(6) 程序中用链表存放商品与进销存信息并实现增删减功能。
3、提示(1) 提醒事件信息可以设计一个结构体类型(2) 自己构思并增加的除规定功能之外的新功能,酌情加分。
(1)程序中主要变量Struct goods *head 结构体指针Int n,kstruct goods{int number;char name[20];int shumu;float jiage;struct goods *next;};int n,k;struct goods *head;等一些变量。
(2)数据输入的形式和输入值的X围字符不超过20位整型变量输入大于0浮点型变量也大于0商品编号为四位整数(3)数据输入的形式按程序运行的提示操作※(4)程序所能达到的功能与出错处理该程序具有以下功能:(1) 录入商品信息;(2) 给定商品编号,修改该商品信息;(3) 给定商品编号,删除该商品信息;(4) 录入商品的进货和销售信息;(5) 给定商品编号或商品名,查看该商品与库存信息;(6) 统计功能:提供一些统计各类信息的功能。
二程序设计思路根据要求首先设计一个结构体类型,设计好界面,设计好主函数。
1 需求分析:随着现代生活质量的提高,超市这种便利的效劳开始走进我们的生活,同时随着超市涌入我们的生活,如何更便利的对超市进行系统和有序的操作,成为了我们需要考虑的问题,本程序运用C语言程序设计了一个超市管理系统。
关系系统的的功能主要有新购物品入库、物品信息删除、物品信息修改、物品信息查询、物品信息浏览功能,在相应的硬盘上面进行存盘以防止局部数据的丧失。
为了更加人性化使用此管理系统,还在MENU选项总添加了系统颜色设置功能,使用户可以根据自己的喜好修改操作界面。
2 概要设计(1)数据结构依据给定的物品信息和数据形式,数组必须用结构体实现。
结构类型的层次结构:struct ima{int id;char name[20];char produce[30];int number;float price;};(2)模块划分依据程序的结构反和功能,遵照“自顶而下〞的原那么,描述该程序的层次结构图一显示了该程序的层次结构,共5层:如下列图:图一图一的层次结构1、void chushihua()2、增加物品Tianjia();3、删除物品信息Shanchu();4、Xiugai();Chazhao();6、Liulan();7、yanseshezhi();8、应用程序退出Jieshu();3 运行环境:Win2003, WinXP, Win2000, NT, WinME, Win9X4 开发工具和编程语言:编程语言:C语言开发工具:microsoft visual C++ 6.05 详细设计:1、结构体变量的定义:struct ima{int id;char name[20];char produce[30];int number;float price;};3、void chushihua(){FILE *fp;struct ima i={1,"花生牛奶","湖北武汉",1200,2.5};fp=fopen("ima.dat","w");if(fp==NULL){printf("\t\t\t系统错误,请重试........");exit(0);}fwrite(&i,sizeof(struct ima),1,fp);fclose(fp);}4、void main(){printf("\n\n");system("color 1a");printf("\t\3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3\n");printf("\t\3 \3\n");printf("\t\3 \3\n");printf("\t\3 欢送使用\3\n");printf("\t\3 \3\n");printf("\t\3 \3\n");printf("\t\3 超市库存管理系统\3\n");printf("\t\3 按任意键继续\3\n");printf("\t\3 \3\n");printf("\t\3 \3\n");printf("\t\3 \3\n");printf("\t\3 \3\n");printf("\t\3 \3\n");printf("\t\3 \3\n");printf("\t\3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3");getch();system("cls");menu();chushihua();menu();}5、选择菜单void menu(){int choice;printf("\n∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞【超市库存管理系统】∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞\n");printf("--------------------------------系统菜单显示如下--------------------------------");printf("\n\t①=====================【新购物品入库】\n");printf("\n\t②=====================【物品信息删除】\n");printf("\n\t③=====================【物品信息修改】\n");printf("\n\t④=====================【物品信息查询】\n");printf("\n\t⑤=====================【物品信息浏览】\n");printf("\n\t⑥=====================【系统颜色设置】\n");printf("\n\t⑦=====================【应用程序退出】\n");printf("\n\t请输入您要选择的菜单......");scanf("%d",&choice);switch(choice){case 1:Tianjia();break;case 2:Shanchu();break;case 3:Xiugai();break;case 4:Chazhao();break;case 5:Liulan();break;case 6:yanseshezhi();break;case 7:Jieshu();break;default:printf("\n\t\t\t\t\t输入无效,请您重新输入......");getch();system("cls");menu();}}6、int panduanID(int id){FILE *fp;struct ima i;fp=fopen("ima.date","r");if(fp==NULL){printf("\t\t\t系统错误,请您重试........");exit(0);}fread(&i,sizeof(struct ima),1,fp);while(!feof(fp)){if(i.id==id){fclose(fp);return 1;break;}fread(&i,sizeof(struct ima),1,fp);}fclose(fp);return 0;}{ struct ima i;char choice;FILE *fp;fp=fopen("ima.date","ab");if(fp==NULL){printf("\t\t\t系统错误,请您重试........");exit(0);}labID:printf("\n\t请您输入要入库物品的信息...\n");scanf("%d",&i.id);if(panduanID(i.id)==1){goto labID;}printf("\t\t\t\t 物品的名称:");scanf("%s",);printf("\t\t\t\t 物品的生产地:");scanf("%s",i.produce);printf("\t\t\t\t 物品的数量:");scanf("%d",&i.number);printf("\t\t\t\t 物品的单价:");scanf("%f",&i.price);fwrite(&i,sizeof(struct ima),1,fp);printf("\t\t\t\t\t\t 物品信息已入库成功!!!\n");printf("\n您想继续吗?(y/n)");scanf(" %c",&choice);if(choice=='Y'||choice=='y'){Tianjia();}else{system("cls");menu();}}7、void Shanchu(){ struct ima i[1000];struct ima temp;int delID;char choice;int index=0;int j=0;FILE *fp;fp=fopen("ima.date","r");if(fp==NULL){printf("\t\t\t系统错误,请您重试........");exit(0);fread(&temp,sizeof(struct ima),1,fp);while(!feof(fp)){i[index]=temp;index++;fread(&temp,sizeof(struct ima),1,fp);}fclose(fp);scanf("%d",&delID);fopen("f:\\ima.date","w");if(fp==NULL){printf("\t\t\t系统错误,请您重试........");exit(0);}for( j=0;j<index;j++){if(i[j].id!=delID){fwrite(&i[j],sizeof(struct ima),1,fp);}}fclose(fp);printf("\t\t\t\t\t物品信息已去除!!!\n");printf("\n您想继续吗?(y/n)");scanf(" %c",&choice);if(choice=='Y'||choice=='y'){Shanchu();}else{system("cls");menu();}}8、void Xiugai(){ int index=0;int ID,j;char choice;struct ima i[1000];struct ima temp;FILE *fp;fp=fopen("ima.dat","r");if(fp==NULL){printf("\t\t\t系统错误,请您重试........");exit(0);}fread(&temp,sizeof(struct ima),1,fp);while(!feof(fp)){i[index]=temp;index++;fread(&temp,sizeof(struct ima),1,fp);}fclose(fp);fp=fopen("ima.dat","w");if(fp==NULL){printf("\\t\t\t系统错误,请您重试........");exit(0);}scanf("%d",&ID);for(j=0;j<=index-1;j++){if(i[j].id!=ID){fwrite(&i[j],sizeof(struct ima),1,fp);}else{printf("\t\t物品名称修改为:");scanf("%s",i[j].name);printf("\t\t物品生产地修改为:");scanf("%s",i[j].produce);printf("\t\t物品数量修改为:");scanf("%d",&i[j].number);printf("\t\t物品单价修改为:");scanf("%f",&i[j].price);}}fclose(fp);printf("\t\t\t\t物品信息已修改......");printf("\n您想继续吗?(y/n)");scanf(" %c",&choice);if(choice=='Y'||choice=='y'){Xiugai();}else{system("cls");menu();}}9、void Chazhao(){FILE *fp;int findID;char choice;struct ima i;fp=fopen("ima.date","r");if(fp==NULL){printf("\t\t\t系统错误,请你重试........");exit(0);}finID:scanf("%d",&findID);fread(&i,sizeof(struct ima),1,fp);while(!feof(fp)){if(i.id==findID){printf("\n\n\t***************物品信息******************");printf("\n\t-----------------------------------------");printf("\n\t物品名称...%30s\n",);printf("\n\t-----------------------------------------");printf("\n\t生产厂家...%30s\n",i.produce);printf("\n\t-----------------------------------------");printf("\n\t进口数量...%30d\n",i.number);printf("\n\t-----------------------------------------");printf("\n\t批发价格...%30.3f\n",i.price);printf("\n\t-----------------------------------------");printf("\n您想继续吗?(y/n)");scanf(" %c",&choice);if(choice=='Y'||choice=='y'){Chazhao();}else{system("cls");menu();}}fread(&i,sizeof(struct ima),1,fp);}fclose(fp);goto finID;}10、void Liulan(){ struct ima i;int index=0;char choice;FILE *fp;fp=fopen("ima.date","r");if(fp==NULL){printf("\t\t\t系统错误,请你重试........");exit(0);}fread(&i,sizeof(struct ima),1,fp);while(!feof(fp)){index++;printf("\n\n\t****************物品信息%d*****************",index);printf("\n\t-----------------------------------------");printf("\n\t物品名称...%30s\n",);printf("\n\t-----------------------------------------");printf("\n\t生产厂家...%30s\n",i.produce);printf("\n\t-----------------------------------------");printf("\n\t进口数量...%30d\n",i.number);printf("\n\t-----------------------------------------");printf("\n\t批发价格...%30.3f\n",i.price);printf("\n\t-----------------------------------------");getch();fread(&i,sizeof(struct ima),1,fp);}fclose(fp);printf("\n您想继续吗?(y/n)");scanf(" %c",&choice);if(choice=='Y'||choice=='y'){Liulan();}else{system("cls");menu();}}11、void yanseshezhi(){ int a;char choice;system("cls");printf("\n\n\t\t选择以下方案\n");printf("\n\n\t\t1**************红底黑字\n");printf("\n\n\t\t2**************白底黑字\n");printf("\n\n\t\t3**************黑底红字\n");printf("\n\n\t\t4**************绿底蓝字\n");printf("\n\n\t\t5**************黄底紫字\n");printf("\n\n\t\t6**************系统默认\n");printf("\n\n\t\t\t\t\t请挑选您喜爱的颜色<1-5>......");scanf("%d",&a);switch(a){case 1:system("color 40");break;case 2:system("color 70");break;case 3:system("color 04");break;case 4:system("color 21");break;case 5:system("color 65");break;case 6:system("color 1a");break;default:printf("\n\n\t\t\t\t\t输入无效,重新输入......");getch();yanseshezhi();}printf("\n选择的颜色您还满意吗?(y返回主菜单/n继续选择)");scanf(" %c",&choice);if(choice=='Y'||choice=='y'){system("cls");menu();}else{yanseshezhi();}}12、void Jieshu(){char choice;system("cls");printf("\n\n\n\n\n\n\n\t\t\t您确定要退出系统吗?\n\n\n\t\t\t如果您想退出请按'y',其它键将返回主菜单.....");scanf(" %c",&choice);if(choice=='Y'||choice=='y'){system("cls");printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t谢谢您的使用!!!");printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");}else{system("cls");menu();}}6 调试分析:“;〞before tybe7测试结果:1、欢送界面2、系统选择界面:3、新购物品入库:4、物品信息删除:5、物品信息修改:6、物品信息查询7、物品信息浏览:8、系统颜色设置:9、应用程序退出:8 参考文献:课程设计总结C语言已学习了两个学期了。
2016-2017学年第二学期《C语言程序设计》课程设计报告题目:商店购物管理系统专业:网络工程班级:16(3)班姓名:代应豪指导教师:代美丽成绩:计算机学院2017 年 4月 25 日目录1设计的内容及要求 (1)1.1设计内容 (1)2概要设计 (2)2.1系统的功能介绍 (2)2.2总体程序框图 (2)3设计模块或程序代码 (3)3.1模块描述 (3)3.2结构体建立语句 (3)3.3主函数定义 (4)4程序设计心得与体会 (10)致谢 (11)源程序 (12)1设计的内容及要求1.1设计内容《商店购物管理系统》用C语言制作一个商店购物系统,为顾客提供一个查询商品,快捷购物的平台。
该系统主要有以下功能:1)购物包括会员购物和普通顾客购物;2)系统需存储会员的一般信息:卡号,姓名,密码,卡上余额,已消费总额等信息,会员购物享受九折优惠;3)非会员顾客消费满200元即可免费成为会员,如果需要可获会员卡一张,即可享受会员服务;4)对于商品查询,系统存储商品的一些基本信息:商品代码,商品名,存放位置,剩余量,单价等,输入商品名即可调出商品的所有信息。
1.2设计任务及具体要求本次程序设计主要侧重于知识的运用,把平时学到的运用到实践中去,对我们所学的理论知识进一步深化。
其次程序设计也是要求学生遵循软件开发过程的基本规范,按要求独立自主完成课程设计任务。
要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。
2概要设计2.1系统的功能介绍该系统的主要功能是实现商品购买,商品信息查询!当购买物品到达一定的金额是,会给出会员来进行打折,会员可进行登录查询,注册!2.2总体程序框图进入购物主界面购物函数模块查询函数模块会员购物函数模块普通顾客购物模块免费注册会员判断暂不注册免费注册会员3 设计模块或程序代码3.1模块描述1.主函数主函数为无返回值空类型函数,主要功能是实现执行购物和查询功能。
程序设计——超市管理系统学院:专业:班级:姓名:学号:指导老师:超市管理系统课程设计1)需求分析:设计题目:超市管理系统设计要求:有一个小型超市,出售N(N>=10)种商品,设计并实现一个系统系统功能需求分析:1.保存及输出:超市中的各种商品信息保存在指定文件中,可以把它们输出显示。
2.计算并排序:计算每类商品的总价值(sum,单精度)及平均价(aver,单精度,输出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。
3.统计:统计输出库存量低于100的货号及类别。
统计输出有两种以上(含两种)商品库存量低于100的商品类别。
2)概要设计:系统总体设计框架:系统功能模块图:3)详细设计:主要功能模块的算法设计思路:本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、打印模块。
1)主模块:通过调用各分模块实现功能;2)信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3)新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存在指定的文件中;4)排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储;5)计算模块:将所有商品的价格与库存量进行累加求和;6)打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;7)统计模块1:统计库存量低于100的货名及类别;8)统计模块2:统计商品库存量有2种以上(含2种)低于100的商品类别工作流程图:4)主要源程序代码:#include "stdio.h" /*输入,输出头文件*/ #include "stdlib.h" /*申请空间头文件*/#include "string.h" /*对字符串加工头文件*/ #include "conio.h" /*清屏头文件*/FILE *fp;int n=0; /*定义文件指针类型*/int i,j,a[4],m; /*定义整数类型*/float aver[4],sum[4],g[4],h; /*定义浮点类型*/char c[5]="elec"; /*定义字符数组类型*/ char d[5]="comm"; /*定义字符数组类型*/char e[5]="food"; /*定义字符数组类型*/char f[5]="offi"; /*定义字符数组类型*/struct good /*定义结构体*/{int num; /*商品编号*/char name[20]; /*商品名称*/char kind[40]; /*商品类型*/float price; /*商品价格*/char unit[10]; /*商品单位*/int quantity; /*商品数量*/struct good *next; /*定义结构体指针类型*/}*head,*p1,*p2;struct good *createlist() /*创建链表函数*/{struct good *head1,*p1,*p2; /*定义结构体指针类型*/if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/ {printf("can not open the file");exit(0); /*结束程序*/}head1=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/p1=head1;p2=head1;printf("*********************************************\n");printf("请输入信息:编号,名称,类型,价格,单位,数目\n");printf(" (以输入“-1”表示结束输入)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d %s %s %f %s %d",&p1->num,p1->name,p1->kind,&p1->price,p1->unit,&p 1->quantity); /*输入商品信息*/printf("____________________\n");p1->next=NULL;fprintf(fp,"%d %s %s %f %s %d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity); /*将商品信息写入文件*/while(1){p1=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/printf("*********************************************\n");printf("请输入信息:编号,名称,类型,价格,单位,数目\n");printf(" (以输入“-1”表示结束输入)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d",&p1->num);if(p1->num==-1) /*申请空间结束条件*/{printf("____________________\n\n");fprintf(fp,"%d",-1);fclose(fp);return head1; /*返回头指针*/}scanf("%s %s %f %s %d",p1->name,p1->kind,&p1->price,p1->unit,&p1->quantity); /*输入商品信息*/printf("________________\n");fprintf(fp,"%d %s %s %f %s %d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity); /*将商品信息写入文件*/p1->next=NULL;p2->next=p1;p2=p1;}}struct good *paixu(struct good*head2) /*链表排序函数*/struct good *p6,*p7,*r,*s; /*定义结构体指针类型*/for(i=0;i<=3;i++) /*赋初值值*/{a[i]=0;sum[i]=0;aver[i]=0;}p6=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/ p6->next=head2;head2=p6;while(p6->next!=NULL) /*判断循环结束条件*/{p7=p6->next;r=p6;while(p7->next!=NULL) /*判断循环结束条件*/{if((p7->next->price)>(r->next->price)) /*判断是否调换*/r=p7;p7=p7->next;}if(p6!=r) /*判断循环结束条件*/s=r->next; /*指针调换*/r->next=s->next;s->next=p6->next;p6->next=s;}p6=p6->next;}p6=head2;head2=head2->next;free(p6); /*释放第一个无效空间*/return head2;}void jisuan(){p1=head;do{if(strcmp(p1->kind,c)==0) /*判断是否为电器类型*/{sum[0]=sum[0]+(p1->price)*(p1->quantity); /*求电器总价*/ a[0]=a[0]+p1->quantity; /*求电器总件数*/}if(strcmp(p1->kind,d)==0) /*判断是否为日用品类型*/{sum[1]=sum[1]+(p1->price)*(p1->quantity); /*求日用品总价*/ a[1]=a[1]+p1->quantity; /*求日用品总件数*/}if(strcmp(p1->kind,e)==0) /*判断是否为办公用品类型*/{sum[2]=sum[2]+(p1->price)*(p1->quantity); /*求办公用品总价*/ a[2]=a[2]+p1->quantity; /*求办公用品总件数*/}if(strcmp(p1->kind,f)==0) /*判断是否为食品类型*/{sum[3]=sum[3]+(p1->price)*(p1->quantity); /*求食品总价*/a[3]=a[3]+p1->quantity; /*求食品总件数*/}p1=p1->next;}while (p1!=NULL); /*遍历链表结束条件*/for(i=0;i<4;i++)aver[i]=sum[i]/a[i]; /*求每类商品平均价*/printf("****************************************************\n"); printf("商品类型\t 平均价\t 总库存量\n");printf("****************************************************\n");printf("____________________________________________________\n"); printf("电器总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[0],aver[0],a[0]); printf("____________________________________________________\n"); printf("日用品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[1],aver[1],a[1]); printf("____________________________________________________\n"); printf("食品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[2],aver[2],a[2]); printf("____________________________________________________\n"); printf("办公用品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[3],aver[3],a[3]);printf("____________________________________________________\n");}void shuchu() /*输出商品信息函数*/{do{struct good *p3,*p4,*p5; /*定义结构体指针类型*/int n=0,p=0,q=0,r=0;printf("所有商品信息:\n");printf("编号,名称,类型,价格,单位,数目\n");printf("**********************************\n");if((fp=fopen("goods message.txt","rb+"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}head=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/p3=head;fscanf(fp,"%d %s %s %f %s %d",&p3->num,p3->name,p3->kind,&p3->price,p3->unit,&p3->quantity);/*从文件中写到链表*/while(1){p4=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/fscanf(fp,"%d ",&p4->num);if(p4->num!=-1) /*判断循环结束条件*/{fscanf(fp,"%s %s %f %s %d",p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity); /*从文件中写到链表*/ p4->next=NULL;p3->next=p4;p3=p4;}else{p3->next=NULL;break;}}fclose(fp); /*关闭文件*/p3=head;while(p3!=NULL){printf(" %d %s %s %0.1f %s %d\n\n",p3->num,p3->name,p3->kin d,p3->price,p3->unit,p3->quantity);printf("__________________________________\n");p3=p3->next;}printf("**********************************\n");printf("//////////////////////////////////\n");while(n!=4){p3=head;printf("**********************************\n");printf("1 添加商品信息\n");printf("2 删除某商品信息\n");printf("3 修改某商品信息\n");printf("4 返回(当你完成了对某一商品的添加、删除或者修改后请按4返回)\n");printf("**********************************\n");scanf("%d",&n);if(n==1) /*添加商品信息*/{printf("请输入商品编号名称类型价格单位数目\n");printf("**********************************\n");p4=(struct good *)malloc(sizeof(struct good)); /*申请空间*/scanf("%d %s %s %f %s %d",&p4->num,p4->name,p4->kind,&p4->price,p4->unit,&p 4->quantity); /*输入商品信息*/p4->next=NULL;while(p3->next!=NULL) /*判断循环结束条件*/{p3=p3->next;}p3->next=p4;p3=head;if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}while(p3!=NULL){fprintf(fp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity) ;/*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关闭文件*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==2) /*删除商品*/{printf("**********************************\n");printf("请输入需要删除的商品编号\n");printf("**********************************\n");scanf("%d",&p);printf("**********\n");printf("1 确认删除\n2 取消删除\n");printf("**********\n");scanf("%d",&r);if(r==1){if((head->num)==p){head=head->next;free(p3); /*释放空间*/}else{p4=head;p3=p4->next;while(p3!=NULL) /*判断循环结束条件*/ {if((p3->num)==p){p5=p3->next;free(p3); /*释放空间*/p4->next=p5;break;}p3=p3->next;p4=p4->next;}}if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}p3=head;while(p3!=NULL) /*判断循环结束条件*/{fprintf(fp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关闭文件*/}if(r==2)continue; /*继续循环*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==3) /*修改某商品信息*/{printf("请输入需要修改的商品编号\n");scanf("%d",&q);while(p3!=NULL) /*判断循环结束条件*/{if((p3->num)==q) /*判断是否为所需要修改的商品*/{printf("请输入商品单价与库存量(如果单价不变请输入原来的单价)\n");scanf("%f %d",&p3->price,&p3->quantity); /*输入商品价格与库存量*/}p3=p3->next;}if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}p3=head;while(p3!=NULL) /*判断循环结束条件*/{fprintf(fp,"%d %s %s %f %s %d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*将商品信息写入文件*/p3=p3->next;}fprintf(fp,"%d",-1);fclose(fp); /*关闭文件*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==4) /*退出*/break;}printf("**********\n");printf("1 继续修改\n---------\n2 返回\n");printf("**********\n");scanf("%d",&p);if(p==1)continue; /*继续循环*/if(p==2)break; /*跳出循环*/}while(n!=2);fclose(fp); /*关闭文件*/}void printf0(struct good *p) /*遍历链表并打印电器类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,c)==0) /*判断商品类型是否为电器类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出电器类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void printf1(struct good *p) /*遍历链表并打印日用品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,d)==0) /*判断商品类型是否为日用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出日用品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void printf2(struct good *p) /*遍历链表并打印办公用品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,e)==0) /*判断商品类型是否为办公用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出办公用品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void printf3(struct good *p) /*遍历链表并打印食品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,f)==0) /*判断商品类型是否为食品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出食品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void shunxudayin(){for(i=0;i<4;i++)g[i]=aver[i]; /*将平均价赋给新数组*/for(j=0;j<3;j++) /*将新数组用冒泡排序法排序*/for(i=j+1;i<4;i++){if(g[j]<g[i]){h=g[j];g[j]=g[i];g[i]=h;}}printf("\n****************************\n");printf("商品平均价格排序表(从高到低)\n");printf("****************************\n");printf("________________________________________________\n");printf("编号\t名称\t类别\t单价\t单位\t数量\n");printf("________________________________________________\n"); for(j=0;j<4;j++)for(i=0;i<4;i++){if (aver[i]==g[j]) /*判断每类商品平均价格的先后顺序*/switch(i){case 0:printf0(head); /*调用遍历链表并打印电器类商品函数*/break;case 1:printf1(head); /*调用遍历链表并打印日用品类商品函数*/break;case 2:printf2(head);/*调用遍历链表并打印办公用品类商品函数*/break;case 3:printf3(head); /*调用遍历链表并打印食品类商品函数*/break;}}void tongji1(){p1=head;printf("\n************************\n");printf("库存量低于100的货名及类别\n");printf("************************\n");printf("________________________\n");printf("商品名称\t商品类型\n");printf("________________________\n");while(p1!=NULL) /*判断遍历链表循环结束条件*/{if(p1->quantity<100) /*判断库存量是否小于100*/{printf("%s\t%s\n",p1->name,p1->kind); /*输出商品名称及类别*/ printf("________________________\n");}p1=p1->next;}}void tongji2()printf("\n**********************************************\n");printf("商品库存量有2种以上(含2种)低于100的商品类别:\n");printf("**********************************************\n");printf("________\n");if((a[0]<100)&&(a[0]>=2)) /*判断电器类库存量是否为2种以上(含2种)低于100*/{printf("电器\n");printf("________\n");}if((a[1]<100)&&(a[1]>=2)) /*判断日用品类库存量是否为2种以上(含2种)低于100*/{printf("日用品\n");printf("________\n");}if((a[2]<100)&&(a[2]>=2)) /*判断食品类库存量是否为2种以上(含2种)低于100*/{printf("食品\n");printf("________\n");if((a[3]<100)&&(a[3]>=2)) /*判断办公用品类库存量是否为2种以上(含2种)低于100*/{printf("办公用品\n");printf("________\n");}}int main(int argc, char* argv[]){struct good *p1,*p2; /*定义结构体指针类型*/while(1){printf("***********************************************\n");printf("1 ----------输出查看或者修改已存信息-----------\n");printf("-----------------------------------------------\n");printf("2 -----重新输入新信息(并且删除原有信息)------\n");printf("-----------------------------------------------\n");printf("3 统计商品信息(如果您还没有查看过信息请先按1)\n");printf("-----------------------------------------------\n");printf("4 -------------------退出---------------------\n");printf("***********************************************\n");scanf("%d",&m);if(m==1)shuchu(); /*调用输出信息函数*/if(m==2){system("cls");head=createlist(); /*调用建立链表函数*/}if(m==3){printf("统计结果如下\n");head=paixu(head); /*调用链表排序函数*/ jisuan(); /*调用计算函数*/ shunxudayin(); /*调用顺序打印函数*/ tongji1(); /*调用统计1函数*/tongji2(); /*调用统计2函数*/}if(m==4){p1=head;while(p1!=NULL) /*判断遍历链表结束条件*/ {p2=p1->next;free(p1); /*释放空间*/p1=p2;}break;}}return 0; /*结束程序*/ }5)调试分析过程描述:测试数据:01 milk drink 2.5 box 502 apple fruit 3 kilo 2测试输出结果:存在问题的思考:源代码出错,漏了一些分号导致程序频频出错,在进行编写时注意小地方别出错!否则会影响大局!6)总结:学习体会与收获:通过这个超市管理系统程序设计实验,我从理论知识跨越到实践上,感到收效良多,从崇拜计算机到学会控制计算机,在心理上不再觉得计算机是万能的,人的大脑才是万能的,算法才是万能的数学才是万能的,在这次实验中,实现一个完整的程序大大加深了我对C语言课程的兴趣!对C语言课程设计的认识以及自己的建议:C语言课程设计就是通过编译实现需要的功能的一种程序的设计,建议自己以后在这方面多下功夫,真正实现自己编译以个完整的C程序,实现自己的梦想和未来!。
(店铺管理)超市商品信息系统设计报告及程序C语言苏州科技学院二○一三~二○一四学年第一学期电子与信息工程系课程设计报告书课程名称:程序设计基础实践班级:学号:姓名:指导教师:二○一三年十二月1.题目《超市商品信息管理系统》的设计与实现2.功能(1)每一条记录包括一个商品的ID、名称、价格、保质日期。
(2)信息录入功能:可以完成信息记录的追加与插入。
(3)信息排序功能:按商品ID、商品价格进行排序。
(4)信息查询功能:完成按商品ID、商品名称查找商品记录,并显示。
(5)读取功能:将保存在文件中的商品记录读取出来。
(6)修改信息功能:按商品的ID进行读取未修改前的数据,输入新信息,保存。
(7)删除功能:按商品ID删除商品信息记录,并保存。
(8)退出:退出主菜单,退出程序。
3. 系统流程图4.设计内容整个系统除了主函数外,另外还有13个函数,实现八大功能:录入功能(追加、插入)、显示功能、查询功能、排序功能、删除功能、保存功能、读取功能。
各个函数的详细设计说明分别如下:4.1主函数main()利用无限次循环while (select!='0')和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
4.2菜单选择函数void DisMainMenu();这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的七大功能,根据每个功能前面的序号进行选择。
等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!4.3信息录入函数int InformationInput(GOODS goo[],int cn)这是一个含参函数,用来执行商品信息的追加、插入。
其中GOODS goo[]是结构体数组,cn是本次录入商品记录的总数。
信息录入函数的流程图如下:信息录入函数的程序如下:int InformationInput(GOODS goo[],int cn){int number,i,m,n,a1,j,a2=0;char a3;printf("\n请输入本次录入的商品品种的总数: ");scanf("%d",&number);if(number>MAX_NUM-cn){printf("您输入的人数太多,大于%d人!\n",MAX_NUM-cn);system("pause");return(0);}printf("\n****1. 信息的追加****\t****2.信息的插入****\n");scanf("%d",&m);if(m==1){for(i=cn;i<number+cn;i++){printf("\t商品ID :\t");scanf("%d",&goo[i].ID);printf("\t商品名称:\t");fflush(stdin);scanf("%s",goo[i].name);for(j=0;j<i;j++){if(goo[j].ID==goo[i].ID || strcmp(goo[j].name,goo[i].name)==0){printf("\n警告:您输入的商品ID或商品名称与已有的数据文件相同,是否继续Y / N ?");fflush(stdin);scanf("%c",&a3);if(a3=='Y'||a3=='y')break;elsereturn(0);}elsecontinue;}printf("\t商品单价:\t");scanf("%f",&goo[i].price);printf("\t商品保质日期:\t");scanf("%d%d%d",&goo[i].guarant.year,&goo[i].guarant.month,&goo[i].guaran t.day);printf("\n");}printf("\n本次输入的信息是:\n");DisplayInformation2(goo,cn,cn+number);printf("\n");return(number+cn);}else if(m==2){printf("该数据插入在商品ID ? 之前: ");scanf("%d",&n);for(i=0;i<cn;i++){if(goo[i].ID==n){a1=i;break;}elsecontinue;}if(i<=cn-1){for(i=cn-1;i>=a1;i--){goo[i+number].ID=goo[i].ID;strcpy(goo[i+number].name,goo[i].name);goo[i+number].price=goo[i].price;goo[i+number].guarant.year=goo[i].guarant.year;goo[i+number].guarant.month=goo[i].guarant.month;goo[i+number].guarant.day=goo[i].guarant.day;}for(i=a1;i<a1+number;i++){printf("\t商品ID :\t");scanf("%d",&goo[i].ID);printf("\t商品名称:\t");fflush(stdin);scanf("%s",goo[i].name);printf("\t商品单价:\t");scanf("%f",&goo[i].price);printf("\t商品保质日期:\t");scanf("%d%d%d",&goo[i].guarant.year,&goo[i].guarant.month,&goo[i].guaran t.day);printf("\n");}for(i=a1;i<a1+number;i++){for(j=0;j<a1;j++){if(goo[j].ID==goo[i].ID || strcmp(goo[j].name,goo[i].name)==0){printf("\n警告:您输入的商品ID或商品名称与已有的数据文件相同,是否继续Y / N ?");fflush(stdin);scanf("%c",&a3);if(a3=='Y'||a3=='y'){break;break;}elsereturn(0);}elsecontinue;}for(j=a1+number;j<cn+number;j++){if(goo[j].ID==goo[i].ID || strcmp(goo[j].name,goo[i].name)==0){printf("\n警告:您输入的商品ID或商品名称与已有的数据文件相同,是否继续Y / N ?");fflush(stdin);scanf("%c",&a3);if(a3=='Y'||a3=='y'){break;break;}elsereturn(0);}elsecontinue;}}printf("\n本次输入的信息是:\n");DisplayInformation2(goo,a1,a1+number);printf("\n");return(number+cn);}else{printf("\n输入插入位置有误,请查询数据文件后重新插入!");system("pause");return(0);}}else{printf("输入错误!");return(0);}}4.4信息排序函数void Sort(GOODS goo[],int max);这是一个不返回值的有参函数,形参为max,负责对全部商品信息分别按商品ID、价格运用“冒泡法”进行升序排序。
商品管理信息系统#include "stdio.h"#include "string.h"#define NAME_MAX_LEN 20#define Prod_MAX_NUM 50typedef struct{int num;char name[NAME_MAX_LEN];double unitprice;int amount;double totalprice;}prodNode;typedef struct sequence{prodNode data[Prod_MAX_NUM];int len;}seq;seq product;void inputGoods(){int i,n;printf("请输入商品个数:\n");scanf("%d",&n);if (n<0)return;for (i=0;i<n;i++){printf("请输入第%d个商品记录。
\n",i+1);printf("输入商品的编号:\n");scanf("%d",&product.data[i].num);printf("输入商品的名字:\n");scanf("%s",product.data[i].name);printf("输入商品的单价:\n");scanf("%lf",&product.data[i].unitprice);printf("输入商品的数量:\n");scanf("%d",&product.data[i].amount);product.data[i].totalprice=product.data[i].unitprice*product.data[i].amount;}product.len=n;}void outputGoods()int i;if (product.len==0){printf("\n无数据!\n");return;}printf("\n商品的记录为:\n");printf("编号\t名字\t单价\t数量\t总价\n");for (i=0;i<product.len;i++){printf("%d\t%s\t%lf\t%d\t%.2lf",product.data[i].num,product.data[i].name,product.data[i].unitpric e,product.data[i].amount,product.data[i].totalprice);printf("\n");}}void saveGoods(){int i;FILE *fp;if (product.len==0){printf("\n无数据!\n");return;}fp=fopen("d:\\商品管理信息系统\\goods.txt","w");if (fp==NULL){printf("文件打开失败!\n");return;}for (i=0;i<product.len;i++){ fprintf(fp,"\n");fprintf(fp,"%d\t",product.data[i].num);fprintf(fp,"%s\t",product.data[i].name);fprintf(fp,"%lf\t",product.data[i].unitprice);fprintf(fp,"%d\t",product.data[i].amount);fprintf(fp,"%.2lf",product.data[i].totalprice);}fclose(fp);printf("已成功存盘!\n");void readGoods(){int i;FILE *fp;fp=fopen("d:\\商品管理信息系统\\goods.txt","r");if (fp==NULL){printf("文件打开失败!\n");return;}i=0;while (!feof(fp)){fscanf(fp,"%d",&product.data[i].num);fscanf(fp,"%s",product.data[i].name);fscanf(fp,"%lf",&product.data[i].unitprice);fscanf(fp,"%d",&product.data[i].amount);fscanf(fp,"%lf",&product.data[i].totalprice);i++;}product.len=i;fclose(fp);printf("已从文件成功读取%d条成绩记录!\n",product.len); }void insertOneGoods(){prodNode G;int i,pos;if (product.len==Prod_MAX_NUM){printf("表已满!\n");return;}printf("请输入插入位置:");scanf("%d",&pos);if (pos<0||pos>product.len){ printf("插入位置出错!\n");return;}printf("请输入要插入的商品记录:\n");printf("请输入编号:");do {scanf("%d",&G.num);if (G.num<=0)printf("输入的编号不合理,请重新输入。
目录1 系统分析 (2)1.1 课程设计内容 (2)1.2 系统功能需求分析 (2)1.3 数据结构设计 (3)2 系统设计 (3)2.1 总体设计 (3)2.2 详细设计 (4)2.2.1 界面设计 (4)2.2.2 各功能模块的设计 (6)3 系统编码设计 (9)3.1 main函数 (9)4 系统运行 (22)5 总结 (26)1 系统分析1.1 课程设计内容商场商品信息管理系统1.2 系统功能需求分析本系统应具有以下功能:1、文件操作功能文件操作:可建立、打开、保存、关闭数据文件。
如果是新建的文件,可输入商品信息数据:数据包括商品编号、商品名、商品类别、商品数量、商品价格等。
2、数据输入功能输入进货信息:输入商品编号、数量完成进货操作。
输入销售信息:输入商品编号、数量完成销售操作,注意当销售数量大于商品数量时,应出现错误提示。
3、数据添加、修改、删除功能添加:添加一种或多种新商品,并能输入其商品信息。
修改:修改商品信息,可包括商品编号、名称、种类、数量和单价。
删除:删除一类或多类商品的所有信息。
4、计算功能可通过查询商品信息功能,自动计算并输出需要进货的商品信息。
5、查询功能可分别按商品编号、名称、类别和需要进货的商品进行查询。
6、排序功能可分别按商品编号、名称、类别等进行排序。
7、数据显示功能可分别浏览输入、查询和排序后的商品信息。
1.3 数据结构设计struct goods /*商品结构体*/{ long int num; /*商品编号*/char name[20]; /*商品名称*/char sort[20]; /*商品类别*/long int count; /*商品库存量*/long int price; /*商品单价*/}goods[200]; /*最多200个商品*/2 系统设计2.1 总体设计按系统分析的功能要求将系统划分为以下几个主要功能模块:一、文件管理⏹文件打开、关闭:对于刚输入或进行操作后的商品信息,在建立新的商品库存量后,可以把其保存在一个文件中,并对该文件可进行打开和关闭操作。
二、进出货管理⏹商品进货: 输入数据后商品信息能自动更新进行添加⏹商品销售: 输入数据后商品信息能自动更新进行减少三、商品数据管理⏹增加/删除商品: 添加或删除某条商品的信息⏹修改商品信息: 对某条商品的信息进行修改四、浏览商品信息管理⏹查询商品信息:可分别按商品编号、名称、类别或需要进货商品查询⏹排序商品信息: 可按商品编号、名称、类别分别排排序⏹浏览商品信息:可浏览输入、查询或排序后的数据。
(此处可用图形描述功能模块划分,类似下图)2.2 详细设计2.2.1 界面设计1、菜单设计⏹欢迎界面:⏹系统提示:商场商品信息管理系统商品数据管理浏信览息商管品理文件管理进出货管理打开关闭保存查询数据输入数据排序数据修改添加出货进货删除菜单设计:2、输入界面的设计3、信息显示界面的设计2.2.2 各功能模块的设计根据划分的功能模块,定义以下函数实现各功能:(这部分应介绍各函数的原型,各功能模块实现所用的算法,可用流程图描述)1、主函数main()定义主函数为空类型(void);利用选择结构(switch)实现在在主函数中的调用各个子函数,利用goto 和子函数中的return语句实现返回主菜单的循环。
声明各个子函数输出欢迎界面输出菜单switch(m)1 输入商品信息2 排序商品信息3 输入商品进货信息4 输入商品销售信息5 增加/删除商品6 修改商品信息7 查询商品信息8 浏览商品信息9 保存商品信息清屏幕2、子函数(1)void input():< 输入函数 >确定新的库存量n,输入商品信息,用for循环语句直到输入商品种类等于n,结束输入;(2)void sequence():< 排序函数 >对已有的商品进行排序,可按商品编号、名称、类别进行排序;(3)void purchase():< 进货函数 >进货函数主要是针对已有库存的商品,在原来的商品数量再增加:(4)void sale():< 销售函数 >要求用户输入所销售的编号,系统用for 循环查询该商品是否存在,不存在要求再进行输入,直到输入正确,输出销售商品:(5)void edit():< 添加/删除商品 >因为在进货函数已经实现对已有商品的数量的增加,此模块函数主要实现对新商品的添加或对旧商品的删除,并自动处理数据,可以在浏览中输出,用选择语句switch进行俩者操作的选择:(6)void correct():< 修改数据函数 >对有错误信息商品进行修改,输入需要修改的商品编号,用for 循环与if语句找到此商品,重新输入该商品的新信息,并输出:(7)void search():< 查询函数 >用switch(k)语句可分别按商品编号、名称、类别或需要进货商品查询;每个case 选择中均用for语句查找要查询的商品,并输出查询结果。
(8)void scan():< 浏览商品函数 >可分别进行浏览输入的商品信息、查询的商品信息、排序后商品信息,用switch 进行这三种方式的选择。
(9)void reserve():< 保存文件 >建立文件FILE *fp;char file[15]用来存放文件保存路径以及文件名,进行清屏,输入文件路径及文件名,利用fp=fopen("file","w+")实现创建并打开一个文件,并得到该文件的地址的功能,显示fprintf(fp,"商品编号\t商品名 \t 商品类别\t商品数量\t商品价格\n"); 最后输出已保存文件,程序中是由PR("商品编号\t商品名 \t商品类别\t商品数量\t商品价格\n");语句执行。
3 系统编码设计(这部分将代码列出,注意,每个函数开始处要介绍函数的功能,重要的代码应有注释,代码格式按锯齿式编排)3.1 main函数#include"stdio.h"#include"string.h"#include"stdlib.h"#define PR printf#define SC scanfstruct goods{long int num;char name[20];char sort[20];long int count;long int price;}goods[200];int k,n,i;void main (){void input();void sequence();void purchase();void sell();void edit();void correct();void search();void scan();void reserve();void exit();PR("\n******************************************************************\n *\t\t\t\t\t\t\t\t *\n");PR(" * ▏▎▍▌ ▋▊█ ▇▆▅▄ ▃▂▁*");PR("\n *\t\t\t\t\t\t\t\t *\n * Welcome\t\t\t\t\t\t *\n *\t\t\t\t\t\t\t\t *\n");PR(" *\t\t to go into ....\t\t\t\t * ");PR("\n *\t\t\t\t\t\t\t\t *\n");PR(" * -the Goods Information Manageaent System- *\n *\t\t\t\t\t\t\t\t *\n ");PR(" * ▁▂▃▄ ▅▆▇█ ▉▊▋▌ ▍▏*\n");PR(" *\t\t\t\t\t\t\t\t *\n ******************************************************************");PR("\n\n\tPlease press any key to continue:");getch();system("cls");PR("\n\n ---$-----$--------$----------$-----------$---------$-------$------$-----$---");PR("\n 系统使用--温馨提示:\n\n →商品编号、数量、单价:采用十进制数,规定长度最长为8位;\n\n →商品名称为26位字母组成字符串,长度最长为20位;\n\n\t →商品类别:以26个小写字母分别代表着26种商品类别;\n\n\t →该商品需要进货的库存量:count<50;\n");PR(" ---$-----$--------$----------$-----------$---------$-------$------$-----$---");PR(" \nplease press any key to continue");getch();system("cls"); /*清屏*/lp: for(i=0;i<1;i++)PR("\n\n——★—☆——★—☆——☆—★——☆—★——☆—☆——★—\n");PR("\n\t\t\t 商品信息管理系统\t\n\n");PR("\t 1 →输入商品信息\n\n");PR("\t 2 →排序商品信息\n\n");PR("\t 3 →输入进货信息\t\t6 →修改商品信息\n\n");PR("\t 4 →输入销售信息\t\t7 →查询商品信息\n\n");PR("\t 5 →增加/删除商品\t\t8 →浏览商品信息\n\n");PR("\t\t\t\t\t9 →保存商品信息\n\n");PR("\t\t ——☆—★——☆—★——☆—☆——★—☆——★—☆——★—");/*菜单选择界面*/PR("\n\n");PR("\t请选择您所要的操作(或选择(0)退出):");SC("%d",&k);system("cls");switch(k) /*用switch语句实现功能选择*/{case 1: input();break;case 2: sequence();break;case 3: purchase();break;case 4: sell();break;case 5: edit();break;case 6: correct();break;case 7: search();break;case 8: scan();break;case 9: reserve();break;case0: PR("\n\n\t / / / / / ^_^ \\ \\ \\ \\ \\ \n\n\t…………谢谢使用,欢迎再来,再见O(∩_∩)O…………");exit(0); /*退出系统*/default: puts("输入错误,请按任意健返回主菜单:\n"); break;}system("cls"); /*清屏*/goto lp; /*返回主界面*/}void input() /*功能1:输入商品信息*/{PR("\n 请输入需要建立新库存的商品种类数量:");SC("%d",&n);system("cls");PR("\n …………………………………………………………………………………………………\n");for(i=0;i<n;i++) /*用循环实现输入n个商品*/{PR("\n\t*请输入商品的编号:");SC("%ld",&goods[i].num);PR("\n\t 请输入商品的名称:");SC("%s",goods[i].name);PR("\n\t 请输入商品的种类:");SC("%s",goods[i].sort);PR("\n\t 请输入商品的数量:");SC("%d",&goods[i].count);PR("\n\t 请输入商品的单价:");SC("%d",&goods[i].price);PR("\n …………………………………………………………………………………………………\n");}PR("\tPlease press any key to continue:");getch();return; /*返回主界面*/}void sequence() /*功能2:排序商品信息*/{long temp;char p1[30],p2[30];for(k=0;k<n-1;k++) /*(1): 按编号排序*/for(i=0;i<n-k-1;i++) /*用起泡法排序*/if(goods[i].num>goods[i+1].num) /*按编号由小到大排序*/{temp=goods[i].num;goods[i].num=goods[i+1].num;goods[i+1].num=temp;strcpy(p1,goods[i].name);strcpy(goods[i].name,goods[i+1].name);strcpy(goods[i+1].name,p1);strcpy(goods[i].sort,goods[i+1].sort);strcpy(goods[i+1].sort,p2);}PR("--------------------------------------------------------------------------------");PR("\n\t\t按商品编号排序后的商品信息\n\n");PR("\t商品编号商品名称商品类别商品数量商品单价\n"); /*输出排序后商品信息*/for(i=0;i<n;i++){PR("\t %5ld %5s %5s %5ld %5ld\n",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);}for(k=0;k<n-1;k++) /*(2): 按商品名称排序*/for(i=0;i<n-k-1;i++)if(strcmp(goods[i].name,goods[i+1].name)>0){strcpy(p1,goods[i].name);strcpy(goods[i].name,goods[i+1].name);strcpy(goods[i+1].name,p1);temp=goods[i].num;goods[i].num=goods[i+1].num;goods[i+1].num=temp;strcpy(p2,goods[i].sort);strcpy(goods[i].sort,goods[i+1].sort);strcpy(goods[i+1].sort,p2);}PR("--------------------------------------------------------------------------------");PR("\n\t\t按商品名称排序后的商品信息\n");PR("\n\t商品名称商品编号商品类别商品数量商品单价\n"); /*输出排序后商品信息*/for(i=0;i<n;i++){PR("\t %5s %5ld %5s %5ld %5ld\n",goods[i].name,goods[i].num,goods[i].sort,goods[i].count,goods[i].price);}for(k=0;k<n-1;k++) /*(3): 按商品类别排序*/for(i=0;i<n-k-1;i++) /*用起泡法排序*/if(strcmp(goods[i].sort,goods[i+1].sort)>0){strcpy(p2,goods[i].sort);strcpy(goods[i].sort,goods[i+1].sort);temp=goods[i].num;goods[i].num=goods[i+1].num;goods[i+1].num=temp;strcpy(p1,goods[i].name);strcpy(goods[i].name,goods[i+1].name);strcpy(goods[i+1].name,p1);}PR("--------------------------------------------------------------------------------");PR("\n\t\t按商品类别排序后的商品信息\n\n");PR("\t商品类别商品编号商品名称商品数量商品单价\n"); /*输出排序后商品信息*/for(i=0;i<n;i++){PR("\t %5s %5ld %5s %5ld %5ld\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);}PR("--------------------------------------------------------------------------------");PR("please press any key to continue:");getch();return; /*返回主界面*/}void purchase() /*功能3:进货商品信息*/{long temp; /*定义临时变量表示刚进货的商品编号*/int j;PR("\n\t\5请输入刚进货的商品编号:");SC("%ld",&temp);PR("\n\t\5请输入刚进货的商品数量:");SC("%d",&j);PR("\n\n\n\tpress any key to contiue:");getch();system("cls");PR("\n\t输出进货后的商品信息:");for(i=0;i<n;i++) /*循环,寻找与进货相同的商品信息*/if(temp==goods[i].num)goods[i].count=goods[i].count+j; /*自动更改商品数量*/ PR("\n\t商品编号商品名商品类别商品数量商品价格");for(i=0;i<n;i++) /*循环,输出进货后的商品信息*/{PR("\n\t %4ld %4s %4s %ld %4ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);}PR("\n\n\t\tPress any key to enter menu:");getch(); /*返回功能选择界面*/return;}void sell() /*功能4:销售商品信息*/{long temp; /*定义临时变量temp表示刚销售的商品编号*/int j;PR("\n\t\5请输入刚销售的商品编号:");SC("%ld",&temp);PR("\n\t\5请输入刚销售的商品数量:");SC("%d",&j);for(i=0;i<n;i++) /*循环,找到刚销售的商品信息*/{if(temp==goods[i].num){for(;j>goods[i].count;) /*如果销售额大于库存量,则出现错误提示*/{PR("\n\t售出数量大于商品原有数量,出现错误,请重新输入:");SC("%d",&j);}goods[i].count=goods[i].count-j; /*完成自动更改商品数量的功能*/}}PR("\n\tpress any key to contiue:");getch();system("cls"); /*清屏*/PR("\n\n *销售后商品信息:");PR("\n\t商品类别商品编号商品名称商品数量商品单价\n");for(i=0;i<n;i++) /*循环,输出销售后商品信息*/{PR("\t %4s %4ld %4s %4ld %4ld\n",goods[i].sort,goods[i].num,goods[i].name,goods[i].count,goods[i].price);}PR("\n\tPress any key to enter menu:");getch();return; /*返回功能选择界面*/}void edit() /*功能5:添加或删除商品信息*/{void add(); /*声明子函数*/void dele();PR("\n\t请选择:1.添加商品信息; 2.删除商品信息;");PR("\t*请输入1或2 继续:");SC("%d",&k);switch(k) /*用switch语句实现功能选择*/{case 1: add();break;case 2: dele();break;}getch();return; /*返回主菜单*/}void add() /*添加商品信息*/{/*定义子函数*/PR("\t*请输入所添加商品的商品编号:");SC("%ld",&goods[n].num);PR("\n\t请输入所添加商品的名称:");SC("%s",goods[n].name);PR("\n\t请输入所添加商品的类别:");SC("%s",goods[n].sort);PR("\n\t请输入所添加商品的数量:");SC("%d",&goods[n].count);PR("\n\t请输入所添加商品的价格:");SC("%d",&goods[n].price);n=n+1;PR("\n");}void dele() /*删除商品信息*/{/*定义子函数*/int temp; /*定义局部变量*/int j;for(i=0;i<n;i++){PR("\n\t商品编号商品名商品类别商品数量商品价格");PR("\n\t %5ld %5s %5s %5ld %5ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);PR("\n");}PR("\n");PR("\n*请输入要删除的商品编号:");SC("%ld",&temp);PR("\n\n");for(i=0;i<n;i++){if(temp==goods[i].num){for(j=i;j<n;j++){goods[j].num=goods[j+1].num;strcpy(goods[j].name,goods[j+1].name);strcpy(goods[j].sort,goods[j+1].sort);goods[j].count=goods[j+1].count;goods[j].price=goods[j+1].price;}n=n-1; /*商品总库存量减少*/}}for(i=0;i<n;i++){PR("\n\t商品编号商品名商品类别商品数量商品价格"); /*输出删除后的商品信息*/PR("\n\t %5ld %5s %5s %5ld %5ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);PR("\n");}PR("Please press any key to continue:");getch();return; /*返回主界面*/}void correct() /*功能6:修改商品信息*/{long temp; /*定义局部变量*/PR("\n\t请输入要修改的商品的编号:");SC("%ld",&temp); /*输入新的商品信息*/PR("\n");for(i=0;i<n;i++) /*保存新的商品信息*/{if(temp==goods[i].num){PR("\t请输入一个新的的商品编号:");SC("%ld",&goods[i].num);PR("\n\t请输入新的商品的名称:");SC("%s",goods[i].name);PR("\n\t请输入新的商品的类别:");SC("%s",goods[i].sort);PR("\n\t请输入新的商品的数量:");SC("%d",&goods[i].count);PR("\n\t请输入新的商品价格:");SC("%d",&goods[i].price);PR("\n");}}for(i=0;i<n;i++){PR("\n\t新的商品名称商品编号商品类别商品数量商品单价\n");PR("\t %4s %4ld %4s %4ld %4ld",goods[i].name,goods[i].num,goods[i].sort,goods[i].count,goods[i].price);PR("\n");}PR("Please press any key to continue:"); /*返回功能选择界面*/getch();return; /*返回主菜单*/}void search() /*功能7:查询商品信息*/{int k; /*定义局部变量*/long temp1;char temp2[30],temp3[20];PR("\n\t\5按商品编号查询,请按1\t\t\t\5按商品名查询,请按2\n\t\5按商品类别查询,请按3\t\t\t\5查需要进货的商品,请按4\n");PR("\n\n\n\t\t\t请输入数字确定查询方式:");SC("%d",&k);PR("\n");PR("Press any key to continue:");getch();system("cls");switch(k) /*实现查询方式的选择*/{case 1:{ PR("\n\n\n\n\n\t\t请输入要查询的商品的编号:"); /*按商品编号查询*/SC("%ld",&temp1);system("cls"); /*清屏*/for(i=0;i<n;i++){if(temp1==goods[i].num){PR("\n");PR("\n\t商品编号商品名商品类别商品数量商品价格");PR("\n\t %5ld %5s %5s %5ld %5ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);}}}break; /*跳出switch语句*/case 2:{ PR("\n\n\n\n\n\t\t请输入要查询的商品名:"); /*按商品名查询数据*/SC("%s",temp2);system("cls");for(i=0;i<n;i++){if(strcmp(temp2,goods[i].name)==0){PR("\n");PR("\n\t商品编号商品名商品类别商品数量商品价格");PR("\n\t %5ld %5s %5s %5ld %5ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);}}}break; /*跳出switch语句*/case 3:{PR("\n\n\n\n\n\t\t请输入要查询的商品类别:"); /*按商品类别查询数据*/SC("%s",temp3);system("cls");for(i=0;i<n;i++){if(strcmp(temp3,goods[i].sort)==0){PR("\n");PR("\n\t商品编号商品名商品类别商品数量商品价格");PR("\n\t %5ld %5s %5s %5ld %5ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);}}}break; /*跳出switch语句*/case 4:{int a=50;for(i=0;i<n;i++) /*查询需要进货的商品名*/{if(goods[i].count<a)PR("\n\t\t\4需要进货的商品名:%s 现有库存量:%ld\n",goods[i].name,goods[i].count);}}break; /*跳出switch语句*/}PR("\n\n\t\tPress any key to enter menu:");getch();return; /*返回主界面*/}void scan() /*功能8:浏览商品信息*/{PR("\n\t浏览输入的商品信息,请按1\n\n\t浏览查询的商品信息,请按2\n\n\t浏览排序后商品信息,请按3\n");PR("请选择:");SC("%d",&k);switch(k){case 1:{ PR("\t\t\t浏览输入的商品信息\n");PR("\t商品编号商品名商品类别商品数量商品价格\n");/*输出浏览商品信息*/for(i=0;i<n;i++){PR("\t%5ld %5s %5s %5ld %ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);PR("\n");}PR("Press any key to enter menu:");getch();return;}break; /*跳出switch语句*/case 2:{ PR("\t\t\t浏览查询的商品信息\n");PR("\t商品编号商品名商品类别商品数量商品价格\n");/*输出浏览商品信息*/for(i=0;i<n;i++){PR("\t%5ld %5s %5s %5ld %ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);PR("\n");}PR("\nPress any key to enter menu:");getch();return;}break; /*跳出switch语句*/case 3:{ PR("\t\t\t浏览按商品编号排序的商品信息\n");PR("\t商品编号商品名商品类别商品数量商品价格\n");/*输出浏览商品信息*/for(i=0;i<n;i++){PR("\t%5ld %5s %5s %5ld %ld",goods[i].num,goods[i].name,goods[i].sort,goods[i].count,goods[i].price);PR("\n");}PR("\nPress any key to enter menu:");getch();return; /*返回主界面*/}break; /*跳出switch语句*/}}void reserve() /*功能9:保存文件*/{FILE *fp;char file[15]; /*用来存放文件保存路径以及文件名*/system("cls"); /*清屏*/PR("\n\t*请输入文件路径及文件名:");SC("%s",file);fp=fopen("file","w+"); /*创建并打开一个文件,并得到该文件的地址*/ fprintf(fp,"商品编号\t商品名\t商品类别\t商品数量\t商品价格\n");PR("商品编号\t商品名\t 商品类别\t 商品数量\t 商品价格\n");for(i=0;i<n;i++){fprintf(fp,"%ld\t\t%s\t\t%s\t\t%d\t\t%d\n",goods[i].num,goods[i].name,goods[i].sort,g oods[i].count,goods[i].price);PR("%ld\t\t%s\t\t%s\t\t%d\t\t%d\n",goods[i].num,goods[i].name,goods[i].sort,goods[i ].count,goods[i].price);}fclose(fp); /*关闭文件*/PR("文件已经保存!\n");getch();system("cls"); /*清屏*/}void quit() /*退出系统*/{exit(0);}4 系统运行1、输入新商品操作:首先由主菜单选择"1"进入运行input函数,清屏进入input函数界面,提示我们要进行商品信息的输入,包括商品编号、名称、种类、数量和单价,利用for 输入完成后,显示出“Please press any key to continue”,再按任意健可返回主菜单,其运行界面如下:2、商品排序操作:主菜单选择"2"可调用sequence函数,进入商品信息排序界面,其结果会自动显示出来,如下图所示:3、进出货操作:由主菜单选择"3"或"4",转入调用purchase 或sale函数中,清屏,出现进货或出货新页面,屏幕显示要求我们按照商品编号,输入需要进货的商品的数量,销售商品操作界面即要我们输入已销售商品的数量,当系统出现"please press any key to continue" 提示我们进出货操作已完成,数据已自动进行更改,按任意键可输出更新后的数据,再按任意键即可返回主菜单,其操作界面如下:4、添加或删除商品此模块操作的主要功能是实现对新商品的添加或删除,由主菜单选择"5"可进入选择页面,它提供了添加或删除商品的选择,如选择"1"进行添加商品,接下来只要按要求分别输入商品编号、商品名称、商品类别、商品数量和价格,系统就会自动按我们的输入进行保存,其保存结果可以在查询或浏览函数中输出,输入完毕后,系统显示提示,按任意键便可返回主菜单。