XXX 大 学
课 程 设 计
课 程 应用网站课程设计 题 目 仓库管理应用网站系统 院 系 计算机与信息技术学院 专业班级 xxxxxxxxx 学生姓名 xxxxx 学生学号 xxxxxxxxxxx 指导教师 xxxxx 2011年 7月 8日
本科生课程设计
目 录
第1章 系统分析 ..................................................... 1
1.1 开发背景...................................................... 1 1.2 系统需求分析.................................................. 1 1.3 开发环境...................................................... 2 第2章 系统设计 ..................................................... 4
2.1 系统架构...................................................... 4 2.2 系统功能模块.................................................. 5 2.3 系统数据库设计................................................ 7 第3章 系统实现 ..................................................... 9
3.1 管理员主页面.................................................. 9 3.2 库存单据管理................................................. 16 3.3 普通用户页面................................................. 22 第4章 系统测试 .................................................... 24 第5章 结束语 ..................................................... 25 参考文献 .......................................................... 26
I
本科生课程设计 第1章 系统分析
1.1 开发背景
伴随着企业规模的不断扩大,原始的、手工的进行管理工作已经不能适应工业企业发展的现状,更无法满足企业对管理工作的快速、准确的要求。而计算机信息管理技术的迅速发展恰恰解决了这个问题,它使计算机技术与现代的管理技术相互配合,来更加准确、高速的完成工业企业日常的仓库管理工作。使企业能够以最少的人员来完成更多的工作,所以设计出一款界面友好型、经济实用型的软件已经迫在眉睫、刻不容缓。
随着科学技术的不断发展,计算机科学日趋成熟,其强大的功能已为人们深刻认识和体现到,它已进入到社会生活的各个领域当中,并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对小型工程信息进行管理,具有着手工管理所无法比拟的优点,例如:检索快速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高仓库管理人员的工作效率,也是企业的科学化、正规化管理的必由之路,与世界接轨的前提条件。 仓库管理信息系统主要采用VS2005和微软SQL server2005数据库做为开发工具,应用面向对象的程序设计方法,进行开发与设计的。 它是一个典型的信息管理系统。
1.2 系统需求分析
1. 功能需求
系统应提供用户登录识别,对仓库里面的产品进行增、删、改、查询功能。人性化的管理单据,在库存盘点中应用回收站功能,以防用户误操作删除仓库中的信息。当库存中的商品数量低于商品下限或者高于商品上限时,库存会发出警报。当有重要通知时,管理员可以在系统中发布。用户可以修改密码等功能。 2. 性能需求
系统反应时间应在2s内,主存容量应该为256MB,磁盘容量最少应为80GB,
【1】
在安全性方面应该防止SQL注入等。 3. 可靠性可用性需求
在对仓库中的数据进行操作时不能出现系统崩溃情况,当遇到的断电等突发情况,应该有一定的恢复措施,在一个月内在任何一台计算机上该系统不可用的时间不能超过2%。
1
本科生课程设计 4. 出错处理需求
当插入的数据出现错误或重复时系统应该给一个友好的提示,比如弹出一个对话框进行提示等。
流程图:
开始 系统登录 验证 密码或验证码不正确 管理员 普通用户 系统通知 库存查询 库存警报 生成报表 库存盘点 单据管理 修改密码 密码修改 库存查询 库存警报 退出 结束 图1-1 系统流程图
1.3 开发环境
数据库是数据管理的最新技术,是计算机科学的重要分支【2】。今天,信息资源已成为各个部门的重要财富和资源。十年来,数据库管理系统已从专用的应用程序包发展成为通用系统软件。由于数据库具有数据的结构化、可控冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,因此,作为信息
2
本科生课程设计 系统核心和和基础的数据库技术得到了越来越广泛的应用,越来越多的新的应用领域采用数据库技术来存储和处理信息资源,较大的信息系统都是建立在数据库设计之上的。
由于用到的数据表格多,仓库商品信息的变动较大,我们选用SQL Server作为数据库开发,而不用Access,主要是因为Access存放的记录,在实际运用中不适合此系统;而SQL Server是一种常用的关系数据库,能存放和读取大量的数据,管理众多并发的用户,使用方便快捷,故选用SQL Server数据库。
用VB语言进行编码。VB 编程语言是微软在.NET计划中重要的开发语言,它具有语法简单,功能强大,快速应用,语言自由,强大的Web服务器控件,支持跨平台,与XML相融合等。因此选择VB编程语言。
3
本科生课程设计 第2章 系统设计
2.1 系统架构
整个系统分为四个部分,登录控制、管理员、普通用户和主框架。 由于每个用户的权限不同,所以用户进入系统应该进行身份验证。根据不同的身份权限进入不同的操作界面,进行不同的操作,浏览不同的页面。
管理员进入仓库管理系统后,对仓库里面的产品进行增、删、改、查询功能。库存盘点界面对各种操作类型(出/入库、归还、调拨等)的货物数量统计,并且可以防止用户误操作删除仓库中的信息。当库存中的商品数量低于商品下限或者高于商品上限时,库存会发出警报。当有重要通知时,管理员可以在系统中发布等功能。
对于普通用户来说,可以根据需要查询所需要的库存信息,还能查看库存警报有关信息,以及修改本身密码等功能。
本系统是以Windows XP系统为操作平台,在.NET2005环境下编程实现。 系统E-R图:
4
本科生课程设计 操作人 产品名称 产品数量 单据 N 管理 1 回收站 1 管理 1 编号 产品名称 现有库存 库存 N 数量下限 数量上限 管理 N 管理 1 1 仓储人员 1 管理 N 时间 商品制造 商品号 库存产品 名称 价格 时间 1 密码 管理 系统通知 标题 操作类型 操作时间 用户名 N 图2-1 系统E-R图
2.2 系统功能模块
本仓库管理系统分为系统通知、库存查询、库存警报、数据报表、库存盘点、单据管理、修改密码以及注销登录八个模块。
5
本科生课程设计 仓库管理系统 管理员 普通用户 系统管理 库存管理 库存警报 库存查询 密码修改 系统注销 系统通知 修改密码 数据报表 库存查询 库存警报 库存盘点 单据管理
图2-2 系统模块图
用例图【3】:
导出报表 数据报表管理 单据查询 单据管理 库存警报 库存盘点 库存管理 物流角色 用户操作 注销用户
库存查询 修改密码 图 2-3 用例图
6
本科生课程设计
2.3 系统数据库设计
综合以上分析,要实现上面的所有功能模块,本系统共有
6个数据表,分别
是:选择题信息表、判断题信息表、填空题信息表、问答题信息表、试题科目表、管理员信息表、试卷信息表和试卷内容表。
表2-1 库存产品表(GoodList)
字段名 ID GoodNum GoodMingCheng GoodMake GoodCost MakeTime InputTime 数据类型 INT INT VARCHAR VARCHAR VARCHAR DATETIME DATETIME 长度 4 4 50 50 50 8 8 是否主键 是 否 否 否 否 否 否 说明 NOT NULL NOT NULL NOT NULL NOT NULL NULL NULL NOT NULL
表2-2 单据表(GoodPagers)
字段名 ID CaoZuoLeiXing CaoZuoRen ChanPinMingCheng ChanPinShuLiang XvQiuRen CaoZuoShiJian 数据类型 VARCHAR NVARCHAR NVARCHAR NVARCHAR INT NVARCHAR DATETIME 长度 4 50 50 50 4 50 8 是否主键 是 否 否 否 否 否 否 说明 NOT NULL NOT NULL NOT NULL NOT NULL NULL NULL NOT NULL
表2-3 库存表(KuCun)
字段名 ChanPinBianHao ChanPinMingCheng XianYouKuCun ShuLiangShangXian ShuLiangXiaXian SuoShuHuoJia SuoShuCangKu 数据类型 NVARCHAR NVARCHAR INT INT INT INT INT 长度 4 50 4 4 4 4 4 是否主键 是 否 否 否 否 否 否 说明 NOT NULL NOT NULL NOT NULL NOT NULL NULL NULL NOT NULL 7
本科生课程设计 表2-4 库存回收站表(KuCunHuiShouZhan)
字段名 ChanPinBianHao ChanPinMingCheng XianYouKuCun ShuLiangShangXian ShuLiangXiaXian SuoShuHuoJia SuoShuCangKu 数据类型 NVARCHAR NVARCHAR INT INT INT INT INT 长度 4 50 4 4 4 4 4 是否主键 是 否 否 否 否 否 否 说明 NOT NULL NOT NULL NOT NULL NOT NULL NULL NULL NOT NULL
表2-5 系统通知表(SystemTest)
字段名 ID TongZhiBiaoTi FaBuShiJian 数据类型 INT NVARCHAR DATETIME 长度 4 50 8 是否主键 是 否 否 说明 NOT NULL NOT NULL NOT NULL
表2-6 仓储人员表(UserList)
字段名 ID UserName UserType PassWord AlignType Controls GoodType 数据类型 INT VARCHAR INT VARCHAR INT INT NUMBER 长度 4 50 4 50 4 4 50 是否主键 是 否 否 否 否 否 否 说明 NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL NOT NULL
8
本科生课程设计 第3章 系统实现
3.1 管理员主页面
登录页面(Login.aspx),其中包括四个label标签,三个文本域,一个下拉列表框,两个按钮,左侧为从下往上滚动字幕.
图 3-1 登录页面
对于判断登录用户是否合法,用If (dr.Read())来判断【4】。登录按钮单击事件代码如下:
Dim username, password As String
username = TexUserName.Text.ToString().Trim() password = TexPassword.Text.ToString().Trim()
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\")
Dim cmd As New OleDbCommand(\"select * from UserList where UserName='\" & username & \"' and PassWord='\" & password & \"'\", conn) conn.Open()
Dim dr As OleDbDataReader = cmd.ExecuteReader()
If (dr.Read() And TextYanZhengMa.Text = Label1.Text) Then Session(\"UserName\") = username
If DropDLAdmin.SelectedItem.Value = \"管理员\" Then Response.Redirect(\"index.aspx\")
ElseIf DropDLAdmin.SelectedItem.Value = \"普通用户\" Then Response.Redirect(\"indexPuTong.aspx\") End If
ElseIf MsgBox(\"你输入的用户名、密码、验证码有误\") Then End If
conn.Close()
产生随机验证码代码如下:
If Not IsPostBack Then
Dim code As Integer
code = Convert.ToInt16(10000 * Rnd())
9
本科生课程设计 Label1.Text = CStr(code)
End If
管理员主页面(index.aspx),此页面使用了框架集,其中包括Top.aspx页面、Left.aspx页面和Main.aspx页面:
图 3-2 框架的顶部
使用Now()函数来获取当前时间。
Label2.Text = Now()
图 3-3 框架的左部
其中点击注销登录按钮系统会自动跳转到Login.aspx页面。
10
本科生课程设计 点击系统通知系统会自动跳转到XiTongTongZhi.aspx页面:
图 3-4 系统通知
页面加载时代码如下:
If Not Page.IsPostBack Then DataBindGridView()
End If
其中DataBindGridView()子过程代码为:
Sub DataBindGridView()
'建立Connection对象
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\") '建立Command对象
Dim cmd As New OleDbCommand(\"select * from SystemTest \", conn) '建立DataAdapter对象
Dim adp As New OleDbDataAdapter(cmd) '建立DataSet对象
Dim ds As New DataSet() '填充DataSet对象 adp.Fill(ds, \"link\") '绑定数据对象
GridView1.DataSource = ds.Tables(\"link\").DefaultView '指定数据源 GridView1.DataBind() '执行绑定
End Sub
插入按钮单击事件代码如下:
Dim strsql, bianhao, biaoti, shijian As String
bianhao = TextBianHao.Text.ToString().Trim() biaoti = TextBiaoTi.Text.ToString().Trim() shijian = TextShiJian.Text.ToString().Trim()
strsql = \"insert into SystemTest values('\" & bianhao & \"','\" & biaoti & \"','\" & shijian & \"')\"
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\")
11
本科生课程设计
Dim cmd1 As New OleDbCommand(\"select * from SystemTest where id='\" & bianhao & \"'\", conn)
conn.Open()
Dim dr1 As OleDbDataReader = cmd1.ExecuteReader() If (Not dr1.Read()) Then
Dim cmd2 As New OleDbCommand(strsql, conn)
Dim dr2 As OleDbDataReader = cmd2.ExecuteReader() Label1.Text = \"插入成功!\"
ElseIf MsgBox(\"此编号已经存在\") Then End If
conn.Close()
'重新对控件进行绑定,是显示的信息始终是最新的
DataBindGridView()
单击库存查询按钮时系统自动进入KuCunChaXun.aspx页面,其中用户可以根据自己的需求来选择查询条件,即可以按照产品名称进行查询也可按照产品编号进行查询。
图 3-5 库存查询
其中查询按钮单击事件代码如下:
Dim strsql, strsql2 As String '建立Connection对象
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\") '建立Command对象
strsql = \"select * from GoodList where GoodNum='\" & TexKeyName.Text & \"' \" strsql2 = \"select * from GoodList where GoodMingCheng='\" & TexKeyName.Text & \"'\"
Dim cmd As New OleDbCommand(strsql, conn) Dim cmd2 As New OleDbCommand(strsql2, conn) '建立DataAdapter对象
Dim adp As New OleDbDataAdapter(cmd) Dim adp2 As New OleDbDataAdapter(cmd2) '建立DataSet对象
Dim ds As New DataSet() Dim ds2 As New DataSet() '填充DataSet对象
If (RadLeiXing.Text = \"产品编号\") Then adp.Fill(ds, \"link\")
GridView1.DataSource = ds.Tables(\"link\").DefaultView End If
12
本科生课程设计 If (RadLeiXing.Text = \"产品名称\") Then adp2.Fill(ds2, \"link\")
GridView1.DataSource = ds2.Tables(\"link\").DefaultView End If
GridView1.DataBind() '执行绑定
单击库存警报按钮,系统页面跳转到KuCunJingBao.aspx页面,本功能主要通过GridView控件来实现,其中“现有库存”使用模板列,用label标签来显示数据库中的值,并且设置label标签显示红色字体。
图 3-6 库存警报
在页面加载事件中写入如下代码:
Dim strsql As String
'建立Connection对象
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\") '建立Command对象
strsql = \"select * from KuCun where xianyoukucun > shuliangshangxian or xianyoukucun < shuliangxiaxian\"
Dim cmd As New OleDbCommand(strsql, conn) '建立DataAdapter对象
Dim adp As New OleDbDataAdapter(cmd) '建立DataSet对象
Dim ds As New DataSet() '填充DataSet对象 adp.Fill(ds, \"link\")
GridView1.DataSource = ds.Tables(\"link\").DefaultView '指定数据源 '绑定数据对象
GridView1.DataBind()
单击密码修改按钮进入XiuGaiMiMa.aspx页面,当修改成功时弹出成功对话框 :
图 3-7 密码修改
13
本科生课程设计
修改按钮单击事件代码如下:
Dim jiumima, xinmima1, xinmima2 As String
jiumima = TextBox1.Text.ToString().Trim() xinmima1 = TextBox2.Text.ToString().Trim() xinmima2 = TextBox3.Text.ToString().Trim()
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\")
Dim cmd1 As New OleDbCommand(\"select * from UserList where PassWord='\" & jiumima & \"' and UserName= '\" & Session(\"UserName\") & \"'\", conn) conn.Open()
Dim dr1 As OleDbDataReader = cmd1.ExecuteReader() '判断记录是否存在 If (dr1.Read()) Then
If TextBox2.Text = TextBox3.Text Then
Dim cmd2 As New OleDbCommand(\"update UserList set PassWord='\" & xinmima1 & \"' where UserName='\" & Session(\"UserName\") & \"'\", conn) Dim dr2 As OleDbDataReader = cmd2.ExecuteReader() MsgBox(\"恭喜,密码修改成功\")
ElseIf MsgBox(\"两次输入的密码不一致\") Then End If
ElseIf MsgBox(\"你输入的密码有误\") Then End If
conn.Close()
当单击数据报表按钮时系统进入页面ShuJuBaoBiao.aspx,用户可以从下拉列表中选择不同的数据表进行导出。
图 3-8 数据报表
在确定按钮的单击事件中写入如下代码:
If IsPostBack Then DataBind() End If
其中databind()子过程如下:
Sub databinds()
14
本科生课程设计 If DropDownList1.Text = \"GoodPapers\" Then strbm = \"GoodPapers\" End If
If DropDownList1.Text = \"KuCun\" Then strbm = \"KuCun\" End If
Dim str As String
str = \"select * from \" & strbm
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=..\") Dim cmd As New OleDbCommand(str, conn) Dim adp As New OleDbDataAdapter(cmd) Dim ds As New DataSet adp.Fill(ds, \"link\")
GridView1.DataSource = ds.Tables(\"link\").DefaultView GridView1.DataBind()
End Sub
在“导出Excel数据表”按钮的单击事件中写入如下代码:
GridView1.Visible = True Response.Clear()
Response.Buffer = True GridView1.DataBind()
Response.Charset = \"GB2312\"
Response.ContentEncoding = System.Text.Encoding.UTF7 Response.AddHeader(\"Content-Disposition\", \"attachment;filename=FileFlow.xls\")
Response.ContentType = \"application/ms-excel\" GridView1.EnableViewState = False Dim strWriter As New StringWriter()
Dim htw As New HtmlTextWriter(strWriter) GridView1.DataBind()
GridView1.RenderControl(htw)
Response.Write(strWriter.ToString) Response.Flush() Response.End()
GridView1.Visible = False
GridView1.DataBind()
在“导出Word数据表”按钮的单击事件中写入如下代码:
GridView1.Visible = True Response.Clear()
Response.Buffer = True GridView1.DataBind()
Response.Charset = \"GB2312\"
Response.ContentEncoding = System.Text.Encoding.UTF7 Response.AddHeader(\"Content-Disposition\", \"attachment;filename=FileFlow.doc\")
Response.ContentType = \"application/ms-word\" GridView1.EnableViewState = False Dim strWriter As New StringWriter()
15
本科生课程设计 Dim htw As New HtmlTextWriter(strWriter) GridView1.DataBind()
GridView1.RenderControl(htw)
Response.Write(strWriter.ToString) Response.Flush() Response.End()
GridView1.Visible = False
GridView1.DataBind()
3.2 库存单据管理
当点击库存盘点按钮时系统进入KuCunPanDian.sapx页面,此页面主要通过GridView控件来实现,当系统第一次运行时“把所删除的记录放入回收站”按钮不可用,只有单击GridView控件里面的“删除”按钮时此按钮才可用。
图 3-9 库存管理
其中在GridView控件的GridView1_RowUpdating事件中写入如下代码: Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist
Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\") '定义变量取GridView中的值
Dim strsql, bianhao, mingcheng, kucun, shangxian, xiaxian, huojia, cangku As String
bianhao = GridView1.DataKeys(e.RowIndex).Value.ToString().Trim() mingcheng = CType(GridView1.Rows(e.RowIndex).Cells(\"1\").Controls(0), TextBox).Text.ToString().Trim()
kucun = CType(GridView1.Rows(e.RowIndex).Cells(\"2\").Controls(0), TextBox).Text.ToString().Trim()
shangxian = CType(GridView1.Rows(e.RowIndex).Cells(\"3\").Controls(0),
16
本科生课程设计 TextBox).Text.ToString().Trim()
xiaxian = CType(GridView1.Rows(e.RowIndex).Cells(\"4\").Controls(0), TextBox).Text.ToString().Trim()
huojia = CType(GridView1.Rows(e.RowIndex).Cells(\"5\").Controls(0), TextBox).Text.ToString().Trim()
cangku = CType(GridView1.Rows(e.RowIndex).Cells(\"6\").Controls(0), TextBox).Text.ToString().Trim()
strsql = \"update KuCun set chanpinmingcheng='\" & mingcheng &
\"',xianyoukucun='\" & CInt(kucun) & \"',shuliangshangxian='\" & CInt(shangxian) & \"',shuliangxiaxian='\" & CInt(xiaxian) & \"',suoshuhuojia='\" & CInt(huojia) & \"',suoshucangku='\" & CInt(cangku) & \"' where chanpinbianhao='\" & bianhao & \"'\" Dim cmd As New OleDbCommand(strsql, conn) conn.Open()
cmd.ExecuteNonQuery() conn.Close() '重新绑定
GridView1.EditIndex = -1 GridViewDataBind()
在GridView控件的GridView1_RowDeleting事件中写入如下代码:
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\") '定义变量取GridView中的值
Dim strsql, strsql1, chanpinbianhaotext, a1, a2, a3, a4, a5, a6, a7 As String chanpinbianhaotext = GridView1.DataKeys(e.RowIndex).Value.ToString()
strsql1 = \"select * from KuCun where chanpinbianhao='\" & chanpinbianhaotext & \"'\"
strsql = \"delete KuCun where chanpinbianhao='\" & chanpinbianhaotext & \"'\" Dim cmd1 As New OleDbCommand(strsql1, conn) Dim cmd As New OleDbCommand(strsql, conn) conn.Open()
Dim dr1 As OleDbDataReader = cmd1.ExecuteReader() If (dr1.Read()) Then '若存在
a1 = dr1.Item(\"chanpinbianhao\") a2 = dr1.Item(\"chanpinmingcheng\") a3 = dr1.Item(\"xianyoukucun\")
a4 = dr1.Item(\"shuliangshangxian\") a5 = dr1.Item(\"shuliangxiaxian\") a6 = dr1.Item(\"suoshuhuojia\") a7 = dr1.Item(\"suoshucangku\")
'用Session存取sql语句,以便在KuCunPanDianHuiShouZhan.aspx页面中使用 Session(\"strsql2\") = \"insert into KuCunHuiShouZhan values('\" & a1 & \"','\" & a2 & \"','\" & a3 & \"','\" & a4 & \"','\" & a5 & \"','\" & a6 & \"','\" & a7 & \"')\"
'用Session存取sql语句,在从回收站页面KuCunPanDianHuiShouZhan.aspx向页面KuCunPanDian.aspx恢复数据时使用
Session(\"strsql3\") = \"insert into KuCun values('\" & a1 & \"','\" & a2 & \"','\" & a3 & \"','\" & a4 & \"','\" & a5 & \"','\" & a6 & \"','\" & a7 & \"')\"
'当从页面KuCunPanDianHuiShouZhan.aspx向页面KuCunPanDian.aspx恢复数据的同时 删除KuCunPanDianHuiShouZhan.aspx页面的恢复数据 sql语句
Session(\"del\") = \"delete KuCunHuiShouZhan where chanpinbianhao='\" & chanpinbianhaotext & \"'\"
17
本科生课程设计 End If
cmd.ExecuteNonQuery() conn.Close() '重新绑定
GridView1.EditIndex = -1 GridViewDataBind()
LinkButton2.Enabled = True
插入按钮单击事件代码:
Dim strsql, bianhao, mingcheng, kucun, shangxian, xiaxian, huojia, cangku As String bianhao = TexBianHao.Text.ToString().Trim() mingcheng = Texmingcheng.Text.ToString().Trim() kucun = TextKucun.Text.ToString().Trim()
shangxian = TextShangxian.Text.ToString().Trim() xiaxian = TextXiaXian.Text.ToString().Trim() huojia = TextHuoJia.Text.ToString().Trim() cangku = TextCangku.Text.ToString().Trim()
strsql = \"insert into KuCun values('\" & bianhao & \"','\" & mingcheng & \"','\" & kucun & \"','\" & shangxian & \"','\" & xiaxian & \"','\" & huojia & \"','\" & cangku & \"')\"
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\")
Dim cmd1 As New OleDbCommand(\"select * from KuCun where chanpinbianhao='\" & bianhao & \"'\", conn) conn.Open()
Dim dr1 As OleDbDataReader = cmd1.ExecuteReader()
If (Not dr1.Read()) Then '若插入的主键值不存在,插入成功 Dim cmd2 As New OleDbCommand(strsql, conn)
Dim dr2 As OleDbDataReader = cmd2.ExecuteReader() Label1.Text = \"插入成功!\"
ElseIf MsgBox(\"此产品编号已经存在\") Then '否则弹出提示 End If
conn.Close()
'重新绑定GridView控件,使每次显示的数据都是最新的 GridViewDataBind()
在“把所删除的记录放入回收站”按钮的单击事件中写入代码:
Response.Redirect(\"KuCunPanDianHuiShouZhan.aspx\")
当点击“把所删除的记录放入回收站”按钮时,系统会跳转到回收站页面(KuCunPanDianHuiShouZhan.aspx):
图 3-10 回收站
18
本科生课程设计 在“把数据从回收站恢复“按钮的单击事件中写入如下代码:
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\") conn.Open()
Dim cmd As New OleDbCommand(Session(\"strsql3\"), conn) Dim cmd1 As New OleDbCommand(Session(\"del\"), conn) Dim dr As OleDbDataReader = cmd.ExecuteReader() Label1.Text = \"数据已经从回收站中恢复!\"
Dim dr1 As OleDbDataReader = cmd1.ExecuteReader() conn.Close()
Button1.Enabled = False
在页面加载事件中写入代码:
If (Not Page.IsPostBack) Then Dim conn As New
OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\") conn.Open()
Dim cmd As New OleDbCommand(Session(\"strsql2\"), conn) Dim dr As OleDbDataReader = cmd.ExecuteReader() conn.Close()
'重新绑定GridView控件,使每次显示的数据都是最新的
GridViewDataBind()
在GridView控件的GridView1_RowDeleting事件中写入代码:
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\") '定义变量取GridView中的值
Dim strsql, chanpinbianhaotext As String
chanpinbianhaotext = GridView1.DataKeys(e.RowIndex).Value.ToString() strsql = \"delete KuCunHuiShouZhan where chanpinbianhao='\" & chanpinbianhaotext & \"'\"
Dim cmd As New OleDbCommand(strsql, conn) conn.Open()
cmd.ExecuteNonQuery() conn.Close() '重新绑定
GridView1.EditIndex = -1
GridViewDataBind()
当点击单据管理按钮时进入DanJuGuanLi.aspx页面,此页面支持单据录入、删除、更改功能,同时可以支持多种条件的查询,例如模糊、精确查询,一个条件或者多个条件相联合查询,用表格的形式显示查询结果。
19
本科生课程设计 图 3-11 单据管理
在查询按钮的单击事件中写入以下代码:
'以下变量存取文本框中的值(查询数据的值)
Dim texczlx, texczr, texcpmc, texcpsl, texxqr, texczsj As String '以下变量存取下拉列表框的值(查询条件表达式)
Dim Droptiaojian, dropleixing1, dropcaozuoren1, dropmingcheng1, dropshuliang1, dropxvqiuren1, dropshijian1 As String texczlx = Texcaozuoleixing.Text texczr = Texcaozuoren.Text
texcpmc = Texchanpinmingcheng.Text texcpsl = Texchanpinshuliang.Text texxqr = Texxvqiuren.Text
texczsj = Texcaozuoshijian.Text
Droptiaojian = DropSelectTiaoJian.SelectedItem.Value.ToString()
dropshuliang1 = DropShuliang.SelectedItem.Value.ToString() + \"'\" + texcpsl + \"'\"
'判断查询条件,若为精确查询,则表达式为”=“
If (DropLeiXing.SelectedItem.Text = \"精确查询\") Then
dropleixing1 = DropLeiXing.SelectedItem.Value.ToString() + \"'\" + texczlx + \"'\"
ElseIf (DropLeiXing.SelectedItem.Text = \"模糊查询\") Then '若为模糊查询,表达式为Like '%数值%'
dropleixing1 = DropLeiXing.SelectedItem.Value.ToString() + \" '\" + \"%\" + texczlx + \"%\" + \"'\" End If
20
本科生课程设计 If (DropCaoZuoRen.SelectedItem.Text = \"精确查询\") Then
dropcaozuoren1 = DropCaoZuoRen.SelectedItem.Value.ToString() + \"'\" + texczr + \"'\"
ElseIf (DropCaoZuoRen.SelectedItem.Text = \"模糊查询\") Then
dropcaozuoren1 = DropCaoZuoRen.SelectedItem.Value.ToString() + \" '\" + \"%\" + texczr + \"%\" + \"'\" End If
If (DropMingCheng.SelectedItem.Text = \"精确查询\") Then
dropmingcheng1 = DropMingCheng.SelectedItem.Value.ToString() + \"'\" + texcpmc + \"'\"
ElseIf (DropMingCheng.SelectedItem.Text = \"模糊查询\") Then
dropmingcheng1 = DropMingCheng.SelectedItem.Value.ToString() + \" '\" + \"%\" + texcpmc + \"%\" + \"'\" End If
If (DropXvQiuRen.SelectedItem.Text = \"精确查询\") Then
dropxvqiuren1 = DropXvQiuRen.SelectedItem.Value.ToString() + \"'\" + texxqr + \"'\"
ElseIf (DropXvQiuRen.SelectedItem.Text = \"模糊查询\") Then
dropxvqiuren1 = DropXvQiuRen.SelectedItem.Value.ToString() + \" '\" + \"%\" + texxqr + \"%\" + \"'\" End If
If (DropShiJian.SelectedItem.Text = \"精确查询\") Then
dropshijian1 = DropShiJian.SelectedItem.Value.ToString() + \"'\" + texczsj + \"'\"
ElseIf (DropShiJian.SelectedItem.Text = \"模糊查询\") Then
dropshijian1 = DropShiJian.SelectedItem.Value.ToString() + \" '\" + \"%\" + texczsj + \"%\" + \"'\" End If
Dim strsql As String '建立Connection对象
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\") '建立Command对象 strsql = \"select
caozuoleixing,caozuoren,chanpinmingcheng,chanpinshuliang,xvqiuren,caozuoshijian from GoodPapers where caozuoleixing \" & dropleixing1 & \" \" & Droptiaojian & \" caozuoren \" & dropcaozuoren1 & \" \" & Droptiaojian & \" chanpinmingcheng \" &
dropmingcheng1 & \" \" & Droptiaojian & \" chanpinshuliang \" & dropshuliang1 & \" \" & Droptiaojian & \" xvqiuren \" & dropxvqiuren1 & \" \" & Droptiaojian & \" caozuoshijian \" & dropshijian1 & \"\"
Dim cmd As New OleDbCommand(strsql, conn) conn.Open()
Dim dr As OleDbDataReader = cmd.ExecuteReader() '下面显示数据,首先显示标题
Label1.Text = \"
操作类型 | 操 作 人 | 产品名称 | 产品数量 | 需 求 人 | 操作时间 |
\" & dr.Item(\"caozuoleixing\") & \" | \" Label1.Text &= \"\" & dr.Item(\"caozuoren\") & \" | \"\" & dr.Item(\"chanpinmingcheng\") & \" | \" Label1.Text &= \"\" & dr.Item(\"chanpinshuliang\") & \" | \" Label1.Text &= \"\" & dr.Item(\"xvqiuren\") & \" | \"\" & dr.Item(\"caozuoshijian\") & \" | \" Label1.Text &= \"
conn.Close()
在插入数据按钮的单击事件中写入如下代码:
Dim strsql, texid, texcaozuoleixing, texcaozuoren, texchanpinmingcheng, texchanpinshuliang, texxvqiuren, texcaozuoshijian As String texid = TextBox1.Text.ToString().Trim()
texcaozuoleixing = TextBox2.Text.ToString().Trim() texcaozuoren = TextBox3.Text.ToString().Trim()
texchanpinmingcheng = TextBox4.Text.ToString().Trim() texchanpinshuliang = TextBox5.Text.ToString().Trim() texxvqiuren = TextBox6.Text.ToString().Trim() texcaozuoshijian = TextBox7.Text
strsql = \"insert into GoodPapers values('\" & texid & \"','\" & texcaozuoleixing & \"','\" & texcaozuoren & \"','\" & texchanpinmingcheng & \"','\" & texchanpinshuliang & \"','\" & texxvqiuren & \"','\" & CDate(texcaozuoshijian) & \"')\"
Dim conn As New OleDbConnection(\"Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=CangKu;Data Source=.\")
Dim cmd1 As New OleDbCommand(\"select * from GoodPapers where id='\" & texid & \"'\", conn)
conn.Open()
Dim dr1 As OleDbDataReader = cmd1.ExecuteReader()
If (Not dr1.Read()) Then '若插入的主键值不存在,插入成功 Dim cmd2 As New OleDbCommand(strsql, conn)
Dim dr2 As OleDbDataReader = cmd2.ExecuteReader() Label2.Text = \"插入成功!\"
ElseIf MsgBox(\"此产品编号已经存在\") Then '否则弹出提示 End If
conn.Close()
'重新绑定GridView控件,使每次显示的数据都是最新的
DataBindGridView()
3.3 普通用户页面
普通用户登录该系统时,当其点击左侧框架的“库存盘点”、“单据管理”等按钮时,系统会弹出一个友好的权限限制页面:
图3-12 权限限制
22
本科生课程设计 当普通用户点击“注销登录”、“库存查询”、“库存警报”、“修改密码”按钮时,其界面操作效果和图 3-1、图3-5、图3-6、图3-7相同。
23
本科生课程设计 第4章 系统测试
使用黑盒进行测试软件功能,它很可能发现白盒测试不易发现的其他类型的错误。
黑盒测试力图发现下述类型的错误: 1) 功能不正确或遗漏了功能。 2) 界面错误。
3) 数据结构错误或外部数据库访问错误。 4) 性能错误
5) 初始化和终止错误。
测试修改密码模块,当两次输入的密码不相同时,弹出提示对话框:
图4-1 密码两次输入不一致
当输入的用户名或者密码或者验证码不正确时,系统弹出提示对话框:
图4-2 用户名或密码或验证码不正确
当所要插入信息的主键在数据库中已经存在时,系统弹出对话框:
图4-3 主键在数据库中已经存在
24
本科生课程设计 第5章 结束语
本次设计完成了向仓库中添加商品,修改商品信息,实现报表输出,并实现仓库自动报警功能。用户可以根据需求进行查询所需要的信息。此系统运用回收站机制,防止由于用户的误操作而使信息丢失;同时用户使用本系统可以进行仓库的模糊、精确、单个条件或者多个条件相联合的查询,使查询功能更强大、更便捷、更人性化。
通过本次短学期的编写程序使我懂得了要想做一个合格的作品不是单纯想象的那么简单,也不是随便的从网络上下载一个敷衍了事,只有通过真正的做了一遍才能使原本杂乱无章、支离破碎的知识有了一个很好的融会贯通,并初步形成了一个知识体系,对SQL Server数据库、VB语言、VS2005开发环境有了进一步的认识,这次题库管理系统设计要处理的数据表、数据表之间的关系、页面之间的参数传递、变量定义众多,它培养了我们处理众多关系、理清变量之间传送参数的能力,同时也在无形中培养了我们应用Amdahl定律处理复杂问题、提高大概率事件效率、分清轻重缓急的能力。
从规范化的软件开发流程中,学习如何规范自己的人生,这是每一个软件编写者应该具备的素质,虽然有时候感觉整天坐在那里编写代码是一项很无聊的工作,但是当心里想的东西用计算机语言实现出来的那种成功的喜悦是其他事情无所替代的,有时候遇到不会的问题、陌生的功能的时候,我会主动的去网上、图书馆查阅相关的资料,或者恳请老师答疑,在这期间多多少少的培养了我的自学能力和遇到困难时那种主动解决困难的态度,有句话说得好“细节决定成败,态度决定命运”,然而我们平时对细节、态度观的形成就是通过好多好多的小事情来实现的,所以我很珍惜这次小学期实习的机会,虽然时间不是很长,但是它在微观上让我明白了想画好一个让客户满意的程序,我们必须要有耐心、必须要有“不破楼兰终不还”的豪情壮志!以前有人说解放战争是胜在后勤上、打的是后勤,我想在现代在这个浮躁的社会,成功往往都是以耐心为基石、比的是耐心!在宏观上来讲我们想做好一件事情必须在内心上要重视它,要付出100%的努力,不能把每件事情都当做自己的负担,我们要把每一件事情都看作是对自己的一个挑战,在人生路上是对自己的一个磨练!
25
本科生课程设计 参考文献
[1] 张海潘.软件工程导论 [M].清华大学出版社,2008.2.
[2] 王珊,萨师煊.数据库系统概论 [M].高等教育出版社,2006.5. [3] 张海潘.软件工程导论 [M].清华大学出版社,2008.2.
[4] 尚俊杰.ASP.NET程序设计 [M].清华大学出版社;北京交通大学出版
社.2004.4.
[5] 宋昆,李严.SQL Server数据库开发实例解析 [M].机械工业出版社. 2006.1 [6] 岳学军,李晓黎.Web应用程序开发教程—ASP.NET+SQL Server [M].人民邮电
出版社.2009.11
26
因篇幅问题不能全部显示,请点此查看更多更全内容