资源描述
信息系统分析与设计课程设计
课程设计题目
姓 名
学 号
2012
专 业
信息管理与信息系统
指导教师
2013年6月24日
14
目录
1.系统规划 1
2.系统分析 1
2.1系统主要业务分析 1
2.2系统数据流分析 2
2.3数据字典 4
2.4数据加工描述 4
3.系统设计 5
3.1 系统功能分析 5
3.2 信息处理分析 6
3.3数据库设计 6
3.4代码设计 7
3.5面向对象建模工具UML 8
3.6人机界面设计 9
4.系统实施 11
4.1程序处理流程图 11
4.2主要算法源程序 11
4.3模拟运行数据 14
5.总结 15
1.系统规划
随着超市形态的高速发展,其经营管理也变得愈加复杂,日常所需要处理的数据量也逐渐增大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。而依靠现代化的计算机信息处理技术来管理超市,能节省了大量的人力、物力,改善了员工的工作条件,减轻了劳动强度,并且能够快速反映出商品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。基于本学期所学知识,本系统拟定采用B/S架构体系,应用面向对象的开发技术予以实现。
本系统的具体实现:基于Microsoft Visual Studio 2008开发平台,采用ASP.NET开发技术,以SQL Server 2008作为后台数据库。
2.系统分析
以下为本系统分析阶段的相关描述:
2.1系统主要业务分析
(1)进货业务
进货管理是企业生产经营活动中及其重要的一环,它关系到产品质量能否得到保证,生产是否能够顺利进行,采购成本能否得到有效控制等问题。下面是进货业务程序的主要内容:超市根据自身的资金条件和销售状况,综合分析市场规律,拟定采购计划表。
(2)库存业务
库存管理是指在上产经营中为销售和耗用而存储的各种资产。企业存货不当都会增加不必要的费用:存货过多将导致物资的积压、存储费用增加、流动资金周转不利,并且过量的库存会掩盖管理不善的问题。存货不足则影响企业的正常销售活动。因此,需科学合理地确定某库存物资的库存控制参数。如:最佳订货批量、最大库存量、最佳缺货量、最佳订购周期等,进行严格的库存控制工作。
(3)销售业务
销售对一个企业的生存和发展是至关重要的,对外关系到企业产品、服务和企业形象等多方面因素,对内涉及到销售、库存、财务等信息。此外信息化的高速发展为企业的销售工作提出了新的挑战,封闭意味着落后,超市要抓住时机,引入现代化的销售管理模式,实施企业的信息化、智能化销售管理。
系统业务流程图如下:
图2.1-1超市业务流程图
2.2系统数据流分析
图2.2-1关联图
图2.2-2顶层图
图2.2-3第一层图
2.3数据字典
数据流条目
(1)F1销售信息=销售单号+商品编号+销售数量+销售日期
(2)F3库存信息=商品编号+库存数量
文件条目
(1)文件名:D1销售清单
组成:{销售单号+商品编号+销售数量+销售日期}
组织:按销售单编号递增排列
(2)文件名:D3库存清单
组成:{商品编号+库存数量}
组织:按商品编号递增排列
(3)文件名:商品清单
组成:{商品编号+名称+计量单位+类别+单价+备注}
组织:按商品编号递增排列
2.4数据加工描述
(1)加工名:1销售更新
加工逻辑:根据销售信息更细销售清单
输入流:前台销售信息,库存信息
输出流:更新销售清单/库存清单
(2)加工名:3库存更新
根据进货信息和销售信息更新库存信息
输入流:进货信息,销售信息
输出流:更新库存数据
3.系统设计
3.1 系统功能分析
本系统采用自顶向下方法开发,其功能模块主要有如下几个部分:进货管理模块、库存管理模块、销售管理模块、员工管理模块和系统模块。我主要的任务就是分析
具体的功能描述如下:
库存管理:对采购来的产品进行企业内部编码入库,产品分类等活动,同时能够根据销售清单进行出货管理,以及库存统计。
销售管理:提供一般的销售管理,能够进行销售明细查询和打印销售报表。
图3-1功能分析图
3.2 信息处理分析
图3-2系统信息处理流程图
3.3数据库设计
3.3.1 E-R模型
超市管理系统数据库E-R模型,如图所示:
3.3.2数据库逻辑结构设计
结合以上E-R图,可以导出各个关系,即逻辑结构设计。如下:
用户表:帐号、密码、权限;
商品表:商品编号、名称、计量单位、类别、单价、备注;
销售表:商品编号、销售数量、销售日期;
库存表:商品编号、库存数量;
3.3.3数据库物理结构设计
(1) 用户清单(Users)
中文字段名
英文字段名
字段类型
长度
主键/外键
字段值约束
帐号
UserID
char
7
P/F
NOT NULL
密码
passWord
char
6
NOT NULL
权限
permission
Char
8
NOT NULL
说明:此表存放系统用户信息。
(2) 商品清单(MerchBill)
中文字段名
英文字段名
字段类型
长度
主键/外键
字段值约束
商品编号
merchID
char
7
P
NOT NULL
名称
mName
nvarchar
80
NOT NULL
计量单位
Unit
varchar
4
NOT NULL
类别
kind
nvarchar
8
NULL
单价
price
money
4
NOT NULL
备注
others
ntext
50
NULL
说明:此表存放商品信息。
(3) 销售清单(SaleBill)
中文字段名
英文字段名
字段类型
长度
主键/外键
字段值约束
商品编号
merchID
char
7
P/F
NOT NULL
销售数量
saleNum
int
4
NOT NULL
销售日期
saleDate
datetime
8
NOT NULL
说明:此表存放销售信息。
(4) 库存清单(StoreBill)
中文字段名
英文字段名
字段类型
长度
主键/外键
字段值约束
商品编号
merchID
char
7
P/F
NOT NULL
库存数量
storeNum
int
4
NOT NULL
3.4代码设计
1)“职工清单”中的“职工编号”的代码设计如下:
2)“商品清单”中的“商品编号”的代码设计如下:
前两位商品大类,中间两位主要表示商品的具体型号,后三位是辅码代表商品的产地。
3.5面向对象建模工具UML
1. 销售管理模块
功能:本模块的主要功能是把销售信息写入销售清单,同时对库存清单进行更新,以备用户将来对库存信息进行查询和打印,此外还可以对销售信息进行查询和盘点功能。
销售信息查询:根据商品销售情况,按需要对销售情况进行查询。在该查询模块中,可以按照商品的编号、销售日期等多种方式进行商品销售信息查询。
(1)销售模块的用例图,如图所示:
(2)销售管理模块的活动图,如图所示:
2. 库存管理模块
功能:本模块的主要功能是商品信息的查询和更新,库存信息的查询和更新。
输入项、输出项:本模块的数据输入项主要是商品编号。
(1)库存管理模块的用例图,如图所示:
(2)库存管理模块活动图,如图所示:
3.6人机界面设计
3.6.1登陆界面
3.6.2前台收银界面
3.6.3后台管理
4.系统实施
4.1程序处理流程图
4.2主要算法源程序
4.2.1配置数据源
<connectionStrings>
<add name="ConnString" connectionString="Data Source=localhost;initial catalog=supermarket;Integrated Security=sspi"
providerName="System.Data.SqlClient" />
</connectionStrings>
4.2.2登录页面
protected void LinkButton1_Click(object sender, EventArgs e)
{
string strConn = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化
Conn.Open();//打开连接
string strsql = "select * from Users where USERID='" + TextID.Text + "' and PASSWORD = '" + TextPwd.Text + "'";
SqlDataAdapter Cmd = new SqlDataAdapter(strsql, Conn);//定义并初始化数据适配器
DataSet ds = new DataSet();
Cmd.Fill(ds); //将数据适配器中的数据填充到数据集ds中
Conn.Close();//关闭连接
if (ds.Tables[0].Rows.Count == 0)
{
Response.Write("<script>alert(\"用户名不存在或密码错误,请确认后再登录!\");</script>");
return;
}
DataRow Myrow = ds.Tables[0].Rows[0];
if (Myrow[3].ToString().Trim() == "管理员")
{
Session["pass"] = "ok";
Session["Uname"] = Myrow[1].ToString().Trim();
Session["Level"] = Myrow[3].ToString().Trim();
Response.Redirect("admin_default.aspx?name=" + Myrow[1].ToString().Trim());
}
else
{
Session["pass"] = "ok";
Session["Uname"] = Myrow[1].ToString().Trim();
Response.Redirect("settleaccounts.aspx?name=" + Myrow[1].ToString().Trim());
}
}
4.2.3销售页面
private void fill() //GW数据源更新函数
{
DataSet myds = new DataSet();
myds = (DataSet)Session["myds"];
Gw.DataSource = myds.Tables["sell"] ;
Gw.DataBind();
}
protected void addsell_Click(object sender, EventArgs e)
{
time.Text = System.DateTime.Now.ToString();
try
{
string strConn = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化
Conn.Open();//打开连接
string information = "select mName from Merchans where merchid like '" + sname.Text.Trim() + "'";
string sprice = "select Price from Merchans where merchid like '" + sname.Text.Trim() + "'";
string kucun = "select storenum from Storebill where merchId like '" + sname.Text.Trim() + "'";
kc -= i ;
string skc = kc.ToString();
DataSet myds = new DataSet();
myds = (DataSet)Session["myds"];
DataRow row = myds.Tables["sell"].NewRow();
row["价格"] = s1;
row["商品"] = sname.Text;
row["名称"] = s;
row["数量"] = amount.Text;
myds.Tables["sell"].Rows.Add(row);
Session["myds"] = myds;
fill();
string ms = "INSERT INTO salebill(merchid,salenum,saledate) VALUES ('" + sname.Text + "','" + amount.Text + "','" + time .Text.Trim() + "')";
SqlCommand Comm = new SqlCommand(ms, Conn);
Comm.ExecuteNonQuery();
string kuc2 = "UPDATE Storebill SET storenum='"+skc +"' WHERE merchId like '" + sname.Text.Trim() + "'";
SqlCommand kuc3 = new SqlCommand(kuc2, Conn);
kuc3.ExecuteNonQuery();
Conn.Close();
amount.Text = "";
time.Text = System.DateTime.Now.ToShortDateString();
sname.Focus();
}
catch
{
Response.Write("系统出错,请稍候重新操作!");
}
}
4.2.4商品入库页面
protected void Button1_Click(object sender, EventArgs e)
{
try
{
string strConn = ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;
SqlConnection Conn = new SqlConnection(strConn);//定义新的数据连接控件并初始化
Conn.Open();//打开连接
string sqlstr = "select * from storebill where merchid='" + DropDownList1.Text.Trim()+"'";
SqlDataAdapter Cmd = new SqlDataAdapter(sqlstr, Conn);//定义并初始化数据适配器
SqlCommandBuilder scb = new SqlCommandBuilder(Cmd);
DataSet ds = new DataSet();
Cmd.Fill(ds); //将数据适配器中的数据填充到数据集ds中
if (ds.Tables[0].Rows.Count == 0)
{
string sqlstr1 = "select * from storebill";
Cmd.SelectCommand = new SqlCommand(sqlstr1, Conn);
Cmd.Fill(ds);
DataRow newrow = ds.Tables[0].NewRow();
newrow["merchid"] = DropDownList1.Text.Trim();
newrow["storenum"] = Convert.ToInt32(TextBox2.Text);
ds.Tables[0].Rows.Add(newrow);
Cmd.Update(ds);
}
else
{
string str = "UPDATE Storebill SET storenum=storenum+'" + Convert.ToInt32(TextBox2.Text) + "' WHERE merchId ='" + DropDownList1.Text.Trim() + "'";
SqlCommand kuc = new SqlCommand(str, Conn);
kuc.ExecuteNonQuery();
}
sqlstr = "select merchans.merchid 商品ID,Mname 名称,storenum 数量 from storebill,merchans where merchans.merchid=storebill.merchid";
Cmd.SelectCommand = new SqlCommand(sqlstr, Conn);
DataSet ds1 = new DataSet();
Cmd.Fill(ds1);
Conn.Close();//关闭连接
GridView1.Caption = "<b>商品库存清单</b>";
GridView1.DataSource = ds1.Tables[0];
GridView1.DataBind();
}
catch
{
Response.Write("系统出错,请稍候重新操作!");
}
}
4.3模拟运行数据
用户登录数据:
商品信息数据:
商品库存数据:
5.总结
通过这次课程设计的实践,使我对信息系统的项目开发有了更加深刻的认识,同时,对C#.NET和ASP.NET技术也进行了更细致的学习,更加重要的是我切身感受到了团队合作的力量,在系统开发过程中,每个同学都积极参与,发挥自己所长,遇困难大家一起商量探讨,共享所得成果。
与此同时,还要感谢句全老师这学期对我们的细心教导,带领我们大家一起学习信息系统分析与设计这门课程,相信这对我们以后的工作大有裨益。
展开阅读全文