在MySQL中新建数据库sale,并建立三个表,分别是用户表(tuser)、商品表(tproduct)、销售明细表(tsaledetail),各表参考字段如下:
- 用户表:用户登陆名userID,密码password,中文名chrName,用户角色role(值可以是“管理员”或“收银员”)
- 销售明细表:流水号lsh,商品条形码barCode(外部主键),商品名称productName,商品单价price,数量count,收银员operator,销售时间saleTime
- 商品表:商品条形码barCode(6位长度数字字符串,主键),商品名称productName,单价price,供应商supply
设计一个超市管理系统,实现“登陆”、“收银”、“查询统计”、“商品维护”、“密码修改”、“数据导出”等功能,具体要求如下:
(1)用户登陆
当程序运行时,显示“欢迎使用****超市收银系统,请登陆”,提示用户依次输入用户名及其密码,当用户名及密码不正确时,显示提示信息“用户名或密码不正确,请重新输入”,用户最多可以尝试3次,若输入3次均不正确,则给出提示信息“最多只能尝试3次”,退出系统;
(2)主菜单
当用户名及密码正确时,进入系统主界面,如下:
===****超市收银系统===
- 收银
- 查询统计
- 商品维护
- 修改密码
- 数据导出
- 退出
当前收银员:*****(显示当前用户名对应的中文名)
请选择(1-6):
如果输入1-6以外的选择,则显示提示信息“输入无效,只能输入1-6”后,返回主界面。
(3)各项功能
3.1 收银
当选择1时,显示“请输入商品条形码(6位数字字符):”,用户输入条形码后,如果输入不是6位数字字符,则提示“条形码输入格式不正确,请重新输入”,直到输入格式正确,如果输入的条形码在商品表中存在,则显示“输入商品数量:”,否则,提示“您输入的商品条形码不存在,请确认后重新输入”,
条形码和数量输入完毕后在销售明细表中增加一条记录(各字段信息如下:流水号根据规则生成(主键,格式为YYYYMMDD****,其中YYYYMMDD销售日期,****为销售记录顺序号,依次为0001,0002...,如202005060020),条形码为用户输入,商品名称及商品单价是根据输入的条形码查找商品表获取的,收银员为当前登陆用户名,销售时间为系统当前时间yyyy-mm-dd hh:mm:ss),增加成功后显示“成功增加一笔销售数据”,返回主菜单。
3.2 查询统计
当选择2时,显示“请输入销售日期(yyyy-mm-dd):”,如果日期格式不正确,则显示“你输入的日期格式不正确,请重新输入”,输入正确后,查询统计当前日期所有的销售信息,输出显示格式如下:
YYYY年MM月DD日销售如下
流水号 商品名称 单价 数量 金额 时间 收银员
===== ======= = ==== === ==== ===== ======
** ** ** ** ** ** **
销售总数:*** 商品总件:**** 销售总金额:***
日期:YYYY年MM月DD日
请按任意键返回主界面
3.3 商品维护
当选择3时,如果当前用户所属的角色是收银员,则显示提示信息,“当前用户没有执行该项功能的权限”,如果当前的用户角色是管理员角色,则显示如下子菜单:
===****超市商品管理维护====
1、从excel中导入数据
2、从文本文件导入数据
3、键盘输入
4、商品查询
5、返回主菜单
请选择(1-5):
- 当选择1时,程序读取product.xls文件,将所有数据存放于product集合中,然后将集合中的所有数据增加到商品表中,增加的时候要检查每条记录的条形码在商品表中是否存在,若存在,则不需要增加到数据库中,所有数据增加完毕后,显示“成功从excel文件导入XXX条商品数据”,返回子菜单。
- 当选择2时,程序读取product.txt文件,将所有数据存放于product集合中,然后将集合中的所有数据增加到商品表中,增加的时候要检查每条记录的条形码在商品表中是否存在,若存在,则不需要增加到数据库中,所有数据增加完毕后,显示“成功从文本文件导入XXX条商品数据”,返回子菜单。
- 当选择3时,从键盘依次录入商品信息,格式为“商品条形码,商品名称,单价,供应商”,如:“100002,笔记本电脑,3400,HP公司”,当输入的条形码在数据库中已经存在时,显示“条形码不能重复,请重新输入”,输入完毕后将该信息增加到数据库中,并显示“增加成功”,返回子菜单。输入时要对输入的各项做格式的校验,如果输入项的格式不正确,则给出提示信息“你输入的数据格式不正确,请重新输入”。
- 当选择4时,显示“请输入查询的商品名称:”,输入时可以只输入商品的部分信息(即模糊查询),如“电脑”,输入完毕后显示所有查询结果,格式如下:
满足条件的记录总共*条,信息如下:
序号 条形码 商品名称 单价 供应商
=== ===== ======= = === =====
1 ** ****** ** ******
2 ** ****** ** ******
- 选择5时,返回到主菜单
3.4 修改密码
当选择4时,显示“请输入当前用户的原密码:”,若原密码不正确,则提示“原密码输入不正确,请重新输入”,输入正确后,显示“请设置新的密码:”,输入的密码必须满足必要的复杂性,如果不符合要求,则提示“您的密码不符合复杂性要求(密码长度不少于6个字符,至少有一个小写字母,至少有一个大写字母,至少一个数字),请重新输入:”,输入成功后,显示“请输入确认密码:”,若两次输入不一样,则提示“两次输入的密码必须一致,请重新输入确认密码:”,输入成功后,修改数据库中的用户表,并提示“您已成功修改密码,请谨记”,返回主界面。用户密码在数据库中存放时不要明文的方式进行存放,可以采用某种加密算法(如MD5加密)存放加密后的密文。
3.5 数据导出
当选择5时,显示如下子菜单:
===****超市销售信息导出====
1、导出到excel文件
2、导出到文本文件
3、返回主菜单
请选择(1-3):
- 当选择1时,将所有的销售数据导出到saleDetailyyyymmdd.xls文件中(yyyymmdd表示当前日期,如系统日期为“2014-12-3”,则导出文件名为saleDetail20141203.xls),导出的时候,还可以为xls文件设置常用的格式,如增加边框、为标题设置背景色,字体、加粗等,成功后显示“成功导出*条销售数据到excel文件中”,返回子菜单
- 当选择2时,将所有的销售数据导出到saleDetailyyyymmdd.txt文件中(yyyymmdd表示当前日期,如系统日期为“2014-12-3”,则导出文件名为saleDetail20141203.txt),文件的第一行为标题,成功后显示“成功导出*条销售数据到文本文件中”,返回子菜单
- 选择3时,返回到主菜单
3.6 退出
选择6时,显示“您确认退出系统吗(y/n)”,输入y,显示“欢迎下次继续使用”,退出程序,输入“n”,返回主菜单