超市管理系统设计代码
- 格式:doc
- 大小:408.51 KB
- 文档页数:111
目录1.设计内容___________________________________________________ 22.开发工具及相关内容介绍_____________________________________ 23.数据库设计_________________________________________________ 33.1系统的E-R图__________________________________________ 33.2数据库表定义__________________________________________ 33.2.1 职工信息表________________________________________________ 33.2.2 用户登录表________________________________________________ 43.2.3 商品信息表________________________________________________ 43.2.4 供货商信息表______________________________________________ 43.2.5 进货信息表________________________________________________ 53.2.6 销售信息表________________________________________________ 53.2.7 库存信息表________________________________________________ 64.系统整体功能分析___________________________________________ 64.1 系统登录模块__________________________________________ 74.2 商品信息管理模块______________________________________ 84.3 职工信息管理模块_____________________________________ 104.4 供货商信息管理模块___________________________________ 114.5 添加销售信息模块_____________________________________ 134.6 添加进货信息模块_____________________________________ 154.7 库存信息管理模块_____________________________________ 184.8权限设置管理模块_____________________________________ 195.系统测试__________________________________________________ 196.总结______________________________________________________ 207.参考文献__________________________________________________ 201.设计内容随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对数据库的进一步开发和利用显得尤为迫切。
基于Java Web的小型超市订单管理系统是一种常见的毕业设计项目,其主要功能包括订单管理、商品管理、用户管理等模块。
下面是该项目中可能需要实现的一些详细功能:
用户管理模块:包括用户注册、登录、修改个人信息等功能,可以使用Java Servlet 和JSP技术实现。
商品管理模块:通过网页界面展示超市的商品信息,包括商品名称、价格、库存量等,并提供添加、删除、修改商品信息的功能。
可以使用Java Bean和数据库连接技术实现。
订单管理模块:包括查看历史订单、创建新订单、取消订单等功能。
可以使用Java Servlet和JSP技术实现,并与数据库进行交互。
支付功能:可以使用第三方支付平台接口实现在线支付功能。
后台管理模块:管理员可以登录后台系统,对用户、订单、商品等信息进行操作和管理。
可以使用Java Servlet和JSP技术实现,并与数据库进行交互。
基于Java Web的小型超市订单管理系统涉及到前端页面设计、后台逻辑实现、数据库设计等多个方面,需要充分考虑用户体验、安全性、可靠性等因素,并使用合适的工具和技术进行开发。
在实现过程中,还需遵循软件开发规范,保证代码的可读性和可维护性,以便日后的项目开发和维护。
毕业设计说明书题目:超市账单管理系统超市账单管理系统摘要:随着科学技术的不断发展,计算机越来越普及,随之各种软件也相应而出。
许许多多的企业也用上了相应的软件,来加快自身的发展。
由于超市行业的不断壮大,也需要一套软件来相应的软件来管理。
在这种情况下超市账单管理系统也应运而生。
超市账单管理系统主要是对超市账单、供应商、用户的简单管理。
本系统主要用java语言进行开发,mysql数据库和Eclipse开发工具;主要用的核心技术是Servlet,用来处理用户的请求和页面之间的跳转,JDBC(Java Data Base Connectivity)连接数据库实现处理与数据库的交互。
主要用的美工技术是div+css,javaScript处理页面显示效果。
本系统能更快,更方便的管理好整个工作流程中的各个模块,使工作效率达到最优化。
关键词:java;Servlet;div+css;javaScript;mysql;超市账单管理系统;Title:Supermarket Bill Management SystemAbstract: Along with the science and technology unceasing development, the computer more and more popular, with a variety of software is out. Many companies also use the corresponding software, to accelerate the development of oneself. As a result of Supermarket has grown, also need a set of software to the software to management. In this case the supermarket bill management system also emerge as the times require. Supermarket bill management system is mainly the easy management of supermarket bills, suppliers, users. This system is mainly the use of Java language development, database mysql and Eclipse development tools; the main core technology is Servlet, It used to handle user requests and jump between pages. JDBC(Java Data Base Connectivity)used to handle the interaction with the database .Mainly using artist technical is div+css,javaScript, handling page display effect. This system can be faster, more convenient management of the whole working process of each module, so that the work efficiency is optimized.Keywords: java ,Servlet,div+css,javaScript,mysql,Supermarket bill management system目录摘要 (I)Abstract (II)1 正文 (1)1.1研究背景分析 (1)1.2 超市账单管理系统的概述 (2)1.3所需软、硬件技术准备 (2)1.4可行性分析 (3)1.4.1 技术可行性 (3)1.4.2 经济可行性 (3)1.4.3 社会可行性 (3)2 需求分析 (4)2.1 需求分析的任务及主要内容 (4)2.2.1 具体业务的需求 (4)2.2 层次图 (4)2.3数据流图 (5)3 概要设计 (5)3.1 系统分析 (5)3.1.1 系统的总体分析 (6)3.2 数据库的设计与实现 (6)3.2.1 数据库系统分析 (7)3.2.2 数据库物理实现 (7)4 详细设计 (9)4.1 Servlet的详细应用 (9)4.2 特定模块的详细介绍 (9)4.2.1 登陆模块 (9)4.2.2 账单管理模块 (15)4.2.2 供应商管理模块 (21)4.2.3 用户管理模块 (26)5 系统测试 (33)结语 (34)注释 (34)参考文献 (35)致谢 (37)附录1 (38)1 正文1.1研究背景分析超级市场是以顾客自选方式经营的大型综合性零售商场,又称自选商场。
UML超市管理系统ER图、用例图、类图、状态图等等一、引言在如今信息化的时代,超市管理系统的作用不可小觑,对于超市来说,一个好的管理系统能够提高效率,减少误差,降低成本。
本文将介绍UML超市管理系统的ER图、用例图、类图、状态图等详细内容。
二、ER图ER图是一种用来表示实体、属性和实体之间关系的图形表示方法,可以帮助我们直观的了解超市管理系统的数据结构。
在UML超市管理系统的ER图中,我们可以看到有两个主要的实体,分别是“商品”和“员工”,它们之间存在着一种关系,即“员工”可以对“商品”进行操作,操作包括进货、出售等。
此外,还有实现超市管理的“收银系统”实体,它与“员工”实体之间存在一种“服务”关系,表示“员工”需要借助“收银系统”来完成购物流程。
三、用例图用例图是描述用户与系统交互的图形化工具,通过它我们可以较为全面的认知UML超市管理系统中的功能模块以及用户的角色和操作。
在UML超市管理系统的用例图中,我们可以看到有三个用户角色,分别是“管理员”、“员工”、“顾客”,在不同的角色下能够进行的操作也不尽相同:•管理员:添加商品、移除商品、添加员工、移除员工。
•员工:查询库存、进货、销售、结账。
•顾客:浏览商品、购买商品。
四、类图类图是描述系统实现代码层次结构的图形化画面,它能够帮助我们更深入地了解UML超市管理系统的设计模式。
在UML超市管理系统的类图中,我们可以看到有“商品”、“员工”、“收银系统”等抽象类和“水果”、“蔬菜”、“收银员”、“管理员”、“顾客”等具体类,它们之间存在着继承关系、关联关系和聚合关系等。
此外,我们还可以看到有一系列类似于“超市”、“购物车”、“库存”、“销售记录”等的类,它们实现了超市管理的各个功能基础模块,能够帮助我们更清晰地了解UML超市管理系统的具体运行方式。
五、状态图状态图是描述状态机的一种图形化工具,它描述了一个对象在其生命周期内所经历的所有状态和转换关系。
数据库设计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图。
(店铺管理)超市进销存系统壹、进销存系统概述(壹)进销存管理信息系统简介进销存管理是商业企业运营管理中的核心环节,也是壹个企业能否取得效益的关键。
如果能做到合理生产、及时销售、库存量最小,减少积压,那么企业就能取得最佳的效益。
由此可见,进销存管理决策的正确和否直接影响了企业的经济效益。
在手工管理的情况下,销售人员很难对客户做出正确的供货承诺,同时企业的采购部也缺少壹份准确的采购计划,目前的库存及市场需求很难反应到采购中去,部门之间的通讯也经常不通畅,这在激烈竞争的市场中是非常不利的。
企业的进销存管理信息系统就是在这种情况下应运而生的。
它利用计算机技术,使得企业采购,库存和销售能够有利结合起来,供销衔接,提高企业的效率和效益。
(二)X公司简介及项目开发背景大连大兴商贸X公司是壹家以销售计算机及周边配件为主的中小型高科技贸易X公司,凭着其良好的销售业绩及雄厚的技术实力,X公司成为了多家国际知名品牌计算机的二级代理商。
该X公司货源主要来自其产业链上游的全国总代理或地区总代理,其客户主要是大连本地或本地周边的商业用户。
因此该X公司的货物吞吐量较大,而X公司目前进销存环节的操作均以人工作业为主,X公司的销售人员不清楚库存的数量,而采购员则又不能及时了解目前产品的销量,所有货品的出库、配送及入库均采用人工开单,办事效率低下,随着X公司业务的日益增长,整个物流环节的办事效率正逐渐成为X公司发展的瓶径。
因此,为了满足日益增长的业务需求,X公司决定开发壹套进销存管理信息系统,以提高办事效率,理顺物流环节。
X公司的组织机构图如图壹所示:图1X公司组织结构图(三)开发设计思想1.尽可能利用X公司现有的软硬件环境,及先进的管理系统开发方案,从而达到充分利用X公司现有资源,提高系统开发水平和应用效果的目的。
2.系统应符合采购、销售、库存的规定,满足X公司日常工作需要,且达到操作工程中的直观、方便、实用、安全等要求。
3.系统采用先进的俩层体系结构,客户端负责提供表达逻辑、显示用户界面信息,基本操作;服务器端负责实现数据服务。
目录一、项目说明 (1)二、系统调查2.1 初步调查 (1)2.2 新系统目标 (2)2.3 系统主要流程分析 (2)三、系统规划3.1 可行性分析 (3)3.2 超市组织结构 (4)3.3 定义企业过程 (4)3.4 U/C矩阵分析 (5)四、系统分析4.1 业务流程图 (6)4.2 数据流程分析 (6)4.3 数据字典 (8)五、系统设计5.1层次结构设计 (14)5.2数据存储设计 (14)5.3 网络设计 (16)5.4 输入输出设计 (16)六、调试与测试 (29)七、心得体会 (30)八、参考文献 (31)九、致谢 (32)超市管理信息系统课程设计报告一、项目说明本系统是以计算机软硬件为基础,采用Win8操作系统,利用sql与VisualFoxpro结合的方式进行编程设计的自行开发软件系统。
系统采用系统结构化开发方法,设计过程主要部分:现行系统调查分析、可行性研究、企业业务流程图绘制、数据结构与数据库设计、数据字典编制、数据流程图绘制,系统总体结构设计。
完成信息的模块功能与处理过程设计、系统维护、系统实施、系统运行管理制度。
包括输入、输出、查找等功能。
此系统具有检索迅速、查找方便、可靠性高、存储量大的优点,是一个成本低的现代管理信息系统。
二、系统调查(一)、初步调查我国超市的形成在20世纪90年代初期,现已成为我国零售业的一种重要形态,为国民经济发挥了重要作用。
随着超市业高速发展,其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售业的发展,这样就迫切需要引进新的管理技术。
超市形态具有很多优点,但仍存在企业零售企业所共有的落后一面,如不能有效地管理每种商品,容易出现营业差错,不宜进行商品调价,盘点效率低等,而且在超市日常管理中,商品的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对对实时传递信息的要求始终得不到满足。
随着超市的告诉发展,其经营管理也变得愈加复杂,日常所需处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场,这导致了城市管理信息系统的出现。
python代码完成超市管理系统的设计与实现超市管理系统是一个相对复杂的系统,涵盖了商品管理、库存管理、销售管理、员工管理等多个模块。
以下是一个简化的超市管理系统的Python代码示例,主要实现了商品管理和销售管理两个功能。
pythonclass Product:def __init__(self, id, name, price, quantity):self.id = id = nameself.price = priceself.quantity = quantityclass Supermarket:def __init__(self):self.products = []def add_product(self, product):self.products.append(product)def sell_product(self, product_id, quantity):for product in self.products:if product.id == product_id:if product.quantity >= quantity:product.quantity -= quantityreturn quantity * product.priceelse:return "库存不足"return "商品不存在"# 示例supermarket = Supermarket()# 添加商品product1 = Product(1, "苹果", 5, 100)product2 = Product(2, "香蕉", 3, 50)supermarket.add_product(product1)supermarket.add_product(product2)# 销售商品print(supermarket.sell_product(1, 10)) # 输出 50print(supermarket.sell_product(2, 30)) # 输出 "库存不足"在这个示例中,我们定义了两个类:Product和Supermarket。
程序设计——超市管理系统学院:专业:班级:姓名:学号:指导老师:超市管理系统课程设计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程序,实现自己的梦想和未来!。
超市管理系统的设计与实现1. 建立数据库和基本表,并建立合理的约束(1)打开VFP,建立一个项目,命名为csglxt。
(2)在项目中建立数据库:以班级+小组(如汉语1102-01)(3)在数据库中建立5张表:“商品信息表”表的结构字段名字段类型字段宽度小数位索引商品编号字符型 10 ——主索引商品名称字符型 50 ————厂商名称字符型 50 ————价格数值型 8 2 ——库存数量整型——————“用户表”表的结构字段名字段类型字段宽度小数位索引用户编号字符型 10 ——主索引用户名字符型 8 ————用户密码字符型 20 ————用户类型字符型10 ————“会员表”表的结构字段名字段类型字段宽度小数位索引会员编号字符型 8 ——主索引会员姓名字符型 8 ————会员卡号字符型 8 ————会员电话字符型11 ————注册日期日期型——————累计消费金额数值型 20 2 ------会员地址备注型——————照片通用型——————“进货记录表”表的结构字段名字段类型字段宽度小数位索引进货单编号字符型 10 ——主索引商品编号字符型 10 ——普通索引进货数量整型 4 ————商品单价数值型 10 2 ------总额数值型 20 2 ——进货日期日期型——————经手人字符型8 ——普通索引备注备注型 20 ————“销售表”表的结构字段名字段类型字段宽度小数位索引销售单编号字符型 10 ——主索引商品编号字符型 10 ——普通索引销售数量整型——————商品单价数值型 10 2 ------总额数值型 20 2 ——销售日期日期型——————销售人员字符型8 ——普通索引——普通索引会员编号字符型 8备注备注型——————(4)参照完整性约束:商品信息表、销售表通过商品编号进行连接,商品信息表、进货记录表也通过商品编号进行连接;用户表以用户编号和销售表的销售人员编号连接,用户表以用户编号和进货记录表的经手人编号连接;会员表以会员编号和销售连接。
import java.awt.*;import java.awt.event.*;import javax.swing.table.*;import javax.swing.event.*;import javax.swing.*;import java.sql.*;import java.util.*;import java.io.*;class Myframe1 extends JFrame //设置主界面{JFrame f=new JFrame();JLabel L1,L2;JButton btn1,btn2,btn3,btn4;public Myframe1(){f=new JFrame("主界面");L1=new JLabel("超市商品管理系统欢迎您");L1.setFont(new Font("TimesRoman",Font.BOLD,18));L2=new JLabel("您辛苦了~~~~");L2.setFont(new Font("TimesRoman",Font.BOLD,18));btn1=new JButton("进货管理系统");btn2=new JButton("售货管理系统");btn3=new JButton("商品信息管理");btn4=new JButton("管理系统帮助");Container container=this.getContentPane();container.setLayout(new GridLayout(9,3,0,50));for(int i=0;i<3;i++)container.add(new JLabel());container.add(new JLabel()); container.add(L1);container.add(new JLabel());container.add(new JLabel()); container.add(btn1);container.add(new JLabel());container.add(new JLabel()); container.add(btn2);container.add(new JLabel());container.add(new JLabel()); container.add(btn3);container.add(new JLabel());container.add(new JLabel()); container.add(btn4);container.add(new JLabel());container.add(new JLabel()); container.add(L2);container.add(new JLabel());container.setBackground(Color.cyan);f.add(container);f.setLocation(60,60);f.setSize(750,650);f.setVisible(true);Montior bn=new Montior();btn1.addActionListener(bn);btn2.addActionListener(bn);btn3.addActionListener(bn);btn4.addActionListener(bn);}class Montior implements ActionListener{public void actionPerformed(ActionEvent e1) {if(e1.getSource()==btn1){new Myframe2();}if(e1.getSource()==btn2){new Myframe3();}if(e1.getSource()==btn3){new Myframe4();}if(e1.getSource()==btn4){new bangzhu();}}}}class bangzhu extends JFrame{JTextPane ta=new JTextPane();JScrollPane sp=new JScrollPane(ta);public bangzhu(){super("管理系统帮助");ta.setFont(new Font("TimesRoaman",Font.BOLD+Font.PLAIN,20));ta.setText(" 1.初次进入登录系统,系统中没有售货员信息,可以进入系统但是为了以后能够使用方便\n"+" 还是增加售货员信息,以便下次登录。
"+" 2.通过编号和密码验证后,进入系统主界面,但是为了能方便的进行操作,要在添加商品信息"+" 3.添加了商品信息和售货员信息,即可根据信息进行填写别的表操作。
");ta.setEditable(false);Container container=this.getContentPane();container.setLayout(new BorderLayout());container.add(new JLabel(),BorderLayout.NORTH);container.add(new JLabel(),BorderLayout.WEST);container.add(new JLabel(),BorderLayout.EAST);container.add(new JLabel(),BorderLayout.SOUTH);container.add(sp,BorderLayout.CENTER);this.setSize(400,330);this.setVisible(true);}}class Myframe2 extends JFrame //设置进货系统的界面{Pstock stock=new Pstock();Ptrademan trademan=new Ptrademan();JTabbedPane pane;Myframe2(){super("进货管理系统");pane=new JTabbedPane(JTabbedPane.TOP);pane.add("进货单信息",stock);pane.add("进货商信息",trademan);this.add(pane);this.setSize(700,550);this.setLocation(100,100);this.setVisible(true);}class Pstock extends JPanel implements ActionListener //添加进货单管理的组件 {private database db=new database();ResultSet rs;Panel p;Panel p1;JTextArea t;JButton btn1,btn2,btn3,btn4,btn5,btn6;JLabel L1,L2;//表格设置JTable table;JScrollPane scrollpane;Vector vector;AbstractTableModel tm;String title[]={"条形码","供应商名","进货价","进货日期","进货量"}; Pstock(){create();p=new Panel();p1=new Panel();btn1=new JButton("填写新的进货单");btn2=new JButton("解除购买某商品");btn3=new JButton("修改进货单信息");btn4=new JButton("查询进货单信息");btn5=new JButton("显示进货单所有信息");btn6=new JButton("进货商品的总金额");L1=new JLabel("进货单的信息显示栏",JLabel.CENTER);L1.setFont(new Font("TimesRoman",Font.BOLD,16));L2=new JLabel("进货单信息管理",JLabel.CENTER);L2.setFont(new Font("TimesRoman",Font.BOLD,16));p.setLayout(new GridLayout(9,1,20,20));p.add(L2);p.add(btn1);p.add(btn2);p.add(btn3);p.add(btn4);p.add(btn6);p.add(btn5);p.add(new JLabel());p.add(new JLabel());p1.setLayout(new BorderLayout());p1.add(L1,BorderLayout.NORTH);p1.add(scrollpane,BorderLayout.CENTER);this.setLayout(new BorderLayout());this.add(p1,BorderLayout.CENTER);this.add(p,BorderLayout.EAST);btn1.addActionListener(this);btn2.addActionListener(this);btn3.addActionListener(this);btn4.addActionListener(this);btn5.addActionListener(this);btn6.addActionListener(this);}public void actionPerformed(ActionEvent e2) {if(e2.getSource()==btn1){new tianxie();}if(e2.getSource()==btn2){new shanchu();}if(e2.getSource()==btn3){new xiugai();}if(e2.getSource()==btn4){new chaxun();}if(e2.getSource()==btn5) //数据库区显示进货单所有信息 { int flag=0;try{rs=db.select("select * from stocklist");vector.removeAllElements();while(rs.next()){flag=1;Vector rec_vector=new Vector();rec_vector.addElement(rs.getString(1));rec_vector.addElement(rs.getString(2));rec_vector.addElement(rs.getString(3));rec_vector.addElement(rs.getString(4));rec_vector.addElement(rs.getString(5));vector.addElement(rec_vector);}tm.fireTableStructureChanged();if(flag==0){JOptionPane.showMessageDialog(null,"还没有进货单信息");}}catch(SQLException ee){ee.printStackTrace();}}if(e2.getSource()==btn6){new jine();}}void create(){vector = new Vector();tm = new AbstractTableModel(){public int getColumnCount(){return title.length; //取得表格列数}public int getRowCount(){return vector.size(); //取得表格行数}public Object getValueAt(int row,int column){if(!vector.isEmpty()) //取得单元格中的属性值return ((Vector)vector.elementAt(row)).elementAt(column); elsereturn null;}public String getColumnName(int column){return title[column]; //设置表格列名}public void setValueAt(Object value,int row,int column){//数据模型不可编辑,该方法设置为空}public Class getColumnClass(int c){return getValueAt(0,c).getClass(); //取得列所属对象类}public boolean isCellEditable(int row,int column){return false;//设置单元格不可编辑,为缺省实现}};table=new JTable(tm);table.setToolTipText("显示内容");table.setAutoResizeMode(table.AUTO_RESIZE_OFF);table.setCellSelectionEnabled(false);table.setShowHorizontalLines(true);table.setShowVerticalLines(true);scrollpane=new JScrollPane(table);}}class Ptrademan extends JPanel implements ActionListener //进货商管理信息 {private database db=new database();ResultSet rs;Panel p;Panel p1;JButton btn1,btn2,btn3,btn4,btn5;JLabel L1,L2;//表格设置JTable table;JScrollPane scrollpane;Vector vector;AbstractTableModel tm;String title[]={"供应商名","电话","条形码","进货价"};Ptrademan(){create();p=new Panel();p1=new Panel();btn1=new JButton("填写新的进货商");btn2=new JButton("删除进货商信息");btn3=new JButton("修改进货商信息");btn4=new JButton("查询进货商信息");btn5=new JButton("显示进货商所有信息");L1=new JLabel("进货商信息显示栏",JLabel.CENTER);L1.setFont(new Font("TimesRoman",Font.BOLD,16));L2=new JLabel("进货商信息管理",JLabel.CENTER);L2.setFont(new Font("TimesRoman",Font.BOLD,16));p.setLayout(new GridLayout(9,1,20,20));p.add(L2);p.add(btn1);p.add(btn2);p.add(btn3);p.add(btn4);p.add(new JLabel());p.add(btn5);p.add(new JLabel());p.add(new JLabel());p1.setLayout(new BorderLayout());p1.add(L1,BorderLayout.NORTH);p1.add(scrollpane,BorderLayout.CENTER);this.setLayout(new BorderLayout());this.add(p1,BorderLayout.CENTER);this.add(p,BorderLayout.WEST);btn1.addActionListener(this);btn2.addActionListener(this);btn3.addActionListener(this);btn4.addActionListener(this);btn5.addActionListener(this);}void create(){vector = new Vector();tm = new AbstractTableModel(){public int getColumnCount(){return title.length; //取得表格列数}public int getRowCount(){return vector.size(); //取得表格行数}public Object getValueAt(int row,int column){if(!vector.isEmpty()) //取得单元格中的属性值return ((Vector)vector.elementAt(row)).elementAt(column); elsereturn null;}public String getColumnName(int column){return title[column]; //设置表格列名}public void setValueAt(Object value,int row,int column){//数据模型不可编辑,该方法设置为空}public Class getColumnClass(int c){return getValueAt(0,c).getClass(); //取得列所属对象类}public boolean isCellEditable(int row,int column){return false;//设置单元格不可编辑,为缺省实现}};table=new JTable(tm);table.setToolTipText("显示内容");table.setAutoResizeMode(table.AUTO_RESIZE_OFF);table.setCellSelectionEnabled(false);table.setShowHorizontalLines(true);table.setShowVerticalLines(true);scrollpane=new JScrollPane(table);}public void actionPerformed(ActionEvent e2){if(e2.getSource()==btn1){new tianxieshang();}if(e2.getSource()==btn2){new shanchushang();}if(e2.getSource()==btn3){new xiugaishang();}if(e2.getSource()==btn4){new chaxunshang();}if(e2.getSource()==btn5) //完成数据库区显示进货商所有信息 {try{int flag=0;rs=db.select("select * from tradesman");vector.removeAllElements();while(rs.next()){flag=1;Vector rec_vector=new Vector();rec_vector.addElement(rs.getString(1));rec_vector.addElement(rs.getString(2));rec_vector.addElement(rs.getString(3));rec_vector.addElement(rs.getString(4));vector.addElement(rec_vector);}tm.fireTableStructureChanged();if(flag==0){JOptionPane.showMessageDialog(null,"还没有任何进货商信息");}}catch(SQLException ee){ee.printStackTrace();}}}}}class Myframe3 extends JFrame //设置售货系统的界面{Plist list=new Plist();Psalesman salesman=new Psalesman();JTabbedPane pane;Myframe3(){super("售货管理系统");pane=new JTabbedPane(JTabbedPane.TOP);pane.add("收银清单信息",list);pane.add("售货员信息",salesman);this.add(pane);this.setSize(700,550);this.setLocation(100,100);this.setVisible(true);}class Plist extends JPanel implements ActionListener //添加收银清单的组件 {private database db=new database();ResultSet rs;JPanel p1=new JPanel();JPanel p2=new JPanel();JButton btn1,btn2,btn3,btn4,btn5;JLabel L=new JLabel("显示信息栏",JLabel.CENTER);//表格设置JTable table;JScrollPane scrollpane;Vector vector;AbstractTableModel tm;String title[]={"条形码","零售价","售货员编号","售出量"};Plist(){create();btn1=new JButton("填写新的清单");btn2=new JButton("删除清单");btn3=new JButton("修改清单");btn4=new JButton("收银清单金额");btn5=new JButton("全部清单信息");p1.setLayout(new GridLayout(1,4,20,20));p1.add(btn1); p1.add(btn2); p1.add(btn3); p1.add(btn4); p1.add(btn5);p2.setLayout(new BorderLayout());p2.add(L,BorderLayout.NORTH);p2.add(scrollpane,BorderLayout.CENTER);this.setLayout(new BorderLayout());this.add(p1,BorderLayout.NORTH);this.add(p2,BorderLayout.CENTER);this.setVisible(true);btn1.addActionListener(this);btn2.addActionListener(this);btn3.addActionListener(this);btn4.addActionListener(this);btn5.addActionListener(this);}void create(){vector = new Vector();tm = new AbstractTableModel(){public int getColumnCount(){return title.length; //取得表格列数}public int getRowCount(){return vector.size(); //取得表格行数}public Object getValueAt(int row,int column){if(!vector.isEmpty()) //取得单元格中的属性值return ((Vector)vector.elementAt(row)).elementAt(column); elsereturn null;}public String getColumnName(int column){return title[column]; //设置表格列名}public void setValueAt(Object value,int row,int column){//数据模型不可编辑,该方法设置为空}public Class getColumnClass(int c){return getValueAt(0,c).getClass(); //取得列所属对象类}public boolean isCellEditable(int row,int column){return false;//设置单元格不可编辑,为缺省实现}};table=new JTable(tm);table.setToolTipText("显示内容");table.setAutoResizeMode(table.AUTO_RESIZE_OFF);table.setCellSelectionEnabled(false);table.setShowHorizontalLines(true);table.setShowVerticalLines(true);scrollpane=new JScrollPane(table);}public void actionPerformed(ActionEvent e){if(e.getSource()==btn1){new addlist();}if(e.getSource()==btn2){new deletelist();}if(e.getSource()==btn3){new updatelist();}if(e.getSource()==btn4){new tongji();}if(e.getSource()==btn5) //完成查询所有收银清单信息的功能{int flag=0;try{rs=db.select("select * from list");vector.removeAllElements();while(rs.next()==true){flag=1;Vector rec_vector=new Vector();rec_vector.addElement(rs.getString(1));rec_vector.addElement(rs.getString(2));rec_vector.addElement(rs.getString(3));rec_vector.addElement(rs.getString(4));vector.addElement(rec_vector);}tm.fireTableStructureChanged();if(flag==0){JOptionPane.showMessageDialog(null,"系统还没有任何收银清单信息");}}catch(SQLException ee){ee.printStackTrace();}}}}class Psalesman extends JPanel implements ActionListener //售货员信息管理 {private database db=new database();ResultSet rs;JButton btn1,btn2,btn3,btn4,btn5;JLabel L;JPanel p1=new JPanel();JPanel p2=new JPanel();//表格设置JTable table;JScrollPane scrollpane;Vector vector;AbstractTableModel tm;String title[]={"售货员姓名","售货员编号","密码","所在机号"};Psalesman(){create();btn1=new JButton("增加售货员");btn2=new JButton("删除售货员");btn3=new JButton("查询售货员");btn4=new JButton("售货员业绩");btn5=new JButton("全部售货员信息");L=new JLabel("显示信息栏",JLabel.CENTER);p1.setLayout(new GridLayout(1,5,20,20));p1.add(btn1);p1.add(btn2);p1.add(btn3);p1.add(btn4);p1.add(btn5);p2.setLayout(new BorderLayout());p2.add(L,BorderLayout.NORTH);p2.add(scrollpane,BorderLayout.CENTER);this.setLayout(new BorderLayout());this.add(p1,BorderLayout.NORTH);this.add(p2,BorderLayout.CENTER);this.setVisible(true);btn1.addActionListener(this);btn2.addActionListener(this);btn3.addActionListener(this);btn4.addActionListener(this);btn5.addActionListener(this);}void create(){vector = new Vector();tm = new AbstractTableModel(){public int getColumnCount(){return title.length; //取得表格列数}public int getRowCount(){return vector.size(); //取得表格行数}public Object getValueAt(int row,int column){if(!vector.isEmpty()) //取得单元格中的属性值return ((Vector)vector.elementAt(row)).elementAt(column); elsereturn null;}public String getColumnName(int column){return title[column]; //设置表格列名}public void setValueAt(Object value,int row,int column){//数据模型不可编辑,该方法设置为空}public Class getColumnClass(int c){return getValueAt(0,c).getClass(); //取得列所属对象类}public boolean isCellEditable(int row,int column){return false;//设置单元格不可编辑,为缺省实现}};table=new JTable(tm);table.setToolTipText("显示内容");table.setAutoResizeMode(table.AUTO_RESIZE_OFF);table.setCellSelectionEnabled(false);table.setShowHorizontalLines(true);table.setShowVerticalLines(true);scrollpane=new JScrollPane(table);}public void actionPerformed(ActionEvent e){if(e.getSource()==btn1){new addsalesman();}if(e.getSource()==btn2){new deletesalesman();}if(e.getSource()==btn3){new selectsalesman();}if(e.getSource()==btn4){new shouchujine();}if(e.getSource()==btn5) //完成显示全部信息的功能{try{rs=db.select("select * from salesman");vector.removeAllElements();while(rs.next()==true){Vector rec_vector=new Vector();rec_vector.addElement(rs.getString(1));rec_vector.addElement(rs.getString(2));rec_vector.addElement(rs.getString(3));rec_vector.addElement(rs.getString(4));vector.addElement(rec_vector);}tm.fireTableStructureChanged();rs=db.select("select * from salesman");if(rs.next()==false){JOptionPane.showMessageDialog(null,"系统还没有任何售货员信息");}}catch(SQLException ee){ee.printStackTrace();}}}}}class shouchujine extends JFrame implements ActionListener {private database db=new database();ResultSet rs;JLabel L;JLabel L1,L2;JButton btn1,btn2;JTextField t1,t2;JPanel p=new JPanel();shouchujine(){L=new JLabel("售货员售出金额",JLabel.CENTER);L1=new JLabel("输入售货员编号",JLabel.CENTER);L2=new JLabel("共售出金额(元)",JLabel.CENTER);btn1=new JButton("确定");btn2=new JButton("关闭");t1=new JTextField(20);t2=new JTextField(20);p.setLayout(new GridLayout(2,3,30,30));p.add(L1); p.add(t1); p.add(btn1);p.add(L2); p.add(t2); p.add(btn2);this.setLayout(new BorderLayout());this.add(L,BorderLayout.NORTH);this.add(p,BorderLayout.CENTER);this.setLocation(200,200);this.setSize(330,120);this.setVisible(true);btn1.addActionListener(this);btn2.addActionListener(this);}public void actionPerformed(ActionEvent e){if(e.getSource()==btn2){this.setVisible(false);}if(e.getSource()==btn1){if(t1.getText().equals("")){JOptionPane.showMessageDialog(null,"请输入要查看的售货员编号");}else{t2.setText("");String sno2=t1.getText();try{rs=db.select("select * from list where sno='"+sno2+"'");if(rs.next()==true){ResultSet rr=db.select("select SUM(gcost) from list where sno='"+sno2+"'"); if(rr.next()==true){t2.setText(rs.getString(1));}}else{JOptionPane.showMessageDialog(null,"此售货员并没有业绩");}}catch(SQLException ee){ee.printStackTrace();}}}}}class Myframe4 extends JFrame //设置商品信息系统的界面{Padd add=new Padd();Pupdate update=new Pupdate();Pselect select=new Pselect();JTabbedPane pane;Myframe4(){super("商品信息管理系统");pane=new JTabbedPane(JTabbedPane.TOP);pane.add("添加商品信息",add);pane.add("修改商品信息",update);pane.add("查找商品信息",select);this.add(pane);this.setSize(700,550);this.setLocation(100,100);this.setVisible(true);}class Padd extends JPanel implements ActionListener{private database db=new database();ResultSet rs;JPanel p1=new JPanel();JPanel p2=new JPanel();JPanel p3=new JPanel();JPanel p4=new JPanel();JLabel L;JLabel L1,L2,L3,L4,L5,L6;JButton btn1,btn2;JTextField t1,t2,t3,t4,t5,t6;//表格设置JTable table;JScrollPane scrollpane;Vector vector;AbstractTableModel tm;String title[]={"商品名","条形码","商品类型","零售价","所在仓库号","商品数量"};Padd(){create();L=new JLabel("显示结果",JLabel.CENTER);L1=new JLabel("商品名",JLabel.CENTER);L2=new JLabel("条形码",JLabel.CENTER);L3=new JLabel("商品类型",JLabel.CENTER);L4=new JLabel("零售价",JLabel.CENTER);L5=new JLabel("所存仓库号",JLabel.CENTER);L6=new JLabel("商品数量",JLabel.CENTER);t1=new JTextField(10);t2=new JTextField(10);t3=new JTextField(10);t4=new JTextField(10);t5=new JTextField(10);t6=new JTextField(10);btn1=new JButton("提交");btn2=new JButton("显示所有商品信息");p1.setLayout(new GridLayout(6,2));p1.add(L1); p1.add(t1);p1.add(L2); p1.add(t2);p1.add(L3); p1.add(t3);p1.add(L4); p1.add(t4);p1.add(L5); p1.add(t5);p1.add(L6); p1.add(t6);p2.setLayout(new FlowLayout());p2.add(btn1);p2.add(btn2);p3.setLayout(new BorderLayout());p3.add(p1,BorderLayout.CENTER);p3.add(p2,BorderLayout.SOUTH);p4.setLayout(new BorderLayout());p4.add(L,BorderLayout.NORTH);p4.add(scrollpane,BorderLayout.CENTER);this.setLayout(new BorderLayout());this.add(p3,BorderLayout.NORTH);this.add(p4,BorderLayout.CENTER);this.setVisible(true);btn1.addActionListener(this);btn2.addActionListener(this);}void create(){vector = new Vector();tm = new AbstractTableModel(){public int getColumnCount(){return title.length; //取得表格列数}public int getRowCount(){return vector.size(); //取得表格行数}public Object getValueAt(int row,int column){if(!vector.isEmpty()) //取得单元格中的属性值return ((Vector)vector.elementAt(row)).elementAt(column); elsereturn null;}public String getColumnName(int column){return title[column]; //设置表格列名}public void setValueAt(Object value,int row,int column){//数据模型不可编辑,该方法设置为空}public Class getColumnClass(int c){return getValueAt(0,c).getClass(); //取得列所属对象类}public boolean isCellEditable(int row,int column){return false;//设置单元格不可编辑,为缺省实现}};table=new JTable(tm);table.setToolTipText("显示内容");table.setAutoResizeMode(table.AUTO_RESIZE_OFF);table.setCellSelectionEnabled(false);table.setShowHorizontalLines(true);table.setShowVerticalLines(true);scrollpane=new JScrollPane(table);}public void actionPerformed(ActionEvent e5){if(e5.getSource()==btn1){try{String gname=t1.getText();String gno=t2.getText();String gtype=t3.getText();String gcost=t4.getText();String gwarehouse = t5.getText();String gnu = t6.getText();if(t1.getText().equals("")||t2.getText().equals("")||t3.getText().equals("")||t4.getText().equal s("")||t5.getText().equals("")||t6.getText().equals("")){JOptionPane.showMessageDialog(null,"请将所有信息填写完整!");t1.setText("");t2.setText("");t3.setText("");t4.setText("");t5.setText("");t6.setText("");}else{rs=db.select("select * from goods where gno='"+gno+"'");if(rs.next()==false){db.update("insert into goods values('"+gname+"','"+gno+"','"+gtype+"','"+gcost+"','"+gwarehouse+"','"+gnu+"')");JOptionPane.showMessageDialog(null,"插入成功!");t1.setText("");t2.setText("");t3.setText("");t4.setText("");t5.setText("");t6.setText("");}else{JOptionPane.showMessageDialog(null,"已经有此售货员!");}}}catch(SQLException ee){ee.printStackTrace();}}if(e5.getSource()==btn2) //完成显示所有商品信息的功能{try{rs=db.select("select * from goods");if(rs.next()==false){JOptionPane.showMessageDialog(null,"系统还没有任何商品信息");}rs=db.select("select * from goods");vector.removeAllElements();while(rs.next()){Vector rec_vector=new Vector();rec_vector.addElement(rs.getString(1));rec_vector.addElement(rs.getString(2));rec_vector.addElement(rs.getString(3));rec_vector.addElement(rs.getString(4));rec_vector.addElement(rs.getString(5));rec_vector.addElement(rs.getString(6));vector.addElement(rec_vector);}tm.fireTableStructureChanged();}catch(SQLException ee){ee.printStackTrace();}}}}class Pselect extends JPanel implements ActionListener{private database db=new database();ResultSet rs;JPanel p1=new JPanel();JPanel p2=new JPanel();JPanel p3=new JPanel();JPanel p4=new JPanel();JPanel p5=new JPanel();JLabel L;JLabel L1,L2,L4;JTextField t1,t2,t4;JLabel L5=new JLabel("显示信息栏",JLabel.CENTER);JButton btn1=new JButton("提交");JButton btn2=new JButton("显示全部信息");JButton btn3=new JButton("商品数量及商品金额");//表格设置JTable table;JScrollPane scrollpane;Vector vector;AbstractTableModel tm;String title[]={"商品名","条形码","商品类型","零售价","所在仓库号","商品数量"};Pselect(){create();L=new JLabel("查找商品信息",JLabel.CENTER);L.setFont(new Font("TimesRoman",Font.BOLD,16));L1=new JLabel("商品名",JLabel.CENTER);L2=new JLabel("条形码",JLabel.CENTER);L4=new JLabel("商品类型",JLabel.CENTER);t1=new JTextField(10);t2=new JTextField(10);t4=new JTextField(10);p1.setLayout(new GridLayout(4,2));p1.add(L1); p1.add(t1);p1.add(L2); p1.add(t2);p1.add(L4); p1.add(t4);p2.setLayout(new FlowLayout());p2.add(btn1); p2.add(btn2); p2.add(btn3);p3.setLayout(new BorderLayout());p3.add(L,BorderLayout.NORTH);p3.add(p1,BorderLayout.CENTER);p3.add(p2,BorderLayout.SOUTH);p5.setLayout(new BorderLayout());p5.add(L5,BorderLayout.NORTH);p5.add(scrollpane,BorderLayout.CENTER);this.setLayout(new BorderLayout());this.add(p3,BorderLayout.NORTH);this.add(p5,BorderLayout.CENTER);this.setVisible(true);btn1.addActionListener(this);btn2.addActionListener(this);btn3.addActionListener(this);}void create(){vector = new Vector();tm = new AbstractTableModel(){public int getColumnCount(){return title.length; //取得表格列数}public int getRowCount(){return vector.size(); //取得表格行数}public Object getValueAt(int row,int column){if(!vector.isEmpty()) //取得单元格中的属性值return ((Vector)vector.elementAt(row)).elementAt(column);elsereturn null;}public String getColumnName(int column){return title[column]; //设置表格列名}public void setValueAt(Object value,int row,int column){//数据模型不可编辑,该方法设置为空}public Class getColumnClass(int c){return getValueAt(0,c).getClass(); //取得列所属对象类}public boolean isCellEditable(int row,int column){return false;//设置单元格不可编辑,为缺省实现}};table=new JTable(tm);table.setToolTipText("显示内容");table.setAutoResizeMode(table.AUTO_RESIZE_OFF);table.setCellSelectionEnabled(false);table.setShowHorizontalLines(true);table.setShowVerticalLines(true);scrollpane=new JScrollPane(table);}public void actionPerformed(ActionEvent e){if(e.getSource()==btn1) //完成查询商品信息中的条形码的功能 {String gname,gno,gtype,gcost,gwarehouse,gnu;if(t2.getText().equals("")&&t4.getText().equals("")){int flag=0;try{gname=t1.getText();rs=db.select("select * from goods where gname='"+gname+"'");vector.removeAllElements();while(rs.next()==true){flag=1;Vector rec_vector=new Vector();rec_vector.addElement(rs.getString(1));rec_vector.addElement(rs.getString(2));rec_vector.addElement(rs.getString(3));rec_vector.addElement(rs.getString(4));rec_vector.addElement(rs.getString(5));rec_vector.addElement(rs.getString(6));vector.addElement(rec_vector);}tm.fireTableStructureChanged();if(flag==0){JOptionPane.showMessageDialog(null,"没有这个商品!");}}catch(SQLException ee){ee.printStackTrace();}。