级计算机软件工程课程设计报告.docx
《级计算机软件工程课程设计报告.docx》由会员分享,可在线阅读,更多相关《级计算机软件工程课程设计报告.docx(59页珍藏版)》请在冰豆网上搜索。
级计算机软件工程课程设计报告
2007级计算机《软件工程》课程设计报告
一、开发计划:
社会的不断发展,科技的不断进步,计算机运用在各个方面。
超市管理系统在发达国家的各类商店超市中普及。
它能够准确记载和查阅超市经营活动的大量数据,帮助超市经营者掌握和分析营销情况,及时做出正确决策,并且有利于超市内部的财务、工资、人员、库存、销售情况等管理,因而大大提高了现代超市的管理水平,从而全面提高经济效益。
上世纪90年代初,我国零售市场迅速扩大,超市的传入给中国商业零售带来了一场革命性的变化。
到90年代后期,超级市场步入大型化,沃尔玛、家乐福、易初莲花等大型卖场纷纷亮相。
它在给购物者带来品种多价格低廉等方便的同时,也带来了在距离、时间、商品、服务等诸多方面的不便。
由此,近来大型超市出现两个显著的转型倾向:
一方面,大型超市将向社区购物中心转型;另一方面,在消费量有限的中小城市,大超市将向小型化方向发展。
小型超市越来越多的出现在我们的生活小区、大学校园和火车站周围。
我国正在积极发展小型超市及社区型超市。
为了促进最终消费在国民经济中的比重为目标,迅速扩大消费品市场的规模,完善其在引导消费、拉动需求、扩大内需中的功能。
中国商务部发布的《全国商品市场体系建设纲要》[16]中提到:
重点发展新型零售业态,改造和调整传统零售业态。
加快发展贴近和方便居民生活的便利店、折扣店和中小型综合超市。
吉林市人民政府制定的《吉林市城市商业网点发展规划纲要》[17](2006~2015年)中指出:
小型超市是开架售货,集中收款,满足社区消费者日常生活需要的零售业态。
规划导向是积极发展居民社区的小超市,方便居民生活,特别是积极发展生鲜食品超市、蔬菜超市,逐步取代社区露天市场。
面对小型超市及社区型超市的发展趋势,需要有一种对日常经营活动进行全面控制和管理,能够降低成本,增强市场竞争力的管理信息系统。
同大型超市一样,在日常管理中,小型超市时时刻刻需要对商品各种信息进行统计分析,每天的报表、月报表、年报表、员工信息的管理等。
但又有其自身的特点:
⑴商品要求一般齐全,进出货关系较为简单。
⑵从软件角度看,数据较少,对存储和速度要求不高。
⑶员工人数种类不多。
⑷管理人员不多且大多数不是超市管理业务人员。
⑸业务分工不是很详细明确。
正是由于以上特点,小型超市的管理系统,不需要大型的数据库系统。
只需要一个操作方便,功能实用,能同时满足日常进销存信息及人事信息管理及需求的系统。
而现在大型超市正在使用的管理系统功能过于强大,操作十分繁琐,费用相当昂贵,不适合小型超市使用。
对此,我们专门针对其特点,希望开发出一款能对超市进行综合管理,稳定性安全性好,界面友好,操作更为简单,更加人性化的信息管理系统。
二、需求分析
1、需求定义说明书
对于小型超市,其需求主要有:
⑴超市商品信息的维护
有新商品入库时,系统允许管理员添加新商品的记录;当商品出售或产品过期需要清除时,管理员可以删除产品信息。
当记录有误时,管理员可以手动修改数据表中的记录。
⑵库存商品信息的查询
信息查询是超市管理系统的重要组成部分。
用户可以按照商品编号和商品名称等查询条件浏览仓库中的商品信息。
⑶商品的进货、销售
当有新商品需要入库、出售时,管理员可以直接进行入库;出售时,程序自动修改库存商品的信息;顾客要求退货的操作;打折调价设置。
⑷人事的管理:
包括新聘请员工的信息录入,离职员工的信息删除,员工信息变化时可方便的更改其信息,查询员工信息;同样的可以管理供货商信息的功能。
⑸财务的管理:
包括销售清单的查询与统计,销售总额及利润的统计等。
⑹其它方面:
使用方便,界面友好,操作简单、技术水平要求低、容易上手,实用。
通过以上的分析,本系统制定了相应的模块,每个模块来负责所对应的功能。
同时,整个系统的开发过程严格遵循软件工程的要求,做到模块化分析。
实现记录仓库存货、销售以及进货情况,通过该系统了解超市进货渠道、商品单价、数量,库存商品种类数量,所售商品种类、价格、数量,以便管理员根据以上信息做出经营管理决策,以及方便查询,还可通过统计数据,提示用户做出相应决策
2.系统功能需求
1.模块功能
登录模块:
为用户提供登录时的身份验证,并启动系统功能界面调用模块。
功能界面调用模块:
它是进入各功能模块的窗口,负责调用个功能模块。
密码修改模块:
其主要功能是用户登录界面以后,选择修改密码项,便可对本人的登录信息进行修改,但不可对别人的登录信息进行修改。
用户管理模块:
增加、删除、修改用户信息,以及权限分配。
仓库管理模块:
记录仓库基础信息,可进行增加、删除、修改信息表。
产品信息管理模块:
记录产品的相关信息,可进行增加、删除、修改信息表。
系统主要功能:
⑴该管理系统将对库存商品进行资料管理和统计,对产品的进货单和产品的销售单进行录入管理和统计。
⑵该管理系统将根据用户的需要,对进货、销售、库存情况进行查询。
⑶该管理系统将为用户提供账号管理工具,以便用户对账号进行管理,具体为添加用户、删除用户、修改用户密码。
⑷该管理系统提供企业人员管理,能够实现对企业员工的分类管理,新员工的加入以及员工删除,修改本人信息等功能。
⑸该管理系统提供给查询的平台。
⑹该管理系统还能就一个星期、一个月、一个季度或一年等一段时间内的销售量进行统计,以方面管理者制定出下一阶段的进销存计划。
2.数据流图
小型超市管理系统顶层数据流图如下:
顶层数据流图
0层数据流图
超市管理系统0层编号1的1层数据流图
超市管理系统0层编号3的1层数据流图
三、概要设计(系统设计):
1、系统功能模块结构图
2、数据库概要设计(E-R图)
3.数据描述
3.1静态数据
下面列出了六个表的具体静态数据:
1)用户信息表
此表存放用户信息
字段名
数据类型
长度
id
Int
4
主键
username
Varchar
50
用户名
userpwd
Varchar
50
用户密码
AddTime
datetime
8
最后修改时间
email
varchar
30
用户邮箱地址
2)商品信息表
此表存放入库的商品信息
字段名
数据类型
长度
c_id
Int
4
主键
CommodityName
varchar
100
商品名
ShortName
varchar
50
商品简称
ProducePlace
varchar
100
产地
Unit
varchar
20
计算单位
Specs
varchar
50
规格
PassNumber
varchar
50
批号
PassList
varchar
50
批准文号
CompanyId
int
4
公司号(外码)
Remark
varchar
备注
AddTime
Datetime
8
最后修改时间
3)员工档案表
此表存放超市员工的信息
字段名
数据类型
长度
s_id
int
4
主键
s_name
varchar
50
姓名
s_sex
char
10
性别
s_adress
varchar
100
住址
s_tel
varchar
30
联系电话
s_email
varchar
50
邮箱地址
4)超市供应商信息表
字段名
数据类型
长度
Cp_id
Int
4
主键
CompanyName
Varchar
50
供应商名
CompanyShort
Varchar
50
简称
CompanyAddress
Varchar
50
公司地址
Postalcode
Varchar
50
邮政编码
Tel
Varchar
50
联系电话
Fax
Varchar
50
传真
Linkman
Varchar
50
联系人
Email
Varchar
50
邮箱地址
Bank
Varchar
50
开户银行
BandAccounts
Varchar
50
银行账号
AddTime
varchar
50
最后修改时间
5)超市进货销售信息表
字段名
数据类型
长度
id
int
4
主键
CommodityId
int
4
商品号(外码)
CompanyId
int
4
供应商号(外码)
Number
int
4
商品数量
Pirce
int
4
商品单价
StockDate
datetime
8
进货日期
Payment
int
4
应付金额
FactPayment
int
4
实付金额
NotPayment
int
4
未付金额
ManageMan
varchar
20
经手员工
Username
varchar
50
操作人员
AddTime
varchar
20
最后修改时间
四、详细设计
根据功能模块用程序流程图进行详细设计和各模块详细设计说明书如下:
4.1系统登录模块
功能:
本模块的主要功能是对用户身份进行,,验证只有系统的合法用户才能进入系统。
其窗体如下图:
在进行系统登录过程中,登录模块将调用数据库里的用户清单,并对账号和密码进行验证,只有输入了正确的账号和密码后,系统登录才会成功。
并在输入了错误的或者是不存在的账户和密码时,系统会给出出错信息提示,指明登录过程中的错误输入或者错误操作,以便用户进行正确的登录。
系统登录模块流程图:
4.2进货管理模块
功能:
该模块主要是实现进行进货信息查询功能。
进货信息查询:
该模块为超市提供整个超市的进货情况查询,也可以进行进货信息的明细查询,并以进货报表形式打印出来。
输入项、输出项:
该模块的输入项为超市的进货单,其中包括进货单的编号,商品的编号,供货商号,进货价,数量,金额进货日期,备注。
进货管理模块流程图:
4.3销售管理模块
功能:
本模块的主要功能是把销售信息写入销售清单,同时对库存清单进行更新,以备用户将来对库存信息进行查询和打印,此外还可以对销售信息进行查询和盘点功能。
销售信息查询:
根据商品销售情况,按需要对销售情况进行查询。
在该查询模块中,可以按照商品的编号、销售日期等多种方式进行商品销售信息查询。
销售信息盘点:
可以按照需要对在一定时期内的销售情况进行盘点。
输入项、输出项:
本模块的数据输入项主要是商品的销售单号和商品编号。
其中还包括销售数量和销售日期。
销售管理模块流程图:
4.4库存管理模块
功能:
本模块的主要功能是商品信息的查询和更新,库存信息的查询和更新。
查询商品信息:
主要功能查询商品的明细信息,和它的库存信息。
添加商品信息:
主要功能添加新进的商品。
修改商品信息:
主要功能是修改商品的信息,包括他的库存数量。
删除商品信息:
主要功能是删除不再销售的商品信息。
输入项、输出项:
本模块的数据输入项主要是商品编号。
库存管理模块流程图:
4.5员工管理模块
在系统开发中,为解决超市人员流动问题,在系统中增添了员工管理子模块,用来对超市的人员进行信息化管理,以此来提高员工的办事效率,节约人力资源。
新员工录入:
在超市招进新员工时,对其进行基本信息的存储,对员工信息进行基本的了解。
员工信息维护:
当员工信息发生变化,或者是员工离职,换岗对相关信息发生变化时,利用此子模块对其进行信息变更。
职工管理模块流程图:
4.6供货商管理模块
在超市引进商品时,首先查询已有的供货商信息,然后按照供货商信息采购商品;或者从新的供货商那里引进新的商品,此时,要把新供货商信息添加到供货商清单中。
有时,不再从某一供货商那里采购商品时,此时要把供货商信息删掉。
当供货商信息有变化时,就需要对供货商信息进行维护等。
供货商信息管理模块流程图:
五、界面设计及主要代码
5.1登陆界面
当单击确定按钮时,连接数据库,确定输入的帐号和密码是否匹配,跳转到主页面,若不匹配,则弹出“用户名或者密码错误,请重新登陆”。
如图5-1所示
图5-1
具体代码如下:
protectedvoidButton1_Click(objectsender,EventArgse)
{
stringusername=Request["username"];
stringuserpwd=Request["userpwd"];
stockClasssc=newstockClass();
//判断用户名、密码中是否含有非法字符及验证码的正确性
if(sc.validate(username))
{
Response.Write("");
return;
}
if(sc.validate(userpwd))
{
Response.Write("");
return;
}
if(this.ValidateNumber.Text!
=this.Label1.Text)
{
Response.Write("");
return;
}
////创建连接数据库对象,并读取Web.config文件中连接数据库的字符串
SqlConnectionstrcon=newSqlConnection(ConfigurationManager.AppSettings["strcon"]);
strcon.Open();
SqlCommandscd=newSqlCommand("selectcount(*)fromtb_Userwhereusername='"+username+"'anduserpwd='"+userpwd+"'",strcon);
intcount=Convert.ToInt32(scd.ExecuteScalar());
strcon.Close();
//判断是否查询到用户登录时输入的用户名和密码
if(count>0)
{
Session["username"]=username;
Response.Redirect("Default.aspx");
}
else
{
Response.Write("");
return;
}
}
5.2主界面
图5-2主界面Default.aspx
具体代码如下:
publicpartialclass_Default:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
if(Convert.ToString(Session["username"])=="")
{
Response.Write("alert('请登录');location='login.aspx'");
}
this.Label1.Text=Convert.ToString(Session["username"]);
this.Label2.Text=Convert.ToString(DateTime.Today.ToShortDateString());
stringDt,Week="";
Dt=DateTime.Now.DayOfWeek.ToString();
switch(Dt)
{
case"Monday":
Week="星期一";
break;
case"Tuesday":
Week="星期二";
break;
case"Wednesday":
Week="星期三";
break;
case"Thursday":
Week="星期四";
break;
case"Friday":
Week="星期五";
break;
case"Saturday":
Week="星期六";
break;
case"Sunday":
Week="星期日";
break;
}
Label3.Text=Week;
}
5.3用户管理
具体代码如下:
publicpartialclassBedrock_Commodity_manage:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
//判定用户是否登录
if(Convert.ToString(Session["username"])=="")
{
Response.Write("alert('请登录');location='../login.aspx'");
return;
}
//调用bind()函数显示数据
if(!
IsPostBack)
{
this.bind();
}
intx=0;
//循环获取GridView控件中的行
for(inti=0;i<=GridView1.Rows.Count-1;i++)
{
//查找GridView控件中的行
CheckBoxcheck=(CheckBox)GridView1.Rows[i].FindControl("checkBox2");
if(check.Checked==true)
{
//获取选中行的数目
x++;
}
}
//当GridView控件中有被选中的行
if(x!
=0)
{
this.del.Attributes.Add("onClick","javascript:
returnconfirm('确定要删除吗?
');");
}
}
publicvoidbind()
{
//创建数据库连接对象
SqlConnectionstrcon=newSqlConnection(System.Configuration.ConfigurationManager.AppSettings["strcon"]);
//打开数据库连接
strcon.Open();
//创建适配器及数据集对象
SqlDataAdaptersda=newSqlDataAdapter("select*fromtb_Userorderbyiddesc",strcon);
DataSetds=newDataSet();
//填充数据集合
sda.Fill(ds,"tb_User");
//设定GridView控件的数据源及键字段
GridView1.DataSource=ds.Tables["tb_User"];
GridView1.DataKeyNames=newstring[]{"id"};
//绑定数据及关闭数据库连接
GridView1.DataBind();
strcon.Close();
}
protectedvoidGridView1_PageIndexChanging(objectsender,GridViewPageEventArgse)
{
GridView1.PageIndex=e.NewPageIndex;
this.bind();
}
protectedvoidGridView1_RowEditing(objectsender,GridViewEditEventArgse)
{
stringid=GridView1.DataKeys[e.NewEditIndex].Value.ToString();
Response.Write("");
Response.Write("");
}
protectedvoiddel_Click(objectsender,EventArgse)
{
SqlConnectionstrcon=newSqlConnection(System.Configuration.ConfigurationManager.AppSettings["strcon"]);
strcon.Open();
for(inti=0;i<=GridView1.Rows.Count-1;i++)
{
stringid=GridView1.DataKeys[i].Value.ToString();
//应用for循环获取GridView控件中的所有行
CheckBoxcheck=(CheckBox)GridView1.Rows[i].FindControl("checkBox2");
//查找GridView中checkBox控件
if(check.Checked==true)
{
SqlCommandscd=newSqlCommand("deletefromtb_Userwhereid="+id,strcon);
//执行删除
scd.ExecuteNonQuery();
}
}
strcon.Close();
this.bind();
}
protectedvoidCheckBox1_CheckedChanged(objectsender,EventArgse)
{
//循环GridView控件的所有行
foreach(GridViewRowgrinGridView1.Rows)
{
//查找GridView控件中的checkBox2控件
CheckBoxcbox=(CheckBox)gr.FindControl("checkBox2");
//如果没有被选中
if(cbox.Checked