
课 程 设 计 报 告
课程名称 数据库课程设计
设计题目 超市信息管理系统
专 业
班 级
学 号
姓 名
完成日期 2013/01/06
| 课 程 设 计 任 务 书 |
| 设计题目: 超市信息管理系统 设计内容与要求: 设计内容: 调研大型超市的业务流程,设计一个用于超市工作人员信息管理、商品采购管理、商品销售管理的信息系统。支持会员卡业务。顾客可以从总服务台上查询本超市有无指定的商品、查询自己的积分情况。 1.基本信息管理:包括商品信息、员工信息等的查询、删除、修改等功能; 2.用户信息维护:包括用户添加、密码修改、用户切换、退出、权限修改; 3.采购管理:包括商品采购管理,退货管理、缺货管理; 4.销售管理:销理、销售查询。 设计要求: 1.要求完成需求分析,写出功能需求和数据需求描述; 2.在需求分析的基础完成数据库概念结构设计、逻辑结构设计、物理结构设计; 3.用C#语言,完成信息系统的部分程序模块的界面设计。 指导教师: 2013年 1 月 6 日 |
课 程 设 计 评 语 |
成绩: 指导教师:_______________ 年 月 日 |
超市管理系统是针对超级市场的销售而开发的。应用超市管理系统能够转变超市的工作方式,有效提高销售速度和服务水平,提高客户对超市的信任度和满意度,改善客户关系。运用超市管理系统,在销售商品时实行出口一次性付款,可以实现超市内部现代化管理,能够准确把握每一种商品的销售动态,防止商品断档或过量储备,商品开发方向、进货的适时化都可通过超市管理系统来完成。
超市管理系统将手工编制好的销售账目或根据原始超市销售记录直接在系统内制作超市销售信息,同时可对输入的超市销售信息进行修改、查询等操作。这种集约化的销售管理模式既便于对超市销售信息的收集、整理和加工,又便于操作员的需求信息在最短的时间内得到反馈,同时超市管理系统可自动分析各种商品销售变化规律,商品销售结构、居民消费变化等,从而为合理进货、经营、加工、库存、销售等提供科学的决策依据。
超市管理系统充分运用计算机管理信息技术,建立数据库,对超市的进销存过程进行详细分析,实现了对超市的进货、销售和库存的科学管理。
2 需求分析
2.1 用户分析
超市管理系统的使用者,即超市的员工主要由超市经理、信息管理员、采购员、收银员组成。
信息管理员:超市管理系统的系统管理者,进行系统的日常管理维护,负责单据录入、采购计划、发货计划的编制,对商品、员工、会员进行各种管理,比如添加、修改、删除、更新等。
采购员:根据采购计划进行商品的采购。
收银员:根据顾客选购的商品进行销售数据的输入,超市管理系统的客户端使用者。
2.2 系统功能需求分析
(1) 用户登录时,若用户输入的用户名不存在时,提示用户重新填写,并重新回到登录界面;用户登录时,若用户输入的密码错误时,提示用户重新填写,返回登录界面。如果输入的信息不全,则要求正确填写必须输入的表项。如果输入信息正确,将提示注册完成,用户可以正常登录,进行不同权限的数据管理。用户能够根据不同权限添加、修改和删除系统不同级别的数据。
(2) 管理员登录,可以从事以下操作:
员工管理,可以查看登录次数和时间,并可以删除。添加新用户功能,可以修改用户权限。对用户进行修改、删除。管理员工信息,可以对信息进行查询、添加、修改。折扣与VIP客户管理。查看供货商数据,并可以对数据进行管理。
修改管理员密码,保证安全性。
添加新商品功能,可增加删改商品信息。添加新商品,选择商品类别,输入商品名称,进行商品说明。类别管理,可以更改类别名称,可以添加和删除类别。
管理销售单,可以销售单进行条件查询,并进行管理。
查看库存数据,并可以对数据进行管理。
(3) 用户界面
本系统采用Microsoft Visual Studio 2008设计,用户交互界面采用的是基于Windows的窗口界面,并结合Telerik RadControls for WinForms设计美观易懂的用户界面,数据库采用Microsoft SQL Server 2005设计。
2.3 数据需求
(1) 顶层数据流程
图2-1顶层数据流程图
(2) 第0层数据流程
图2-2第0层数据流程图
(3)第1层数据流程
图2-3第1层数据流程图
3 概念结构设计
3.1 各个表信息的实体图设计
1) 员工信息实体图设计
员工信息表:此表记录员工所有信息,管理员通过此表进行员工查询,添加,删除,修改等操作。员工信息实体图如图3-1所示。
图 3-1 员工信息实体图
2) 商品信息实体图设计
商品信息表:此表记录超市所有商品信息,管理员通过此表进行商品查询,添加,删除,修改等操作,此外,采购管理及销售管理都涉及到此表。商品信息实体图如图3-2所示。
图 3-2 商品信息实体图
3) 供应商信息实体图设计
供应商信息表:此表记录所有供应商基本信息,管理员通过此表进行供货商查询,添加,删除,修改等操作。供应商信息实体图如图3-3所示。
图 3-3 供应商信息实体图
4) 商品销售单表实体图设计
商品销售单表:此表记录员工销售商品的所有信息,此表对应多个销售详单。商品销售单信息实体图如图3-4所示。
图 3-4 商品销售单实体图
5) 商品销售详单实体图设计
商品销售详单表:此表与商品销售单表为一对多关系,记录商品销售情况。商品销售详单信息实体图如图3-5所示
图 3-5 商品销售详单实体图
6) 商品采购详单实体图设计
商品采购详单表:此表与商品采购单表为一对多关系,记录商品采购情况。商品采购详单信息实体图如图3-6所示
图 3-6 商品采购详单实体图
7) 商品采购单表实体图设计
商品采购单表:此表记录员工采购商品的所有信息,此表对应多个采购详单。商品采购单信息实体图如图3-7所示
图 3-7 商品采购单实体图
8) 会员信息实体图设计
会员信息表:此表记录所有会员基本信息,管理员通过此表进行会员查询,添加,删除,修改等操作。会员信息实体图如图3-8所示
图 3-8 会员信息实体图
3.2 E-R图设计
超市管理系统数据库E-R模型,如图3-9所示:
图3-9 超市管理系统数据库E-R模型
4 逻辑结构设计
实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况: 一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
一个1:n联系可以转换为一个的关系模式,也可以与n端对应的关系模式合并。如果转换为一个的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。 一个1:1联系可以转换为一个的关系模式,也可以与任意一端对应的关系模式合并。三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合实体型转换为关系模式如下:
1) 商品信息表(商品编号,商品名称,价格,会员价,库存量,备注,
供货商编号,商品类别)
2) 员工表(员工号,姓名,性别,身份证号,职务编号,备注)
3) 商品销售单表(销售单编号,销售员编号,会员号,备注,销售日期)
4) 商品销售详单表(详单编号,商品编号,数量,销售单编号单价,总金额,备注)
5)供货商表(供货商编号,名称,供货商地址,供货商电话,联系人,备注)
6) 会员信息表(会员号,姓名,积分,联系电话,办卡日期,备注)
7)商品采购单表(采购单编号,采购员编号,供货商号,备注,采购日期)
8) 商品采购详单表(详单编号,商品编号,采购单号,采购数量,单价,总金额,备注)
9) 职务信息表(职务编号,职务名称,职务简介)
10) 类别信息表(类别编号,名称,类别简介)
11) 用户信息表(用户名,用户密码,用户权限(职务编号))
5 物理结构设计
5.1 数据库模式定义
根据超市管理系统数据库E-R模型及逻辑结构设计创建各表信息如下:
1.商品信息表,包含商品编号、商品名称等信息,具体结构如表5-1所示。
表5-1 商品信息表
| 字段名 | 字段类型 | 长度 | 主/外键 | 字段值约束 | 对应中文名 |
| productNo | nvarchar(6) | 6 | 主键 | Not null | 商品编号 |
| pName | nvarchar(50) | 50 | Not null | 商品名称 | |
| price | decimal(18,2) | Not null | 价格 | ||
| stockNum | bigint | Not null | 库存数量 | ||
| category | bigint | 外键 | Not null | 商品类别 | |
| specific | nvarchar(50) | 50 | null | 规格 | |
| suppliesNo | nvarchar(6) | 6 | 外键 | Not null | 供货商编号 |
| memberPrice | decimal(18,2) | Not null | 会员价格 | ||
| note | nvarchar(MAX) | null | 备注 |
表5-2 员工信息表
| 字段名 | 字段类型 | 长度 | 主/外键 | 字段值约束 | 对应中文名 |
| employeeNo | nvarchar(4) | 4 | 主键 | Not null | 员工号 |
| name | nvarchar(50) | 50 | Not null | 姓名 | |
| idCard | nvarchar(18) | 18 | Not null | 身份证号 | |
| duty | nvarchar(4) | 4 | 外键 | Not null | 职务 |
| sex | nvarchar(2) | 2 | Not null | 性别 | |
| note | nvarchar(MAX) | null | 备注 |
表5-3 供货商信息表
| 字段名 | 字段类型 | 长度 | 主/外键 | 字段值约束 | 对应中文名 |
| suppliesNo | nvarchar(6) | 6 | 主键 | Not null | 供货商编号 |
| name | nvarchar(50) | 50 | Not null | 供货商名称 | |
| address | nvarchar(50) | 50 | Null | 供货商地址 | |
| personPhone | nvarchar(11) | 11 | Not null | 供货商电话 | |
| person | nvarchar(50) | 50 | Not null | 联系人 | |
| note | nvarchar(MAX) | Null | 备注 |
表5-4 采购单信息表
| 字段名 | 字段类型 | 长度 | 主/外键 | 字段值约束 | 对应中文名 |
| importBillNo | nvarchar(6) | 6 | 主键 | Not null | 采购单编号 |
| suppliesId | nvarchar(6) | 6 | 外键 | Not null | 供货商编号 |
| importDate | datetime | Not null | 采购日期 | ||
| employeeId | nvarchar(4) | 4 | 外键 | Not null | 采购员编号 |
| state | tinyint | Not null | 采购单状态 | ||
| note | nvarchar(MAX) | Null | 备注 |
表5-5 采购详单信息表
| 字段名 | 字段类型 | 长度 | 主/外键 | 字段值约束 | 对应中文名 |
| importBillDetailNo | nvarchar(6) | 6 | 主键 | Not null | 采购详单编号 |
| productNo | nvarchar(6) | 6 | 外键 | Not null | 商品编号 |
| importBillNo | nvarchar(6) | 6 | 外键 | Not null | 采购单编号 |
| quantity | Int | 4 | Not null | 采购数量 | |
| price | decimal(18,2) | Not null | 单价 | ||
| totalMoney | decimal(18,2) | Not null | 总金额 | ||
| note | nvarchar(MAX) | Null | 备注 |
表5-6 销售单信息表
| 字段名 | 字段类型 | 长度 | 主/外键 | 字段值约束 | 对应中文名 |
| saleBillNo | nvarchar(6) | 6 | 主键 | Not null | 销售单编号 |
| saleDate | datetime | Not null | 销售日期 | ||
| employeeId | nvarchar(4) | 4 | 外键 | Not null | 销售员编号 |
| VipNo | nvarchar(20) | 20 | 外键 | Not null | 会员编号 |
| note | nvarchar(MAX) | Null | 备注 |
表5-7 销售详单信息表
| 字段名 | 字段类型 | 长度 | 主/外键 | 字段值约束 | 对应中文名 |
| saleBillDetailNo | nvarchar(6) | 6 | 主键 | Not null | 销售详单编号 |
| productId | nvarchar(6) | 6 | 外键 | Not null | 商品编号 |
| saleBillNo | nvarchar(6) | 6 | 外键 | Not null | 销售单编号 |
| saleNum | Int | 4 | Not null | 销售数量 | |
| price | decimal(18,2) | Not null | 单价 | ||
| totalMoney | decimal(18,2) | Not null | 总金额 | ||
| note | nvarchar(MAX) | Null | 备注 |
表5-8 商品类别信息表
| 字段名 | 字段类型 | 长度 | 主/外键 | 字段值约束 | 对应中文名 |
| categoryId | nvarchar(4) | 4 | 主键 | Not null | 类别编号 |
| name | nvarchar(20) | 20 | Not null | 名称 | |
| Remark | nvarchar(MAX) | Null | 备注 |
表5-9 职务信息表
| 字段名 | 字段类型 | 长度 | 主/外键 | 字段值约束 | 对应中文名 |
| dutyId | nvarchar(4) | 4 | 主键 | Not null | 职务编号 |
| dutyName | nvarchar(20) | 20 | Not null | 职务名称 | |
| Remark | nvarchar(MAX) | Null | 职务简介 |
表5-10 用户信息表
| 字段名 | 字段类型 | 长度 | 主/外键 | 字段值约束 | 对应中文名 |
| loginNo | nvarchar(4) | 4 | 主键 | Not null | 用户名 |
| passWord | nvarchar(8) | 8 | Not null | 密码 | |
| power | nvarchar(4) | 4 | 外键 | Not null | 用户权限 |
表5-11 会员信息表
| 字段名 | 字段类型 | 长度 | 主/外键 | 字段值约束 | 对应中文名 |
| vipNo | nvarchar(20) | 20 | 主键 | Not null | 会员编号 |
| vipName | nvarchar(50) | 50 | Not null | 姓名 | |
| CreateDate | datetime | Not null | 办卡日期 | ||
| vipScore | int | 4 | Not null | 积分 | |
| phone | nvarchar(11) | 11 | Not null | 联系电话 | |
| note | nvarchar(MAX) | Null | 备注 |
数据库完整性是指数据库中数据的正确性和相容性。数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计
数据库完整性对于数据库应用系统非常关键,其作用主要体现在以下几个方面:
1.数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据。
2.利用基于DBMS的完整性控制机制来实现业务规则,易于定义,容易理解,而且可以降低应用程序的复杂性,提高应用程序的运行效率。同时,基于DBMS的完整性控制机制是集中管理的,因此比应用程序更容易实现数据库的完整性。
3.合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统的效能。比如装载大量数据时,只要在装载之前临时使基于DBMS的数据库完整性约束失效,此后再使其生效,就能保证既不影响数据装载的效率又能保证数据库的完整性。
4.在应用软件的功能测试中,完善的数据库完整性有助于尽早发现应用软件的错误。在实施数据库完整性设计的时候,有一些基本的原则需要把握:
1) 根据数据库完整性约束的类型确定其实现的系统层次和方式,并提前考虑对系统性能的影响。一般情况下,静态约束应尽量包含在数据库模式中,而动态约束由应用程序实现。
2) 实体完整性约束、参照完整性约束是关系数据库最重要的完整性约束,在不影响系统关键性能的前提下需尽量应用。用一定的时间和空间来换取系统的易用性是值得的。
5.3 安全性设计
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。系统安全保护措施是否有效是数据库系统的主要指标之一。数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的。
信息系统尽管功能强大,技术先进,但由于受到自身体系结构,设计思路以及运行机制 等,也隐含许多不安全因素。常见因素有:数据的输入,输出,存取与备份,源程序以及应用软件,数据库,操作系统等漏洞或缺陷,硬件,通信部分的漏洞,企业内部人员的因素,病毒,“黑客”等因素。因此,为使本系统能够真正安全,可靠,稳定地工作,必须考虑如下问题:为保证安全,不致使系统遭到意外事故的损害,系统因该能防止火,盗或其他形式的人为破坏。
1)系统要能重建
2)系统应该是可审查的
3)系统应能进行有效控制,抗干扰能力强
4)系统使用者的使用权限是可识别的
SQL Server提供多层安全。在最外层,SQL Server的登录安全性直接集成到Widows NT/2000的安全上,它允许Windows NT服务器验证用户。使用这种"Windows 验证"SQL Server就可以利用Windows NT/2000的安全特性,例如安全验证和密码加密、审核、密码过期、最短密码长度,以及在多次登录请求无效后锁定帐号。
6 应用程序设计
6.1 系统功能结构图
一般的超市商品管理系统,主要由四大模块组成,即基本信息管理模块,系统用户管理模块,销售管理模块,货物管理模块,此系统也不例外,主要有此四大模块组成。图6-1系统功能结构图。
图6-1系统功能结构图
6.2 模块设计与实现(部分界面)
1) 用户登录界面
运行超市管理信息系统后,首先进入用户登录界面,用户输入用户名和密码
后,系统进行验证,验证通过进入程序的主界面。
在进行系统登录过程中,登录模块将调用数据库里的用户信息表,并对用户名和密码进行验证,只有输入了正确的账号和密码后,系统登录才会成功。在登录模块中,对系统的尝试登录次数进行了,禁止用户无终止的进行系统登录尝试,在本系统中,当用户对系统的三次登录失败后,系统将自动机制登录,突出登录模块。并在输入了错误的或者是不存在的账户和密码时,系统会给出出错信息提示,指明登录过程中的错误输入或者错误操作,以便用户进行正确的登录。登录界面如图6-2所示。
图6-2 登录界面
主要实现代码如下:
//登录
private void radBtnOk_Click(object sender, EventArgs e)
{
try
{
if (radTxtBoxUser.Text.Trim() == "")
{
this.radLbInfo.Text = "请输入您的用户名!";
}
else if (radTxtBoxPsw.Text.Trim() == "")
{
this.radLbInfo.Text = "请输入您的密码!";
}
else
{
commandUnit com = new commandUnit();
string str = @"select * from UserInfo where loginNo = '" + radTxtBoxUser.Text.ToString() + "'";
DataTable table = com.GetDataSet(str);
if (table.Rows.Count <= 0)
{
this.radLbInfo.Text = "用户名不存在!";
radTxtBoxUser.Text = "";
radTxtBoxPsw.Text = "";
return;
}
str = @"select * from UserInfo where loginNo = '" + radTxtBoxUser.Text.ToString() + "' and passWord = '" + radTxtBoxPsw.Text.ToString() + "'";
DataTable tableUser = com.GetDataSet(str);
if (tableUser.Rows.Count > 0)
{
_currentUser = radTxtBoxUser.Text;
_currentPsw = radTxtBoxPsw.Text;
IsLogin = true;
this.Close();
}
else
{
this.radLbInfo.Text = "密码错误!";
radTxtBoxPsw.Text = "";
}
}
}
catch (System.Exception ex)
{
throw ex;
}
}
2) 主界面
系统登录成功后,进入主界面菜单。主界面如图6-3所示。
图6-3 主界面
3) 修改密码界面
成功登录系统后,单击“用户信息管理”菜单的“修改密码”,可以进入“修改密码”界面,进行密码的修改。修改密码界面如图6-4所示。
图6-4 修改密码界面
主要实现代码如下:
//修改密码
protected virtual void radBtnOk_Click(object sender, EventArgs e)
{
if (radTxtBoxOldPsw.Text == null || radTxtBoxOldPsw.Text.Trim() == "")
{
MessageBox.Show("请输入旧密码。", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (radTxtBoxNewPsw.Text == null || radTxtBoxNewPsw.Text.Trim() == ""
|| radTxtBoxEnterPsw.Text == null || radTxtBoxEnterPsw.Text.Trim() == "")
{
MessageBox.Show("请输入新密码。", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
string currPwd = RFrmLogin.CurrentPsw;
if (currPwd == radTxtBoxOldPsw.Text.Trim())
{
if (isSame())
{
commandUnit com = new commandUnit();
string str = @"update UserInfo set passWord = '" + radTxtBoxEnterPsw.Text.ToString() + "' where loginNo = '" + RFrmLogin.CurrentUser + "'";
if (com.ExecuteCommand(str) > 0)
{
MessageBox.Show("密码修改成功。", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("密码修改失败,请联系管理员。", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("两次密码输入不一致!", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("输入密码错误!", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
4) 修改密码界面
管理员成功登录系统后,单击“用户信息管理”菜单的“修改权限”,可以进入“修改权限”界面,进行员工权限的修改。修改权限界面如图6-5所示。
图6-5 修改权限界面
主要实现代码如下:
//修改权限
protected override void radBtnOk_Click(object sender, EventArgs e)
{
if (radTxtBoxOldPsw.Text == null || radTxtBoxOldPsw.Text.Trim() == "")
{
MessageBox.Show("请输入用户名。", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
if (radComBoxPower.Text == null || radComBoxPower.Text.Trim() == "")
{
MessageBox.Show("请为用户设置权限。", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
commandUnit com = new commandUnit();
string str = @"update UserInfo set power = '" + radComBoxPower.SelectedValue.ToString() + "' where loginNo = '" + radTxtBoxOldPsw.Text.ToString() + "'";
if (com.ExecuteCommand(str) > 0)
{
MessageBox.Show("权限修改成功。", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("权限修改失败,请联系管理员。", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
5) 编辑员工信息界面
管理员成功登录系统后,单击“基本信息管理”菜单的“员工信息”,可以进入“查看员工信息”界面和“编辑员工信息”界面,“查看员工信息”界面只能查看员工信息,“编辑员工信息”界面进行员工信息的修改、添加、删除等功能。编辑员工信息界面如图6-6所示。
图6-6 编辑员工信息界面
主要实现代码如下:
//保存
protected virtual void tSBtnSave_Click(object sender, EventArgs e)
{
try
{
if (IsVilude())
{
bool isSuccess = false;
commandUnit com = new commandUnit();
EmployeeModel emp;
for (int j = 0; j < radWithGV.RowCount; j++)
{
emp = new EmployeeModel();
#region 同步数据
if (radWithGV.Rows[j].Tag != null)
{
emp = radWithGV.Rows[j].Tag as EmployeeModel;
}
else
{
emp.EmployeeNo = radWithGV.Rows[j].Cells["employeeNo"].Value.ToString();
emp.Name = radWithGV.Rows[j].Cells["name"].Value.ToString();
emp.Sex = radWithGV.Rows[j].Cells["sex"].Value.ToString();
emp.IdCard = radWithGV.Rows[j].Cells["idCard"].Value.ToString();
emp.Duty = radWithGV.Rows[j].Cells["duty"].Value.ToString();
emp.Note = radWithGV.Rows[j].Cells["note"].Value.ToString();
emp.IsNew = true;
}
#endregion
if (emp.IsNew)
{
string str = "select * from EmployeeInfo where employeeNo = '" + emp.EmployeeNo + "'";
DataTable dtable = com.GetDataSet(str);
if (dtable.Rows.Count <= 0)
{
str = @"insert into EmployeeInfo values('" + emp.EmployeeNo + "','" + emp.Name + "','" + emp.Sex + "','" + emp.IdCard + "','" + emp.Duty + "','" + emp.Note + "')";
if (com.ExecuteCommand(str) > 0)
{
_isSaved = true;
isSuccess = true;
emp.IsNew = false;
radWithGV.Rows[j].Tag = emp;
}
}
else
{
MessageBox.Show("该员工已存在,请审核信息!");
}
}
else if (emp.IsModified)
{
string strSql = @"update EmployeeInfo set name = '" + emp.Name + "',sex = '" + emp.Sex + "',idCard = '" + emp.IdCard + "',duty = '"
+ emp.Duty + "',note = '" + emp.Note + "' where employeeNo = '" + emp.EmployeeNo + "'";
if (com.ExecuteCommand(strSql) > 0)
{
_isSaved = true;
isSuccess = true;
emp.IsModified = false;
radWithGV.Rows[j].Tag = emp;
}
}
else
continue;
}
if (isSuccess)
{
MessageBox.Show("保存成功!");
}
}
else
{
MessageBox.Show("数据非法!");
}
}
catch (System.Exception ex)
{
throw ex;
}
}
6) 职务信息界面
管理员成功登录系统后,单击“基本信息管理”菜单的“职务信息”,可以进入“职务信息”界面 , “职务信息”界面进行职务信息的修改、添加、删除等功能。职务信息界面如图6-7所示。
图6-7 职务信息界面
主要实现代码如下:
protected override void tSBtnDelete_Click(object sender, EventArgs e)
{
DutyModel employee = this.radWithGV.CurrentRow.Tag as DutyModel;
if (employee != null)
{ if (!employee.IsNew)
{commandUnit com = new commandUnit();
string numRow = radWithGV.CurrentRow.Cells["dutyId"].Value.ToString();
string str = "delete from dutyInfo where dutyId = '" + numRow + "'";
if (com.ExecuteCommand(str) > 0)
{
this.radWithGV.Rows.Remove(radWithGV.CurrentRow as GridViewDataRowInfo);
IsSaved = true;
}
}
else
{
this.radWithGV.Rows.Remove(radWithGV.CurrentRow as GridViewDataRowInfo);
}
}
}
7设计总结
此次的课程设计,跨越了传统方式下的教与学的束缚,在设计报告的写作过程中,通过查资料和搜集有关的文献,培养了自学能力和动手能力。并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。在以往的传统的学习模式下,我们可能会记住很多的书本知识,但是通过课程设计,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。
通过这次超市管理系统课程设计,让我充分运用自己所学的知识,让我明白只有单纯的理论知识是远远不够的,只有通过实际的锻炼才能更好的运用所掌握的基础知识,才能在原有的基础上提升自己的能力,提高自己解决问题的能力。在这短短的几天里,查阅有关的Telerik RadControls for WinForms,SQL SERVER学习资料,数据库的设计规则,E-R图的画法规则,数据库设计的基本步骤,表的设计及满足范式,代码的编写及到最后的调试。在设计过程中,通过对控件事件的处理,界面的布局,代码的调试,充分锻炼了自己的思维,获得了充分的实际经验,提高了处理问题的能力,同时也提高了对问题思考的应急能力和抗压力的能力。
经过几天的努力,虽然设计已经完成,但仍然有很多模块和功能要完善,存在很多美中不足之处。但是基本上还能满足小型超市的管理。在设计报告的写作过程中也学到了做任何事情所要有的态度和心态,首先我明白了做学问要一丝不苟,对于出现的任何问题和偏差都不要轻视,要通过正确的途径去解决,在做事情的过程中要有耐心和毅力,不要一遇到困难就打退堂鼓,只要坚持下去就可以找到思路去解决问题的,在遇到问题时,有必要向老师和同学请教,合作沟通的意义是巨大的。
参考文献
[1]袁然,王诚梅. SQL Server 2005数据库简明教程. 电子工业出版. 2006.6
[2] 张基温,陈佳. 信息系统开发.清华大学出版社. 2006.7
[3] 卫红春.信息系统分析与设计.西安电子科技大学出版社. 2003.12
[4] 郑宇军.SQL Server 2005+Visual C#2005专业开发精解.北京:清华大学出版社.2005.3
[5] 郑宇军.C#面向对象程序设计.北京:人民邮电出版社.2009.6
[6] 王珊等.数据库系统概论.北京:高等教育出版社.2006.8
