C语言超市商品管理系统
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语言
题目:超市商品管理院系:信息科技学院专业:通信工程姓名: XXX学号: 1251100XXX指导教师:杨永清日期: 2013年9月15日某某电子科技大学信息科技学院实训报告超市商品管理此题目设计目的是训练学生的根本编程能力,了解管理信息系统的开发流程,熟悉C 语言的文件和单链表的各种根本操作。
本程序中涉与结构体、单链表、文件等方面的知识。
通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用单链表存储结构实现对学生成绩管理的原理,为进一步开发出高质量的管理信息系统打下坚实的根底。
1、程序简介本程序用VC++6.0编译,运行于windows系统下。
1.1、本程序应具有以下功能:1、文件操作功能文件操作:可建立、打开、保存、关闭数据文件。
如果是新建的文件,可输入商品信息数据:数据包括商品编号、商品名、商品类别、商品数量、商品价格等。
2、数据输入功能输入信息:输入商品编号、数量完成进货操作。
3、数据添加、修改、删除功能添加:添加一种或多种新商品,并能输入其商品信息。
修改:修改商品信息,可包括商品编号、名称、种类、数量和单价。
删除:删除一类或多类商品的所有信息。
4、计算功能可通过查询商品信息功能,自动计算并输出需要进货的商品信息。
通过商品数量与单价,自动计算出商品总价。
5、查询功能可分别按商品编号和需要进货的商品进展查询。
6、排序功能可分别按商品编号、金额等进展排序。
7、数据显示功能可分别浏览输入、查询和排序后的商品信息。
2、总体设计图采用模块化程序设计方法,将较大任务按一定规如此分成一些较小任务,各个模块之间既独立又相关。
主菜单输入界面:信息显示界面:2.2详细设计:〔以下为局部代码〕struct goods{int num;//编号char name[15];//名称double price;//单价double count;//数量double total;//总金额};struct goods m[50];//定义结构体数组结构体struct goods将用于存储商品的根本信息1、主函数main()定义主函数为空类型(void);利用选择结构(switch)实现在在主函数中的调用各个子函数。
C语言课程设计_超市管理系统
图6 程序主界面这个界面是运行函数后首先出现的界面,运行函数时,该函数是一个菜单函数,用switch 语句来实现各功能模块的转移,出来该页面后用户可根据提示输入信息,从而实现各种目的。
②键盘输入1,进入商品详细目录用以显示全部商品详细信息图7 显示信息界面该页面用printf输出,在利用指针读出链表中数据并利用合理计算计算出净利润等数据,再用while语句进行循环输出部数据③输入2按回车进入商品买卖页面。
如图8所示图8 买卖信息界面用scanf输入数据,用if语句和while语句来实现循环每一次修改的数据④输入3按回车会进入商品登陆页面,此页面用来登陆商品。
如图9所示图9 登录信息界面将数据登陆入链表个变量中⑤输入4按回车进入商品修改模块如图10所示图10修改信息界面6输入5按回车进入商品删除模块如图11所示使用printf()函数和scanf( )函数,并且利用指针从而实现各种功能。
其中用到了while 循环语句,实现对链表中个数据的重写功能。
运行完后退出该函数图11删除信息界面4.设计体会原文已完。
下文为附加文档,如不需要,下载后可以编辑删除,谢谢!施工组织设计本施工组织设计是本着“一流的质量、一流的工期、科学管理”来进行编制的。
编制时,我公司技术发展部、质检科以及项目部经过精心研究、合理组织、充分利用先进工艺,特制定本施工组织设计。
一、工程概况:西夏建材城生活区27#、30#住宅楼位于银川市新市区,橡胶厂对面。
本工程由宁夏燕宝房地产开发有限公司开发,银川市规划建筑设计院设计。
本工程耐火等级二级,屋面防水等级三级,地震防烈度为8度,设计使用年限50年。
本工程建筑面积:27#楼3824.75m2;30#楼3824.75 m2。
室内地坪±0.00以绝对标高1110.5 m为准,总长27#楼47.28m;30#楼47.28 m。
总宽27#楼14.26m;30#楼14.26 m。
设计室外地坪至檐口高度18.6 00m,呈长方形布置,东西向,三个单元。
用c语言编写商品管理系统
用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。
超市管理系统(C语言课程设计报告)
1.开发工具和编程语言:
开发工具:Microsoft Visual C++ 6.0
编程语言:C语言
2.模块划分
3.系统功能与函数的对应关系
本系统包括一个主函数和6个被调函数,分别如下:
jez=jez-sl*s[i].shoujia ;//重新计算总金额
printf("取消购买成功\n");
}
}
}
zl=ssje-jez;//找零
printf("找零%5.1f\n",zl);
printf("购买成功\n");
}
if(a!=2)
{
printf("请选择:");
printf("1.返回开始菜单");
for(i=0;i<b;i++)
if((strcmp(str,s[i].bh)==0)||(strcmp(str,s[i].bhstr)==0))//查找要取消购买的商品
{
printf("请输入取消购买的数量");
scanf("%d",&sl);
s[i].kucun =s[i].kucun +sl;//修改库存信息
printf("2.继续购买商品");
scanf("%d",&a);
jez=0;
}
}
}
(3)运行效果
输入:3
输出:请输入购买商品的编号:
输入:1
c语言课程设计超市管理系统
c语言课程设计超市管理系统一、教学目标本节课的教学目标是使学生掌握C语言编程基础,能够运用C语言实现简单的超市管理系统。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据类型。
–了解函数的定义和调用。
–掌握数组的声明和使用。
–理解指针的概念和应用。
2.技能目标:–能够使用C语言编写简单的程序。
–能够运用函数实现模块化编程。
–能够使用数组存储和管理数据。
–能够运用指针处理内存地址和数据。
3.情感态度价值观目标:–培养学生的编程兴趣和自信心。
–培养学生解决问题的能力和创新精神。
–培养学生团队合作和交流分享的意识。
二、教学内容本节课的教学内容主要包括C语言的基本语法、数据类型、函数、数组和指针。
具体安排如下:1.C语言的基本语法和数据类型:介绍C语言的构成要素,包括变量、常量、运算符、表达式等。
2.函数的定义和调用:讲解函数的声明、定义和调用方式,并通过实例演示函数的使用。
3.数组的声明和使用:介绍数组的声明、初始化和使用方法,并通过实例展示数组在超市管理系统中的应用。
4.指针的概念和应用:讲解指针的定义、声明和使用,并通过实例说明指针在超市管理系统中的应用。
三、教学方法本节课采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:通过讲解C语言的基本语法、数据类型、函数、数组和指针的概念和用法。
2.案例分析法:通过分析超市管理系统的实际案例,引导学生运用C语言编程解决实际问题。
3.实验法:安排课堂实验,让学生动手实践,加深对C语言编程的理解和应用。
4.讨论法:学生分组讨论,促进学生之间的交流与合作,培养团队合作精神。
四、教学资源本节课所需的教学资源包括:1.教材:选用权威、实用的C语言教材,为学生提供系统、全面的学习资料。
2.参考书:提供相关领域的参考书籍,拓展学生的知识面。
3.多媒体资料:制作课件、教学视频等多媒体资料,增强课堂教学的趣味性和生动性。
4.实验设备:准备计算机、编程环境等实验设备,确保学生能够动手实践。
c语言超市商品管理系统实训报告
超市商品管理系统实训报告1. 背景超市商品管理系统是为了提高超市的商品管理效率和服务质量而开发的一款软件系统。
传统的超市商品管理方式通常依赖于人工操作,存在着工作效率低下、易出错、信息不及时等问题。
为了解决这些问题,我们开发了一套基于C语言的超市商品管理系统。
2. 分析2.1 系统需求分析在进行系统设计之前,我们首先对超市商品管理的需求进行了全面的分析。
通过与超市管理员和员工的沟通和访谈,我们得出了以下主要需求:•商品信息管理:包括商品的录入、修改、查询和删除等功能。
•库存管理:包括库存数量的统计、调整和报警等功能。
•销售管理:包括销售记录的录入、查询和报表生成等功能。
•会员管理:包括会员信息的录入、修改、查询和积分计算等功能。
2.2 系统设计思路基于以上需求分析,我们设计了一套简单而实用的超市商品管理系统。
该系统采用模块化设计,分为以下几个模块:•商品信息模块:负责处理商品信息的录入、修改、查询和删除等操作。
•库存管理模块:负责处理库存数量的统计、调整和报警等操作。
•销售管理模块:负责处理销售记录的录入、查询和报表生成等操作。
•会员管理模块:负责处理会员信息的录入、修改、查询和积分计算等操作。
系统采用了文件存储方式,将商品信息、库存信息、销售记录和会员信息保存在不同的文件中,以便于数据的读取和修改。
系统还提供了简单的用户界面,方便管理员和员工进行操作。
3. 结果经过系统设计和开发,我们成功实现了超市商品管理系统。
该系统在测试中表现良好,满足了超市商品管理的基本需求,并具备以下特点:•界面友好:系统采用简洁直观的用户界面,方便用户进行操作。
•功能完善:系统实现了商品信息管理、库存管理、销售管理和会员管理等多个功能模块。
•数据准确:系统通过文件存储方式,保证数据的准确性和可靠性。
•操作简便:系统提供了简单易用的操作方式,降低了用户学习成本。
4. 建议虽然超市商品管理系统已经取得了一定的成果,但仍存在改进空间。
c语言课程设计超市购物系统
c语言课程设计超市购物系统一、教学目标本课程的目标是使学生掌握C语言编程的基本知识,能够运用C语言设计并实现一个简单的超市购物系统。
在知识目标方面,要求学生掌握C语言的基本语法、数据类型、运算符、控制结构等。
在技能目标方面,要求学生能够熟练使用C语言进行程序设计,具备解决实际问题的能力。
在情感态度价值观目标方面,要求学生培养对编程的兴趣和热情,培养团队合作意识和自主学习能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构等。
具体安排如下:1.第一章:C语言概述,介绍C语言的发展历程、特点及应用领域。
2.第二章:基本数据类型和运算符,介绍整型、浮点型、字符型数据及其运算符。
3.第三章:控制结构,介绍顺序结构、选择结构、循环结构。
4.第四章:函数,介绍函数的定义、声明、调用及返回值。
5.第五章:数组和字符串,介绍一维数组、多维数组、字符串的基本操作。
6.第六章:指针,介绍指针的概念、运算及应用。
7.第七章:结构体和联合体,介绍结构体、联合体的定义和应用。
8.第八章:文件操作,介绍文件的基本操作及其应用。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法。
在讲授法中,教师通过讲解、示范等方式传授知识;在案例分析法中,教师通过分析实际案例,引导学生运用所学知识解决问题;在实验法中,学生通过动手实践,加深对知识的理解和运用。
四、教学资源本课程的教学资源包括教材、多媒体资料和实验设备。
教材选用《C程序设计原理与应用》,多媒体资料包括教学PPT、视频教程等,实验设备包括计算机、网络设备等。
这些资源将有助于学生更好地学习C语言,提高编程能力。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
平时表现主要评估学生的课堂参与度、提问回答、团队合作等情况,占总评的30%。
作业主要评估学生的编程能力和理解力,占总评的30%。
考试分为期中考试和期末考试,期中考试占40%,期末考试占60%,考试内容主要包括理论知识及编程实践。
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) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
C语言大作业-超市货物管理系统
//预防闪屏
return 0;
}
for(i=0;i<n;i++)
if(gds[i].ave!=0)
//在后面的 del()函数中通过将 gds[i].ave=0 来
表示该记录被删除了
if(fwrite(&gds[i],sizeof(struct goods),1,fp)!=1)//开始写入文件
printf("文件写入发生错误\n");
gds[i].ave=( gds[i].MJ+ gds[i].JJ)/2;
}
/*******【编号长度处理函数】********/
void lenbian(int i)
{
int j,l,a;
l=strlen(gds[i].BH);
if(l<LEN)
{
for(j=LEN-l,a=0;j<LEN;j++)
case 2:printf("姓名:");scanf("%s",gds[i].MZ);break;
case 3:printf("进价:");scanf("%f",&gds[i].JJ);break;
case 4:printf("卖价:");scanf("%f",&gds[i].MJ);break;
case 5:rishuru(i);break;
//i 表示第 i 个货物信息,n 表示比较到第
n 个货物
{
int j,k,w1;
do{
w1=0;
printf(" 编 号 :\t\t 【 %d 位 , 低 于 %d 位 前 面 补 0, 长 的 截 尾 处 理 ! 】
C语言程序设计超市管理系统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->u nit,&p1->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->qua ntity); /*输入商品信息*/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->kind,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,&p4->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->pr ice,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->pr ice,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->pr ice,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语言实验报告
超市食品管理系统c语言实验报告
本实验旨在设计一个超市食品管理系统,使用C语言实现基本的数据输入、存储、查询和统计功能,实现对超市食品销售的管理。
实验内容:
1.设计数据结构
首先,需要设计数据结构来存储超市食品的相关信息,包括商品编号、商品名称、商品类型、商品价格、商品库存等。
2.实现数据输入和存储
在程序运行时,需要进行数据输入并将数据存储到文件中。
这里可以使用文件输入输出流实现,将数据写入文件中,以便查询和统计。
3.实现数据查询
在管理系统中,需要实现对商品信息的查询功能,包括按照商品编号、商品名称、商品类型等进行查询。
可以通过读取文件中的数据,根据查询条件进行匹配。
4.实现数据统计
可以通过读取文件中的数据,进行商品销售情况的统计,包括总销售额、各类商品销售额、销售量等。
实验结果:
经过实验,我们成功地实现了一个基本的超市食品管理系统,包括数据输入、存储、查询和统计功能。
该系统可以有效地帮助超市管理人员进行商品销售的管理和统计,提高管理效率和销售业绩。
实验总结:
本实验通过设计一个超市食品管理系统,提高了我们对C语言的应用能力,同时也增强了我们对数据结构和文件操作的理解和掌握。
我们在实验中遇到了一些问题,如数据存储和读取的具体实现等,但通过不断地尝试和调试,最终成功地完成了实验目标。
超市管理系统c语言课程设计
超市管理系统c语言课程设计一、课程目标知识目标:1. 掌握C语言的基本语法和数据结构,如数组、结构体等;2. 学会使用C语言进行简单的文件操作;3. 了解超市管理系统的基本功能和需求;4. 学习如何设计、编写和调试C语言程序。
技能目标:1. 能够运用所学知识设计并实现一个简单的超市管理系统;2. 培养独立分析问题、解决问题的能力;3. 提高编程实践能力,熟练使用C语言进行程序设计;4. 学会使用调试工具,提高程序调试效率。
情感态度价值观目标:1. 培养对计算机编程的兴趣,激发学习积极性;2. 培养团队协作意识,学会与他人共同解决问题;3. 增强学生的自信心,鼓励他们勇于挑战困难;4. 培养良好的编程习惯,注重代码规范和优化。
本课程旨在让学生通过学习C语言,设计并实现一个超市管理系统,掌握编程的基本方法和技巧。
针对学生的年级特点,课程内容注重实践操作,培养学生动手能力和解决问题的能力。
在教学过程中,注重激发学生的学习兴趣,培养团队协作精神,提高学生的综合素质。
课程目标的设定遵循具体、可衡量原则,为教学设计和评估提供明确方向。
二、教学内容1. C语言基础语法:变量定义、数据类型、运算符、表达式、控制结构(顺序、选择、循环);2. 函数:函数定义、调用、参数传递、返回值、库函数使用;3. 数组与字符串:一维数组、二维数组、字符串处理;4. 结构体与文件操作:结构体定义、初始化、结构体数组、文件打开、读写、关闭;5. 超市管理系统功能模块设计:用户模块(登录、注册)、商品模块(增删改查)、购物车模块(添加、删除、结算)、库存模块(库存管理);6. 程序调试与优化:错误类型分析、调试工具使用、代码优化。
教学内容依据课程目标进行选择和组织,确保学生掌握C语言基础知识,并能运用所学设计超市管理系统。
教学大纲明确指出教材相关章节,安排合理的教学进度,使教学内容具有科学性和系统性。
教学中注重理论与实践相结合,提高学生的编程实践能力。
C语言实现超市管理系统
C语⾔实现超市管理系统本⽂实例为⼤家分享了C语⾔实现超市管理系统的具体代码,供⼤家参考,具体内容如下超市管理系统1.包括管理员和顾客2.管理员有登⼊,录⼊商品信息,显⽰所有商品信息功能3.顾客有购物车和结算功能4.购物车具有显⽰商品列表,显⽰购物车商品,往购物车添加商品的功能函数void UpdateKu();//更新购物车信息函数void calculate();//计算所购商品价格并修改保存int menu1();//打印主菜单函数int menu2();//打印管理员菜单函数int menu3();//打印顾客函数void CreateGoods();//录⼊商品信息函数void ShowGoods();//显⽰库存信息函数void ShopCart();//对购物车进⾏操作int ShopCartMenu();//打印购物车菜单void ShowCart();//显⽰购物列表void add();//在购物车⾥添加商品建⽴库存函数void CreateGoods(){//⼿动建⽴库存信息FILE *fp;//定义⽂件指针int i;printf("请输⼊需要录⼊的商品个数:\n");scanf("%d",&n);//输⼊数量printf("请依次输⼊货物信息:\n");printf("--------------------------------------------\n");for(i=0;i<n;i++){//向⽂件中写⼊信息printf("第%d个商品:\n",i+1);printf("货号:");fflush(stdin);//清空输⼊流gets(goods[i].ID);//输⼊货号printf("品名:");fflush(stdin);//清空输⼊流gets(goods[i].brand);//输⼊品名printf("进价: ");fflush(stdin);//清空输⼊流scanf("%lf",&goods[i].inprice);//输⼊进价printf("售价:");fflush(stdin);//清空输⼊流scanf("%lf",&goods[i].outprice);//输⼊售价printf("数量:");fflush(stdin);//清空输⼊流scanf("%d",&goods[i].storage);//输⼊数量printf("保质期:");fflush(stdin);//清空输⼊流gets(goods[i].date);//输⼊货号printf("\n");}if((fp=fopen("kucun.txt","w"))==NULL){//判断⽂件是否创建失败printf("创建⽂件失败。
C毕业课程设计超市管理系统
C 毕业课程设计超市管理系统一、教学目标本课程旨在让学生掌握超市管理系统的基本知识和技能,能够运用C语言进行程序设计,实现超市管理的基本功能,如商品信息管理、库存管理、销售管理等。
同时,通过本课程的学习,培养学生的问题解决能力和团队协作能力,提高学生的创新意识和实践能力。
具体来说,知识目标包括:1.掌握C语言的基本语法和编程方法。
2.理解超市管理系统的业务流程和需求分析。
3.学习常用的数据结构和算法,并能够应用于实际问题解决。
技能目标包括:1.能够使用C语言编写简单的程序,实现超市管理的基本功能。
2.学会使用调试工具,能够发现和修复程序中的错误。
3.能够进行团队合作,共同完成一个完整的超市管理系统项目。
情感态度价值观目标包括:1.培养学生对计算机科学的兴趣和热情,提高学生的学习积极性。
2.培养学生的问题解决能力和创新意识,让学生感受到编程的乐趣。
3.培养学生的团队协作意识,让学生学会与他人合作共同完成任务。
二、教学内容本课程的教学内容主要包括三个部分:C语言基础知识、超市管理系统的设计与实现、项目实践。
1.C语言基础知识:包括C语言的基本语法、数据类型、运算符、控制结构等。
这部分内容是学习后续章节的基础,需要学生掌握。
2.超市管理系统的设计与实现:包括需求分析、系统设计、模块划分等。
这部分内容让学生了解超市管理系统的业务流程,学会如何将实际问题转化为程序设计问题。
3.项目实践:学生分组完成一个超市管理系统项目,包括商品信息管理、库存管理、销售管理等。
这部分内容让学生将所学知识应用于实际问题解决,提高学生的实践能力。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合的方式进行教学。
1.讲授法:教师讲解C语言的基本语法和编程方法,让学生掌握基础知识。
2.案例分析法:通过分析真实的超市管理系统案例,让学生了解业务流程和需求分析。
3.实验法:学生动手编写程序,实现超市管理的基本功能,培养学生的实践能力。
超市商品管理系统C语言版(文件读取)
超市商品管理系统C语言版(文件读取)#include#include#include//------------------------------------------------------------- //Max count of good,def 100 temporary//------------------------------------------------------------- #define MAX 100#define false -1#define true 1//声明一个计数器int CurrentCnt;//------------------------------------------------------------- //Good Information Definition//------------------------------------------------------------- struct GoodInfo {char good_id[30];char good_name[30];char good_price[10];char good_discount[10];int good_amount;int good_remain;};struct GoodInfo *Goods[MAX];//------------------------------------------------------------- //read a goodinfo from file//------------------------------------------------------------- struct GoodInfo *readGoodInfo(FILE* fp){struct GoodInfo *pGoodInfo = (struct GoodInfo*)malloc(sizeof(struct GoodInfo));//开辟空间fscanf(fp,"%s",&pGoodInfo->good_id);fscanf(fp,"\t%s",&pGoodInfo->good_name);fscanf(fp,"\t%s",&pGoodInfo->good_price);fscanf(fp,"\t%s",&pGoodInfo->good_discount);fscanf(fp,"\t%d",&pGoodInfo->good_amount);fscanf(fp,"\t%d\n",&pGoodInfo->good_remain);//将信息存入结构return pGoodInfo;}//-------------------------------------------------------------//check whether the file exists or not//-------------------------------------------------------------int check_nullfile(){FILE *fp = fopen("E:\\goodinfo.txt","r");//file not existif(!fp){printf("商品信息初始化文件不存在!\n请您放到E盘根目录!\n");FILE *fp = fopen("E:\goodinfo.txt","w");fclose(fp);}//file already existelse{int temp;//res for try to read file if file null feof() can't jarge if file is nullint res = fscanf(fp,"%d",&temp);fclose(fp);if(res<=0){printf("文件为空,请确保文件中存有商品信息\n");return false;}elsereturn true;}}//------------------------------------------------------------- //initialize//------------------------------------------------------------- void info_init(){int i;for(i=0; i<="" p="">Goods[i] = NULL;}int res = check_nullfile();FILE *fp = fopen("E:\\goodinfo.txt","r");int j = 0;while( res && !feof(fp) ){Goods[j] = readGoodInfo(fp);j++;CurrentCnt++;}fclose(fp);}//------------------------------------------------------------- // search a goodinfoint info_search(){int i;char name[30];scanf("%s",&name);for(i=0;i<="">{if(Goods[i]==NULL)//跳过已被释放内存的空指针i++;if(strcmp(name,Goods[i]->good_name)==0)//若商品名与输入相同则返回下标return i;}if(i==CurrentCnt)//未找到商品return false;}//-------------------------------------------------------------//modify a goodinfo//-------------------------------------------------------------void info_change(int i){printf("输入新的商品信息(以换行区分信息条目):\n");scanf("%s",&Goods[i]->good_id);scanf("%s",&Goods[i]->good_name);scanf("%s",&Goods[i]->good_price);scanf("%s",&Goods[i]->good_discount);scanf("%d",&Goods[i]->good_amount);scanf("%d",&Goods[i]->good_remain);printf("修改商品信息成功!\n");}//delete a goodinfo//-------------------------------------------------------------void info_dele(int i){if(i!=false){free(Goods[i]);//释放空间Goods[i]=NULL;//指向空指针}printf("删除商品信息成功!\n");}//-------------------------------------------------------------//output//-------------------------------------------------------------void info_output(int i){printf("目前商品信息:\n");printf("商品id:%s商品名称:%s商品价格:%s\n",Goods[i]->good_id,Goods[i]->good_name,Goods[i]->g ood_price);printf("商品折扣:%s商品数量:%d商品余数:%d\n",Goods[i]->good_discount,Goods[i]->good_amount,Go ods[i]->good_remain);}//-------------------------------------------------------------//insert one goodinfo//-------------------------------------------------------------void info_insert(){ //开辟空间struct GoodInfo *newgoods=(struct GoodInfo*)malloc(sizeof(struct GoodInfo));scanf("%s",&newgoods->good_id);scanf("\n%s",&newgoods->good_name);scanf("\n%s",&newgoods->good_price);scanf("\n%s",&newgoods->good_discount);scanf("\n%d",&newgoods->good_amount);scanf("\n%d",&newgoods->good_remain);Goods[CurrentCnt]=newgoods;CurrentCnt++;printf("商品信息插入完成!\n");}//-------------------------------------------------------------//write one goodinfo into file//-------------------------------------------------------------void writeGoodInfo(FILE* fp,struct GoodInfo* pGoodInfo) { fprintf(fp,"%s\t",pGoodInfo->good_id);fprintf(fp,"%s\t",pGoodInfo->good_name);fprintf(fp,"%s\t",pGoodInfo->good_price);fprintf(fp,"%s\t",pGoodInfo->good_discount);fprintf(fp,"%d\t",pGoodInfo->good_amount);fprintf(fp,"%d\n",pGoodInfo->good_remain);}//-------------------------------------------------------------//write all goodinfos into file//-------------------------------------------------------------void info_flush(){int i;FILE *fp = fopen("E:\\goodinfo.txt","w");for(i=0; i<="" p="">if(Goods[i])writeGoodInfo(fp,Goods[i]);}fclose(fp);}//------------------------------------------------------------- //free goodinfo memory//------------------------------------------------------------- void freeGoodInfo(){int i;for(i=0;i<currentcnt;i++)< p="">free(Goods[i]);}//------------------------------------------------------------- //main entry//------------------------------------------------------------- int main(){int i;int choice;char name[30];info_init();for(;;){printf("超市商品管理系统\n""*****************************************\n""1.商品信息的修改:\n""2.删除某个商品信息:\n""3.查找商品信息:\n""4.插入某个商品信息\n""其他数字,退出系统\n""****************************************\n" "请输入您的选择:");scanf("%d",&choice);switch(choice){case 1:printf("输入您要修改的商品名称:");i=info_search();if(i!=false)info_change(i);elseprintf("您要修改的商品不存在\n"); break;case 2:printf("输入您要删除的商品名称:");i=info_search();if(i!=false)info_dele(i);elseprintf("您要删除的商品不存在\n"); break;case 3:printf("输入你要查询的商品名称:");i=info_search();if(i!=false)info_output(i);elseprintf("您要查询的商品不存在\n"); break;case 4:printf("输入你要插入的商品信息(以换行区分信息条目):\n"); info_insert();break;default:break;}if(choice!=1&&choice!=2&&choice!=3&&choice!=4) break;}info_flush();//存盘freeGoodInfo();//释放内存return 0;}</currentcnt;i++)<>。
c超市商品信息管理系统数组版
#include <stdio.h> #include <stdlib.h>#include <string.h>int SNum[100];char SName[100][20];char pub[100][20];int Anamber[100];float price[100];int Bnamber[100];void a();void b();void c();void d();void e();int main(){int n;int w=0;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("请输入需要进行操作前的编号:\n");scanf("%d",&n);do{if(n>6||n<0){printf("\n输入错误,请重新输入!\n");scanf("%d",&n);}else{w=1;}}while(w==0);switch(n){case 1:a();break;case 2:b();break;case 3:c();break;case 4:d();break;case 5:e();break;case 6:exit(0);}return 0;}void a (){FILE *fp;int t;if((fp=fopen("s.txt","a+"))==NULL){printf("无法打开此文件");}printf("商品编号、商品名称、商品品牌、库存数量、售价、已售数量\n");printf("请按照上面的格式录入商品信息\n");scanf("%d %s %s %d %f %d",&SNum[0],&SName[0][0],&pub[0][0],& Anamber [0],&price[0],& Bnamber [0]);fprintf(fp,"%d %s %s %d %f %d\n",SNum[0],SName[0],pub[0], Anamber[0],price[0], Bnamber[0]);fclose(fp);printf("是否继续录入商品信息?(1/0)\n");scanf("%d",&t);if(t==1){a();}else{main();}}void b(){FILE *fp;int num;int i;int t=0;int m;int temp;if((fp=fopen("s.txt","rt+"))==NULL){printf("不能打开此文件\n");}printf("请输入你要修改的商品编号\n");scanf("%d",&num);for(;!feof(fp);t++){fscanf(fp,"%d%s%s%d%f%d",&SNum[t],&SName[t][t],&pub[t][0],&Anamber[ t],&price[t],& Bnamber [t]);}for (i=0;i<t+1; i++) {if(num==SNum[i]){printf("2-商品名称\n");printf("3-商品品牌\n");printf("4-库存数量\n");printf("5-售价\n");printf("6-已售数量\n");aaa:printf("请输入要修改的选项前的编号:\n"); scanf("%d",&temp);switch (temp) {case 1:printf("请输入要修改的内容:\n");scanf("%d",&SNum[i]);break;case 2:printf("请输入要修改的内容:\n");scanf("%s",&SName[i][0]);break;case 3:printf("请输入要修改的内容:\n");scanf("%s",&pub[i][0]);break;case 4:printf("请输入要修改的内容:\n"); scanf("%d",& Anamber [i]); break;case 5:printf("请输入要修改的内容:\n"); scanf("%f",&price[i]);break;case 6:printf("请输入要修改的内容:\n"); scanf("%s",& Bnamber [i]); break;default:printf("输入错误,"); goto aaa;break;}}}fclose(fp);if((fp=fopen("s.txt","wt"))==NULL){}for(i=0;i<t;i++){fprintf(fp,"%d %s %s %d %f%d\n",SNum[i],SName[i],pub[i],Anamber[i],price[i],Bnamber [i]);}fclose(fp);printf("修改成功,是否继续修改?(1/0)");scanf("%d",&m);if(m==1){b();}else{main();}}void c(){int num,a;char name[20];char apub[20];int i;int t=0;int m;FILE *fp;printf("1-按商品名称查询,2-按品牌名查询,3-按照商品编号查询\n"); printf("请输入要进行操作前的编号:\n");scanf("%d",&num);if((fp=fopen("s.txt","r"))==NULL){printf("不能打开此文件\n");}for(t=0;!feof(fp);t++){fscanf(fp,"%d%s%s%d%f%d",&SNum[t],SName[t],pub[t],&Anamber[t],&pric e[t],&Bnamber[t]) ;}if(num==1){printf("请输入你要查询的商品名:\n");scanf("%s",&name[0]);printf("商品编号商品名称商品品牌库存数量售价已售数量\n");for(i=0;i<t+1;i++){if((strcmp(SName[i],name))==0)printf("%5d%8s%8s%9d%8.1f%5d\n",SNum[i],SName[i],pub[i],Anamber[i], price[i],Bnamber [i]);}}else if(num==2){//输入商品品牌,在商品信息文件中统计其不同商品名称的库存量,并输出库存量最高的那个商品的信息int max=0,n;printf("请输入你要查询的商品品牌:\n");scanf("%s",&apub[0]);printf("商品编号商品名称商品品牌库存数量售价已售数量\n");for(i=0;i<t+1;i++){if((strcmp(pub[i],apub))==0){printf("%5d%8s%8s%9d%8.1f%5d\n",SNum[i],SName[i],pub[i],Anamber[i] ,price[i],Bnam ber [i]);if (Anamber[i]>max)max=Anamber[i];n=i;}}printf("库存量最高的那个商品的信息:\n%5d%8s%8s%9d%8.1f%5d\n",SNum[n],SName[n],pub[n],Anamber[n],price[n] ,Bnamber[n] );}else if(num==3){printf("请输入你要查询的商品编号:\n");scanf("%d",&a);printf("商品编号商品名称商品品牌库存数量售价已售数量\n");for(i=0;i<t+1;i++){if(SNum[i]==a)printf("%5d%8s%8s%9d%8.1f%5d\n",SNum[i],SName[i],pub[i],Anamber[i], price[i],Bnamber [i]);}}else{printf("输入错误!\n");c();}printf("是否继续查询?(1/0)\n"); scanf("%d",&m);if(m==1){c();}else{main();}}void d(){FILE *fp;int num;int i;int t=0;int m;if((fp=fopen("s.txt","rt+"))==NULL){printf("不能打开此文件\n");}printf("请输入你要删除的商品编号\n");scanf("%d",&num);for(;!feof(fp);t++){fscanf(fp,"%d%s%s%d%f%d",&SNum[t],&SName[t][t],&pub[t][0],&Anamber[ t],&price[t],&Bn amber[t]);}for (i=0;i<t+1; i++)if(num==SNum[i]){SNum[i]=0;SName[i][0]=0;pub[i][0]=0;Anamber[i]=0;Bnamber[i]=0;}fclose(fp);if((fp=fopen("s.txt","wt"))==NULL){printf("不能打开此文件\n");}for(i=0;i<t;i++){fprintf(fp,"%d %d %d %d %f%d\n",SNum[i],SName[i],pub[i],Anamber[i],price[i],Bnamber [i]); } fclose(fp);printf("删除成功,是否继续删除?(1/0)\n");scanf("%d",&m);if(m==1) {d();}else {main(); }}void e() {FILE *fp; int num; int x,b; int n;int y=10; int i;int t=0;int m;double s,sum;if((fp=fopen("s.txt","rt+"))==NULL){printf("不能打开此文件\n");}printf("请选择相应的编号\n");printf("1-出售,2-进货\n");scanf("%d",&x);if(x==1){{printf("出售\n");printf("请输入商品编号和名称\n");scanf("%d",&num);for(;!feof(fp);t++){fscanf(fp,"%d%s%s%d%f%d",&SNum[t],&SName[t][t],&pub[t][0],&Anamber[ t],&price[t],& Bnamber [t]);}for (i=0;i<t+1; i++) {if(num==SNum[i]){printf("请输入商品数量\n"); scanf("%d",&n);if(n> Anamber[i]){printf("输入错误,请重新输入"); e();}Anamber[i]= Anamber[i]-n; Bnamber [i]=Bnamber [i]+n; sum=price[i]*Bnamber [i];b=Anamber[i];s=n*price[i];printf("商品编号商品名称商品品牌库存数量售价已售数量当前销售价格已销售总价\n");printf("%d %s %s %d %f %d %f %f\n",SNum[i],SName[i],pub[i], Anamber[i],price[i],Bnamber [i],s,sum);if("b<y");printf("商品库存量较低,请及时补充\n");}}}fclose(fp);if((fp=fopen("s.txt","wt"))==NULL){printf("不能打开此文件\n");}for(i=0;i<t;i++){fprintf(fp,"%d %s %s %d %f%d\n",SNum[i],SName[i],pub[i],Anamber[i],price[i] ,Bnamber [i]);}fclose(fp);printf("修改成功,是否继续?(1/0)"); scanf("%d",&m);if(m==1){e();}else{main();}}if(x==2){{printf("进货\n");printf("请输入商品编号\n");scanf("%d",&num);for(;!feof(fp);t++){fscanf(fp,"%d%s%s%d%f%d",&SNum[t],&SName[t][t],&pub[t][0],&Anamber[ t],&price[t],& Bnamber [t]);}for (i=0;i<t+1; i++){if(num==SNum[i]){printf("请输入商品数量\n");scanf("%d",&n);Anamber[i]=Anamber[i]+n;printf("%d %s %s %d %f%d\n",SNum[i],SName[i],pub[i],Anamber[i],price[i],Bnamber [i]);}else{printf("商品不存在,请添加该商品信息\n");printf("是否添加?1-是/2-否\n");scanf("%d",&n);if(n==1){a();}else{e();}}}}fclose(fp);if((fp=fopen("s.txt","wt"))==NULL) {printf("不能打开此文件\n");}for(i=0;i<t;i++){fprintf(fp,"%d %s %s %d %f%d\n",SNum[i],SName[i],pub[i],Anamber[i],price[i],Bnamber [i]);}fclose(fp);printf("修改成功,是否继续?(1/0)");scanf("%d",&m);if(m==1){e();}else{main();}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:超市商品管理系统院系:信息科技学院专业:计算机科学与技术姓名:学号:指导教师:日期:桂林电子科技大学信息科技学院目录1 问题定义 (3)2 系统设计 (3)2.1 总体设计 (3)实训报告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)函数功能描述 (4)3 系统实现 (5)编码 (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)测试与调试 (22)3.2.1 概述 (22)3.2.2 程序测试 (22)4 系统维护 (25)5 归纳总结 (25)开发经验 (25)实训中遇到的问题及解决方法 (25)设计中的不足之处 (25)感想和心得体会 (25)6 参考资料 (25)超市商品管理系统本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C 语言的单链表的各种基本操作。
本程序中涉及结构体、单链表、文件保存等方面的知识。
通过本程序的训练,使学生能对C语言的链表的操作有一个更深刻的了解,掌握利用单链表存储结构实现对超市信息管理系统的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。
1、问题定义创建一个超市管理系统。
该程序具有保存商品信息、查询商品信息、修改商品信息、删除商品信息、统计商品信息并具有自动判断商品价格、库存等的功能。
超市管理系统主界面2、系统设计2.1 总体设计本程序采用模块化设计方法,即将一个大任务分成一个个小任务,然后分别设计个小任务。
划分出来的模块相对独立而又相互关联,容易理解。
本程序由5大模块组成:1.输入信息模块2.增加信息模块3.修改信息模块4.删除信息模块5.统计信息模块2.2 详细设计数据结构设计定义结构体struct good{int num; /*商品编号*/char name[20]; /*商品名称*/char kind[40]; /*商品类型*/float price; /*商品价格*/char unit[10]; /*商品单位*/int quantity; /*商品数量*/struct good *next; /*定义结构体指针类型*/}*head,*p1,*p2;单链表good结构体struct good /*定义结构体*/{int num; /*商品编号*/char name[20]; /*商品名称*/char kind[40]; /*商品类型*/float price; /*商品价格*/char unit[10]; /*商品单位*/int quantity; /*商品数量*/struct good *next; /*定义结构体指针类型*/}*head,*p1,*p2;主控main()函数执行流程Int main()struct good *p1,*p2;while(1){if(m==1)printf("********************************商品信息的查看*******************************\n");if(m==2){printf("********************************商品信息的输入*******************************\n");}if(m==3){printf("********************************商品信息的统计*******************************\n");}if(m==4){printf("********************************退出*******************************\n");}break;}}return 0;}本商品管理系统执行主流程。
它先以可读写的方式打开数据文件,此文件默认为“C:\goods ”,若该文件不存在,则新建此文件。
当打开文件操作成功后,从文件中一次读出一条记录,然后执行显示主菜单和进入主循环操作,进行按键判断。
2.2.3输入信息模块记录可以从以文件形式存储的数据文件中读入,也可从键盘逐个输入商品记录。
商品记录由商品的基本信息和成绩信息字段构成。
当从数据文件中读入记录时,也就是把在以记录为单位存储的数据文件中,将记录逐条复制到单链表中。
2.2.4增加信息模块增加信息模块主要实现信息增加2.2.5修改信息模块修改信息模块主要实现信息修改2.2.6删除信息模块删除信息模块主要实现信息删除2.2.7查看信息模块查看信息模块主要实现信息查看2.2.8统计信息模块统计信息模块主要实现信息统计2.2.9函数功能描述shuchu()shuchu()函数用于输出商品信息。
struct good *paixu(struct good*head2)此函数用于给链表排序。
jisuan()jisuan()函数用于判断商品的类别。
printf0(struct good *p)printf0(struct good *p)函数用于遍历链表并打印电器类商品。
printf1(struct good *p)printf1(struct good *p)函数用于遍历链表并打印日用品类商品。
printf2(struct good *p)printf2()函数用于遍历链表并打印办公用品类商品。
printf3(struct good *p)printf3 struct good *p ()函数用于遍历链表并打印食品类商品。
shunxudayin()shunxudayin()函数用于给商品排序并打印。
tongji1()tongji1()函数用于统计给库存量低于100的货名和类别。
tongji2()tongji2()函数用于统计商品库存量有2种以上(含两种)低于100的商品类别。
完成在上述系统设计后,即可着手进行系统实现的工作,开始程序代码的编写。
3、系统实现3.1 编码3.1.1 程序预处理包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。
#include "" /*输入,输出头文件*/#include "" /*申请空间头文件*/#include "" /*对字符串加工头文件*/#include "" /*清屏头文件*/FILE *fp;int n=0; /*定义文件指针类型*/int i,j,a[4],m; /*定义整数类型*/float aver[4],sum[4],g[4],h; /*定义浮点类型*/3.1.2 主函数main()main()函数主要实现了对整个程序的运行控制,以及相关功能模块的调用。
Int main()struct good *p1,*p2;while(1){if(m==1)printf("********************************商品信息的查看*******************************\n");if(m==2){printf("********************************商品信息的输入*******************************\n");}if(m==3){printf("********************************商品信息的统计*******************************\n");}if(m==4){printf("********************************退出*******************************\n");}break;}}return 0;}3.1.3 主菜单界面用户进入商品管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务。
{printf(" 桂林电子科技大学信息科技学院超市管理系统 \n");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);3.1.4 商品信息建立用户进入商品管理系统时,对某个商品的信息进行处理。
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 ","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,&p1->q uantity); /*输入商品信息*/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;}}商品信息查看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 ","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 % %s %d\n\n",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity);printf("__________________________________\n");p3=p3->next;}printf("**********************************\n");printf("3.2.13.2.2C程序设计(第三版). 清华大学出版社, 2005。