数据库大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华南理工大学数据库原理与设计大作业报告
专业:计算机科学与技术
班级:2015春
学号:201504742013001
学生姓名:陈亮
完成时间:2016.05.08
目录
目录 (2)
1、概述 (3)
2、需求分析 (5)
2.1零售前台(POS)管理系统 (5)
2.2后台管理系统 (5)
2.3数据需求 (6)
3、数据库逻辑设计 (7)
3.1 概念结构设计 (7)
4、软件功能设计 (11)
4.1逻辑结构设计 (11)
4.2物理结构设计 (13)
4.3完整性设计 (16)
4.4安全性设计 (18)
5、界面设计 (20)
5.1系统功能结构图 (20)
5.2模块设计与实现(部分界面) (20)
6、结束语 (30)
7、参考文献 (32)
1、概述
超市管理信息系统是针对超级市场的销售而开发的。
应用超市管理信息系统能够转变超市的工作方式,有效提高销售速度和服务水平,提高客户对超市的信任度和满意度,改善客户关系。
运用超市管理信息系统,在销售商品时实行出口一次性付款,可以实现超市内部现代化管理,能够准确把握每一种商品的销售动态,防止商品断档或过量储备,商品开发方向、进货的适时化都可通过超市管理信息系统来完成。
超市管理信息系统将手工编制好的销售账目或根据原始超市销售记录直接在系统内制作超市销售信息,同时可对输入的超市销售信息进行修改、查询等操作。
这种集约化的销售管理模式既便于对超市销售信息的收集、整理和加工,又便于操作员的需求信息在最短的时间内得到反馈,同时超市管理信息系统可自动分析各种商品销售变化规律,商品销售结构、居民消费变化等,从而为合理进货、经营、加工、库存、销售等提供科学的决策依据。
超市管理信息系统充分运用计算机管理信息技术,建立数据库,对超市的进销存过程进行详细分析,实现了对超市的进货、销售和库存的科学管理。
内部的所有业务,包括销售信息、进货信息、商品信息,具有超级用户的所有权限,对超市实行全面管理。
销售员的
要求是查看所有销售信息,查看符合条件的销售信息以及增加销售单。
采购员的要求是查看所有采购信息,查看符合条件的采购信息,增加采购订单以及更改进退货状态。
超市经理的要求是能够查看进货信息、销售信息以及库存信息。
而顾客是超市的上帝,超市一切都是为顾客服务。
本系统中顾客要求是可以现场买商品,采购信息有采购编号、采购日期、商品厂商、采购员、商品的价格、商品规格、进货商品的数量等属性。
同时超市还可以进退货并有相应的付款表。
通过与超市管理人员进行反复的讨论,确定系统应该实现以下功能:
(1)对商品信息的变动进行处理在商品的进销过程巾,商品信息总是在不断变化的。
比如商品价格的调整、商品信息的修改、新商品信息的增加以及商品信息的删除,因此设计系统时必须考虑到这些情况。
(2)用户信息的变动进行处理。
需考虑到新会员的注册和已注册,设置会员折扣用户的信息的修改及删除。
(3)对顾客采购信息的变动进行处理。
采购信息的过程中采购信息也在不断发生改变,因此也要充分考虑。
(4)查询及统计功能。
要求可以根据指定的条件对商品信息、用户信息和采购信息、销售信息进行查询和统计。
(5)对库存商品信息的变动进行处理。
要求可以根据库存的状态进行相应的进退货。
2、需求分析
2.1零售前台(POS)管理系统
商品录入:根据超巿业务特点制定相关功能,可以通过输入唯一编号、扫描条形码、商品名称等来实现精确或模糊的商品扫描录入。
该扫描录入方法可以充分保证各种电脑操作水平层次的人员均能准确快速地进行商品扫描录入。
收银业务:通过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式)自动计算本次交易的总金额。
在顾客付款后,自动计算找零,同时打印交易清单(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号)。
如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会员卡,并对所购物品全部实行95折优惠,并将所购物品的总金额累计到该会员的总消费金额中。
会员卡的有效期限为一年,满一年未续卡者,该会员卡将被注销。
安全性:OS登陆、退出、换班与操作锁定等权限验证保护;断电自动保护最大限度防止意外及恶意非法操作。
独立作业:有的断网收银即在网络服务器断开或网络不通的情况下,收银机仍能正常作业
2.2后台管理系统
进货管理:根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),可以避免盲目进货造成商品积
压。
按计划单有选择性地进行自动入库登记。
综合查询打印计划进货与入库记录及金额。
销售管理:商品正常销售、促销与限量、限期及禁止销售控制。
综合查询各种销售明细记录、各地收银员收银记录以及交结账情况等。
按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。
库存管理:综合查询库存明细记录。
库存状态自动告警提示。
如库存过剩、少货、缺货等。
软件为您预警,避免库存商品积压损失和缺货。
库存自动盘点计算。
人员管理:员工,会员,供应商,厂商等基本信息登记管理。
2.3数据需求
(1)顶层数据流程
图2-1顶层数据流程图
(2)第0层数据流程
图2-2第0层数据流程图
(3)第1层数据流程
图2-3第1层数据流程图
3、数据库逻辑设计
3.1 概念结构设计
(1)员工信息E-R 图设计
员工信息表:此表记录员工所有信息,管理员通过此表进行员工查询,添加,删除,修改等操作。
员工信息实体图如图3-1所示。
图 3-1 员工信息实体图
(2) 商品信息E-R图设计
商品信息表:此表记录超市所有商品信息,管理员通过此表进行商品查询,添加,删除,修改等操作,此外,采购管理及销售管理都涉及到此表。
商品信息实体图如图3-2所示。
图 3-2 商品信息实体图
(3) 供应商信息E-R图设计
供应商信息表:此表记录所有供应商基本信息,管理员通过此表进行供货商查询,添加,删除,修改等操作。
供应商信息实体图如图3-3所示。
图 3-3 供应商信息实体图
(4) 商品销售信息E-R图设计
商品销售单表:此表记录员工销售商品的所有信息,此表对应多个销售详单。
商品销售单信息实体图如图3-4所示。
图 3-4 商品销售单实体图
(5) 商品销售详单E-R图设计
商品销售详单表:此表与商品销售单表为一对多关系,记录商品销售情况。
商品销售详单信息实体图如图3-5所示
图 3-5 商品销售详单实体图
(6) 商品采购详单E-R图设计
商品采购详单表:此表与商品采购单表为一对多关系,
记录商品采购情况。
商品采购详单信息实体图如图3-6所示
图 3-6 商品采购详单实体图
(7) 商品采购单表E-R图设计
商品采购单表:此表记录员工采购商品的所有信息,此表对应多个采购详单。
商品采购单信息实体图如图3-7所示
图 3-7 商品采购单实体图
(8) 会员信息E-R图设计
会员信息表:此表记录所有会员基本信息,管理员通过此表进行会员查询,添加,删除,修改等操作。
会员信息实体图如图3-8所示
图 3-8 会员信息实体图
4、软件功能设计
超市管理信息系统数据库功能模型,如图下所示:
超市管理信息系统数据库功能模型
4.1逻辑结构设计
实体的属性就是关系的属性,实体的码就是关系的码。
对于实体间的联系则有以下不同的情况:
一个m:n联系转换为一个关系模式。
与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。
如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
三个或三个以上实体间的一个多元联系可以转换为一个关系模式。
与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合
实体型转换为关系模式如下:
(1) 商品信息表(商品编号,商品名称,价格,会员价,库存量,备注,供货商编号,商品类别)
(2) 员工表(员工号,姓名,性别,身份证号,职务编号,备注)
(3) 商品销售单表(销售单编号,销售员编号,会员号,备注,销售日期)
(4) 商品销售详单表(详单编号,商品编号,数量,销售单编号单价,总金额,备注)
(5)供货商表(供货商编号,名称,供货商地址,供货商电话,联系人,备注)
(6) 会员信息表(会员号,姓名,积分,联系电话,办卡日期,备注)
(7)商品采购单表(采购单编号,采购员编号,供货商号,备注,采购日期)
(8) 商品采购详单表(详单编号,商品编号,采购单号,采购数量,单价,总金额,备注)
(9) 职务信息表(职务编号,职务名称,职务简介)
(10) 类别信息表(类别编号,名称,类别简介)
(11) 用户信息表(用户名,用户密码,用户权限(职
务编号))
4.2物理结构设计
(1)数据库模式定义
根据超市管理系统数据库E-R模型及逻辑结构设计创建
各表信息如下:
1.商品信息表,包含商品编号、商品名称等信息,具体结构如下表所示。
2.员工信息表,包含员工号、姓名等信息,具体结构如
下表所示。
员工信息表
3.供货商信息表,包含供货商编号、供货商名称等信息,具体结构如下表所示。
供货商信息表
具体结构如下表所示。
采购单信息表
信息,具体结构如下表所示。
采购详单信息表
6.销售单信息表,包含销售单编号、销售员编号等信息,具体结构如下表所示。
销售单信息表
信息,具体结构如下表所示。
销售详单信息表
结构如下表所示。
商品类别信息表
9.职务信息表,包含职务编号、职务名称等信息,具体
结构如下表所示。
职务信息表
具体结构如下表所示。
用户信息表
构如下表所示。
会员信息表
4.3完整性设计
数据库完整性是指数据库中数据的正确性和相容性。
数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。
数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的
完整性约束作为模式的一部分存入数据库中。
通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计
数据库完整性对于数据库应用系统非常关键,其作用主要体现在以下几个方面:
1.数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据。
2.利用基于DBMS的完整性控制机制来实现业务规则,易于定义,容易理解,而且可以降低应用程序的复杂性,提高应用程序的运行效率。
同时,基于DBMS的完整性控制机制是集中管理的,因此比应用程序更容易实现数据库的完整性。
3.合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统的效能。
比如装载大量数据时,只要在装载之前临时使基于DBMS的数据库完整性约束失效,此后再使其生效,就能保证既不影响数据装载的效率又能保证数据库的完整性。
4.在应用软件的功能测试中,完善的数据库完整性有助于尽早发现应用软件的错误。
在实施数据库完整性设计的时候,有一些基本的原则需要把握:
(1) 根据数据库完整性约束的类型确定其实现的系统层次和方式,并提前考虑对系统性能的影响。
一般情况下,
静态约束应尽量包含在数据库模式中,而动态约束由应用程序实现。
(2) 实体完整性约束、参照完整性约束是关系数据库最重要的完整性约束,在不影响系统关键性能的前提下需尽量应用。
用一定的时间和空间来换取系统的易用性是值得的。
4.4安全性设计
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
系统安全保护措施是否有效是数据库系统的主要指标之一。
数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的。
信息系统尽管功能强大,技术先进,但由于受到自身体系结构,设计思路以及运行机制等限制,也隐含许多不安全因素。
常见因素有:数据的输入,输出,存取与备份,源程序以及应用软件,数据库,操作系统等漏洞或缺陷,硬件,通信部分的漏洞,企业内部人员的因素,病毒,“黑客”等因素。
因此,为使本系统能够真正安全,可靠,稳定地工作,必须考虑如下问题:为保证安全,不致使系统遭到意外事故的损害,系统因该能防止火,盗或其他形式的人为破坏。
(1)系统要能重建
(2)系统应该是可审查的
(3)系统应能进行有效控制,抗干扰能力强
(4)系统使用者的使用权限是可识别的
SQL Server提供多层安全。
在最外层,SQL Server的登录安全性直接集成到Widows NT/2000的安全上,它允许Windows NT服务器验证用户。
使用这种"Windows 验证"SQL Server就可以利用Windows NT/2000的安全特性,例如安全验证和密码加密、审核、密码过期、最短密码长度,以及在多次登录请求无效后锁定帐号。
5、界面设计
5.1系统功能结构图
一般的超市商品管理系统,主要由四大模块组成,即基本信息管理模块,系统用户管理模块,销售管理模块,货物管理模块,此系统也不例外,主要有此四大模块组成。
图5-1系统功能结构图。
图5-1系统功能结构图
5.2模块设计与实现(部分界面)
(1) 用户登录界面
运行超市管理信息系统后,首先进入用户登录界面,用户输入用户名和密码后,系统进行验证,验证通过进入程序的主界面。
在进行系统登录过程中,登录模块将调用数据库里的用户信息表,并对用户名和密码进行验证,只有输入了正确的
账号和密码后,系统登录才会成功。
在登录模块中,对系统的尝试登录次数进行了限制,禁止用户无终止的进行系统登录尝试,在本系统中,当用户对系统的三次登录失败后,系统将自动机制登录,突出登录模块。
并在输入了错误的或者是不存在的账户和密码时,系统会给出出错信息提示,指明登录过程中的错误输入或者错误操作,以便用户进行正确的登录。
登录界面如图5-2所示。
图5-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) 主界面
系统登录成功后,进入主界面菜单。
主界面如图5-3所示。
图5-3 主界面
(3) 修改密码界面
成功登录系统后,单击“用户信息管理”菜单的“修改密码”,可以进入“修改密码”界面,进行密码的修改。
修改密码界面如图5-4所示。
图5-4 修改密码界面
主要实现代码如下:
//修改密码
protected virtual void radBtnOk_Click(object sender, EventArgs e)
{
if (radTxtBoxOldPsw.Text == null ||
radTxtBoxOldPsw.Text.Trim() == "")
{
MessageBox.Show("请输入旧密码!。
", "提醒", MessageBoxButtons.OK, rmation);
return;
}
if (radTxtBoxNewPsw.Text == null ||
radTxtBoxNewPsw.Text.Trim() == ""
|| radTxtBoxEnterPsw.Text == null || radTxtBoxEnterPsw.Text.Trim() == "")
{
MessageBox.Show("请输入新密码!。
", "提醒", MessageBoxButtons.OK, rmation);
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, rmation);
}
else
{
MessageBox.Show("密码修改失败,请联系管理员!。
", "提醒", MessageBoxButtons.OK, rmation);
}
}
else
{
MessageBox.Show("两次密码输入不一致!", "提醒", MessageBoxButtons.OK, rmation);
}
}
else
{
MessageBox.Show("输入密码错误!", "提醒",
MessageBoxButtons.OK, rmation);
}
}
(4) 修改密码界面
管理员成功登录系统后,单击“用户信息管理”菜单的“修改权限”,可以进入“修改权限”界面,进行员工权限的修改。
修改权限界面如图5-5所示。
图5-5 修改权限界面
主要实现代码如下:
//修改权限
protected override void radBtnOk_Click(object sender, EventArgs e) {
if (radTxtBoxOldPsw.Text == null ||
radTxtBoxOldPsw.Text.Trim() == "")
{
MessageBox.Show("请输入用户名!。
", "提醒", MessageBoxButtons.OK, rmation);
return;
}
if (radComBoxPower.Text == null ||
radComBoxPower.Text.Trim() == "")
{
MessageBox.Show("请为用户设置权限!。
", "提醒", MessageBoxButtons.OK, rmation);
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, rmation);
}
else
{
MessageBox.Show("权限修改失败,请联系管理员!。
", "提醒", MessageBoxButtons.OK, rmation);
}
}
(5) 编辑员工信息界面
管理员成功登录系统后,单击“基本信息管理”菜单的“员工信息”,可以进入“查看员工信息”界面和“编辑员工信息”界面,“查看员工信息”界面只能查看员工信息,“编辑员工信息”界面进行员工信息的修改、添加、删除等功能。
编辑员工信息界面如图5-6所示。
图5-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();
=
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.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 = '"+ + "',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) 职务信息界面
管理员成功登录系统后,单击“基本信息管理”菜单的“职务信息”,可以进入“职务信息”界面,“职务信息”界面进行职务信息的修改、添加、删除等功能。
职务信息界面如图5-7所示。
图5-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);
}
}
}
6、结束语
此次的课程设计,跨越了传统方式下的教与学的体制束缚,在设计报告的写作过程中,通过查资料和搜集有关的文
献,培养了自学能力和动手能力。
并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。
在以往的传统的学习模式下,我们可能会记住很多的书本知识,但是通过课程设计,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。
通过这次超市管理系统课程设计,让我充分运用自己所学的知识,让我明白只有单纯的理论知识是远远不够的,只有通过实际的锻炼才能更好的运用所掌握的基础知识,才能在原有的基础上提升自己的能力,提高自己解决问题的能力。
在这短短的几天里,查阅有关的Telerik RadControls for WinForms,SQL SERVER学习资料,数据库的设计规则,E-R图的画法规则,数据库设计的基本步骤,表的设计及满足范式,代码的编写及到最后的调试。
在设计过程中,通过对控件事件的处理,界面的布局,代码的调试,充分锻炼了自己的思维,获得了充分的实际经验,提高了处理问题的能力,同时也提高了对问题思考的应急能力和抗压力的能力。
经过几天的努力,虽然设计已经完成,但仍然有很多模块和功能要完善,存在很多美中不足之处。
但是基本上还能满足小型超市的管理。
在设计报告的写作过程中也学到了做任何事情所要有的态度和心态,首先我明白了做学问要一丝不苟,对于出现的任何问题和偏差都不要轻视,要通过正确
的途径去解决,在做事情的过程中要有耐心和毅力,不要一遇到困难就打退堂鼓,只要坚持下去就可以找到思路去解决问题的,在遇到问题时,有必要向老师和同学请教,合作沟通的意义是巨大的。
7、参考文献
[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。