(店铺管理)超市商品信息系统设计报告及程序C语言.

合集下载

超市食品管理系统c语言实验报告

超市食品管理系统c语言实验报告

超市食品管理系统c语言实验报告摘要本实验设计和实现了一个基于c语言的超市食品管理系统。

通过该系统,用户可以方便地管理超市中的食品信息,包括货物进货、商品管理、库存统计、价格计算以及销售管理等功能。

通过对系统的设计和实现过程的详细分析,本报告介绍了系统的功能需求、设计思路、算法实现、界面展示和测试结果等内容。

从整体上来说,该系统实现了对超市食品的全方面管理,提高了工作效率,减少了人力成本。

1. 引言随着社会的发展,超市业已成为人们购买日常用品的主要场所之一。

在超市中,食品是其中的主要组成部分,对于超市来说,合理管理食品的进货、售卖和库存等是非常重要的。

因此,本实验设计和实现了一个基于c语言的超市食品管理系统,旨在提高超市工作效率,减少人力成本,方便管理。

2. 系统功能需求为了满足超市食品管理的需求,本系统应具备以下功能: 1. 货物进货管理:超市管理员可以通过系统进行食品的进货管理,包括进货数量、进货价格、进货时间等信息的记录和管理。

2. 商品管理:超市管理员可以通过系统进行商品的管理,包括商品名称、商品分类、商品价格等信息的维护和更新。

3. 库存统计:系统可以自动统计和更新食品的库存信息,方便管理员进行库存的掌控。

4. 价格计算:系统可以根据商品的数量和单价进行价格计算,方便管理员和顾客进行价格核算。

5. 销售管理:系统可以记录和管理超市的销售信息,包括销售数量、销售额等信息的统计和查询。

3. 系统设计思路本系统的设计思路主要包括数据结构设计、算法设计和界面设计三个方面。

3.1 数据结构设计为了方便对超市食品的管理和操作,本系统采用了以下数据结构: - 商品信息结构体:包括商品名称、商品分类、商品价格等字段,用于存储每个商品的信息。

-进货信息结构体:包括进货数量、进货价格、进货时间等字段,用于存储每次进货的信息。

- 销售信息结构体:包括销售数量、销售额等字段,用于存储每次销售的信息。

(完整word版)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语言程序设计电子科技大学教务处制表电子科技大学实验报告学生姓名:学号:指导教师:实验地点:实验时间:一、实验室名称:通用计算机软件实验室二、实验项目名称:超市商品信息管理系统三、实验学时:8学时四、实验原理:使用Visual Studio等C语言集成开发环境(IDE),在微型计算机上对程序进行编辑、编译、连接与运行。

通过上机练习掌握在C编译器中编辑、编译、连接、和运行C程序的方法和过程。

五、实验目的:掌握C语言中函数、结构体、指针数组、指针、字符串、文件操作等重点知识点,并且能够熟练运用。

掌握用C语言实现小型交互式软件的技术方法。

理解模块化编程的思路,学会用模块化的思想分解实际问题。

六、实验内容:以文本形式建立一个超市商品的基本信息库,其中包括商品序号,名称,价格,折扣,总数,余数等;编写C程序,读入文件并用结构存储商品信息,其中序号,名称,价格,折扣等结构成员采用字符串数组存储信息,而总数及余数则采用整型变量存储;编写函数,实现软件界面控制,商品信息初始化,商品信息的查找,修改,增删等操作;其中info_search函数实现用名称查找商品并调用info_output函数输出商品信息,info_insert函数和info_dele函数则实现商品信息的插入和删除,info_change调用info_search函数确认商品存在并实现对商品信息的修改;最后,退出系统,并将商品信息写入到商品信息文件,释放所有已分配的内存。

七、实验器材(设备、元器件):硬件要求:pc机,CPU PII 以上,64M 内存,100M 硬盘空间即可。

软件要求:Windows 7/XP/2003等,包括C编译器的IDE。

八、实验步骤、实验编程与运行结果:实验代码见文件2014220701027-陈家浩.c步骤一、打开程序,运行:(运行程序成功则表明商品信息文件被成功读入,失败会有提示)步骤二、实现商品信息的修改过程:输入要删除的商品的名字,然后info_change函数调用info_search函数查找到商品信息,然后进行修改;未查找到则提示“该商品不存在!”。

C语言课程设计_超市管理系统

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语言

(市场营销店铺管理)超市商品信息系统设计报告及程序C语言苏州科技学院二○一三~二○一四学年第一学期电子仍;之上;且;当下;和;可是;能够;俩;见;某公司;运营;信息工程系课程设计报告书课程名称:程序设计基础实践班级:学号:姓名:指导教师:二○一三年十二月1.题目《超市商品信息管理系统》的设计仍;之上;且;当下;和;可是;能够;俩;见;某公司;运营;实现2.功能(1)每一条记录包括一个商品的ID、名称、价格、保质日期。

(2)信息录入功能:仍;之上;且;当下;和;可是;能够;俩;见;某公司;运营;完成信息记录的追加仍;之上;且;当下;和;可是;能够;俩;见;某公司;运营;插入。

(3)信息排序功能:按商品ID、商品价格进行排序。

(4)信息查询功能:完成按商品ID、商品名称查找商品记录,仍;之上;且;当下;和;可是;能够;俩;见;某公司;运营;显示。

(5)读取功能:将保存在文件中的商品记录读取出来。

(6)修改信息功能:按商品的ID进行读取未修改前的数据,输入新信息,保存。

(7)删除功能:按商品ID删除商品信息记录,仍;之上;且;当下;和;可是;能够;俩;见;某公司;运营;保存。

(8)退出:退出主菜单,退出程序。

3.系统流程图4.设计内容整个系统除了主函数外,另外仍;之上;且;当下;和;可是;能够;俩;见;某公司;运营;有13个函数,实现八大功能:录入功能(追加、插入)、显示功能、查询功能、排序功能、删除功能、保存功能、读取功能。

各个函数的详细设计说明分别如下:4.1主函数main()利用无限次循环while(select!='0')和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。

4.2菜单选择函数voidDisMainMenu();这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的七大功能,根据每个功能前面的序号进行选择。

等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!4.3信息录入函数intInformationInput(GOODSgoo[],intcn)这是一个含参函数,用来执行商品信息的追加、插入。

c语言超市管理系统报告书

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语言超市商品管理系统实训报告

c语言超市商品管理系统实训报告

超市商品管理系统实训报告1. 背景超市商品管理系统是为了提高超市的商品管理效率和服务质量而开发的一款软件系统。

传统的超市商品管理方式通常依赖于人工操作,存在着工作效率低下、易出错、信息不及时等问题。

为了解决这些问题,我们开发了一套基于C语言的超市商品管理系统。

2. 分析2.1 系统需求分析在进行系统设计之前,我们首先对超市商品管理的需求进行了全面的分析。

通过与超市管理员和员工的沟通和访谈,我们得出了以下主要需求:•商品信息管理:包括商品的录入、修改、查询和删除等功能。

•库存管理:包括库存数量的统计、调整和报警等功能。

•销售管理:包括销售记录的录入、查询和报表生成等功能。

•会员管理:包括会员信息的录入、修改、查询和积分计算等功能。

2.2 系统设计思路基于以上需求分析,我们设计了一套简单而实用的超市商品管理系统。

该系统采用模块化设计,分为以下几个模块:•商品信息模块:负责处理商品信息的录入、修改、查询和删除等操作。

•库存管理模块:负责处理库存数量的统计、调整和报警等操作。

•销售管理模块:负责处理销售记录的录入、查询和报表生成等操作。

•会员管理模块:负责处理会员信息的录入、修改、查询和积分计算等操作。

系统采用了文件存储方式,将商品信息、库存信息、销售记录和会员信息保存在不同的文件中,以便于数据的读取和修改。

系统还提供了简单的用户界面,方便管理员和员工进行操作。

3. 结果经过系统设计和开发,我们成功实现了超市商品管理系统。

该系统在测试中表现良好,满足了超市商品管理的基本需求,并具备以下特点:•界面友好:系统采用简洁直观的用户界面,方便用户进行操作。

•功能完善:系统实现了商品信息管理、库存管理、销售管理和会员管理等多个功能模块。

•数据准确:系统通过文件存储方式,保证数据的准确性和可靠性。

•操作简便:系统提供了简单易用的操作方式,降低了用户学习成本。

4. 建议虽然超市商品管理系统已经取得了一定的成果,但仍存在改进空间。

(店铺管理)语言超市管理系统报告书(C语言课程设计)最全版

(店铺管理)语言超市管理系统报告书(C语言课程设计)最全版

(店铺管理)语言超市管理系统报告书(C语言课程设计)课程设计课程设计名称:高级语言程序设计专业班级:计算机科学与技术0802班学生姓名:李旭学号:200848140202指导教师:范艳峰课程设计时间:2009年7月2号计算机科学与技术专业课程设计任务书学生姓名李旭专业班级计科0802 学号200848140202 题目超市管理系统课题性质其它课题来源自拟课题指导教师范艳峰同组姓名无主要内容用《C程序设计》中的链表作数据结构,结合C语言基本知识。

编写一个超市管理系统。

以把所学数据结构知识应用到实际软件开发中去。

本系统应完成一下几方面的功能:1)新购物品入库——Tianjia();1需求分析:随着现代生活质量的提高,超市这种便利的服务开始走进我们的生活,同时随着超市涌入我们的生活,如何更便利的对超市进行系统和有序的操作,成为了我们需要考虑的问题,本程序运用C语言程序设计了一个超市管理系统。

关系系统的的功能主要有新购物品入库、物品信息删除、物品信息修改、物品信息查询、物品信息浏览功能,在相应的硬盘上面进行存盘以防止部分数据的丢失。

为了更加人性化使用此管理系统,还在MENU选项总添加了系统颜色设置功能,使用户可以根据自己的喜好修改操作界面。

2概要设计(1)数据结构依据给定的物品信息和数据形式,数组必须用结构体实现。

结构类型的层次结构:structima{intid;charname[20];charproduce[30];intnumber;floatprice;};(2)模块划分依据程序的结构反和功能,遵照“自顶而下”的原则,描述该程序的层次结构图一显示了该程序的层次结构,共5层:如下图:图一图一的层次结构(3)原函数清单:1、创建函数voidchushihua()2、增加物品函数Tianjia();3、删除物品信息函数Shanchu();4、修改物品信息函数Xiugai();5、查询物品信息函数Chazhao();6、浏览物品信息函数Liulan();7、系统颜色设置函数yanseshezhi();8、应用程序退出函数Jieshu();3运行环境:Win2003,WinXP,Win2000,NT,WinME,Win9X 4开发工具和编程语言:编程语言:C语言开发工具:microsoftvisualC++6.05详细设计:1、结构体变量的定义:structima{intid;charname[20];charproduce[30];intnumber;floatprice;};3、文件的初始化:voidchushihua(){FILE*fp;structimai={1,"花生牛奶","湖北武汉",1200,2.5}; fp=fopen("ima.dat","w");if(fp==NULL){printf("\t\t\t系统错误,请重试........");exit(0);}fwrite(&i,sizeof(structima),1,fp);fclose(fp);}4、欢迎菜单(主函数):voidmain(){printf("\n\n");system("color1a");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、选择菜单voidmenu(){intchoice;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){case1:Tianjia();break;case2:Shanchu();break;case3:Xiugai();break;case4:Chazhao();break;case5:Liulan();break;case6:yanseshezhi();break;case7:Jieshu();break;default:printf("\n\t\t\t\t\t输入无效,请您重新输入......"); getch();system("cls");menu();}}6、新购物品入库函数:intpanduanID(intid)/*判断所输编号是否已存在*/ {FILE*fp;structimai;fp=fopen("ima.date","r");if(fp==NULL){printf("\t\t\t系统错误,请您重试........");exit(0);}fread(&i,sizeof(structima),1,fp);while(!feof(fp)){if(i.id==id){fclose(fp);return1;break;}fread(&i,sizeof(structima),1,fp);}fclose(fp);return0;}voidTianjia(){structimai;charchoice;FILE*fp;fp=fopen("ima.date","ab");if(fp==NULL){printf("\t\t\t系统错误,请您重试........"); exit(0);}labID:printf("\n\t请您输入要入库物品的信息...\n"); printf("\t\t\t\t物品的编号:");scanf("%d",&i.id);if(panduanID(i.id)==1)printf("\t\t\t\t此编号已被使用,请您重新输入......"); gotolabID;}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(structima),1,fp);fclose(fp);printf("\t\t\t\t\t\t物品信息已入库成功!!!\n"); printf("\n您想继续吗?(y/n)");scanf("%c",&choice);if(choice=='Y'||choice=='y'){Tianjia();}elsesystem("cls");menu();}}7、物品信息删除函数:voidShanchu(){structimai[1000]; structimatemp;intdelID;charchoice;intindex=0;intj=0;FILE*fp;fp=fopen("ima.date","r");if(fp==NULL){printf("\t\t\t系统错误,请您重试........"); exit(0);}fread(&temp,sizeof(structima),1,fp); while(!feof(fp))i[index]=temp;index++;fread(&temp,sizeof(structima),1,fp);}fclose(fp);printf("\n\t请输入要删除的物品的编号:"); 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(structima),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、物品信息修改函数:voidXiugai(){intindex=0;intID,j;charchoice;structimai[1000]; structimatemp;FILE*fp;fp=fopen("ima.dat","r");if(fp==NULL){printf("\t\t\t系统错误,请您重试........");exit(0);}fread(&temp,sizeof(structima),1,fp);while(!feof(fp)){i[index]=temp;index++;fread(&temp,sizeof(structima),1,fp);}fclose(fp);fp=fopen("ima.dat","w");if(fp==NULL){printf("\\t\t\t系统错误,请您重试........");exit(0);}printf("\n\t请输入要修改的信息的物品的编号:"); scanf("%d",&ID);for(j=0;j<=index-1;j++)if(i[j].id!=ID){fwrite(&i[j],sizeof(structima),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、物品信息查询函数:voidChazhao(){FILE*fp;intfindID;charchoice;structimai;fp=fopen("ima.date","r");if(fp==NULL){printf("\t\t\t系统错误,请你重试........"); exit(0);}finID:printf("\n\t请输入要查询的物品的编号..");scanf("%d",&findID);fread(&i,sizeof(structima),1,fp);while(!feof(fp)){if(i.id==findID){printf("\n\n\t***************物品信息******************"); printf("\n\t物品编号...%30d\n",i.id);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(structima),1,fp);}fclose(fp);printf("\t\t\t\t\t输入的编号不存在,请您重新输入......"); gotofinID;}10、物品信息浏览函数:voidLiulan(){structimai;intindex=0;charchoice;FILE*fp;fp=fopen("ima.date","r");if(fp==NULL){printf("\t\t\t系统错误,请你重试........");exit(0);}fread(&i,sizeof(structima),1,fp);while(!feof(fp)){index++;printf("\n\n\t****************物品信息%d*****************",index); printf("\n\t物品编号...%30d\n",i.id);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(structima),1,fp);}fclose(fp);printf("\n您想继续吗?(y/n)");scanf("%c",&choice);if(choice=='Y'||choice=='y'){Liulan();}else{system("cls");menu();}}11、系统颜色设置函数:voidyanseshezhi(){inta;charchoice;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){case1:system("color40");break;case2:system("color70");break;case3:system("color04");break;case4:system("color21");break;case5:system("color65");break;case6:system("color1a");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、应用程序退出函数:voidJieshu(){charchoice;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调试分析:在此程序的编程前,我上网搜集了一些关于超市管理系统的资料,然后大体决定了编程的大致算法,即利用函数贯穿整个程序,通过SWITCH函数进行各个函数的选择;同时,进过查阅,我添加了系统颜色设置功能,同是应用了清屏函数,课下讲程序大致写好后,我上机进行了调试;但却出现了80几处错误,大都是提示miss“;”beforetybe;经过分析,程序算法并无错误;后来询问老师,才发现原来在我所编的程序中,有需要变量时,都是用的时候才定义,但正确的方法是应该在函数的开头就应该将所要用的变量进行生命,否则就出现了编译错误。

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) 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。

C语言程序设计超市管理系统1

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语言实验报告
本实验旨在设计一个超市食品管理系统,使用C语言实现基本的数据输入、存储、查询和统计功能,实现对超市食品销售的管理。

实验内容:
1.设计数据结构
首先,需要设计数据结构来存储超市食品的相关信息,包括商品编号、商品名称、商品类型、商品价格、商品库存等。

2.实现数据输入和存储
在程序运行时,需要进行数据输入并将数据存储到文件中。

这里可以使用文件输入输出流实现,将数据写入文件中,以便查询和统计。

3.实现数据查询
在管理系统中,需要实现对商品信息的查询功能,包括按照商品编号、商品名称、商品类型等进行查询。

可以通过读取文件中的数据,根据查询条件进行匹配。

4.实现数据统计
可以通过读取文件中的数据,进行商品销售情况的统计,包括总销售额、各类商品销售额、销售量等。

实验结果:
经过实验,我们成功地实现了一个基本的超市食品管理系统,包括数据输入、存储、查询和统计功能。

该系统可以有效地帮助超市管理人员进行商品销售的管理和统计,提高管理效率和销售业绩。

实验总结:
本实验通过设计一个超市食品管理系统,提高了我们对C语言的应用能力,同时也增强了我们对数据结构和文件操作的理解和掌握。

我们在实验中遇到了一些问题,如数据存储和读取的具体实现等,但通过不断地尝试和调试,最终成功地完成了实验目标。

超市食品管理系统c语言实验报告

超市食品管理系统c语言实验报告

超市食品管理系统c语言实验报告超市食品管理系统C语言实验报告一、实验目的本实验旨在让学生通过设计和实现一个超市食品管理系统,初步了解和掌握C语言编程的基本知识和技能,并培养学生独立思考和解决问题的能力。

二、实验内容本实验的主要内容是设计和实现一个超市食品管理系统,该系统可以实现以下功能:1. 管理员可以添加、删除、修改商品信息,如商品名称、价格、生产日期、保质期等。

2. 超市职员可以查询商品信息,并根据生产日期和保质期进行预警提醒。

3. 管理员可以生成商品销售报表,并显示每种商品的日销售量和总销售量。

4. 超市职员可以录入顾客购物清单,生成购物结算单,并计算折扣和总价。

三、实验原理本实验的实现主要依靠C语言编程语言,并借助各种相关函数库和工具,如文件IO操作函数、结构体定义和使用、条件和循环语句等。

四、实验过程1. 首先,我们开始设计和实现商品信息的添加功能。

为此,我们定义一个结构体类型goods,包含商品名称、价格、生产日期、保质期等信息。

然后,我们定义一个函数add_goods,用于添加商品信息。

该函数利用文件IO操作函数将商品信息写入一个文本文件,并对商品信息进行检验,以确保数据的准确性和完整性。

2. 接下来,我们实现商品信息的查询和预警提醒功能。

为此,我们定义两个函数query_goods和warning_goods。

query_goods函数利用文件IO操作函数从文本文件中读取商品信息,并根据用户输入的关键字进行模糊查询,返回匹配的商品信息。

warning_goods函数则利用当前日期和商品的生产日期和保质期计算商品的保质期,如果商品已过期或即将过期,则提醒职员及时处理。

3. 然后,我们开始设计和实现商品销售报表功能。

为此,我们定义一个函数sales_report,用于根据订单信息和商品信息计算每种商品的日销售量和总销售量。

该函数利用文件IO操作函数将销售报表写入一个文本文件,并在屏幕上显示报表信息。

超市管理系统-C语言

超市管理系统-C语言

西安邮电大学高级语言课程设计报告题目:超市管理系统院系名称:理学院专业名称:应用物理学班级:1301学生姓名:王松学号(8位):07132022指导教师:王西龙设计起止时间:2014年06月19日~2014年06月27日1:程序模型2:原函数概况1:创建函数void start(); /*启动界面*/void input(); /*商品数据信息输入函数*/void change(); /*商品数据信息修改函数*/void dele(); /*给定指定商品名称,删除商品信息*/ void output(); /*商品信息输出*/void search(); /*商品信息查找*/void mima();/*密码程序*/void colour();//颜色选择void huanying();2:商品信息录入input()3:商品信息的修改Change()4:商品信息的删除Dele()5:商品信息的查询Seaerch()6:系统颜色选择Colour()7:退出系统3:详细设计过程1:结构体变量的定义struct MarketGoods /*存数商品信息的结构体*/{char goods_id[30]; /*商品编号*/char goods_name[30]; /*商品名称*/double goods_price; /*商品价格*/double goods_discount;/*商品折扣*/int goods_amount;/*商品总数目*/int goods_remain;/*商品剩余数目*/}goods[COUNT];int count=0; /*全局变量,用于保存实际上有多少个商品*/2:欢迎界面void huanying(){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\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 \4\4\4\4\4\4 \3\n");printf("\t\3 \3\n");printf("\t\3 \5\5\5\5\5\5\5\5\5 \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\n");}3:密码登陆void mima(){// char pass[6]={'1','2','3','4','5','6'};/*假设密码长度是6*/char pass[]={"123456"};/*假设密码长度是6*/char str[6],ch;int i=0;int flag=0;printf(" 请输入密码:");fflush(stdin);for(i=0;i<6;i++){ch=getch(); /*读取字符,不显示*/str[i]=ch;putchar('*');}for(i=0;i<6;i++){if(str[i]!=pass[i]){flag=1;break;}}if(flag){printf("\n密码错误,登录失败!请重新登录\n");mima();}else printf("\n登录成功\n");getch();system("cls");start();}4:系统选择界面void start() /*启动菜单*/{int chi;printf(" 超市商品管理系统\n");printf("********************************************\n");printf("********************************************\n");printf(" 1.商品信息的录入:\n");printf(" 2.商品信息的修改:\n");printf(" 3.删除某个商品信息:\n");printf(" 4.查找商品信息:\n");printf(" 5.颜色选择:\n");printf(" 0.退出程序\n");printf("********************************************\n");printf("********************************************\n");printf(" 输入你的选择: ");scanf("%d",&chi); /*根据你的选择执行相应的函数*/if(chi==1) input();elseif(chi==2) change();else if(chi==3) dele();else if(chi==4) search();else if(chi==5) colour();else if(chi==0){printf("你已经退出超市商品管理系统!谢谢您的使用,再见\n");exit(0);}else{printf(" You Enter The Choice Is Not valid ! \n");getch();system("cls");start();}}void huanying(){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\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 \4\4\4\4\4\4 \3\n");printf("\t\3 \3\n");printf("\t\3 \5\5\5\5\5\5\5\5\5 \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\n");}5:商品信息的录入void input() /*数据录入*/{FILE *fp;char flag[20];fp=fopen("e:/student.txt","wt");do{printf("请输入你的商品信息:\n"); /*录入商品的信息*/printf("商品编号:");scanf("%s",goods[count].goods_id);printf("商品名字:");scanf("%s",goods[count].goods_name);printf("商品价格:");scanf("%lf",&goods[count].goods_price);printf("商品折扣:");scanf("%lf",&goods[count].goods_discount);printf("商品总数目:");scanf("%d",&goods[count].goods_amount);printf("商品剩余数目:");scanf("%d",&goods[count].goods_remain);count++; /*存数的商品数加一*/printf("是否继续输入数据y是n否: "); /*是否还想继续输入数据*/scanf("%s",flag);}while(strcmp(flag,"y")==0||strcmp(flag,"Y")==0);fwrite(&goods,sizeof(struct MarketGoods),count,fp);fclose(fp);output(); /*调用显示商品数据*/getch();system("cls");start();}6:商品信息的修改void change() /*数据修改*/{FILE *fp;int i,m=0;char ch[20],a[20];fp=fopen("e:/student.txt","rt");while(fread(&goods[m],sizeof(struct MarketGoods),1,fp)!=NULL){m++;}fclose(fp);printf("\nyou sure want change goodsInfor y/n): "); /*根据商品的id来修改数据*/scanf("%s",ch);if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0){printf("\nenter you want change goods_id:");scanf("%s",a);for(i=0;i<count;i++){if(strcmp(goods[i].goods_id,a)==0){printf("\nyou sure want change goods name(y/n): ");scanf("%s",ch);if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0){printf("\nname:");scanf("%s",goods[i].goods_name);}printf("\nyou sure want change goods price(y/n): ");scanf("%s",ch);if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0){printf("\nprice");scanf("%lf",&goods[i].goods_price);}printf("\nyou sure want goods discount(y/n): ");scanf("%s",ch);if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0){printf("\ndiscount");scanf("%lf",&goods[i].goods_discount);}printf("\nyou sure want goods amount(y/n): ");scanf("%s",ch);if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0){printf("\namount");scanf("%d",&goods[i].goods_amount);}printf("\nyou sure want goods remain(y/n): ");scanf("%s",ch);if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0){printf("\nremain"); scanf("%d",&goods[i].goods_remain);}}}}fwrite(&goods,sizeof(struct MarketGoods),count,fp);fclose(fp);output();getch();system("cls");start();}7:商品信息的删除void dele() /*数据删除*/{FILE *fp;int i,m=0,j;char ch[20],c[20];fp=fopen("e:/student.txt","rt");while(fread(&goods[m],sizeof(struct MarketGoods),1,fp)!=NULL){printf("%s",goods[m].goods_id);m++;}fclose(fp);printf("\nenter you want delete name :\n"); /*根据商品的名称来删除数据*/ printf("name:");scanf("%s",c);for(i=0;i<count;i++){if(strcmp(c,goods[i].goods_name)==0)break; /*找到,即跳出循环*/for(j=i;j<count-1;j++)goods[j]=goods[j+1];}printf("\t\t\tyou had delete %s\n",c);count--;fp=fopen("e:/student.txt","wt");fwrite(&goods,sizeof(struct MarketGoods),count,fp);fclose(fp);output();getch();system("cls");start();}8:商品信息查询void search() /*数据查找*/{FILE *fp;int i,m=0;char a[20];fp=fopen("e:/student.txt","rt");while(fread(&goods[m],sizeof(struct MarketGoods),1,fp)!=NULL){printf("%s",goods[m].goods_name);m++;}printf("\nenter you want look name:"); /*根据商品的名称来查找数据*/scanf("%s",a);for(i=0;i<m;i++){if(strcmp(goods[i].goods_name,a)==0)printf("%s %s %lf %lf %d %d \n",goods[i].goods_id,goods[i].goods_name,goods[i].goods_price,goods[i].goods_dis count,goods[i].goods_amount,goods[i].goods_remain);}getch();system("cls");start();}9:系统颜色选择void colour(){int a;printf("\n\n\t\t选择以下方案\n");printf("\n\n\t\t1**********红底黑字\n");printf("\n\n\t\t2**********白底黑子");printf("\n\n\t\t3**********黑底红字");printf("\n\n\t\t4**********绿底蓝字");printf("\n\n\t\t5**********黄底蓝字");printf("\n\n\t\t6**********系统默认");printf("\n\n\t\t\t\t请挑选您喜欢的颜色<1-6>....");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 la"); break;default:printf("\n\n\t\t\t\t输入无效");{getch();colour();}}start();}10:商品信息输出void output() /*数据输出*/{ FILE *fp;int i,m=0;fp=fopen("e:/student.txt","rt");while(fread(&goods[m],sizeof(struct MarketGoods),1,fp)!=NULL){m++;}fclose(fp);printf(" 编号名称价格折扣总数目剩余数目\n");for(i=0;i<m;i++){printf("%s %s %lf %lf %10d %10d \n",goods[i].goods_id,goods[i].goods_name,goods[i].goods_price,goods[i].goods_discount,goods[i].goods_amount,goods[i].goods_remain);}getch();system("cls");start();}11:退出系统void start() /*启动菜单*/{int chi;printf(" 超市商品管理系统\n");printf("********************************************\n");printf("********************************************\n");printf(" 1.商品信息的录入:\n");printf(" 2.商品信息的修改:\n");printf(" 3.删除某个商品信息:\n");printf(" 4.查找商品信息:\n");printf(" 5.颜色选择:\n");printf(" 0.退出程序\n");printf("********************************************\n");printf("********************************************\n");printf(" 输入你的选择: ");scanf("%d",&chi); /*根据你的选择执行相应的函数*/if(chi==1) input();elseif(chi==2) change();else if(chi==3) dele();else if(chi==4) search();else if(chi==5) colour();else if(chi==0){printf("你已经退出超市商品管理系统!谢谢您的使用,再见\n");exit(0);4:调试分析调试过程中,会有很多的错误。

超市管理系统(C语言课程设计报告)

超市管理系统(C语言课程设计报告)

超市管理系统本设计运用C语言程序设计了一个超市管理系统。

主要实现得功能有进货功能、退货功能、商品销售功能、商品信息查询功能、商品信息浏览功能。

1、开发工具与编程语言:开发工具:MicrosoftVisual C++6、0编程语言:C语言2.模块划分3、系统功能与函数得对应关系本系统包括一个主函数与6个被调函数,分别如下:(1)主函数void main()(2)功能选择函数 void gongneng()(3)进货功能函数 void jinhuo()(4)退货功能函数 void tuihuo()(5)商品销售函数 void spxs()(6)信息查询函数void xxcx()(7)信息浏览函数 void spxxpx()4、结构体类型说明商品信息包括:商品编号、商品名称、商品进价、商品售价、商品库存数量。

结构体类型定义为:structxinxi//结构体char bh[30];//商品编号char bhstr[30];//商品名称float jinjia;//商品进价float shoujia;//商品售价int kucun;//商品库存数量};5、系统函数得设计与实现5.1主函数主函数中运行功能选择函数,运行时可以显示系统界面,系统界面如图5-1所示。

图5-1 系统主界面主函数中可以实现各种功能得选择。

5、2进货功能函数(1)流程图进货功能函数实现进货功能,能够实现要进货商品得信息添加或录入。

进货时,先检测本商品就是否存在,若存在则修改库存数量等相关信息;否则添加本商品得相关信息。

进货流程图如图5-2所示。

开始菜单进货功能输入商品得名称ﻩﻩ(2)系统代码voi d jin hu o()//进货处理函数 {ch ar str[30]; i nt i,a=2; wh ile(a ==2) {print f("请输入商品得名称:"); sca nf("%s",s tr); for(i=0;i<b ;i++)if(strcmp(st r,s[i]、bhst r)==0)//查找要进货得商品 {pr intf("编号:%s ,进价:%5.1f,售价:%5.1f,库存数量:%d\n",s[i]、bh,s[i]、jinj ia,s [i]、shoujia,s[i ]、kucun); print f("请输入新库存数量:");s canf ("%d ",&s[i]、kuc un);//修改库存信息 pri ntf ("库存信息修改完成\n "); ﻩbr eak; }if(i>=b)//如果没有找到要进货得商品,则添加商品信息 {printf("添加商品信息:\n");printf("请输入商品编号:");scanf("%s",s[i]、bh);printf("请输入商品名称:");scanf("%s",s[i]、bhstr);printf("请输入商品进价:");scanf("%f",&s[i]、jinjia);printf("请输入商品售价:");scanf("%f",&s[i]、shoujia);printf("请输入商品库存数量:");scanf("%d",&s[i]、kucun);printf("商品信息添加完成\n");b++;}printf("请选择:");printf("1、返回开始菜单");printf("2、继续进行进货处理");scanf("%d",&a);}}(3)运行效果输入:选项1输出:请输入商品得名称:输入:1输出:添加商品信息请输入商品编号:……输入:1输出:商品信息添加完成请选择:1、返回开始菜单2、继续进行进货处理输入:2输出:请输入商品名称:输入:1输出:编号:1,进价:1、0,售价:1、0,库存数量:1请输入新库存:输入:2输出:库存信息修改完成请选择:1、返回开始菜单2、继续进行进货处理输入:1返回开始菜单运行效果图如图5-3所示。

C语言程序设计超市管理系统

C语言程序设计超市管理系统

超市管理系统课程设计1)需求分析:设计题目:超市管理系统 设计要求:有一个小型超市,出售N( NX 10)种商品,设计并实现一个系统系统功能需求分析:程序设计超市管理系统学院:专业:班级:姓名:学号:指导老师:1. 保存及输出:超市中的各种商品信息保存在指定文件中,可以把它们输出显示。

2.计算并排序:计算每类商品的总价值( sum,单精度)及平均价(aver ,单精度,输出 一位小数),将每类商品按平均价从大到小的顺序排序打印出来。

3.统计:统计输出库存量低于 100的货号及类别。

统计输出有两种以上(含两种)商品 库存量低于100的商品类别。

2)概要设计:系统总体设计框架:3)详细设计:信息输出修改模块新建信息模块排序模块丿系统功能模块图:主要功能模块的算法设计思路:本程序主要分为八个模块:主模块、信息输出修 改模块、新建信息模块、排序模块、计算模块、统计模块 1统计模块2、打印 模块。

1) 主模块:通过调用各分模块实现功能;2) 信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商 品信息,修改商品信息;3) 新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存 在指定的文件中;4) 排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序, 放到链表里存储;计算模块:将所有商品的价格与库存量进行累加求和;打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来; 统计模块1:统计库存量低于100的货名及类别;统计模块2:统计商品库存量有2种以上(含2种)低于100的商品类别4)主要源程序代码:输入,输出头文件*/申请空间头文件*/ 对字符串加工头文件*/ 清屏头文件*/5) 6)#i nclude ""#include "" #i nclude ""#i/* /*工作流程图: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 ","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(" _____________ scanf("%d",&p1->num);if(p1->num==-1) { printf(" fprintf(fp,"%d",-1); fclose(fp); return head1; } \n");/*\n\n"); /* /* 申请新空申请空间结束条件 */ 返回头指针 */ 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)==O) /*{sum[2]=sum[2]+(p1->price)*(p1->quantity); /* 求办公用品总价 */ a[2]=a[2]+p1->quantity; /*求办公用品总件数 */ } if(strcmp(p1->kind,f)==O) /* {求日用品总件数 */判断是否为办公用品类型 */ 判断是否为食品类型 */ 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( printf(" 商品类型 \t 平均价 \t printf("*************************************************** printf(" _____________________________ printf(" 电器总价值 :%\t 平均价 :%\t 总库存 量:%d\n",sum[O],aver[O],a[O]); printf(" _______________________________________ printf(" 日用品总价值 :%\t 平均价 :%\t 总库存 量:%d\n",sum[1],aver[1],a[1]); printf(" _______________________________________ printf(" 食品总价值 :%\t 平均价 :%\t 总库存 量:%d\n",sum[2],aver[2],a[2]); printf(" _______________________________________ printf(" 办公用品总价值 :%\t 平均价 :%\t 总库存 量:%d\n",sum[3],aver[3],a[3]); printf(" _______________________________________ } /* /* /*void shuchu() {do { struct good *p3,*p4,*p5; int n=0,p=0,q=0,r=0; printf(" 所有商品信息:/* /* 遍历链表结束条件 */ 求每类商品平均价 */ *\n"); 总库存量 \n"); *\n"); 输出商品信息函数 */ 定义结构体指针类型 */\n"); \n");\n");\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(" _____________________________ p3=p3->next;} printf("**********************************\n"); \n");关闭文件 */printf("//////////////////////////////////\n"); while(n!=4){ p3=head; printf( printf("1 printf("2 printf("3 printf("4 回) \n"); printf( 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->u nit,&p4->quantity); p4->next=NULL; while(p3->next!=NULL) { p3=p3->next;} p3->next=p4; p3=head; if((fp=fopen("goods ","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); /* /* /* 输入商品信息 */ 判断循环结束条件 */ /* 判断能否打开文 **************************\n"); 添加商品信息 \n");删除某商品信息 \n"); 修改某商品信息 \n"); 返回(当你完成了对某一商品的添加、删除或者修改后请按 4 返"**********************************\n"); 添加商品信息 */申请空间 *//* 判断能否打开文件 */printf("**********************************\n"); printf(" printf(" printf(" printf("**********************************\n"); } if(n==2) { 请按 4 返回 _\n"); \n"); \n");/* 删除商品*/ printf("**********************************\n"); printf(" 请输入需要删除的商品编号 \n"); printf("**********************************\n"); scanf("%d",&p);printf("**********\n"); printf("1 确认删除 \n2printf("**********\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 ","w"))==NULL) {取消删除 \n"); 释放空间 */ /* 判断循环结束条件 */ 释放空间*/printf("can not open thefile"); 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(printf(" printf("printf(" printf("**********************************\n");/* /* /* 关闭文件 */继续循环 */ *\n");请按 4 返回_\n"); \n"); \n");if(n==3){ printf(" scanf("%d",&q); while(p3!=NULL){if((p3->num)==q) { printf(" \n"); 修改某商品信息 */ 请输入需要修改的商品编号 \n"); /* /* 判断循环结束条件 */ 判断是否为所需要修改的商品 */ 请输入商品单价与库存量(如果单价不变请输入原来的单价) scanf("%f %d",&p3->price,&p3->quantity); 价格与库存量 */ } p3=p3->next; } if((fp=fopen("goods ","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(" printf(" printf("printf("**********************************\n"); } if(n==4) break; } printf("**********\n"); printf("1 继续修改 \n printf("**********\n"); scanf("%d",&p); if(p==1) continue; /* if(p==2) break; /* }while(n!=2); fclose(fp); }/* /*\n2 退出*/ 返回\n"); 继续循环 */ 跳出循环 */ 关闭文件 */ void printf0(struct good *p) {struct good *p3; p3=p; while (p3!=NULL) /* { if(strcmp(p3->kind,c)==0) {/*/* 遍历链表并打印电器类商品函数 */ 定义结构体指针类型 */ 判断遍历链表循环结束条件 */结束程序 */判断循环结束条件 */\n");\n")请按 4 返回printf("%d\t%s\t%s\t%\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity); /* 输出电器类商品信息 */ printf(" \n");} p3=p3->next; } return;}if(strcmp(p3->kind,d)==0){ printf("%d\t%s\t%s\t%\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity); /* 输出日用品类商品信息 printf(" _______\n"); } p3=p3->next; } return;}printf("%d\t%s\t%s\t%\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price, p3->unit,p3->quantity); /* 输出办公用品类商品信息 */ printf(" __\n"); } p3=p3->next;void printf1(struct good *p) {struct good *p3;p3=p; while (p3!=NULL) { /*/*/* 遍历链表并打印日用品类商品函数 定义结构体指针类型 */判断遍历链表循环结束条件 */*//*判断商品类型是否为日用品类型 */*/void printf2(struct good *p){struct good *p3; p3=p;while (p3!=NULL) /*{ if(strcmp(p3->kind,e)==0) {/*/* /*遍历链表并打印办公用品类商品函数 定义结构体指针类型 */判断遍历链表循环结束条件 */判断商品类型是否为办公用品类型 */*/} 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%\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(" _____________________________________________ printf(" 编号\t 名称\t 类别\t 单价\t 单位\t 数量\n"); printf(" _____________________________________________将平均价赋给新数组 */将新数组用冒泡排序法排序 */\n"); \n");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) /* { printf("%s\t%s\n",p1->name,p1->kind); /* printf(" ___________________________________ \n"); } p1=p1->next; } }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; } }}判断每类商品平均价格的先后顺序 */调用遍历链表并打印电器类商品函数 */调用遍历链表并打印日用品类商品函数 */调用遍历链表并打印办公用品类商品函数 */调用遍历链表并打印食品类商品函数 */判断库存量是否小于 100*/输出商品名称及类别 */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 输出查看或者修改已存信息 --- printf(" ----------------------------- \n"); printf("2 重新输入新信息(并且删除原有信息) printf(" ----------------------------- \n");/*定义结构体指针类型 */\n"); \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();tongji2(); } if(m==4) { p1=head;while(p1!=NULL) { p2=p1->next; free(p1); p1=p2; } break; } } return 0; } /*/*/* /*调用输出信息函数 */调用建立链表函数 *//* /*/* /* /* 5)调试分析过程描述: 调用链表排序函数 */ 调用计算函数 */ 调用顺序打印函数 */ 调用统计 1 函数*/ 调用统计 2 函数*/ 判断遍历链表结束条件 */释放空间*/结束程序*/测试数据: 01 milk drink box 5 02 apple fruit 3 kilo 2测试输出结果:存在问题的思考:源代码出错,漏了一些分号导致程序频频出错,在进行编写时注意小地方别出错!否则会影响大局!6)总结:学习体会与收获:通过这个超市管理系统程序设计实验,我从理论知识跨越到实践上,感到收效良多,从崇拜计算机到学会控制计算机,在心理上不再觉得计算机是万能的,人的大脑才是万能的,算法才是万能的数学才是万能的,在这次实验中,实现一个完整的程序大大加深了我对C语言课程的兴趣!对C语言课程设计的认识以及自己的建议:C语言课程设计就是通过编译实现需要的功能的一种程序的设计,建议自己以后在这方面多下功夫,真正实现自己编译以个完整的C 程序,实现自己的梦想和未来!。

超市商品信息系统设计报告及程序C语言(doc 28页)

超市商品信息系统设计报告及程序C语言(doc 28页)

超市商品信息系统设计报告及程序C语言(doc 28页)部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑苏州科技学院二○一三~二○一四学年第一学期电子与信息工程系课程设计报告书课程名称:程序设计基础实践班级:学号:姓名:指导教师:二○一三年十二月1.题目《超市商品信息管理系统》的设计与实现2.功能(1)每一条记录包括一个商品的ID、名称、价格、保质日期。

(2)信息录入功能:可以完成信息记录的追加与插入。

(3)信息排序功能:按商品ID、商品价格进行排序。

(4)信息查询功能:完成按商品ID、商品名称查找商品记录,并显示。

(5)读取功能:将保存在文件中的商品记录读取出来。

(6)修改信息功能:按商品的ID进行读取未修改前的数据,输入新信息,保存。

(7)删除功能:按商品ID删除商品信息记录,并保存。

(8)退出:退出主菜单,退出程序。

3. 系统流程图4.设计内容整个系统除了主函数外,另外还有13个函数,实现八大功能:录入功能(追加、插入)、显示功能、查询功能、排序功能、删除功能、保存功能、读取功能。

各个函数的详细设计说明分别如下:4.1主函数 main()利用无限次循环while (select!='0')和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。

4.2菜单选择函数 void DisMainMenu();这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的七大功能,根据每个功能前面的序号进行选择。

等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!4.3信息录入函数 int InformationInput(GOODS goo[],int cn)这是一个含参函数,用来执行商品信息的追加、插入。

其中GOODS goo[]是结构体数组,cn是本次录入商品记录的总数。

信息录入函数的流程图如下:信息录入函数的程序如下:int InformationInput(GOODS goo[],int cn){int number,i,m,n,a1,j,a2=0;char a3;printf("\n请输入本次录入的商品品种的总数: ");scanf("%d",&number);if(number>MAX_NUM-cn){printf("您输入的人数太多,大于%d人!\n",MAX_NUM-cn);system("pause");return(0);}printf("\n****1. 信息的追加****\t****2.信息的插入****\n");scanf("%d",&m);if(m==1){for(i=cn;i<number+cn;i++){printf("\t商品ID :\t");scanf("%d",&goo[i].ID);printf("\t商品名称 :\t");fflush(stdin);scanf("%s",goo[i].name);for(j=0;j<i;j++){if(goo[j].ID==goo[i].ID || strcmp(goo[j].name,goo[i].name)==0){printf("\n警告:您输入的商品ID或商品名称与已有的数据文件相同,是否继续 Y / N ?");fflush(stdin);scanf("%c",&a3);if(a3=='Y'||a3=='y')break;elsereturn(0);}elsecontinue;}printf("\t商品单价 :\t");scanf("%f",&goo[i].price);printf("\t商品保质日期 :\t");scanf("%d%d%d",&goo[i].guarant.year,&goo[i].guarant.month,&goo[i].guarant.day);printf("\n");}printf("\n本次输入的信息是 :\n");DisplayInformation2(goo,cn,cn+number);printf("\n");return(number+cn);}else if(m==2){printf("该数据插入在商品ID ? 之前 : ");scanf("%d",&n);for(i=0;i<cn;i++){if(goo[i].ID==n){a1=i;break;}elsecontinue;}if(i<=cn-1){for(i=cn-1;i>=a1;i--){goo[i+number].ID=goo[i].ID;strcpy(goo[i+number].name,goo[i].name);goo[i+number].price=goo[i].price;goo[i+number].guarant.year=goo[i].guarant.year;goo[i+number].guarant.month=goo[i].guarant.month;goo[i+number].guarant.day=goo[i].guarant.day;}for(i=a1;i<a1+number;i++){printf("\t商品ID :\t");scanf("%d",&goo[i].ID);printf("\t商品名称 :\t");fflush(stdin);scanf("%s",goo[i].name);printf("\t商品单价 :\t");scanf("%f",&goo[i].price);printf("\t商品保质日期 :\t");scanf("%d%d%d",&goo[i].guarant.year,&goo[i].guarant.month,&goo[i].guarant.day);printf("\n");}for(i=a1;i<a1+number;i++){for(j=0;j<a1;j++){if(goo[j].ID==goo[i].ID || strcmp(goo[j].name,goo[i].name)==0){printf("\n警告:您输入的商品ID或商品名称与已有的数据文件相同,是否继续 Y / N ?");fflush(stdin);scanf("%c",&a3);if(a3=='Y'||a3=='y'){break;break;}elsereturn(0);}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(店铺管理)超市商品信息系统设计报告及程序C语言苏州科技学院二○一三~二○一四学年第一学期电子与信息工程系课程设计报告书课程名称:程序设计基础实践班级:学号:姓名:指导教师:二○一三年十二月1.题目《超市商品信息管理系统》的设计与实现2.功能(1)每一条记录包括一个商品的ID、名称、价格、保质日期。

(2)信息录入功能:可以完成信息记录的追加与插入。

(3)信息排序功能:按商品ID、商品价格进行排序。

(4)信息查询功能:完成按商品ID、商品名称查找商品记录,并显示。

(5)读取功能:将保存在文件中的商品记录读取出来。

(6)修改信息功能:按商品的ID进行读取未修改前的数据,输入新信息,保存。

(7)删除功能:按商品ID删除商品信息记录,并保存。

(8)退出:退出主菜单,退出程序。

3. 系统流程图4.设计内容整个系统除了主函数外,另外还有13个函数,实现八大功能:录入功能(追加、插入)、显示功能、查询功能、排序功能、删除功能、保存功能、读取功能。

各个函数的详细设计说明分别如下:4.1主函数main()利用无限次循环while (select!='0')和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。

4.2菜单选择函数void DisMainMenu();这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的七大功能,根据每个功能前面的序号进行选择。

等执行完每一个函数功能后,按任一键回到主界面也要通过这个函数来实现!4.3信息录入函数int InformationInput(GOODS goo[],int cn)这是一个含参函数,用来执行商品信息的追加、插入。

其中GOODS goo[]是结构体数组,cn是本次录入商品记录的总数。

信息录入函数的流程图如下:信息录入函数的程序如下:int InformationInput(GOODS goo[],int cn){int number,i,m,n,a1,j,a2=0;char a3;printf("\n请输入本次录入的商品品种的总数: ");scanf("%d",&number);if(number>MAX_NUM-cn){printf("您输入的人数太多,大于%d人!\n",MAX_NUM-cn);system("pause");return(0);}printf("\n****1. 信息的追加****\t****2.信息的插入****\n");scanf("%d",&m);if(m==1){for(i=cn;i<number+cn;i++){printf("\t商品ID :\t");scanf("%d",&goo[i].ID);printf("\t商品名称:\t");fflush(stdin);scanf("%s",goo[i].name);for(j=0;j<i;j++){if(goo[j].ID==goo[i].ID || strcmp(goo[j].name,goo[i].name)==0){printf("\n警告:您输入的商品ID或商品名称与已有的数据文件相同,是否继续Y / N ?");fflush(stdin);scanf("%c",&a3);if(a3=='Y'||a3=='y')break;elsereturn(0);}elsecontinue;}printf("\t商品单价:\t");scanf("%f",&goo[i].price);printf("\t商品保质日期:\t");scanf("%d%d%d",&goo[i].guarant.year,&goo[i].guarant.month,&goo[i].guaran t.day);printf("\n");}printf("\n本次输入的信息是:\n");DisplayInformation2(goo,cn,cn+number);printf("\n");return(number+cn);}else if(m==2){printf("该数据插入在商品ID ? 之前: ");scanf("%d",&n);for(i=0;i<cn;i++){if(goo[i].ID==n){a1=i;break;}elsecontinue;}if(i<=cn-1){for(i=cn-1;i>=a1;i--){goo[i+number].ID=goo[i].ID;strcpy(goo[i+number].name,goo[i].name);goo[i+number].price=goo[i].price;goo[i+number].guarant.year=goo[i].guarant.year;goo[i+number].guarant.month=goo[i].guarant.month;goo[i+number].guarant.day=goo[i].guarant.day;}for(i=a1;i<a1+number;i++){printf("\t商品ID :\t");scanf("%d",&goo[i].ID);printf("\t商品名称:\t");fflush(stdin);scanf("%s",goo[i].name);printf("\t商品单价:\t");scanf("%f",&goo[i].price);printf("\t商品保质日期:\t");scanf("%d%d%d",&goo[i].guarant.year,&goo[i].guarant.month,&goo[i].guaran t.day);printf("\n");}for(i=a1;i<a1+number;i++){for(j=0;j<a1;j++){if(goo[j].ID==goo[i].ID || strcmp(goo[j].name,goo[i].name)==0){printf("\n警告:您输入的商品ID或商品名称与已有的数据文件相同,是否继续Y / N ?");fflush(stdin);scanf("%c",&a3);if(a3=='Y'||a3=='y'){break;break;}elsereturn(0);}elsecontinue;}for(j=a1+number;j<cn+number;j++){if(goo[j].ID==goo[i].ID || strcmp(goo[j].name,goo[i].name)==0){printf("\n警告:您输入的商品ID或商品名称与已有的数据文件相同,是否继续Y / N ?");fflush(stdin);scanf("%c",&a3);if(a3=='Y'||a3=='y'){break;break;}elsereturn(0);}elsecontinue;}}printf("\n本次输入的信息是:\n");DisplayInformation2(goo,a1,a1+number);printf("\n");return(number+cn);}else{printf("\n输入插入位置有误,请查询数据文件后重新插入!");system("pause");return(0);}}else{printf("输入错误!");return(0);}}4.4信息排序函数void Sort(GOODS goo[],int max);这是一个不返回值的有参函数,形参为max,负责对全部商品信息分别按商品ID、价格运用“冒泡法”进行升序排序。

void Sort(GOODS goo[],int max){int i,j,select;GOODS p;printf("\n***********************请选择排序方式**********************\n"); printf("\n\t1--按商品ID排序方式\t2--按商品价格排序方式\n");printf("\n***********************************************************\n"); printf("请选择(1--2) :");select=getche();getch();switch(select){case '1':printf(" 您选择的是按商品ID排序方式!\n");for(i=0;i<max-1;i++)for(j=0;j<max-1-i;j++)if(goo[j].ID>goo[j+1].ID){p=goo[j];goo[j]=goo[j+1];goo[j+1]=p;}break;case '2':printf(" 您选择的是按商品价格排序方式!\n");for(i=0;i<max-1;i++)for(j=0;j<max-1-i;j++)if(goo[j].price>goo[j+1].price){p=goo[j];goo[j]=goo[j+1];goo[j+1]=p;}break;default:printf("选择错误!\n");}}4.5显示记录函数4.5.1显示记录函数void DisplayInformation(GOODS goo[],int max);这是一个不返回值的有参函数,形参为max,负责对全部商品信息记录的显示。

相关文档
最新文档