超市商品管理c语言
(完整word版)c语言程序设计超市管理系统

实验题目:超市管理系统一、实验目的1.熟悉 c 语言的编译连接和运行过程。
2.掌握 c 语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。
3.掌握if 语句及switch 语句的运用方法及嵌套应用方法。
4.掌握实现循环结构的三种语句while 、do-while. 、for 的使用。
5.掌握函数的定义方法和调用方法。
6.能够采用模块化思想调试程序。
二.实验内容1.编写程序并进行调试运行。
2.输入商品资料,并保存于文件。
每件商品包含信息如:商品号、商品名、商品类别、商品总量、商品上限和下限、商品价格、进货日期、生产日期、保质期等。
3.对已存入的商品信息进行更新操作,包括添加一件商品信息、删除某件商品信息和修改商品信息。
4.通过按商品名、商品种类、商品进货量的方式查询商品信息。
5.输入某商品号后对其利润进行统计、对进货价格相同的商品进行统计。
6 对商品的库存量和利润进行排序。
7.最后输出商品信息,供需要时打印。
二、需求分析1.该程序可用于对商品的基本信息的存储、更新、查询、输出、统计、排序等操作,以实现管理者对商品的管理和消费者对商品的了解。
2.其中更新功能包括:添加信息、删除信息、修改信息、可根据需要添加一个或多件商品信息,也可对个别商品信息进行适当的删除或修改。
以便随时更新商品信息。
3.程序中设计的查询功能可根据需要从若干数据中查询某件商品信息,并且可根据三种不同的方法查询:按商品名查询、按商品种类查询和按商品进货量查询。
以满足不同的需要。
四、概要设计1、方案设计对系统进行分析,给出结构图分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计—自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计结构图如下:超市管理管理系统查询模块排序模块退出系统退出系统查询模块排序模块统计模块*更新模块*输出信息¥录入信息按商品名查询利润排行库存量排行退出系统第二类商品第一类商品退出系统2 •功能模块说明:对各个模块进行功能的描述(1).输入模块:录入需要管理的商品信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。
C语言超市商品管理系统

题目:超市商品管理系统2.2 详细设计 (3)2.2.1 数据结构设计 (3)2.2.2 主控流程 (3)2.2.3 信息输入模块 (4)2.2.4 信息增加模块 (4)2.2.5 信息修改模块 (4)2.2.6 信息删除模块 (4)2.2.7 信息查看模块 (4)2.2.8 信息统计模块 (4)2.2.9 函数功能描述 (4)实训报告3 系统实现 (5)3.1 编码 (5)3.1.1 程序预处理 (5)3.1.2 主函数main() (5)3.1.3 主菜单界面 (6)3.1.4 商品信息建立 (7)3.1.5 商品信息查看 (9)3.1.6 商品信息增加 (11)3.1.7 商品信息删除 (12)3.1.8 商品信息修改 (14)3.1.9 商品数目统计 (16)超市管理系统主界面2、系统设计2.1 总体设计本程序采用模块化设计方法,即将一个大任务分成一个个小任务,然后分别设计个小任务。
划分出来的模块相对独立而又相互关联,容易理解。
本程序由5大模块组成:1.输入信息模块2.增加信息模块3.修改信息模块4.删除信息模块5.统计信息模块2.2 详细设计定义结构体struct good{char unit[10]; /*商品单位*/int quantity; /*商品数量*/struct good *next; /*定义结构体指针类型*/ }*head,*p1,*p2;2.2.2 主控main()函数执行流程Int main()struct good *p1,*p2;while(1){if(m==1)printf("********************************商品信息的查看*******************************\n");if(m==2){入计出return 0;}本商品管理系统执行主流程。
它先以可读写的方式打开数据文件,此文件默认为“C:\goods list.txt”,若该文件不存在,则新建此文件。
超市商品管理系统C语言源代码

超市商品管理系统C语言源代码SANY GROUP system office room 【SANYUA16H-SANYHUASANYUA8Q8-#include <stdio.h>#include <math.h>#include <string.h>#include<conio.h>#include<stdio.h>#include<string.h>#define MAX 20#define PRINT1 printf("---------------------------------------------------------\n")#define PRINT2 printf("商品号--商品名称--商品种类--销售价格--生产日期(年-月-日)--保质期\n")#define PRINT3 printf("M%8s%8s崓----M\n",goods[i].num,goods[i].name,goods[i].kind,goods[i].out_price,goods[i ].pro_time.year,goods[i].pro_time.month,goods[i].pro_time.day,goods[i].s ave_day)int sum;struct date{int year;int month;int day;};struct goods_type /*定义结构体*/{int num;char name[10];char kind[10];int amount;int in_price;int out_price;struct date pro_time;int save_day;int profit;}goods[MAX];Save_Message(int sum); /*函数声明*/void Inquire_message(void);void Inquire_goodskind(void);void Inquire_goodsname(void);int Read_Message(void);void Renew_Messahe(void);void Revise_Message(void);void Delete_Message(void);void Insert_Message();void Show_Message(void);int Input_Message(void);void Count_Message();long Count_Profit();long Count_Amount();void Sort_amount(void);void Sort_Message(void);void Sort_Message(void){int choice;do{clrscr();printf("\n\n\n *******商品信息排行********\n\n");printf(" 1:按库存量排行\n\n");printf(" 0:返回主菜单\n\n");printf(" 请选择(0-1): ");scanf("%d",&choice);switch(choice){case 1:Sort_amount();break;case 0:break;}}while(choice!=0);}void Sort_amount(void) /*库存量排序*/{struct goods_type *p,*q[MAX];int i,j,k;clrscr();printf(" 库存排行");PRINT1;printf("\n\n排名商品号商品名称商品类别库存量\n\n"); p=goods;for(i=0;i<sum;i )q[i]=p ;for(i=0;i<sum;i ){k=i;for(j=i 1;j<sum;j )if(q[k]->amount<q[j]->amount)k=j;if(k!=i){p=q[i];q[i]=q[k];q[k]=p;}}for(i=0;i<sum;i ){printf(" %d ",i 1);printf(" %d ",q[i]->num);printf(" %s ",q[i]->name);printf(" %s ",q[i]->kind);printf(" %d \n ",q[i]->amount);}bioskey(0);}long Count_Amount() /*统计库存量*/ {int i,j=0,choice,count_num,Amount;char inquire_name[10];clrscr();printf("\n 请输入想要统计的商品号: "); scanf("%d",&count_num);for(i=0;i<sum;i )if(goods[i].num==count_num){Amount=goods[i].amount;printf("-------------------------"); printf(" 商品号库存量");printf("\n崓",goods[i].num,Amount); }elsej ;if(j==sum)printf("该商品信息不存在!!!");bioskey(0);}long Count_Profit() /*统计利润模块*/{int i,choice,j=0,count_num,profit;clrscr();printf("\n 请输入想要统计的商品号: ");scanf("%d",&count_num);for(i=0;i<sum;i )if(goods[i].num==count_num){profit=goods[i].out_price-goods[i].in_price;printf("\n 商品利润");printf("\n -------------------------------");printf("\n 商品号利润");printf("\n 崓\n",&goods[i].num,&profit);}elsej ;if(j==sum)printf("\n 该商品不存在!!!");printf("\n 按任意键返回主菜单!!");bioskey(0);}void Count_Message(void) /*统计模块*/{int choice;do{clrscr();printf("**************统计商品信息*************\n\n\n");printf("******* 1:统计库存量 ************\n\n\n"); printf("******* 2:统计利润 ************\n\n\n");printf("******* 0:返回主菜单 ************\n\n\n");printf("******* 请选择(0-2): ************\n\n\n");scanf("%d",&choice);switch(choice){case 1:Count_Amount();break;case 2:Count_Profit();break;case 0:break;}}while(choice!=0);}int Input_Message(void) /*输入模块*/{int i=0,s=MAX;char bd;clrscr();printf("开始输入商品信息.\n");printf("\n\n 商品信息:(最多 %d) \n",s);printf(" ===============================\n");do{printf("\n 第 %d 商品",i 1);printf("\n 商品号: ");scanf("%d",&goods[i].num);if(goods[i].num==0) break;printf("\n 商品名称: ");scanf ("%s",goods[i].name);printf("\n 商品种类: ");scanf ("%s",goods[i].kind);printf("\n 商品库存量: ");scanf ("%d",&goods[i].amount);printf("\n 进货价格: ");scanf ("%d",&goods[i].in_price);printf("\n 销售价格: ");scanf ("%d",&goods[i].out_price);printf("\n 生产日期(yyyy-mm-dd): ");scanf ("%d-%d-%d",&goods[i].pro_time.year,&goods[i].pro_time.month,&goods[i].pro_time. day);printf("\n 保质期: ");scanf ("%d",&goods[i].save_day);printf("继续输入信息,y or n ??");fflush(stdin);scanf("%c",&bd);if(bd=='y')i ;elsebreak;}while(i<MAX);printf("\n--%d 所有商品录入完毕!--\n\n\n",i 1);getch();printf(" 按任意键返回主菜单.");sum=i;printf("输入回车返回主菜单!!!");bioskey(0);}void Show_Message(void) /*显示输出模块*/{int i=0,j=0,count,page=7;clrscr();printf("\n\n --商品信息-- 在第 %d 页\n\n",page);PRINT2;PRINT1;do{if(goods[i].num!=0){j ;if(j%page!=0){PRINT3;PRINT1;}else{PRINT3;PRINT1;if(goods[i 1].num!=0){printf("按任意键继续!");bioskey(0);clrscr();printf("\n\n --------商品信息--------在第 %d 页\n\n", page);PRINT2;PRINT1;}}}i ;}while(goods[i].num!=0);printf("按任意键返回主菜单!!!!!");bioskey(0);}void Insert_Message(void)/*添加商品信息模块*/{int i=sum,j,flag=0;char choice;clrscr();printf("\n\n 添加一种新商品\n\n ");printf("\n-------------------------------------------------\n");do{goods[i].num= sum;printf("\n 新商品号:%d",goods[i].num);printf("\n 新商品名: ");scanf("%s",goods[i].name);printf("\n 新商品种类: ");scanf("%s",goods[i].kind);printf("\n 新商品数量: ");scanf("%d",&goods[i].amount);printf("\n 进价: ");scanf("%d",&goods[i].in_price);printf("\n 售价: ");scanf("%d",&goods[i].out_price);printf("\n 生产日期(yyyy-mm-dd): ");scanf("%d-%d-%d",&goods[i].pro_time.year,&goods[i].pro_time.month,&goods[i].pro_time. day);printf("\n 保质期: ");scanf("%d",&goods[i].save_day);i ;printf("\n\n 想继续添加商品吗?(Y/N)");fflush(stdin);choice=getch();if(choice=='y'||choice=='Y'){printf("继续");flag=1;}elseflag=0;}while(flag==1);printf("\n\n\n 按任意键返回主菜单.........");bioskey(0);}void Delete_Message(void)/*删除商品信息模块*/ {int i,j,numberkey,flag=0;char choice;printf("开始删除......\n\n");do{clrscr();printf("请输入你要删除的商品号: \n");scanf("%d",&numberkey);for(i=0;i<sum;i ){if(goods[i].num==numberkey){for(j=i;j<sum;j )goods[j]=goods[j 1];sum--;flag=1;printf("删除成功!!\n\n\n");break;}}if(flag==0){printf("不存在该商品信息!!!"); bioskey(0);}printf("\n\n是否继续输入(y/n)?\n");getchar();scanf("%c",&choice);}while(choice=='y'||choice=='Y');printf("\n按任意键返回");bioskey(0);}void Revise_Message(void)/*修改商品信息模块*/ {int i,j,flag,choice,revise_num;char ch;do{clrscr();printf("\n\n 开始修改...");printf("\n\n 请输入你想输入的商品号:\n");scanf("%d",&revise_num);for(i=0;i<sum;i ){if(goods[i].num==revise_num){printf("确定修改此商品信息吗?(y/n)");PRINT1;PRINT2;PRINT3;getchar();ch=getchar();if(ch='y'){printf("\n\n\n修改商品信息的哪一项?");printf("\n\n 1:商品名称");printf("\n\n 2:商品类型");printf("\n\n 3:销售价格");printf("\n\n 4:生产日期");printf("\n\n 5:保质期");printf("\n\n 请选择(0-5)\n");scanf("\n %d",&choice);switch(choice){case 1:printf("请输入修改后的商品名\n");scanf("%s",&goods[i].name);break;case 2:printf("请输入修改后的商品类型\n");scanf("%s",&goods[i].kind);break;case 3:printf("请输入修改后的商品销售价格\n"); scanf("%d",&goods[i].out_price);break; case 4:printf("请输入修改后的商品生产日期\n"); scanf("%d-%d-%d",&goods[i].pro_time.year,&goods[i].pro_time.month,&goods[i].pro_time. day);break;case 5:printf("请输入修改后的商品保质期\n");scanf("%d",&goods[i].save_day);break;case 0:break;}printf("修改商品信息:\n");PRINT2;PRINT3;}elsebreak;}elsej ;if(j==sum)printf("不存在该商品信息..");}printf("\n\n 继续修改商品信息吗(y/n)?");getchar();ch=getchar();if(ch=='y'){printf("继续.\n");flag=1;}elseflag=0;}while(flag==1);printf("修改完成!!\n\n");getch();}void Renew_Message(void) /*更新商品信息模块*/{int choice;do{clrscr();printf("\n\n*********更新商品信息*********"); printf("\n\n 1:添加商品信息.\n\n");printf("\n\n 2:删除商品信息.\n\n");printf("\n\n 3:修改商品信息.\n\n");printf("\n\n 0:返回上一级.\n\n");printf("\n\n 请选择(0-3): ");scanf("%d",&choice);switch(choice)case 1:Insert_Message();break;case 2:Delete_Message();break;case 3:Revise_Message();break;case 0:break;}}while(choice!=0);}int Read_Message(void) /*读取信息模块*/{FILE *fp;int i=0;if((fp=fopen("999.txt","rb"))==NULL){printf("\n\t 现在还没有保存全部信息,按回车键回到主菜单输入商品信息!!");printf("\n\t 按任意键返回!!!!\n");getch();return;}while(feof(fp)!=1){fread(&goods[i],sizeof(struct goods_type),1,fp);if(goods[i].num==0)break;elsei ;}fclose(fp);return(i);}void Inquire_goodsname(void)/*按商品名称查询*/{int i,j,choice;char namekey[10];j=0;printf("开始查询...");printf("请输入你要查询的商品号:\n");scanf("%s",namekey);for(i=0;i<sum;i )if(strcmp(goods[i].name,namekey)==0&&goods[i].num!=0)printf(" ---商品信息----");PRINT1;PRINT2;PRINT3;}elsej ;if(j==sum)printf("该商品不存在!");printf("按任意键返回主菜单.");getch();}void Inquire_goodskind(void)/*按商品类型查询*/{int i,j,choice;char kindkey[10];j=0;printf("开始查询...");printf("请输入你要查询的商品种类:\n");scanf("%s",kindkey);for(i=0;i<sum;i )if(strcmp(goods[i].kind,kindkey)==0&&goods[i].num!=0) {printf(" ---商品信息----");PRINT1;PRINT2;PRINT3;}elsej ;if(j==sum)printf("该商品不存在!");printf("按任意键返回主菜单.");getch();}void Inquire_Message(void) /*查询模块*/{int choice;do{printf("\n *****查询商品信息 ***** \n");printf("\n *****1:按商品名称.***** \n");printf("\n *****2:按商品种类.***** \n");printf("\n *****0:返回上一级.***** \n");printf("\n 请选择(0-2): ***** \n");scanf("%d",&choice);switch(choice){case 1:Inquire_goodsname();break;case 2:Inquire_goodskind();break;case 0:break;}}while(choice!=0);}Save_Message(int sum) /*保存模块*/{FILE *fp;int i;if((fp=fopen("999.txt","wb"))==NULL){printf("\n\n不能打开文件!\n\n");exit();}for(i=0;i<=sum;i )if(fwrite(&goods[i],sizeof(struct goods_type),1,fp)!=1) printf("写文件出错!");fclose(fp);}void main(void) /*主函数*/{int choice;clrscr();sum=Read_Message();bioskey(0);do{clrscr();printf("***************************************************\n");printf(" ************ 超市商品管理系统**************\n");printf(" ************\n");printf(" ************\n");printf(" ************\n");printf(" ****** 欢迎登陆******\n");printf(" ************\n");printf(" ************\n");printf(" ************\n");printf("***************************************************\n");printf("***************************************************\n");getchar ();clrscr();printf(" ***************超市商品管理系统***********\n\n"); printf(" ***** 1:输入商品信息 *****\n\n"); printf(" ***** 2:输出商品信息 *****\n\n"); printf(" ***** 3:更新商品信息 *****\n\n"); printf(" ***** 4:查询商品信息 *****\n\n"); printf(" ***** 5:统计商品信息 *****\n\n"); printf(" ***** 6:商品信息排序 *****\n\n"); printf(" ***** 0:退出系统 *****\n\n"); printf(" ***** 请选择(0-6): *****\n"); scanf("%d",&choice);switch(choice){case 1:Input_Message();break;case 2:Show_Message();break;case 3:Renew_Message();break;case 4:Inquire_Message();break;case 5:Count_Message();break;case 6:Sort_Message();break;case 0:break;}}while(choice!=0);Save_Message(sum);printf("\n-信息已经保存!-(file name:999.txt)\n");。
C语言课程设计-超市管理系统

3.设计结果与分析
在VC 6.0环境中输入源程序,在没有提示错误的情况下编译,生成.exe可执行文件。
①运行程序,会看到如图6所示界面。
运行主函数时,首先调用函数main
图6 程序主界面
这个界面是运行函数后首先出现的界面,运行函数时,该函数是一个菜单函数,用switch 语句来实现各功能模块的转移,出来该页面后用户可根据提示输入信息,从而实现各种目的。
②键盘输入1,进入商品详细目录用以显示全部商品详细信息
图7 显示信息界面
该页面用printf输出,在利用指针读出链表中数据并利用合理计算计算出净利润等数据,再用while语句进行循环输出部数据
图8 买卖信息界面
用scanf输入数据,用if语句和while语句来实现循环每一次修改的数据④输入3按回车会进入商品登陆页面,此页面用来登陆商品。
如图9所示
图9 登录信息界面
将数据登陆入链表个变量中
图10修改信息界面
6输入5按回车进入商品删除模块如图11所示
使用printf()函数和scanf( )函数,并且利用指针从而实现各种功能。
其中用到了while 循环语句,实现对链表中个数据的重写功能。
运行完后退出该函数
图11删除信息界面。
c语言超市管理系统报告书

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语言已学习了两个学期了。
c语言超市商品管理系统实训报告

超市商品管理系统实训报告1. 背景超市商品管理系统是为了提高超市的商品管理效率和服务质量而开发的一款软件系统。
传统的超市商品管理方式通常依赖于人工操作,存在着工作效率低下、易出错、信息不及时等问题。
为了解决这些问题,我们开发了一套基于C语言的超市商品管理系统。
2. 分析2.1 系统需求分析在进行系统设计之前,我们首先对超市商品管理的需求进行了全面的分析。
通过与超市管理员和员工的沟通和访谈,我们得出了以下主要需求:•商品信息管理:包括商品的录入、修改、查询和删除等功能。
•库存管理:包括库存数量的统计、调整和报警等功能。
•销售管理:包括销售记录的录入、查询和报表生成等功能。
•会员管理:包括会员信息的录入、修改、查询和积分计算等功能。
2.2 系统设计思路基于以上需求分析,我们设计了一套简单而实用的超市商品管理系统。
该系统采用模块化设计,分为以下几个模块:•商品信息模块:负责处理商品信息的录入、修改、查询和删除等操作。
•库存管理模块:负责处理库存数量的统计、调整和报警等操作。
•销售管理模块:负责处理销售记录的录入、查询和报表生成等操作。
•会员管理模块:负责处理会员信息的录入、修改、查询和积分计算等操作。
系统采用了文件存储方式,将商品信息、库存信息、销售记录和会员信息保存在不同的文件中,以便于数据的读取和修改。
系统还提供了简单的用户界面,方便管理员和员工进行操作。
3. 结果经过系统设计和开发,我们成功实现了超市商品管理系统。
该系统在测试中表现良好,满足了超市商品管理的基本需求,并具备以下特点:•界面友好:系统采用简洁直观的用户界面,方便用户进行操作。
•功能完善:系统实现了商品信息管理、库存管理、销售管理和会员管理等多个功能模块。
•数据准确:系统通过文件存储方式,保证数据的准确性和可靠性。
•操作简便:系统提供了简单易用的操作方式,降低了用户学习成本。
4. 建议虽然超市商品管理系统已经取得了一定的成果,但仍存在改进空间。
C语言程序设计超市管理系统

程序设计——超市管理系统学院:专业:班级:姓名:学号:指导老师:超市管理系统课程设计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题目描述 (1)2 系统分析 (1)2.1 题目要求 (1)2.2 输入/输出要求 (2)2.3 分析要处理的数据 (2)2.4 分析功能及其具体含义 (2)3 系统设计 (3)3.1 数据定义 (3)3.2 系统功能设计 (3)3.3 函数调用关系 (3)3.4 文件组织结构 (3)3.5设计过程的重点和难点设计过程的重点和难点 (4)4详细设计 (4)4.1流程图 (4)5 系统实现 (5)5.1源程序清单 (5)5.1.1 头文件 (5)5.1.2 主函数 (5)5.1.3 菜单 (10)5.2遇到的问题及解决 (11)5.3重点难点技术分析 (11)6 调试运行 (11)6.1测试和结果 (11)7 系统使用说明 (14)8 结论 (14)8.1课题完成情况说明 (14)8.2系统的亮点 (14)8.3系统的不足 (14)8.4系统可能的改进和扩展 (14)1题目描述假设某超市购物信息主要包括:会员编号,会员名,商品编号,商品名,商品价格,商品数量,商品日期等,本系统应能对这些基本信息进行管理,具有会员信息录入、查看、保存至文件、从文件中读出、增加购买信息,修改购买信息,删除购买信息,按商品项查询。
2 系统分析2.1 题目要求(1) 为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目;(2) 会员购买信息按记录完整地录入、查看、保存至文件、从文件中读出、查看各会员购买信息、增加购买信息,修改购买信息,删除购买信息,按商品项查询。
(3) 要求以上功能分别用函数实现。
并要求用C语言的文件操作语句将以上所有结果保存在文件wuyao.c中。
2.2 输入/输出要求(1) 应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。
进入每个操作后,根据程序的提示输入相应的信息;(2) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:超市商品管理院系:信息科技学院专业:通信工程姓名: XXX学号: XXX指导教师: 杨永清日期:2013年9月15日桂林电子科技大学信息科技学院超市商品管理本题目设计目得就是训练学生得基本编程能力,了解管理信息系统得开发流程,熟悉C语言得文件与单链表得各种基本操作。
本程序中涉及结构体、单链表、文件等方面得知识。
通过本程序得训练,使学生能对C语言得文件操作有一个更深刻得了解,掌握利用单链表存储结构实现对学生成绩管理得原理,为进一步开发出高质量得管理信息系统打下坚实得基础。
1、程序简介本程序用VC++6、0编译,运行于windows系统下。
实训报告1、1、本程序应具有以下功能:1、文件操作功能文件操作:可建立、打开、保存、关闭数据文件。
如果就是新建得文件,可输入商品信息数据:数据包括商品编号、商品名、商品类别、商品数量、商品价格等。
2、数据输入功能输入信息:输入商品编号、数量完成进货操作。
3、数据添加、修改、删除功能添加:添加一种或多种新商品,并能输入其商品信息。
修改:修改商品信息,可包括商品编号、名称、种类、数量与单价。
删除:删除一类或多类商品得所有信息。
4、计算功能可通过查询商品信息功能,自动计算并输出需要进货得商品信息。
通过商品数量及单价,自动计算出商品总价。
5、查询功能可分别按商品编号与需要进货得商品进行查询。
6、排序功能可分别按商品编号、金额等进行排序。
7、数据显示功能可分别浏览输入、查询与排序后得商品信息。
2、总体设计图采用模块化程序设计方法,将较大任务按一定规则分成一些较小任务,各个模块之间既独立又相关。
2、1界面设计主菜单输入界面:信息显示界面:2、2详细设计:(以下为部分代码)2.2.1数据结构设计struct goods{ﻩintnum;ﻩ//编号char name[15]; ﻩ//名称ﻩdouble price;ﻩ//单价ﻩdoublecount;ﻩ//数量double total; ﻩ//总金额};struct goodsm[50];ﻩﻩ//定义结构体数组结构体struct goods将用于存储商品得基本信息1、主函数main()定义主函数为空类型(void);利用选择结构(switch)实现在在主函数中得调用各个子函数。
main()函数执行流程system("color f3");改变颜色system("title 超市商品信息管理系统");修改窗口名称输出菜单switch{int n;system("color f3");ﻩﻩﻩﻩﻩﻩ//改变颜色ﻩsystem("title 超市商品信息管理系统");ﻩﻩ//修改窗口名称ﻩmenu();ﻩﻩﻩ//显示主菜单scanf("%d",&n); ﻩﻩﻩ//输入选择功能得编号while(n){ﻩswitch(n)ﻩ{ﻩﻩcase 1 : in(); break; ﻩ//输入商品信息ﻩﻩﻩcase2 : find(); break;//查找商品信息ﻩcase 3 : del(); break;ﻩ//删除记录ﻩcase 4 : modify(); break; ﻩ//修改记录ﻩﻩcase 5 : order(); break; //按总金额排序case 6 : orderstock(); break;ﻩﻩﻩ//按库存排序ﻩcase 7 : findOOS(); break;ﻩﻩ //outof Stock,查找无库存商品ﻩﻩﻩcase 8 : show(); break;ﻩﻩ//显示商品信息ﻩdefault: break;ﻩ}ﻩﻩgetch();ﻩmenu(); ﻩﻩﻩ//执行完功能再次显示主菜单scanf("%d",&n);}ﻩreturn 0;}2、子函数(1)void in();录入商品信息用while语句循环,直到用户输入n结束录入;void in(){ﻩint i,a,m=0;ﻩﻩ//m记录得条数ﻩchar c,h;FILE *fp;ﻩ//定义文件指针if((fp=fopen("data、txt","a+"))==NULL)//打开文件ﻩ{ﻩﻩprintf("不能打开\n");return;ﻩ}ﻩwhile(!feof(fp)){ﻩif(fread(&m[m],len,1,fp)==1)ﻩﻩm++;}ﻩfclose(fp);if(m==0)printf("没有找到\n");else{ﻩsystem("cls");}ﻩif((fp=fopen("data、txt","wb"))==NULL){ﻩﻩprintf("不能打开");ﻩreturn;ﻩ}ﻩfor(i=0;i<m;i++)ﻩfwrite (&m[i],len,1,fp); ﻩ//向指定磁盘文件写入信息ﻩwhile(1){ﻩa=0;ﻩﻩprintf("请输入\n");ﻩprintf("编号:");ﻩscanf("%d",&m[m]、num);//商品编号for(i=0;i<m;i++){ﻩﻩif(m[i]、num==m[m]、num)ﻩﻩ{ﻩa=1;ﻩﻩﻩﻩprintf("该记录已存在,按q返回主菜单,按任意键重新输入"); ﻩﻩscanf("%s",&c);ﻩﻩﻩbreak;ﻩ}ﻩﻩ}ﻩif(a==1&&(c==113||c==81))ﻩ//判断q就是否被按下ﻩbreak;ﻩelseﻩif(a==1&&(c!=113||c!=81))ﻩﻩ{ﻩsystem("cls");ﻩﻩﻩcontinue;ﻩﻩﻩ}ﻩﻩﻩprintf("商品名:");ﻩﻩscanf("%s",m[m]、name);ﻩﻩﻩﻩ//输入商品名称ﻩﻩprintf("单价:");scanf("%lf",&m[m]、price);ﻩﻩ//输入商品单价ﻩﻩprintf("数量:");ﻩscanf("%lf",&m[m]、count);ﻩﻩﻩ//输入商品数量ﻩm[m]、total=m[m]、price*m[m]、count;//计算出总金额if(fwrite(&m[m],len,1,fp)!=1)ﻩ//将新录入得信息写入指定得磁盘文件ﻩ{ﻩﻩprintf("不能保存!");ﻩﻩgetch();ﻩ}elseﻩ{ﻩprintf("%s 已经保存!\n",m[m]、name);ﻩﻩm++;}ﻩprintf("就是否继续?(y/n):"); ﻩﻩﻩﻩ//询问就是否继续ﻩscanf("%s",&h);if(h==121||h==89)ﻩcontinue;ﻩﻩelseﻩbreak;ﻩ}ﻩfclose(fp);ﻩprintf("OK!\n");}(2)void find()ﻩ用户输入商品编号进行查找,找到则显示,找不到则返回主菜单;{ﻩFILE *fp;int snum,i,m=0;ﻩchar c;ﻩif((fp=fopen("data、txt","rb"))==NULL)ﻩ{ﻩprintf("不能打开文件\n");ﻩreturn;}while(!feof(fp))ﻩif(fread(&m[m],len,1,fp)==1)ﻩm++;ﻩfclose(fp);ﻩif(m==0){ﻩﻩﻩprintf("没有记录,请使用“输入记录”功能添加记录\n");ﻩreturn;ﻩ}ﻩprintf("请输入编号:");ﻩﻩscanf("%d",&snum);for(i=0;i<m;i++)ﻩif(snum==m[i]、num)ﻩﻩﻩﻩ//查找输入得编号就是否在记录中ﻩﻩﻩ{ﻩﻩprintf("已经找到该记录,就是否显示?(y/n)");ﻩﻩscanf("%s",&c);ﻩﻩﻩif(c==121||c==89)ﻩ //判断y就是否被按下ﻩﻩ{ﻩprintf("编号商品名称单价数量总金额\t\n");ﻩﻩprintf(form,data);ﻩ//将查找出得结果按指定格式输出ﻩﻩbreak;ﻩﻩﻩ}ﻩelseﻩﻩﻩreturn;ﻩ}ﻩif(i==m)ﻩprintf("没有找到相应得记录!\n"); ﻩ//未找到要查找得信息}(3)void del()删除函数,输入商品编号删除相关商品;voiddel() ﻩﻩﻩﻩﻩﻩﻩ{ﻩFILE *fp;ﻩintsnum,i,j,m=0;ﻩchar a;if((fp=fopen("data、txt","r+") )==NULL)ﻩ//打开文件ﻩ{ﻩprintf("不能打开文件\n");ﻩreturn;}while(!feof(fp))if(fread(&m[m],len,1,fp)==1)fclose(fp);ﻩif(m==0){ﻩﻩﻩprintf("没有记录!\n");return;ﻩ}ﻩprintf("请输入编号:");ﻩﻩscanf("%d",&snum);ﻩﻩfor(i=0;i<m;i++)ﻩﻩif(snum==m[i]、num)ﻩﻩﻩbreak;ﻩﻩﻩif(i==m)ﻩﻩ{ﻩﻩprintf("没有找到!");ﻩﻩgetchar();ﻩﻩﻩreturn;ﻩ}ﻩprintf("已经找到该记录,就是否删除?(y/n)");ﻩscanf("%s",&a);ﻩﻩif(a==121||a==89)ﻩ//判断就是否要进行删除ﻩﻩ{ﻩﻩfor(j=i;j<m;j++)ﻩﻩﻩm[j]=m[j+1];ﻩﻩﻩ//将后一个记录移到前一个记录得位置ﻩﻩm--; ﻩﻩ//记录得总个数减1ﻩﻩﻩprintf("成功删除!");ﻩ}if( (fp=fopen("data、txt","wb") )==NULL){printf("不能打开!\n");ﻩreturn;}for(j=0;j<m;j++)ﻩﻩﻩﻩﻩ//将更改后得记录重新写入指定得磁盘文件中ﻩﻩif(fwrite(&m[j] ,len,1,fp)!=1)ﻩ{ﻩﻩprintf("不能保存!\n");ﻩﻩgetch();ﻩ}ﻩﻩfclose(fp);}(4) void modify()修改函数,输入商品编号用for循环与if语句找到该商品信息并进行修改;{int i,j,m=0,snum;if( (fp=fopen("data、txt","r+") )==NULL)ﻩ//打开文件ﻩ{ﻩprintf("不能打开文件!\n");ﻩreturn;}while(!feof(fp))ﻩif(fread(&m[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==m[i]、num)ﻩﻩﻩﻩﻩﻩbreak;ﻩﻩ}ﻩif(snum!=m[i]、num) ﻩ//判断就是否有记录{ﻩprintf("没有找到记录,请重试\n");return;ﻩﻩ}ﻩﻩprintf("已经找到该记录,可以进行修改!\n");ﻩprintf("商品名:");ﻩscanf("%s",m[i]、name); ﻩ//输入名字printf("单价:");ﻩscanf("%lf",&m[i]、price); ﻩﻩ//输入商品单价ﻩﻩﻩprintf("数量:");ﻩscanf("%lf",&m[i]、count);ﻩﻩ//输入商品数量ﻩﻩprintf("修改成功!");m[i]、total=m[i]、price*m[i]、count;ﻩif((fp=fopen("data、txt","wb") )==NULL){ﻩﻩprintf("不能打开文件\n");return;ﻩﻩ}ﻩfor(j=0;j<m;j++) ﻩﻩﻩﻩ//将新修改得信息写入指定得磁盘文件中ﻩﻩﻩif(fwrite(&m[j] ,len,1,fp)!=1)ﻩﻩ{ﻩﻩprintf("不能保存!");ﻩﻩﻩgetch();}ﻩfclose(fp);}(5)void findOOS()查找无货商品,用for循环与if语句找到该商品信息,并显示;{ﻩFILE *fp;int i,m=0;if ( (fp=fopen("data、txt","rb"))==NULL) ﻩ//打开文件ﻩ{ﻩprintf("不能打开文件\n");ﻩreturn;ﻩ}ﻩwhile(!feof(fp))ﻩﻩif(fread(&m[m],len,1,fp) ==1)ﻩm++;ﻩfclose(fp);if(m==0)ﻩ{ﻩprintf("没有记录,请使用“输入记录”功能添加记录\n");ﻩﻩreturn;ﻩ}printf(" 以下商品缺货:\n\n编号商品名称单价数量总金额 \t\n");ﻩfor(i=0;i<m;i++)ﻩif (0、0==m[i]、count)ﻩﻩﻩ//查找就是否有误库存商品ﻩ{ﻩprintf(form,data);ﻩﻩ//将查找出得结果按指定格式输出ﻩﻩ}ﻩif (i==m)ﻩprintf("——————查找完毕————————————————\n");ﻩﻩ//完成查找}(6)void order()按金额对商品进行由多到少排序{ﻩFILE*fp;struct goods t;ﻩint i=0,j=0,m=0;if ( (fp=fopen("data、txt","r+") )==NULL)ﻩﻩ//打开文件{ﻩprintf("can not open!\n");return;}ﻩwhile(!feof(fp))if(fread (&m[m] ,len,1,fp) ==1)ﻩm++;ﻩfclose(fp);if(m==0){ﻩprintf("no record!\n");ﻩreturn;ﻩ}ﻩif( (fp=fopen("data、txt","wb") )== NULL){ﻩﻩprintf("can not open\n");return;ﻩ}ﻩfor(i=0;i<m-1;i++)for(j=i+1;j<m;j++)ﻩﻩ//双重循环实现比较并交换ﻩﻩif(m[i]、total<m[j]、total)ﻩﻩ{ﻩﻩt=m[i];ﻩm[i]=m[j];m[j]=t;ﻩﻩ}ﻩif( (fp=fopen("data、txt","wb") )== NULL)ﻩ{ﻩﻩprintf("cannot open\n");ﻩreturn;ﻩﻩ}ﻩﻩfor(i=0;i<m;i++)ﻩ//将重新排好序得内容重新写入指定得磁盘文件中ﻩﻩif(fwrite(&m[i] ,len,1,fp)!=1)ﻩ{ﻩﻩprintf("%s can not save!\n");ﻩgetch();ﻩ}ﻩfclose(fp);ﻩprintf("保存成功!\n");}(7) void orderstock()按商品数量对商品进行由多到少排序{FILE*fp;ﻩﻩ//定义文件指针struct goods t;ﻩint i=0,j=0,m=0;if( (fp=fopen("data、txt","r+") )== NULL)ﻩ//打开文件{ﻩﻩprintf("无法打开\n");return;ﻩ}while(!feof(fp))ﻩif(fread(&m[m] ,len,1,fp)==1)ﻩm++;ﻩfclose(fp);ﻩif(m==0)ﻩ{ﻩprintf("no record!\n");return;ﻩ}if( (fp=fopen("data、txt","wb") )==NULL){ﻩprintf("无法打开\n");ﻩreturn;}ﻩfor(i=0;i<m-1;i++)ﻩfor(j=i+1;j<m;j++) ﻩﻩﻩ//双重循环实现比较并交换ﻩﻩif(m[i]、count<m[j]、count)ﻩ{ﻩﻩt=m[i];ﻩﻩﻩﻩm[i]=m[j];ﻩm[j]=t;}ﻩif((fp=fopen ("data、txt","wb"))== NULL)ﻩ{ﻩprintf("无法打开\n");ﻩreturn;ﻩﻩ}ﻩfor(i=0;i<m;i++) //将重新排好序得内容重新写入指定得磁盘文件中ﻩif(fwrite (&m[i] ,len,1,fp) !=1)ﻩﻩ{ﻩﻩﻩprintf("%s 无法保存\n");ﻩﻩgetch();}ﻩfclose(fp);ﻩprintf("保存成功!\n");}(8) void show()显示商品信息{FILE *fp;ﻩint i,m=0;ﻩif( (fp=fopen("data、txt","rb") )== NULL)//打开文件ﻩ{printf("不能打开文件\n");ﻩreturn;}while(!feof(fp))ﻩﻩif (fread(&m[m],len,1,fp)==1)ﻩm++;ﻩfclose(fp);ﻩﻩif(m==0)ﻩ{ﻩprintf("没有记录,请使用“输入记录”功能添加记录\n");ﻩﻩreturn;ﻩ}printf(" 商品信息:\n\n编号商品名称单价数量总金额 \t\n");ﻩﻩfor ( i=0 ; i<m ; i++ )ﻩﻩ{ﻩﻩprintf(form,data);ﻩ//将商品信息按指定格式输出ﻩﻩ}ﻩprintf("\n");ﻩﻩprintf("———————显示完毕,按任意键返回主菜单————————\n");ﻩ//完成查找}3、程序测试在主菜单中选择1当用户输入1并按回车键后,即可进入数据输入界面。