超市管理系统设计与实现本科毕业设计.docx
《超市管理系统设计与实现本科毕业设计.docx》由会员分享,可在线阅读,更多相关《超市管理系统设计与实现本科毕业设计.docx(28页珍藏版)》请在冰豆网上搜索。
超市管理系统设计与实现本科毕业设计
软件课程设计
姓名:
学号:
班级:
电脑科学与技术
设计题目:
超市收费系统的设计与实现
指导教师:
摘要
随着现代科学技术的迅猛发展,电脑技术已渗透到各个领域,成为各行业必不可少的工具。
在当今激烈的市场竞争中,让顾客享受既实惠又快捷的购物服务是商战中制胜的一大要素。
改革开放的今天,各种大型超市林立,超市已成为消费者日常活动的主要场所。
而超市商品也非常之多,建立一套方便快捷的超市收费系统是企业必然要解决的一个问题。
系统采用的编程工具是VS2013版本与SQL作为数据库。
系统分为前台系统和后台系统,其中,前台系统提供了很方便的商品销售收费功能,这其中包括会员卡用户可享受九折折优惠。
而后台系统则提供了一些商品管理功能,如采购入库,库存盘点,出库明细,职工管理等模块。
本文主要介绍超市收费系统的运行环境、功能作用、设计的方案等各方面的内容。
论文共分为五大部分。
第一部分简要表达了研究内容。
第二,三部分首先进行问题的分析,其次进行构建,然后进行总体设计和详细设计。
第四部分为系统实现,主要分为前台模块和后台模块。
第五部分为系统测试,主要包括前台和后台的测试。
关键词:
收费;销售;超市;
1引言
1.1课题研究内容
综合运用以前所学的专业知识,设计开发一个超市收费系统软件,本设计要求实现功能——采购入库,出入库明细,条形码数据的输入,会员卡号的输入,进行货品销售。
具体包括以下内容:
〔1〕在设计与开发中,主要放在简单地进行货品销售,会员卡打折(统一九折)。
〔2〕在设计与开发中,既探讨前台的销售,又能实现后台的采购入库,会员卡设置,职工管理,出入明细等功能。
〔其中前台只负责输入条码,输入会员卡号,实现收费。
其他的所有功能和设置均放在后台进行〕
实现超市货品的入库,会员卡用户资料的录入,以及进行货品销售的收费,而前台的收费分为会员卡用户和非会员卡用户两种收费,对于有卡用户,在输入卡号后,可实现商品价格按九折折价格进行收费,假设要取消销售某商品,则直接点删除,总价格也会相应的扣除.
2系统需求分析
数据库应用系统是以数据库为基础的信息管理系统,它一般包含两个方面内容,一个数据库设计,二是程序设计。
在建立数据库应用系统之前,一般应先进行系统的需求分析,了解用户对系统的要求,然后进行系统的总体设计,最后编写程序代码和调试程序。
数据库应用系统的开发过程,需求分析包括了对数据本身的需求分析和对功能的需求分析。
两个分析的结果将分别作为数据库设计和程序设计的依据。
实际上在设计数据库应用系统时,这两个需求分析是紧密相关的,不管是数据库设计,还是程序设计都需要考虑这两个方面的因素。
2.1系统模块构建
2
系统整体结构功能模块图如图2-1:
根据系统整体结构功能模块分析,系统分为前台和后台两部分;前台主要提供给收银员使用,进行销售收费;后台提供给管理员使用,主要执行商品信息管理、出入库明细管理、销售数据管理、职工管理以及会员卡用户管理等工作。
、后台功能模块
本系统是多用户系统,用户可分为管理员和收银员两类,登录或者未登录情况下判断当前使用人员的权限,防止安全性问题。
收银员登录系统,系统自动清空销售临时数据,进入系统,对于非会员用户收银员首先录入商品编号,然后输入数量,而对于会员卡用户,收银员选择会员类型,输入会员卡号,系统自动将折扣转为90%,然后系统自动汇总金额,同时列表显示销售商品的流水数据,收银员可以删除需要退掉的商品,然后点击结账,完成交易过程。
前台功能模块图如图
图2-2前台功能模块图
后台管理员登录系统以后,可以对商品单位进行添加、查询,可以对会员资料进行添加、查询操作,可以进行采购入库操作,进行库存盘点操作,进行进货统计操作,进行出库明细查询操作,和退出系统操作。
后台功能模块如图3-3所示:
3数据库设计
3.1E-R图和关系图
供给商,商品关系模型E-R图如图3-1所示:
图3-1供给商,商品关系模型E-R图
各个表之间的关系图如图3-2:
图3-2 各个表之间的关系图
3.2数据库表设计
由数据模型利用SQL进行数据库的详细设计,其基本表的设计如下:
1.供给商信息表
3-1:
表3-1供给商信息表
字段名称
数据类型
说明
Supplyid
Char(10)
供给商编号
Supplyname
Char(10)
供给商名称
Supplytel
Char(20)
供给商
2.商品信息表
商品信息表:
存储商品3-2:
表3-2商品信息表
字段名称
数据类型
说明
Foodid
Char(10)
商品编号
Foodname
Char(10)
商品名称
Foodnum
int
商品现有量
Foodsum
int
商品总量
Foodvalue
Int
商品价格
3-3:
表3-3商品进货表
字段名称
数据类型
说明
Fooid
Char(10)
商品编号
Supplyid
Char(10)
提供商编号
Num
int
进货数量
time
Char(10)
进货时间
纪录表
销售纪录表:
存储销售情况的清单.如表3-4:
表3-4销售纪录表
字段名称
数据类型
说明
Userzh
Char(10)
收银员账号
Username
Char(10)
收银员
Fooid
Char(10)
商品编号
Foodname
Char(10)
商品
Num
Char(10)
数量
Time
Char(50)
销售日期
5.管理员表
管理员表:
管理员的基本信息.如表3-5:
表3-5管理员表
字段名称
数据类型
说明
Mainid
Char(10)
管理员账号
Password
Char(10)
管理员密码
Manname
Char(10)
管理员
Mantel
Char(50)
联系方式
6.收银员表
收银员表:
收银员的基本信息.如表3-6:
表3-6库存表
字段名称
数据类型
说明
Userid
Char(10)
账号
Password
Char(10)
密码
Tel
Char(50)
Name
Char(10)
7.销售临时纪录表
销售临时纪录表:
收银员出售货物时临时纪录.如表3-7:
表3-7计量单位表
字段名称
数据类型
说明
物品编号
Char(10)
物品名称
Char(10)
物品数量
Char(10)
售价
int
小计
int
总价格
时间
Char(50)
8.会员资料表
会员资料表,存储有卡会员的资料,以便结账时给予折扣.如表4-8:
表4-8会员资料表
字段名称
数据类型
说明
Vipid
Char(10)
会员编号
Vipname
Char(10)
会员
4系统实现
4.1前台模块
前台程序流程图如图4-1所示:
图4-1前台程序流程图
登录模块:
功能:
本模块的主要功能是对用户身份进行验证,只有系统的合法用户才能进入系统。
其窗体如图4-2:
图4-2用户登录界面
在进行系统登录过程中,登录模块将调用数据库里的收银员表,并对用户名和密码进行验证,只有输入了正确的用户名和密码后,系统登录才会成功。
并在输入了错误的或者是不存在的用户名和密码时,系统会给出出错信息提示.
其提示错误输入或错误操作如图4-3所示:
图4-3登录错误界面
主要就是在点击登陆后判断用户名账号和密码是否为空或者是否匹配,匹配成功即可进入收银员销售界面,在密码错误或者为空时提示错误信息
stringstr="server=NO1;database=SuperMarket;integratedsecurity=true";
SqlConnectioncon=newSqlConnection(str);
();
stringuse=();
stringmima=();
SqlDataAdapterad=newSqlDataAdapter("select*fromTable_userwhereuserid='"+use+"'andpassword='"+mima+"'",con);
DataSetset=newDataSet();
(set,"s1");
if(["s1"]!
=0)
{
flag=0;
=use;
Form3f=newForm3();
();
();
}
前台模块:
功能:
本模块的主要功能是把销售信息写入销售表,同时对库存数据进行更新,以备用户将来对销售信息和库存信息进行查询。
商品销售:
将销售信息录入thing表中临时存放,可以进行添加销售信息和删除,并在结账的时候讲销售信息导入数据库jilu表中
图4-4收银员销售界面
="updatefoodsetfoodnum='"+sheng+"'wherefoodid='"+bh+"'";
=con;
();
/*将刚刚购买的东西插入进数据库表thing中*/
stringt=();
="insertintothing(物品编号,物品名称,物品数量,售价,小计,时间)values('"+bh+"','"+name+"','"+num+"','"+money+"','"+num*money+"','"+t+"')";
=con;
();
sum_money+=num*money;
=();
=();
/*对dataGridView1绑定数据源*/
SqlDataAdapterda2=newSqlDataAdapter("select*fromthing",con);
(set,"thing");
=["thing"];
="";
="";
在添加物品时如果有错误,单击一行点击删除即可删除该条记录,并且金额也会相应更改
图4-5货物不足
intshu(["thing9"].Rows[0]["foodnum"].ToString());
intmoney=(["thing9"].Rows[0]["foodvalue"].ToString());
stringname=["thing9"].Rows[0]["foodname"].ToString();
if(shu{
("库存量不够,近期会进货!
");
="";
="";
return;
}
物品库存量不足时也会提出相应的窗口
购买的物品删除功能
图4-6删除商品
删除一条记录联通数据的出售记录一起删除,并且把商品表中减去的数量恢复
SqlCommandcmd=newSqlCommand("updatefoodsetfoodnum='"+(kucun+num)+"'wherefoodid='"+bh+"'",con);
();
="deletefromthingwhere物品编号='"+bh+"'and时间='"+tim+"'";
=con;
();
SqlDataAdapterad2=newSqlDataAdapter("select*fromthing",con);
(set,"th");
=["th"];
="deletefromjiluwherefoodid='"+bh+"'andtime='"+tim+"'";
=con;
();
会员结账时为实收金额的90%,
图4-7结账
结账时要清空thing表〔临时信息表〕和dataGridView1的数据
SqlCommandcmd1=newSqlCommand("deletefromthing",con);
();
();
SqlDataAdapterad=newSqlDataAdapter("select*fromthing",con);
DataSetset=newDataSet();
(set,"nu");
=["nu"];
();
sum_money=0;
后台模块
后台程序流程图如图4-8所示:
图4-8后台程序流程图
管理员登录后进入主该页面,跟收银员一样从数据库中验证是否匹配,成功就进入下面的界面
图4-9管理员登录界面
主要有商品库存的查看,交易记录的查询,职工管理,进货记录和管理以及会员的注册
图4-10商品库存界面
图4-11交易记录界面
图4-12进货记录界面
图4-13职工信息界面
主要就是dataGridView绑定数据库中的数据源来查看记录
SqlDataAdapterad=newSqlDataAdapter("select*fromTable_managerwheremanid='"+c.man+"'",con);
DataSetset=newDataSet();
(set,"fz");
stringname=["fz"].Rows[0]["manname"].ToString();
="欢送您:
"+name;
SqlDataAdapterfoo=newSqlDataAdapter("select*fromfoodorderbyfoodidasc",con);
(set,"fo");
=["fo"];
SqlDataAdapterjl=newSqlDataAdapter("select*fromjiluorderbytimedesc",con);
(set,"j");
=["j"];
SqlDataAdapteruse=newSqlDataAdapter("select*fromTable_user",con);
(set,"us");
=["us"];
SqlDataAdaptersup=newSqlDataAdapter("selectfood.FoodId,FoodName,supply.SupplyId,supplyname,num,Supplytel,timefromsupply,gongying,foodwherefood.FoodId=gongying.FoodIdandsupply.SupplyId=gongying.SupplyIdorderbytimedesc",con);
(set,"su");
=["su"];
对职工管理可以进行添加
图4-14职工增加界面
获取注册时候的信息然后将数据导入数据库
添加成功后
图4-15职工增加成功界面
adda=newadd();
a.Show();
SqlDataAdapterad=newSqlDataAdapter("select*fromTable_userwhereuserid='"+id+"'",con);
DataSetset=newDataSet();
(set,"fz");
if(["fz"]!
=0)
{
("用户名已经存在!
");
="";
="";
="";
="";
}
else
{
SqlCommandcmd=newSqlCommand("insertintoTable_user(userid,password,tel,name)values('"+id+"','"+mima+"','"+tel+"','"+nam+"')",con);
();
Form3f=newForm3();
();
();
}
对职工可以进行解雇,主要就是删除数据库中的元素,让datagridview重新绑定数据库
图4-16职工删除
stringid=[a].Cells[0]();
SqlCommandcmd=newSqlCommand("deletefromTable_userwhereuserid='"+id+"'",con);
();
SqlDataAdapterad=newSqlDataAdapter("select*fromTable_user",con);
DataSetset=newDataSet();
(set,"fz");
=["fz"];
进购货物时可以选择补充库存还是购买新物品
图4-17补充库存
根据商品编号从数据库中找到相应的数据,将商品数量更新
在根据商品编号和商家编号导入新的信息到数据库,并更新商品库存和进货记录
SqlCommandcmd=newSqlCommand("updatefoodsetfoodnum='"+xianyou+"'wherefoodid='"+bh+"'",con);
();
cmd.CommandText="updatefoodsetfoodsum='"+sum+"'wherefoodid='"+bh+"'";
cmd.Connection=con;
();
stringnu=();
string();
="insertintogongying(foodid,supplyid,num,time)values('"+bh+"','"+shangjia+"','"+nu+"','"+nowtime+"')";
=con;
();
("进货成功!
");
图4-18进货成功
进购一种仓库没有的商品时,需要获得该商品的全部信息
图4-19购买新货
物品编号有系统自动生成,进货成功后需要更新商品库存和进货记录
SqlCommandcmd=newSqlCommand("insertintofood(foodid,foodname,foodnum,foodsum,foodvalue)values('"+len+"','"+name+"','"+num+"','"+num+"','"+money+"')",con);
();
SqlDataAdaptersup=newSqlDataAdapter("select*fromsupplywheresupplyname='"+shangjia+"'",con);
(set,"su");
stringsupid=["su"].Rows[0]["supplyid"].ToString();
string();
="insertintogongying(foodid,supplyid,num,time)values('"+len+"','"+supid+"','"+num+"','"+time+"')";
=con;
();
("进货成功!
");
对会员进行操作时,可以看到会员信息和添加会员,这里没有删除会员。
考虑到会员卡统一九折,没有必要去注销,没有添加删除功能
图4-20会员信息
图4-21添加会员
注册成功后让datagridview重新绑定会员数据库,更新会员信息
图4-21添加会员成功
需要判断是否VIP表中有该信息,存在弹出提示窗口,不存在就可以注册会员
SqlDataAdapterad=newSqlDataAdapter("select*fromvipwherevipid='"+id+"'",con);
DataSetset=newDataSet();
(set,"v");
if(["v"]==0)
{
SqlCommandcmd=newSqlCommand("insertintovip(vipid,vipname)values('"+id+"','"+name+"')",con);
();
SqlDataAdaptervi=newSqlDataAdapter("select*fromvip",con);
(set,"vv");
=["vv"];
("注册成功!
");
="";
="";
}
else
{
("该VIP编号已存在!
");
="";
="";
return;
}
5结果测试
测试
收银员输入正确的用户名和密码,如果输入错误密码,或不存在的用户名,则弹出错误提示框。
〔功能运行正常〕
销售主页面的测试:
输入正确的,存在的商品条码,和数量,按enter,系统将从数据库调出数据,显示相应信息在下方导航框内,并在应收金额出现相应价格计算总和.假设输入错误的条码,则会弹出错误提示框。
〔功能运行正常〕
删除一条记录时,数据库内容也会恢复和更新〔功能运行正常〕
假设选中会员结账输入存在的会员卡号,则会弹出欢送的对话框,点OK后,折扣处变为90%,假设输入错误的卡号,则会弹出错误的提示框。
〔功能运行正常〕
采购入库的测试:
假设输入存在的编号,则会自动调出相应商品信息,输入数量后点确定,则成功入库,假设输入错误编号,或不存在的编号,则会弹出错误提示框。
〔功能运行正常〕
添加职工测试
在添加职工的界面,如果有信息填写不完整会弹出错误提示框,如果填入正确信息,则注册成功〔功能正常运行〕
添加会员测试
添加会员时如果会员已经存在或者编号不正常则会弹出错误提示框,如果填入正确信息,则注册成功〔功能正常运行〕
商品查看,交易记录,进货记录测试
都能正确显示数据库中的信息,没有出现错或者遗漏的数据〔功能正常运行〕
总结
在对C#和sql有一定的理解下,完成了超市收费系统的设计与实现,中间过程很坎坷,刚开始也不会连接数据库,我查阅了大量书籍,也在网上查了不少资料,使我有很大的提升。
使用了sql数据库实现了对各个数据的操作,熟悉了C#与数据库连接的过程,对数据库的理解有了更一步的提升。
总之,这次的课程设计对自己能力的提升有很大的帮助
参考文献
[1]刘丽霞.C#范例开发大全.清华大学出版社,
[2]但尧.C#编程指南.清华大学出版社,
[3]王小科,赵会东.C#项目开发案例整合.电子工厂出版社,
[4]吴绍兴,刘岩,C#项目开发案例导航.电子工厂出版社,
[5]王珊,萨师煊,数据库系统概论.高等教育出版社,