超市管理系统完整+源代码(总18页)

合集下载

(完整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).输入模块:录入需要管理的商品信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。

超市管理系统详细设计

超市管理系统详细设计

超市管理系统详细设计(总8页) -本页仅作为预览文档封面,使用时请删除本页-超市管理系统详细设计说明书指导老师:曾安平小组人员: 唐周成航王程鸿班级:计科系06级2班1、引言:1、1编写目的:在前一阶段(概要设计说明书)中,已解决了实现该系统需求的程序模块设计问题。

包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。

在以下的详细设计报告中将对在本阶段中对系统所做的所有详细设计进行说明。

这是程序员进行开发及未来测试的重要文档资料。

在本阶段中,确定应该如何具体地实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成用具体的程序语言书写的程序。

主要的工作有:根据在《需求分析说明书》中所描述的数据、功能、运行、性能需求,并依照《概要设计说明书》所确定的处理流程、总体结构和模块外部设计,设计软件系统的结构设计、逐个模块的程序描述(包括各模块的功能、性能、输入、输出、算法、程序逻辑、接口等等),解决相关问题。

1、2参考资料:《超市管理系统概要设计说明书》《超市管理系统需求分析说明书》2、总体设计:2、1需求概要:大大提高超市的运作效率,通过全面的信息采集和处理,辅助提高超市的决策水平;使用本系统,可以迅速提升超市的管理水平,为降低经营成本,提高效益,增强超市扩张力,提供有效的技术保障。

要求系统能有效、快速、安全、可靠和无误的完成上述操作。

并要求客户机的界面要单明了,易于操作,服务器程序利于维护。

2、2软件结构:各模块之间的关系已由概要设计给出。

3、程序描述:系统登录模块功能:本模块的主要功能是对用户身份进行,,验证只有系统的合法用户才能进入系统。

其窗体如下图:在进行系统登录过程中,登录模块将调用数据库里的用户清单,并对账号和密码进行验证,只有输入了正确的账号和密码后,系统登录才会成功。

并在输入了错误的或者是不存在的账户和密码时,系统会给出出错信息提示,指明登录过程中的错误输入或者错误操作,以便用户进行正确的登录。

超市会员管理系统详细代码

超市会员管理系统详细代码

数据库设计1 系统数据库分析数据库设计是建立数据库及其应用系统的技术,是系统开发和建设中的核心技术。

具体说,数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效的存储数据,满足各种用户的应用需求(信息要求和处理要求)。

数据库结构设计的好坏直接对应用系统的效率以及实现的效果产生影响。

根据超市会员管理系统功能设计的需要,数据库结构设计如下所示:(1). 用户登录信息数据表(Login):(用户账号,密码,登录身份);(2). 会员基本信息数据表(Member):(用户账号,用户姓名,身份证号,联系方式,联系地址);(3). 职员基本信息数据表(Employee):(职员号,职员姓名,职员职位);(4). 会员积分信息数据表(Score):(会员账号,会员积分,会员等级,会员折扣);2 数据库概念结构设计根据上节的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为以后的逻辑结构设计打下基础,这些实体包括各种具体信息,通过相互之间的作用形成数据的流动。

各种实体具体的描述E-R图如下。

1. 用户登录信息实体图主要描述了登录用户的基本情况,包括了用户的用户账号,密码,登录身份。

如图3-11所示,用户登录信息实体E-R图。

图3-12 用户登录实体的E-R图2. 会员基本信息实体图主要描述会员的基本情况,包括了会员基本信息的用户账号,用户姓名,身份证号,联系方式,联系地址,得出如图3-12所示会员基本信息实体E-R图。

图3-13 会员基本信息实体的E-R图3. 职员基本信息实体图主要描述新生的基本情况,包括了职员基本信息的职员号,职员姓名,职员职位,得出如图3-13所示职员基本信息实体E-R图。

图3-14 职员基本信息实体的E-R图4. 会员积分信息实体图主要描述会员积分的基本情况,包括了会员积分基本信息的会员账号,会员积分,会员等级,会员折扣,得出如图3-14所示会员积分信息实体E-R图。

(完整版)超市管理系统-软件工程毕业课程设计

(完整版)超市管理系统-软件工程毕业课程设计

超市管理系统项目需求规格说明书目录1.简介1.2业务范围1.3术语表1.4参考资料2.系统概述2.1功能概述2.1.1总系统用例图2.1.2前台销售系统用例视图2.1.3后台管理系统用例视图2.1.4库存管理子用例图2.1.5商品管理子用例图2.1.6信息查询子用例图2.1.7用户管理子用例图2.2系统角色2.3系统约束3.系统功能描述4.非功能性需求4.1性能4.2可扩展性4.3安全性4.4易用性4.5可维护性5.数据管理能力要求1简介1.1目的随着超市的出现,为实现超市管理的系统化、规范化和自动化,超市管理系统应运而生.它依靠现代化的计算机信息处理技术来管理超市,这能够快速反映出商品的进销存状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应决策,加快超市的系统建立的技术基础;为超市提供方便,快捷的结账体系,准确,高效的库存和财务管理系统等;让顾客在超市购物更加快捷方便,让超市的管理和运行工作更加完善,方便.1.2业务范围使用超市管理系统的目的就是使用最少的人力,来完成超市中的日常工作。

一个典型的超市管理系统,除了应该完成超市中必要的销售工作外,还应该具有后台管理的功能。

和超市相关的就是货物仓库,因为随着超市规模的越来越大,销售商品是非常多的,它们并不能全部放在超市中,需要将它们暂时放在仓库中,所以对仓库的管理是非常有必要的。

为了使超市更加吸引客户,推出了会员优惠活动,通过使用会员卡能够享受商品的优惠价。

所以在超市管理系统中还要能够对超市会员进行管理。

根据超市的需要,我们来分析一下超市管理系统中还应该具有哪些功能。

按照操作方向,可以将超市管理系统分为商品管理模块、仓库管理模块、销售管理模块和会员管理模块。

商品管理模块:通过该模块可以完成超市中商品的日常管理,其中包括新增一种新销售商品、向超市中进货、接收客户的退货和查询某一商品的功能。

仓库管理模块:通过该模块可以完成和超市匹配场所仓库的管理,其中包括对商品的出库和入库操作、查询仓库中所有商品和查询指定商品等功能。

java购物系统源代码

java购物系统源代码

1 StartSMS.javapackage cn.itcast;import ;/*** 系统开启类** @author Administrator**/public class StartSMS {public StartSMS() {}public static void main(String args[]) {Data data = new Data();data.ini();Menu menu = new Menu();menu.setData(data.goodsName, data.goodsPrice, data.custNo,data.custBirth, data.custScore);menu.showLoginMenu();boolean flag = true;label0: do {if (!flag)break;Scanner scanner = new Scanner(System.in);int i = scanner.nextInt();VerifyEqual verifyequal = new VerifyEqual();switch (i) {case 1: // '\001'int j = 3;do {if (j < 1)continue label0;if (verifyequal.verify(,{menu.showMainMenu();continue label0;}if (j != 1) {"\n用户名和密码不匹配,请重新输入:");} else {"\n您没有权限进入系统!谢谢!");flag = false;}j--;} while (true);case 2: // '\002'if (verifyequal.verify(,{"请输入新的用户名:");= scanner.next();"请输入新的密码:");= scanner.next();"用户名和密码已更改!");"\n请选择,输入数字:");} else {"抱歉,你没有权限修改!");flag = false;}break;case 3: // '\003'"谢谢您的使用!");//flag = false;System.exit(0);break;default:"\n输入有误!请重新选择,输入数字: ");break;}} while (flag);}}2 VerifyEqual.javapackage cn.itcast;import ;/*** 验证管理员登录** @author Administrator**/public class VerifyEqual {public VerifyEqual() {}public boolean verify(String s, String s1) {"请输入用户名:");Scanner scanner = new Scanner(System.in);String s2 = scanner.next();scanner = new Scanner(System.in);String s3 = scanner.next();return s2.equals(s) && s1.equals(s3);}}3 CustManagement.javapackage cn.itcast;import ;public class CustManagement {public CustManagement() {}public void setData(String as[], double ad[], int ai[], String as1[],int ai1[]) {goodsName = as;goodsPrice = ad;custNo = ai;custBirth = as1;custScore = ai1;}public void returnLastMenu() {"\n\n请按'n'返回上一级菜单:");Scanner scanner = new Scanner(System.in);boolean flag = true;doif (scanner.next().equals("n")) {Menu menu = new Menu();menu.setData(goodsName, goodsPrice, custNo, custBirth,custScore);menu.showCustMMenu();} else {"输入错误, 请重新'n'返回上一级菜单:");flag = false;}while (!flag);}public void add() {"购物管理系统 > 客户信息管理 > 添加客户信息\n\n");Scanner scanner = new Scanner(System.in);"请输入会员号(<4位整数>):");int i = scanner.nextInt();"请输入会员生日(月/日<用两位数表示>):");String s = scanner.next();int j = scanner.nextInt();int k = -1;int l = 0;do {if (l >= custNo.length)break;if (custNo[l] == 0) {k = l;break;}l++;} while (true);custNo[k] = i;custBirth[k] = s;custScore[k] = j;"新会员添加成功!");returnLastMenu();}public void modify() {"购物管理系统 > 客户信息管理 > 修改客户信息\n\n");"请输入会员号:");Scanner scanner = new Scanner(System.in);int i = scanner.nextInt();" 会员号生日积分 ");"------------|------------|---------------");int j = -1;int k = 0;do {if (k >= custNo.length)break;if (custNo[k] == i) {StringBuilder()).append(custNo[k]) .append("\t\t").append(custBirth[k]).append("\t\t").append(custScore[k]).toString());j = k;break;}k++;} while (true);if (j != -1) {System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");"\t\t\t\t1.修改会员生日.\n");"\t\t\t\t2.修改会员积分.\n");System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");"请选择,输入数字:");switch (scanner.nextInt()) {case 1: // '\001'"请输入修改后的生日:");custBirth[j] = scanner.next();"生日信息已更改!");break;case 2: // '\002'"请输入修改后的会员积分:");custScore[j] = scanner.nextInt();"会员积分已更改!");break;}} else {"抱歉,没有你查询的会员。

超市管理系统OOA

超市管理系统OOA

超市管理系统面向对象分析班级:2012信工院计科班姓名:李东日期:2014-11-20文件状态:[ ] 草稿[√]正式发布[ ] 正在修改文件标识:当前版本: 2.0 作者:完成日期:版本历史版本/状态作者参与者起止日期备注1.0 李东李东2014-11-19 初稿2.0 李东李东2014-11-20 正式版目录1. 文档介绍 (5)1.1 文档目的 (5)1.2 文档范围 (5)1.3 读者对象 (5)1.4 参考文档 (5)1.5 术语与缩写解释 (5)2. 产品介绍 (6)3. 产品面向的用户群体 (6)4. 产品应当遵循的标准或规范 (6)5. 产品范围 (6)6. 产品中的角色 (6)7. 产品的功能性需求 (7)7.1 功能性需求分类 (7)7.1功能层次图 (7)8.需求用例模型 (10)8.1用例图 (10)8.2用例描述 (10)8.3用户注册用例图 (11)8.3.1用例描述 (11)8.4用户登录用例图 (11)8.4.1用例描述 (11)8.5订单管理用例图 (12)8.5.1用例描述 (12)8.6仓库及库存管理用例图 (13)8.6.1用例描述 (13)8.7车辆管理用例图 (15)8.7.1用例描述 (15)8.8用户管理用例图 (16)8.8.1用例描述 (16)8.9配送管理用例图............................................................................... 错误!未定义书签。

8.9.1用例描述................................................................................ 错误!未定义书签。

8.10 审核用例图 (17)8.10.1 ............................................................................................... 错误!未定义书签。

超市管理系统数据字典(总4页)

超市管理系统数据字典(总4页)
入库单
超市收货后的入库确认单据
填写入库单
审核入库单
时间+入库单号+商品名称+供应商编号+入库数量+单价+金额+经手人+当前库存量+备注
销售记录
售出商品时由收银员扫描记录相应商品信息
商品销售
系统记录销售信息
时间+销售记录编号+商品名称+商品编号+单价+数量+金额+剩余库存+经手人+备注
凭条
顾客结算购买商品后获得此次的购物凭据
性别
员工的性别
char(5)
男、女
手机号
员工的联系方式
char(20)
职位
员工在超市里担任的工作
char(20)
权限
在系统中可以获得的权限
char(10)
上次登陆时间
上次登陆系统的时间
datetime
数据项名称
简述
类型及宽度
取值范围
订单号
订单的编号
char(20)
入库单号
入库单的编号
char(20)
备注
此次销售的其他相关信息
varchar(50)
数据项名称
简述
类型及宽度
取值范围
商品名称
库存商品的名称
char(20)
商品ቤተ መጻሕፍቲ ባይዱ号
库存商品的编号
char(20)
供应商编号
该商品的供应商的标识
char(20)
当前库存数量
超市中该商品现有的数量
Int
输入库存查询信息
系统返回库存查询结果
查询时间+查询用户编号+商品名称+商品编号+供应商编号+当前库存数量

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

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

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

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

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

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

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

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

超市进销存管理系统完整

超市进销存管理系统完整

]软件工程课程设计超市进销存管理信息系统专业:计算机应用计算班级:9班学号:20212245姓名:李浩滨超市进销存管理信息系统摘要:最初的超市进销存管理都是靠人力来完成的,但随着在市场经济的引导下,我国的超市经营规模日益扩大,销售额和门店数大幅度增加,许多超市正向品种多样化开展,需要处理大量的信息,时刻要更新产品销售信息,不断添加商品信息,并对商品的各种信息进展统计分析。

因此,在超市管理中引进现代化的办公软件,实现超市商品信息的处理,从而方便管理人员的决策和管理,解除后顾之忧。

本系统主要完成对超市的管理,包括顾客管理、厂家管理、商品管理、退货管理,购物车管理,采购管理、个人管理,管理员管理,系统管理等几个方面。

系统可以完成对各类信息的浏览、查询、添加、删除、修改等功能。

系统采用C/S架构,采用SQL Server 2000来设计数据库,并使用当前优秀的集成开发工具Visual Studio 2005开发环境,采用C#语言,开发了超市进销存管理系统,以求降低管理本钱,提高其经济效益。

关键词:进销存管理系统;C#语言、SQL Server2000;Abstract: The first supermarket Invoicing management is to rely on manpower to complete, but along with the market economy in our country under the guidance of the supermarket, the increasing scale of operation, sales and store numbers greatly increased, many supermarkets to breed diversification development, need to process large amounts of information, to update the product sales information, and constantly add product information, and the statistical analysis of information commodity. Therefore, in the supermarket management introduction of modern office software, supermarket merchandise information processing, which is convenient for management decision-making and management, remove any menace from the "rear". This system mainly completes to the supermarket management, including customer management, vendor management, commodity management, returns management, shopping cart management, procurement management, personal management, administrator management, system management and so on several aspects. System can complete all types of information browsing, query, add, delete, modify the functions of. The system adopts C / S structure, using SQL Server2000 database design, and use the current excellent integrated development tool for Visual Studio 2005 development environment, using C language development #, supermarket Invoicing management system, in order to reduce the management cost, raise its economic benefits.Keywords:Inventory management system; C#语言、SQL Server2000目录一、序言 (4)研究背景和意义 (4)研究思路 (5)系统设计思路 (5)二、相关技术介绍 (5)1.1 NET平台介绍 (5)简介 (7)1.3 C#语言概述 (8)1.4 SQL Server 2000的简介 (8)系统开发环境 (9)三、进销存管理系统分析 (9)系统需求分析 (9)业务流程分析 (9)四、系统开发目的和总体分析 (11)系统的开发目的 (11)系统总体设计 (12)系统数据流图 (12)五、进销存管理系统设计 (15)系统设计原那么 (15)数据库设计 (16)系统详细设计 (18)六、总结与展望 (22)参考文献 (23)一、序言研究背景和意义随着超市规模的不断扩大,原始手工的管理方式已不能适应超市的开展现状,也无法满足超市高复杂、快速、准确的管理工作要求,超市的管理者并非固步自封,在现今竞争日趋剧烈的市场环境下,超市的管理者在试图不断地稳固现有的资源根底上,一边摸索着管理经历,一边寻求可以帮助超市在管理上突破的新管理方式和新方法,提高超市管理上的灵活性,实现超市的稳步开展,迎接日益剧烈的市场竞争,信息技术为他们提供了最好的途径。

小超市管理系统可运行代码

小超市管理系统可运行代码
{
case 1:Add();break;
case 2:Delet();break;
}
getchar();
return;
}
void Add()
{
printf("\t请输入所添加商品的商品编号:");
scanf("%ld",goods[n].num);
strcpy(goods[i].name,goods[i+1].name);
strcpy(goods[i+1].name,p1);
temp=goods[i].num;
goods[i].num=goods[i+1].num;
goods[i+1].num=temp;
printf("\n\t请输入所添加商品的名称:");
scanf("%s",goods[n].name);
printf("\n\t请输入所添加商品的类别:");
scanf("%s",goods[n].sort);
printf("\n\t请输入所添加商品的数量:");
scanf("%d",goods[n].count);
printf("\t 7→查询商品信息\n");
printf("\t 8→浏览商品信息\n");
printf("\t 9→保存商品信息\n");
printf("\t请选择您所需要的操作(或选择(0)退出)\n");
scanf("%d",&m);

基于JAVA超市进销存管理系统毕业设计说明

基于JAVA超市进销存管理系统毕业设计说明

基于JAVA超市进销存管理系统毕业设计说明摘要由于超市行业的竞争越来越强,超市规模的发展不断扩大,商品数量和种类急剧增加,有关商品的信息量也随之增长。

超市随时都需要对商品各种信息进行统计分析。

超市销售管理系统是基于J2EE的技术架构,使用JSP构建动态网页和Servlet 组件,使用Tomcat作为web服务器, 用JDBC连接的MySql数据库作为存储对象,在设计和完成的过程中加深对数据库查询方法的理解,也进一步的了解MVC的设计模式。

系统主要实现的功能:管理员信息的管理、销售管理、员工管理、供应商管理。

通过上述功能实现对进货、销售及员工等基本的信息采集和处理,辅助提高超市的决策水平;使用该系统,可以提升超市的管理水平和运作效率,降低经营成本,提高管理人员的效益,增强超市扩力。

关键词: J2EE;Servlet;JSP;MySql;销售管理AbstractWith the competition between supermarkets becoming stronger and stronger, supermarkets themselves becoming larger and larger, and the quantity as well as the varieties of merchandise increasing sharply, the quantity of information about merchandise is becoming larger, too. The supermarket needs to be ready to make statistical analysis of all the information about the merchandise all the time.This system is based on the technological architecture of Java 2 Platform Enterprise Edition, use of JSP Construction of dynamic pages and Servlet as its components,using Tomcat as a web server, using the MySql database as a storage object and visiting to the database are through module JDBC link, in the design and complete the process of deepening the understanding of the database query methods, but also a better understanding of theMVC design pattern.The system compromises the following modules: user right management, sales management, staff management and supplier management, hence managing the recording and inquiring of the information about purchases, sales and employees. Supermarkets may make better decisions by collecting and processing some basic information. Through this system, the management and operational efficiency can be improved, the operating cost can be reduced, the efficiency of the staff members ca n be promoted and the supermarket’s expandability can become stronger.Key words: J2EE;Servlet;JSP;MySql;sales management目录1 绪论 (1)2 开发环境及开发工具的介绍 (2)2.1 关于WEB (2)2.2 J2EE的优势 (2)2.3 J SP语言和HTML语言 (3)2.4 关于Servlet (3)2.5 M ySql数据库 (4)2.5.1 MySql的优势 (4)2.6 T omcat服务器 (5)2.6.1 Tomcat 服务器简介 (5)2.6.2 TomCat的优势 (5)3 需求分析和可行性分析 (7)3.1 系统用户及其功能分析 (7)3.2 系统的模块划分 (7)3.3 系统运行环境 (8)3.4 技术可行性 (8)3.5 操作可行性 (8)4 系统总体设计 (9)4.1 设计思想 (9)4.2 系统功能模块图 (10)4.3 实体关系图 (10)4.4 数据库设计 (14)4.5 系统的用例图 (18)4.6 系统登录时序图 (21)5 系统的详细设计 (21)5.1 系统模块的划分 (21)5.2 模块流程和具体实现 (21)5.2.1 用户登录模块 (22)5.2.2 商品的销售管理模块 (24)5.2.3 员工管理模块 (27)5.2.4 供应商管理模块 (29)5.2.5 管理员信息管理模块 (31)6 系统测试 (34)6.1 模块测试 (34)结束语 (35)致37参考文献 (38)附录部分源代码 (39)1绪论随着现代科学技术的迅猛发展,计算机技术已经渗透到商业领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势。

1C#简单超市收银系统源码

1C#简单超市收银系统源码
public double Price {
get; set; }
public string Name {
get; set; }
public string ID {
get; set; }
public ProductFather(string id, double price, string Name) {
Console.WriteLine("欢迎观临,请问您需要些什么?"); Console.WriteLine("我们有 Acer、SamSung、Jiangyou、Banana"); string strType = Console.ReadLine(); Console.WriteLine("您需要多少?"); int count = Convert.ToInt32(Console.ReadLine()); //去仓库取货物 ProductFather[] pros = ck.QuPros(strType, count); //下面该计算价钱了 double realMoney = GetMoney(pros); Console.WriteLine("您总共应付{0}元", realMoney); Console.WriteLine("请选择您的打折方式 1--不打折 2--打九折 3--打 85 折 4--买 300 送 50 5--买 500 送 100"); string input = Console.ReadLine(); //通过简单工厂的设计模式根据用户的舒服获得一个打折对象 CalFather cal = GetCal(input); double totalMoney = cal.GetTotalMoney(realMoney); Console.WriteLine("打完折后,您应付{0}元", totalMoney); Console.WriteLine("以下是您的购物信息"); foreach (var item in pros) {

自动售货机系统源代码

自动售货机系统源代码

#include<stdio.h>#include<stdlib.h>#include<string.h>#include "goods.h"bool GetCharge(int Sum,int Money);void Getsmalcharge(int Money,int *ChargeNum); int KouLing();char ChooseJieMian();char SaleCenter();void loadGoodsFrom* gs);char ManageCenter();void KunCun();void Sale();void ShangJia();void TongJiFun();Goods goods[3];TongJi tj[3];void init(){for(int i = 0; i < 3; ++i){tj[i].jrxl = 0;tj[i].jrzje = 0;}}void main(){//初始化init();int op = 0;//读取商品信息loadGoodsFrom);char c = ChooseJieMian();while(true){system("cls");if( c == '1'){c = SaleCenter();}else if(c == '2'){op = KouLing();if(op == 1){//进入管理界面c = ManageCenter();//system("pause");}else if(op == 0){//进去销售界面c = SaleCenter();}}}}//----------------------------------------------------/*** @return 1销售界面2管理界面*/char SaleCenter(){char state='N';int Sum=0;char Pro = 'd';// printf("\n********************************\n");while(true){state='N';Sum=0;while(!(Pro == 'c' || Pro == 'a' || Pro == 'b' || Pro == 'q')){system("cls");printf("\n\t*******************************************");printf("\n\t*********顾客您好,请选择商品**************\n");printf("\n\t·a·商品%s ·b·商品%s ·c·商品%s ·q·管理\n",goods[0].name,goods[1].name,goods[2].name);printf("\n\t -%d- -%d- -%d- (单位:件)",goods[0].totalCount,goods[1].totalCount,goods[2].totalCount);printf("\n\t*******************************************\n\t\t");Pro = getchar();}if(Pro == 'q')break;switch(Pro){case 'a':{Sum=Sum+2;printf("\n\t·商品A价格为%d,请投币·",Sum);}break;case 'A':{Sum=Sum+2;printf("\n\t·商品A价格为%d,请投币·",Sum);}break;case 'b':{Sum=Sum+3;printf("\n\t·商品B价格为%d,请投币·",Sum);}break;case 'B':{Sum=Sum+3;printf("\n\t·商品B价格为%d,请投币·",Sum);}break;case 'c':{Sum=Sum+6;printf("\n\t·商品C价格为%d,请投币·",Sum);}break;case 'C':{Sum=Sum+6;printf("\n\t·商品C价格为%d,请投币·",Sum);}break;default:{printf("\n\t输入物品有误!!!!\n");}break;};int Money;bool st=false;while(!st){// printf("\n输入金额:");scanf("%d",&Money);getchar();st=GetCharge(Sum,Money);};Pro = 'd';system("PAUSE");}return '2';}bool GetCharge(int Sum,int Money){int ChargeNum[4];for(int i=0;i<4;i++){ChargeNum[i]=0;}if(Sum>Money){printf("\n\t·所投金额不足支付所选商品,请重新投币·");return false;}else if(Sum==Money){printf("\n\t·所投金额等于商品价格,请在商品出口处拿取商品·\n");//销售成功的操作if(Sum == goods[0].price){goods[0].totalCount --;Sale();tj[0].jrxl ++;tj[0].jrzje += Sum;}else if(Sum == goods[1].price){goods[1].totalCount --;Sale();tj[1].jrxl ++;tj[1].jrzje += Sum;}else if(Sum == goods[2].price){goods[1].totalCount --;Sale();tj[2].jrxl ++;tj[2].jrzje += Sum;}return true;}else{int Result=Money-Sum;Getsmalcharge(Result,ChargeNum);printf("\n\t·所投金额大于商品价格,为您找零%d元·\n",Result);printf("\n\t\t-壹元面值%d张-\n",ChargeNum[0]);printf("\n\t\t-贰元面值%d张-\n",ChargeNum[1]);printf("\n\t\t-伍元面值%d张-\n",ChargeNum[2]);printf("\n\t\t-拾元面值%d张-\n",ChargeNum[3]);printf("\n\t·请在商品出口处拿取商品·\n");// printf("\n余额为%d元,应找零\n1 元%d张\n2 元%d张\n5 元%d张\n10元%d张\n",Result,ChargeNum[0],ChargeNum[1],ChargeNum[2],ChargeNum[3]);}//end if//销售成功的操作if(Sum == goods[0].price){goods[0].totalCount --;Sale();tj[0].jrxl ++;tj[0].jrzje += Sum;}else if(Sum == goods[1].price){goods[1].totalCount --;Sale();tj[1].jrxl ++;tj[1].jrzje+= Sum;}else if(Sum == goods[2].price){goods[2].totalCount --;Sale();tj[2].jrxl ++;tj[2].jrzje+= Sum;}return true;}/**成功卖出操作的后台操作*/void Sale(){FILE* fp;if ((fp = fopen("d:\\goods.out", "w")) == NULL){printf ("未找到文件d:\\goods.out...系统将退出\n ");exit(0);}fprintf(fp,"%s %d %d\n",goods[0].name,goods[0].totalCount,goods[0].price);fprintf(fp,"%s %d %d\n",goods[1].name,goods[1].totalCount,goods[1].price);fprintf(fp,"%s %d %d\n",goods[2].name,goods[2].totalCount,goods[2].price);//关闭文件fclose(fp);fp = NULL;}//------------------------------------void Getsmalcharge(int Money,int *ChargeNum){if(Money<0)return;int Sum=Money;int charge[4]={1,2,5,10};ChargeNum[3]=Sum/charge[3];Sum=Sum%charge[3];ChargeNum[2]=Sum/charge[2];Sum=Sum%charge[2];ChargeNum[1]=Sum/charge[1];Sum=Sum%charge[1];ChargeNum[0]=Sum/charge[0];Sum=Sum%charge[0];}/***@return 1 口令正确0 口令错误,并返回销售界面*/int KouLing(){char kl[50];int count = 0,ret = 0;char rkl[50] = "admin";while(strcmp(rkl,kl) != 0){if(count == 0){printf("\n\t*******************************************");printf("\n\t****************管理口令验证***************\n");printf("\n\t·Tip·忘记口令,输入“cancel”,进入销售界面\n");printf("\n\t*******************************************\n\t\t");}else{printf("\n\t*******************************************");printf("\n\t****************管理口令验证***************\n");printf("\n\t·Tip·忘记口令,输入“cancel”,进入销售界面\n");printf("\n\t*******************************************");printf("\n\t\t\t\t输入错误次数:%d次\n\t\t",count);}count++;scanf("%s",kl);system("CLS");if(strcmp(kl,"cancel") == 0)break;}if(strcmp(kl,"cancel") == 0)ret = 0;elseret = 1;return ret;}/*** @ return '1' , '2'*/char ChooseJieMian(){char c = '3';while(true){system("cls");printf("\n\t*******************************************");printf("\n\t****************界面选择*******************\n");printf("\n\t·1·-销售界面- ·2·-管理界面-\n");printf("\n\t*******************************************\n\t\t");c = getchar();if(c == '1' || c == '2')break;}system("cls");return c;char ManageCenter(){while(true){int op = 7;while( !(op == 1|| op == 2 || op == 3 || op == 4|| op == 5 || op == 6)){system("cls");printf("\n\t*******************************************");printf("\n\t*************欢迎您,管理员****************\n");printf("\n\t·1·-库存查询- ·2·-商品上架-\n");printf("\n\t·3·-销售查询- ·4·-会计查询-\n");printf("\n\t·5·-结算功能- ·6·-销售界面-\n");printf("\n\t*******************************************\n\t\t");scanf("%d",&op);}bool flag = false;switch(op){case 1:{KunCun();}break;case 2:{ShangJia();}break;case 3:{TongJiFun();}break;case 4:{}break;case 5:{}break;case 6:{flag = true;}break;default:break;}if(flag)break;elsesystem("PAUSE");}return '1';}*从文件里读取商品信息@return 商品列表*/void loadGoodsFrom* gs){//获得FILE 指针FILE* fp;if ((fp = fopen("d:\\goods.out", "r")) == NULL){printf ("未找到文件d:\\goods.out...系统将退出\n ");exit(0);}//Goods gs[3];int i = 0;while(!feof(fp)){fscanf(fp,"%s %d %d",gs[i].name,&gs[i].totalCount,&gs[i].price);i++;}//关闭文件fclose(fp);fp = NULL;}void KunCun(){int i = 0;printf("\n\t·商品名称··商品价格(元)··商品余量(件)·\n");for(i = 0; i < 3; ++i){printf("\n\t-%s-\t\t-%d-\t\t-%d-\n",goods[i].name,goods[i].price,goods[i].totalCount);}}void ShangJia(){printf("\n\t·Tip·正数增加,负数减少商品\n");int gs1 = 0,gs2 = 0,gs3 = 0;printf("\n\t\t-商品%s(余%d件): ",goods[0].name,goods[0].totalCount);scanf("%d",&gs1);printf("\n\t\t-商品%s(余%d件): ",goods[1].name,goods[1].totalCount);scanf("%d",&gs2);printf("\n\t\t-商品%s(余%d件): ",goods[2].name,goods[2].totalCount);scanf("%d",&gs3);goods[0].totalCount = gs1 + goods[0].totalCount < 0 ? 0:gs1 + goods[0].totalCount;goods[1].totalCount = gs2 + goods[1].totalCount < 0 ? 0:gs2 + goods[1].totalCount;goods[2].totalCount = gs3 + goods[2].totalCount < 0 ? 0:gs3 + goods[2].totalCount;//写文件//获得FILE 指针FILE* fp;if ((fp = fopen("d:\\goods.out", "w")) == NULL){printf ("未找到文件d:\\goods.out...系统将退出\n ");exit(0);}fprintf(fp,"%s %d %d\n",goods[0].name,goods[0].totalCount,goods[0].price);fprintf(fp,"%s %d %d\n",goods[1].name,goods[1].totalCount,goods[1].price);fprintf(fp,"%s %d %d\n",goods[2].name,goods[2].totalCount,goods[2].price);//关闭文件fclose(fp);fp = NULL;}void TongJiFun(){printf("\n\t·今日商品销售情况一览·\n");printf("\n\t\t-商品%s %d件共%d元-\n",goods[0].name,tj[0].jrxl,tj[0].jrzje);printf("\n\t\t-商品%s %d件共%d元-\n",goods[1].name,tj[1].jrxl,tj[1].jrzje);printf("\n\t\t-商品%s %d件共%d元-\n",goods[2].name,tj[2].jrxl,tj[2].jrzje);printf("\n\t·共计%d件,%d元·\n",tj[0].jrxl + tj[1].jrxl+tj[2].jrxl,tj[0].jrzje+tj[1].jrzje+tj[2].jrzje);}//Goods.htypedef struct _Goods{char name[50];int totalCount;int price;}Goods;typedef struct _TongJi{int jrxl;int jrzje;}TongJi;。

C毕业课程设计超市管理系统

C毕业课程设计超市管理系统

C 毕业课程设计超市管理系统一、教学目标本课程旨在让学生掌握超市管理系统的基本知识和技能,能够运用C语言进行程序设计,实现超市管理的基本功能,如商品信息管理、库存管理、销售管理等。

同时,通过本课程的学习,培养学生的问题解决能力和团队协作能力,提高学生的创新意识和实践能力。

具体来说,知识目标包括:1.掌握C语言的基本语法和编程方法。

2.理解超市管理系统的业务流程和需求分析。

3.学习常用的数据结构和算法,并能够应用于实际问题解决。

技能目标包括:1.能够使用C语言编写简单的程序,实现超市管理的基本功能。

2.学会使用调试工具,能够发现和修复程序中的错误。

3.能够进行团队合作,共同完成一个完整的超市管理系统项目。

情感态度价值观目标包括:1.培养学生对计算机科学的兴趣和热情,提高学生的学习积极性。

2.培养学生的问题解决能力和创新意识,让学生感受到编程的乐趣。

3.培养学生的团队协作意识,让学生学会与他人合作共同完成任务。

二、教学内容本课程的教学内容主要包括三个部分:C语言基础知识、超市管理系统的设计与实现、项目实践。

1.C语言基础知识:包括C语言的基本语法、数据类型、运算符、控制结构等。

这部分内容是学习后续章节的基础,需要学生掌握。

2.超市管理系统的设计与实现:包括需求分析、系统设计、模块划分等。

这部分内容让学生了解超市管理系统的业务流程,学会如何将实际问题转化为程序设计问题。

3.项目实践:学生分组完成一个超市管理系统项目,包括商品信息管理、库存管理、销售管理等。

这部分内容让学生将所学知识应用于实际问题解决,提高学生的实践能力。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合的方式进行教学。

1.讲授法:教师讲解C语言的基本语法和编程方法,让学生掌握基础知识。

2.案例分析法:通过分析真实的超市管理系统案例,让学生了解业务流程和需求分析。

3.实验法:学生动手编写程序,实现超市管理的基本功能,培养学生的实践能力。

UML-超市管理系统

UML-超市管理系统

UML-超市管理系统1. 系统概述超市管理系统是一个用于管理超市商品、库存、销售和员工等信息的管理系统。

该系统可以帮助超市提高工作效率,降低运营成本,并实现对各项业务的实时监控和数据分析。

2. 静态结构2.1 类图类图描述了系统的静态结构,包括类、属性和方法。

以下是一些主要类的示例:•商品类(Product):包含商品ID、名称、价格、类别等属性,提供查询商品信息的方法。

•库存类(Inventory):包含库存量、供应商等属性,提供添加、删除和更新库存的方法。

•销售类(Sale):包含销售记录ID、商品ID、销售数量、销售时间等属性,提供查询销售记录的方法。

•员工类(Employee):包含员工ID、姓名、职位、工资等属性,提供查询员工信息的方法。

2.2 对象图对象图展示了系统中对象之间的实例关系。

例如,一个库存对象可以包含多个商品对象。

2.3 组件图组件图描述了系统的模块划分和依赖关系。

例如,商品管理模块、库存管理模块和销售管理模块等。

2.4 部署图部署图展示了系统在物理硬件上的部署情况,包括服务器、客户端等。

3. 动态行为3.1 序列图序列图描述了系统中对象之间交互的顺序。

以下是一个示例序列图:1.用户登录系统。

2.系统验证用户身份。

3.用户选择进入商品管理模块。

4.系统展示商品列表。

5.用户查询特定商品信息。

6.系统返回查询结果。

3.2 协作图协作图展示了系统中对象之间交互的协作关系。

例如,商品管理模块中的商品查询功能涉及多个对象的协作。

3.3 状态图状态图描述了系统中的对象在不同条件下的状态变化。

例如,一个商品对象在库存充足、销售后和库存不足等状态之间的转换。

3.4 用例图用例图展示了系统的主要功能模块和用户之间的交互。

例如,用户可以进行商品查询、库存管理和销售统计等操作。

4. 数据库设计数据库设计包括数据表的创建、字段定义和关联关系。

以下是一个简化示例:•商品表(Product):商品ID(主键)、名称、价格、类别等字段。

新华书店进销存管理系统部分程序源代码

新华书店进销存管理系统部分程序源代码

资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载新华书店进销存管理系统部分程序源代码地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容附录2新华书店进销存管理系统部分程序源代码主程序MAIN.PRG程序代码SET DEFAULT TO C:\毕业设计PUBLIC nkfgl,nxsgl,ncggl,nkcgl,nxtgl STORE .f. TO nkfgl,nxsgl,ncggl,nkcgl,nxtgl PUBLIC nname,ndepartmentSTORE "" TO nname,ndepartmentDo Form loginfRead EventsDo Form mainRead EventsQuit主表单MAIN.SCX代码2.1 表单Init过程程序代码do mmenu.mpr with this,.T.bel2.caption = nnamebel4.caption = ndepartment系统登入表单LOGINF.SCX代码3.1 表单登入按钮Click事件程序代码SELECT userGO TOP*检查用户名和密码是否输入If empty(thisform.text1.value) thenbel3.caption = "请输入用户名"returnelseif empty(thisform.text2.value) thenbel3.caption = "请输入密码"returnendifendif*操作USER表,查询满足条件记录locate for name = alltrim(thisform.text1.value)if !found()bel3.caption="用户不存在"returnelseif user.password != alltrim(thisform.text2.value) thenbel3.caption="密码错误"returnendifendifnname = ndepartment = user.department nkfgl = user.kfglnxsgl = user.xsglncggl = user.cgglnkcgl = user.kcglnxtgl = user.xtglthisform.releaseclear events系统管理表单XTGLF.SCX代码4.1 表单Init过程程序代码thisform.text1.enabled = .f. thisform.text2.enabled = .f. thisform.text3.enabled = .f. bo1.enabled = .f. thisform.check1.enabled = .f. thisform.check2.enabled = .f. thisform.check3.enabled = .f.thisform.check4.enabled = .f. thisform.check5.enabled = .f. bel5.visible = .f. thisform.text3.visible = .f. mand10.enabled = .f. mand11.enabled = .f. thisform.dis_recordthisform.dis_reccommand4.2 表单自定义过程DIS_RECORD程序代码PUBLIC newcommandSTORE .f. TO newcommandif reccount("user") = 0thisform.text1.value = ""thisform.text2.value = ""bo1.value = "" thisform.check1.value = 0thisform.check2.value = 0thisform.check3.value = 0thisform.check4.value = 0thisform.check5.value = 0elsethisform.text1.value = thisform.text2.value = user.password bo1.value = user.department if user.kfgl thenthisform.check1.value = 1elsethisform.check1.value = 0endifif user.xsgl thenthisform.check2.value = 1elsethisform.check2.value = 0endifif user.cggl thenthisform.check3.value = 1elsethisform.check3.value = 0endifif user.kcgl thenthisform.check4.value = 1elsethisform.check4.value = 0endifif user.xtgl thenthisform.check5.value = 1elsethisform.check5.value = 0endifendifthisform.refresh4.3 表单自定义过程DIS_RECCOMMAND程序代码private nstore 0 to nn = reccount("user")if n=1 .or. n=0 thenmand1.enabled = .f. mand2.enabled = .f. mand3.enabled = .f. mand4.enabled = .f.elseif recno("user")=1 thenmand1.enabled = .f.mand2.enabled = .f. mand3.enabled = .t. mand4.enabled = .t.elseif recno("user")=n thenmand1.enabled = .t. mand2.enabled = .t. mand3.enabled = .f. mand4.enabled = .f.elsemand1.enabled = .t. mand2.enabled = .t. mand3.enabled = .t. mand4.enabled = .t.endifendifendifthisform.refresh4.4 表单保存按钮Click事件程序代码if empty(thisform.text1.value) then=messagebox("请输入用户名",0+48+0,"出错")thisform.refreshreturnendifif empty(thisform.text2.value) then=messagebox("请输入密码",0+48+0,"出错")thisform.text2.setfocusthisform.refreshreturnendifif .not.(alltrim(thisform.text2.value) ==alltrim(thisform.text3.value)) then=messagebox("密码重复错误,请重新输入",0+48+0,"出错") thisform.text2.value = ""thisform.text3.value = ""thisform.text2.setfocusthisform.refreshreturnendifif empty(bo1.value) then=messagebox("请选择所属部门",0+48+0,"出错")thisform.refreshreturnendififthisform.check1.value=0.and.thisform.check2.value=0.and .thisform.check3.value=0.and.thisform.check4.value=0.an d.thisform.check5.value=0 then=messagebox("至少选择一个用户权限",0+48+0,"出错") thisform.check1.setfocusthisform.refreshreturnendififthisform.check1.value=1.and.thisform.check2.value=1.and .thisform.check3.value=1.and.thisform.check4.value=1.an d.thisform.check5.value=1 thenmesbox=messagebox("此用户将具有全部权限,请确认",4+48+0,"警告")if mesbox=7 thenthisform.check1.setfocusthisform.refreshreturnendifendif*用户权限处理PRIVATEnname,npassword,ndepartment,nkf,nxs,ncg,nkc,nxt nname = alltrim(thisform.text1.value)npassword = alltrim(thisform.text2.value)ndepartment = alltrim(bo1.value) if thisform.check1.value = 1 thennkf = .t.elsenkf = .f.endifif thisform.check2.value = 1 thennxs = .t.elsenxs = .f.endifif thisform.check3.value = 1 thenncg = .t.elsencg = .f.endifif thisform.check4.value = 1 thennkc = .t.elsenkc = .f.endifif thisform.check5.value = 1 thennxt = .t.elsenxt = .f.endif*判断是新记录保存还是修改记录If newcommand then && newcommand = .t. 是新记录保存locate for =alltrim(thisform.text1.value) if found() then=messagebox("用户已经存在",0+48+0,"出错")thisform.text1.setfocusthisform.refreshreturnendif*数据表user保存记录insert intouser(name,password,department,kfgl,xsgl,cggl,kcgl,xtgl) values (nname,npassword,ndepartment,nkf,nxs,ncg,nkc,nxt) =messagebox("保存完毕",0+48+0,"提示")elseupdate user set password=npassword,department=ndepartment,kfgl=nkf,xsgl=nxs,cggl=ncg,kcgl=nkc,xtgl=nxt where name= nname=messagebox("修改完成",0+48+0,"提示")endif*表单初始化thisform.text1.enabled = .f.thisform.text2.enabled = .f.thisform.text3.enabled = .f.bo1.enabled = .f.thisform.check1.enabled = .f.thisform.check2.enabled = .f.thisform.check3.enabled = .f.thisform.check4.enabled = .f. thisform.check5.enabled = .f. mand1.enabled = .t. mand2.enabled = .t. mand3.enabled = .t. mand4.enabled = .t. mand5.enabled = .t. mand6.enabled = .t. mand7.enabled = .t. mand8.enabled = .t. mand9.enabled = .t. mand10.enabled =.f. mand11.enabled =.f. mand12.enabled = .t. bel5.visible = .f. thisform.text3.visible = .f. thisform.dis_reccommand thisform.dis_recordnewcommand = .f.thisform.refresh4.5 表单浏览按钮Click事件程序代码DEFINE WINDOW browsewin FROM 1,1 TO 30,80 noFLOAT CLOSE nominimize nogrow nozoom systembrow fields name,department,kfgl,xsgl,cggl,kcgl window browsewin noappend nomodify nodeleterelease window browsewin图书管理表单TSGL.SCX代码5.1 自定义过程AUTO_BOOKID程序代码select bookset order to bookidgo bottomprivate autoid1,autoid2,autoid3,autoid4autoid1 =alltrim(str(val(substr(alltrim(book.bookid),2,6))+1,6,0 ))autoid2 = len(autoid1)if autoid2 != 6 thenfor n = autoid2 to 5autoid1 = "0" + autoid1endforendifautoid4 = "B" + alltrim(autoid1)thisform.text1.value = autoid4 5.2 新建按钮Click事件程序代码thisform.text2.enabled = .t. thisform.text3.enabled = .t. thisform.text4.enabled = .t. thisform.text5.enabled = .t. thisform.text6.enabled = .t. bo1.enabled = .t. thisform.text7.enabled = .t. thisform.text8.enabled = .t. mand1.enabled = .f. mand2.enabled = .f. mand3.enabled = .f. mand4.enabled = .f. mand5.enabled = .f. mand6.enabled = .f. mand7.enabled = .f. mand8.enabled = .f. mand9.enabled = .f. mand10.enabled =.t. mand11.enabled =.t.mand12.enabled = .t.thisform.text2.value = ""thisform.text3.value = ""thisform.text4.value = ""thisform.text5.value = ""thisform.text6.value = ""bo1.value = ""thisform.text7.value = 0thisform.text8.value = 0thisform.auto_bookidthisform.text2.setfocusthisform.newcommand = .t.thisform.refresh5.3 删除按钮Click事件程序代码if reccount("book")=1 then=messagebox("只有一条记录,不能删除",0+16+0,"出错") returnelsenbookid = alltrim(thisform.text1.value) nbookname = alltrim(thisform.text2.value)mesbox=messagebox("是否删除"+nbookid+"号图书",4+48+0,"警告")if mesbox=7 thenreturnelseuse book EXCLUSIVEdelete from book where bookid=nbookidpack=messagebox(nbookid+"图书已经删除",0+48+0,"提示") endifendifthisform.dis_recordthisform.dis_reccommandthisform.grid1.recordsource = "book"thisform.refresh5.4 保存按钮Click事件程序代码if empty(thisform.text2.value)=messagebox("请输入书名",0+48+0,"出错")thisform.text2.setfocusthisform.refreshreturnendifif empty(thisform.text3.value)=messagebox("请输入书号",0+48+0,"出错") thisform.text3.setfocusthisform.refreshreturnendifif empty(thisform.text4.value)=messagebox("请输入出版社",0+48+0,"出错") thisform.text4.setfocusthisform.refreshreturnendifif empty(thisform.text5.value)=messagebox("请输入作者信息",0+48+0,"出错") thisform.text5.setfocusthisform.refreshreturnendifif empty(bo1.value)=messagebox("请选择图书类型",0+48+0,"出错")bo1.setfocusthisform.refreshreturnendifif thisform.text7.value = 0=messagebox("请输入价格",0+48+0,"出错")bo1.setfocusthisform.refreshreturnendifPRIVATEnbookid,nbookname,nbookno,nbookphouse,nbookwriter,nbook cd,nbookclass,nbookprice,nbookdiscountnbookid = alltrim(thisform.text1.value)nbookname = alltrim(thisform.text2.value)nbookno = alltrim(thisform.text3.value)nbookphouse = alltrim(thisform.text4.value)nbookwriter = alltrim(thisform.text5.value)nbookcd = alltrim(thisform.text6.value)nbookclass = alltrim(bo1.value)nbookprice = thisform.text7.valuenbookdiscount = thisform.text8.value*判断是新记录保存还是修改记录If thisform.newcommand then && newcommand = .t. 是新记录保存*数据表book保存记录insert into book(bookid,bookname,bookno,bookphouse,bookwriter,bookcd,bookclass,bookprice,bookdiscount) values(nbookid,nbookname,nbookno,nbookphouse,nbookwriter,nbookcd,nbookclass,nbookprice,nbookdiscount)=messagebox("保存完毕",0+48+0,"提示")elseupdate book setbookname=nbookname,bookno=nbookno,bookphouse=nbookphouse,bookwriter=nbookwriter,bookcd=nbookcd,bookclass=nbookclass,bookprice=nbookprice,bookdiscount=nbookdiscountwhere bookid=nbookid=messagebox("修改完成",0+48+0,"提示")endif*表单初始化thisform.text2.enabled = .f.thisform.text3.enabled = .f.thisform.text4.enabled = .f.thisform.text5.enabled = .f.thisform.text6.enabled = .f.bo1.enabled = .f.thisform.text7.enabled = .f.thisform.text8.enabled = .f.mand5.enabled = .t.mand6.enabled = .t.mand7.enabled = .t.mand8.enabled = .t.mand9.enabled = .t.mand10.enabled =.f.mand11.enabled =.f.mand12.enabled = .t.thisform.dis_recordthisform.dis_reccommandthisform.newcommand = .f.thisform.refresh5.5 浏览按钮Click事件程序代码DEFINE WINDOW browsewin FROM 1,1 TO 30,160 noFLOAT CLOSE nominimize nogrow nozoom systembrow fieldsbookid,bookname,bookno,bookphouse,bookwriter,bookcd,boo kclass,bookprice,bookdiscount window browsewin noappend nomodify nodeleterelease window browsewin会员输入表单KFGL_HYSR.SCX程序代码6.1 自定义过程AUTO_VIPID程序代码select vipset order to vipidgo bottomprivate autoid1,autoid2,autoid3,autoid4autoid1 =alltrim(str(val(substr(alltrim(vip.vipid),2,6))+1,6,0)) autoid2 = len(autoid1)if autoid2 != 6 thenfor n = autoid2 to 5autoid1 = "0" + autoid1endforendifautoid4 = "V" + alltrim(autoid1)thisform.text1.value = autoid46.2 保存按钮Click事件程序代码*输入数据校验if empty(thisform.text2.value)=messagebox("请输入会员姓名",0+16+0,"出错") thisform.text2.setfocusreturnendifif thisform.optiongroup1.value = 0=messagebox("请选择会员性别",0+16+0,"出错") thisform.optiongroup1.option1.setfocus returnelseprivate nvipsexstore "" to nvipsexif thisform.optiongroup1.value = 1store "男" to nvipsexelsestor "女" to nvipsexendifendifif empty(thisform.text4.value)=messagebox("请输入会员联系地址",0+16+0,"出错") thisform.text4.setfocusreturnendifif empty(thisform.text5.value)=messagebox("请输入会员联系电话",0+16+0,"出错") thisform.text5.setfocusreturnendifif empty(thisform.text6.value)=messagebox("请输入邮政编码",0+16+0,"出错") thisform.text6.setfocusreturnendif*保存数据private nvipid,nvipname,nvipadd,nvipphone,nvipcode nvipid = alltrim(thisform.text1.value)nvipname = alltrim(thisform.text2.value)nvipadd = alltrim(thisform.text4.value)nvipphone = alltrim(thisform.text5.value) nvipcode = alltrim(thisform.text6.value)insert into vip(vipid,vipname,vipsex,vipadd,vipphone,vipcode,vipsum,vi pdiscount) values(nvipid,nvipname,nvipsex,nvipadd,nvipphone,nvipcode,0,0) =messagebox("保存成功",0+48+0,"提示")nmesbox=messagebox("是否打印会员卡?",4+32+0,"会员卡打印")if nmesbox = 6selectvip.vipid,vip.vipname,vip.vipsex,vip.vipadd,vip.vipphon e,vip.vipcode from vip where vip.vipid = nvipid into cursor vipcardselect vipcardreport form vipcard.frx to printuse in vipcardendifthisform.auto_vipidmand2.click6.3 清除按钮Click事件程序代码thisform.text2.value = ""thisform.optiongroup1.value = 0thisform.text4.value = ""thisform.text5.value = ""thisform.text6.value = ""thisform.text1.setfocusthisform.refresh会员查询表单KFGL_HYCX.SCX程序代码7.1 表单自定义过程DIS_GRID程序代码thisform.grid1.readonly = .t.thisform.grid1.columncount = 8thisform.grid1.column1.header1.caption = "会员编号" thisform.grid1.column1.width = 80thisform.grid1.column1.movable = .f.thisform.grid1.column1.resizable = .f.thisform.grid1.column2.header1.caption = "会员姓名" thisform.grid1.column2.width = 80thisform.grid1.column2.movable = .f.thisform.grid1.column2.resizable = .f.thisform.grid1.column3.header1.caption = "会员性别" thisform.grid1.column3.width = 80thisform.grid1.column3.movable = .f.thisform.grid1.column3.resizable = .f.thisform.grid1.column4.header1.caption = "联系地址"thisform.grid1.column4.width = 250thisform.grid1.column4.movable = .f.thisform.grid1.column4.resizable = .f.thisform.grid1.column5.header1.caption = "联系电话"thisform.grid1.column5.width = 80thisform.grid1.column5.movable = .f.thisform.grid1.column5.resizable = .f.thisform.grid1.column6.header1.caption = "邮政编码"thisform.grid1.column6.width = 80thisform.grid1.column6.movable = .f.thisform.grid1.column6.resizable = .f.thisform.grid1.column7.header1.caption = "累计购书金额"thisform.grid1.column7.width = 80thisform.grid1.column7.movable = .f.thisform.grid1.column7.resizable = .f.thisform.grid1.column8.header1.caption = "会员优惠折扣"thisform.grid1.column8.width = 80thisform.grid1.column8.movable = .f.thisform.grid1.column8.resizable = .f.thisform.refresh7.2 表单Init过程程序代码thisform.dis_gridpublic ncombo1,ncombo2,ntext1,chsql,cxsqlstore "" to ncombo1,ncombo2,ntext1,chsql,cxsqlthisform.optiongroup1.value = 0thisform.optiongroup1.enabled = .f.thisform.grid1.recordsource = Nullselectvip.vipid,vip.vipname,vip.vipsex,vip.vipadd,vip.vipphon e,vip.vipcode,vip.vipsum,vip.vipdiscount from vip into cursor hycx_temptable order by vip.vipidthisform.grid1.recordsource = "hycx_temptable"thisform.dis_gridthisform.refresh7.3 表单添加条件按钮Click事件程序代码if empty(bo1.value) .or.empty(bo2.value) .or.empty(thisform.text1.value)=messagebox("请输入条件",0+48+0,"出错")bo1.setfocusreturnendifif thisform.optiongroup1.value = 1chsql = " AND "endifif thisform.optiongroup1.value = 2chsql = " OR "endifchsql = chsql + ncombo1 + ncombo2 + ntext1 thisform.edit1.value = thisform.edit1.value + chsql if .not.empty(thisform.edit1.value)thisform.optiongroup1.value = 1thisform.optiongroup1.enabled = .t.endifbo1.value = ""bo2.value = ""thisform.text1.value = ""chsql = ""bo1.setfocusthisform.refresh7.4 表单条件查询按钮Click事件程序代码if empty(thisform.edit1.value)=messagebox("请输入查询条件",0+16+0,"出错")mand1.setfocusthisform.refreshreturnendifcxsql = alltrim(thisform.edit1.value)thisform.grid1.recordsource = Nullselectvip.vipid,vip.vipname,vip.vipsex,vip.vipadd,vip.vipphon e,vip.vipcode,vip.vipsum,vip.vipdiscount from vip where &cxsql into cursor hycx_temptable order by vip.vipid thisform.grid1.recordsource = "hycx_temptable"thisform.dis_gridthisform.optiongroup1.value = 0thisform.optiongroup1.enabled = .f.bo1.value = ""bo2.value = ""thisform.text1.value = ""thisform.edit1.value = ""store "" to ncombo1,ncombo2,ntext1,chsql,cxsqlthisform.refresh会员修改表单KFGL_HYXG.SCX程序代码表单Init过程程序代码LPARAMETERS nPar1select vipset order to vipidlocate for vip.vipid = nPar1 thisform.text1.value = vip.vipid thisform.text2.value = vip.vipname if vip.vipsex = "男"thisform.optiongroup1.value = 1 elsethisform.optiongroup1.value = 2 endifthisform.text4.value = vip.vipadd thisform.text5.value = vip.vipphone thisform.text6.value = vip.vipcode thisform.refresh保存按钮Click事件程序代码*输入数据校验if empty(thisform.text2.value)=messagebox("请输入会员姓名",0+48+0,"出错") thisform.text2.setfocusreturnendifif thisform.optiongroup1.value = 0=messagebox("请选择会员性别",0+48+0,"出错") thisform.optiongroup1.option1.setfocusreturnelseprivate nvipsexstore "" to nvipsexif thisform.optiongroup1.value = 1store "男" to nvipsexelsestor "女" to nvipsexendifendifif empty(thisform.text4.value)=messagebox("请输入会员联系地址",0+48+0,"出错") thisform.text4.setfocusreturnendifif empty(thisform.text5.value)=messagebox("请输入会员联系电话",0+48+0,"出错")thisform.text5.setfocusreturnendifif empty(thisform.text6.value)=messagebox("请输入邮政编码",0+48+0,"出错")thisform.text6.setfocusreturnendif*修改数据private nvipid,nvipname,nvipadd,nvipphone,nvipcodenvipid = alltrim(thisform.text1.value)nvipname = alltrim(thisform.text2.value)nvipadd = alltrim(thisform.text4.value)nvipphone = alltrim(thisform.text5.value)nvipcode = alltrim(thisform.text6.value)update vip set vip.vipname = nvipname, vip.vipsex = nvipsex, vip.vipadd = nvipadd, vip.vipphone = nvipphone, vip.vipcode = nvipcode where vip.vipid = nvipid=messagebox("修改已完成",0+48+0,"提示")thisform.release删除按钮Click事件程序代码nvipid = alltrim(thisform.text1.value)mesbox=messagebox("是否删除" + nvipid + "号会员",4+48+0,"警告")if mesbox=7 thenreturnelseuse vip EXCLUSIVEdelete from vip where vip.vipid = nvipidpack=messagebox("会员" + nvipid + "已经删除",0+48+0,"提示")endifthisform.release会员卡打印表单KFGL_HYDY.SCX程序代码9.1 打印按钮Click事件程序代码if empty(thisform.text1.value)=messagebox("请输入会员编号",0+16+0,"出错")thisform.text1.setfocusreturnelsenvipid = thisform.text1.valueendifnmesbox=messagebox("是否打印会员卡?",4+32+0,"会员卡打印")if nmesbox = 6selectvip.vipid,vip.vipname,vip.vipsex,vip.vipadd,vip.vipphon e,vip.vipcode from vip where vip.vipid = nvipid into cursor vipcardselect vipcardreport form vipcard.frx to printuse in vipcardendif9.2 输入框Text1的Valid事件程序代码this.value = alltrim(this.value)if .not.empty(this.value)select vipgo toplocate for vip.vipid = this.valueif found()thisform.text2.value = vip.vipname thisform.text3.value = vip.vipsex thisform.text4.value = vip.vipadd thisform.text5.value = vip.vipphone thisform.text6.value = vip.vipcodeelse=messagebox("会员编号不存在",0+16+0,"出错") thisform.text1.value = ""thisform.text2.value = ""thisform.text3.value = ""thisform.text4.value = ""thisform.text5.value = ""thisform.text6.value = ""endifendifthisform.refresh采购员管理表单KFGL_CGY.SCX程序代码10.1 表单自定义过程AUTO_BUYERID程序代码select buyerset order to buyeridgo bottomprivate autoid1,autoid2,autoid3,autoid4autoid1 =alltrim(str(val(substr(alltrim(buyer.buyerid),4,2))+1,2 ,0))autoid2 = len(autoid1)if autoid2 =1autoid1 = "0" + autoid1endifautoid4 = "BUY" + alltrim(autoid1)thisform.text1.value = autoid410.2 表单表单保存按钮Click程序代码privatenbuyerid,nbuyername,nbuyersex,nbuyerbirthday,nbuyeradd, nbuyerphoneif empty(thisform.text2.value)=messagebox("请输入采购员姓名",0+48+0,"出错")thisform.text2.setfocusthisform.refreshreturnendifif thisform.optiongroup1.value = 0=messagebox("请选择采购员性别",0+48+0,"出错") thisform.optiongroup1.option1.setfocus thisform.refreshreturnendifif thisform.text3.value = {}=messagebox("请输入出生年月",0+48+0,"出错") thisform.text3.setfocusthisform.refreshreturnendifif empty(thisform.text4.value) then=messagebox("请输入家庭住址",0+48+0,"出错") thisform.text4.setfocusthisform.refreshreturnendifif empty(thisform.text5.value) then=messagebox("请输入联系电话",0+48+0,"出错") thisform.text5.setfocusthisform.refreshreturnendifnbuyerid = alltrim(thisform.text1.value)nbuyername = alltrim(thisform.text2.value)if thisform.optiongroup1.value = 1nbuyersex = "男"elsenbuyersex = "女"endifnbuyerbirthday = dtoc(thisform.text3.value)nbuyeradd = alltrim(thisform.text4.value)nbuyerphone = alltrim(thisform.text5.value)*判断是新记录保存还是修改记录If thisform.newcommand = .t. && newcommand = .t. 是新记录保存*数据表buyer保存记录insert intobuyer(buyerid,buyername,buyersex,buyerbirthday,buyeradd ,buyerphone) values(nbuyerid,nbuyername,nbuyersex,nbuyerbirthday,nbuyeradd ,nbuyerphone)=messagebox("保存完毕",0+48+0,"提示")elseupdate buyer setbuyername=nbuyername,buyersex=nbuyersex,buyerbirthday=n buyerbirthday,buyeradd=nbuyeradd,buyerphone=nbuyerphone where buyerid=nbuyerid=messagebox("修改完成",0+48+0,"提示")endif*表单初始化thisform.text1.enabled = .f.thisform.text2.enabled = .f.thisform.optiongroup1.enabled = .f.thisform.text3.enabled = .f.thisform.text4.enabled = .f.thisform.text5.enabled = .f.mand1.enabled = .t.mand2.enabled = .t.mand3.enabled = .t.mand4.enabled = .t.mand5.enabled = .t.mand6.enabled = .t.mand7.enabled = .t.mand8.enabled = .t.mand9.enabled = .t.mand10.enabled =.f.mand11.enabled =.f.mand12.enabled = .t.thisform.dis_recordthisform.dis_reccommandthisform.newcommand = .f.thisform.refresh10.3 表单删除按钮Click程序代码if reccount("buyer")=1 then=messagebox("只有一条记录,不能删除",0+16+0,"出错") returnelsenbuyerid = alltrim(thisform.text1.value)nbuyername = alltrim(thisform.text2.value)mesbox=messagebox("是否删除"+nbuyerid+"号采购员"+nbuyername,4+48+0,"警告")if mesbox=7 thenreturnelseuse buyer EXCLUSIVEdelete from buyer where buyer.buyerid=nbuyeridpack=messagebox(nbuyerid+"号采购员"+nbuyername+"已经删除",0+48+0,"提示")endifendifthisform.dis_recordthisform.dis_reccommandthisform.refresh10.4 表单浏览按钮Click程序代码DEFINE WINDOW browsewin FROM 1,1 TO 30,120 noFLOAT CLOSE nominimize nogrow nozoom systemselect buyerset order to buyeridbrow fieldsbuyerid,buyername,buyersex,buyerbirthday,buyeradd,buyer phone window browsewin noappend nomodify nodeleterelease window browsewin10.5 表单自定义过程DIS_RECORD程序代码select buyerset order to buyeridif reccount("buyer") = 0thisform.text1.value = ""thisform.text2.value = ""thisform.optiongroup1.value = 0thisform.text3.value = {}thisform.text4.value = ""thisform.text5.value = ""elsethisform.text1.value = buyer.buyerid thisform.text2.value = buyer.buyernameif buyer.buyersex = "男"thisform.optiongroup1.value = 1elsethisform.optiongroup1.value = 2endifthisform.text3.value = buyer.buyerbirthday thisform.text4.value = buyer.buyeraddthisform.text5.value = buyer.buyerphoneendifthisform.refresh采购员信息查找表单KFGL_CGY_CZ.SCX程序代码11.1 表单查找按钮Click事件程序代码if thisform.optiongroup1.value = 1 .and. empty(thisform.text1.value)=messagebox("请输入采购员编号",0+16+0,"出错") thisform.text1.setfocusreturnendifif thisform.optiongroup1.value = 2 .and. empty(thisform.text2.value)=messagebox("请输入采购员姓名",0+16+0,"出错") thisform.text2.setfocusreturnendifif thisform.optiongroup1.value = 0=messagebox("请选择条件",0+16+0,"出错")thisform.optiongroup1.option1.setfocusreturnendifselect buyerset order to buyeridgo topif thisform.optiongroup1.value = 1locate for buyerid == alltrim(thisform.text1.value) if .not.found()=messagebox("没有附和条件记录",0+16+0,"出错") thisform.text1.setfocusreturnendifelselocate for buyername = alltrim(thisform.text2.value) if .not.found()=messagebox("没有附和条件记录",0+16+0,"出错") thisform.text2.setfocusreturnendifendifcggl_cgy.dis_recordcggl_cgy.dis_reccommandcggl_cgy.refresh thisform.release。

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

超市管理系统完整+源代码(总18页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除1.保存及输出。

超市中的各种商品信息保存在指定文件中,可以把它们输出显示。

2.计算并排序。

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

3.统计。

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

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

1.2总体结构本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、打印模块。

1)主模块:通过调用各分模块实现功能;2)信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3)新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存在指定的文件中;4)排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储;5)计算模块:将所有商品的价格与库存量进行累加求和;6)打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;7)统计模块1:统计库存量低于100的货名及类别;8)统计模块2:统计商品库存量有2种以上(含2种)低于100的商品类别。

附录(程序清单)#include "stdio.h" /*输入,输出头文件*/#include "stdlib.h" /*申请空间头文件*/#include "string.h" /*对字符串加工头文件*/#include "conio.h" /*清屏头文件*/FILE *fp;int n=0; /*定义文件指针类型*/int i,j,a[4],m; /*定义整数类型*/float aver[4],sum[4],g[4],h; /*定义浮点类型*/char c[5]="elec"; /*定义字符数组类型*/char d[5]="comm"; /*定义字符数组类型*/char e[5]="food"; /*定义字符数组类型*/char f[5]="offi"; /*定义字符数组类型*/struct good /*定义结构体*/int num; /*商品编号*/char name[20]; /*商品名称*/char kind[40]; /*商品类型*/float price; /*商品价格*/char unit[10]; /*商品单位*/int quantity; /*商品数量*/struct good *next; /*定义结构体指针类型*/}*head,*p1,*p2;struct good *createlist() /*创建链表函数*/{struct good *head1,*p1,*p2; /*定义结构体指针类型*/if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}head1=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/p1=head1;p2=head1;printf("*********************************************\n");printf("请输入信息:编号,名称,类型,价格,单位,数目\n");printf(" (以输入“-1”表示结束输入)\n");printf("*********************************************\n");printf("____________________\n");scanf("%d %s %s %f %s %d",&p1->num,p1->name,p1->kind,&p1->price,p1->unit,&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->quantity); /*输入商品信息*/ printf("________________\n");fprintf(fp,"%d %s %s %f %s %d ",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity); /*将商品信息写入文件*/p1->next=NULL;p2->next=p1;p2=p1;}}struct good *paixu(struct good*head2) /*链表排序函数*/{struct good *p6,*p7,*r,*s; /*定义结构体指针类型*/for(i=0;i<=3;i++) /*赋初值值*/{a[i]=0;sum[i]=0;aver[i]=0;p6=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/ p6->next=head2;head2=p6;while(p6->next!=NULL) /*判断循环结束条件*/{p7=p6->next;r=p6;while(p7->next!=NULL) /*判断循环结束条件*/{if((p7->next->price)>(r->next->price)) /*判断是否调换*/r=p7;p7=p7->next;}if(p6!=r) /*判断循环结束条件*/{s=r->next; /*指针调换*/r->next=s->next;s->next=p6->next;p6->next=s;}p6=p6->next;}p6=head2;head2=head2->next;free(p6); /*释放第一个无效空间*/return head2;}void jisuan(){p1=head;doif(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) /*判断商品类型是否为日用品类型*/{}p3=p3->next;}return;}void printf2(struct good *p) /*遍历链表并打印办公用品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,e)==0) /*判断商品类型是否为办公用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出办公用品类商品信息*/printf("________________________________________________\n");}p3=p3->next;}return;}void printf3(struct good *p) /*遍历链表并打印食品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,f)==0) /*判断商品类型是否为食品类型*/{}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; /*结束程序*/}。

相关文档
最新文档