
1.1 课程设计的目的
通过本次课程设计,使学生能够全面、深刻地掌握数据库系统的设计流程。根据在数据库原理课程中所学到的数据库理论知识,结合某个具体的实际需求,最终开发出一个较为实用的数据库系统。
1.2 课程设计的背景和意义
1.2.1课程设计的背景
20世纪90年代后期特别是近几年,我国的超市产业飞速发展,其经营模式更为复杂,旧的管理已经无法适应超市的发展,这就迫切的需要引进新的管理技术。
超市的数据和业务越来越庞大,而计算机就是一种高效的管理系统,这就需要我们把超市的管理与计算机结合起来,从而超市管理系统应运而生。依靠现代化的计算机信息处理技术来管理超市,节省了大量的人力、物力,改善了员工的并且能够快速反映出商品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。
1.2.2 课程设计的意义
“数据库课程设计”的设计思想旨在强调学生的实际编程能力的培养与创意灵感的发挥。为此,本课程结合学科特点,除了让学生掌握数据库原理的理论知识,还增加了需求功能让学生完成,并鼓励学生的创作出个性的程序,满足客户需求,与市场的实际项目相结合。学生对此热情高,实际收获大,效果好。通过课堂学习和参与相关项目设计,学生对书本支持有了深刻的理解,实践性教学取得了良好效果。
1.3 课程设计环境
操作系统:Windows xp/vista
开发软件:Microsoft Visual Studio 2005
数据库:Microsoft SQL Server 2005
第2章 系统需求分析
随着人们生活水平的不断提高,对于物质的需求也越来越高,而超市作为日常生活用品聚集的场所,随着全球各种超市的数目的不断增加,规模不断增大,其管理难度也相应的增加,而为了适应当今信息化发展的时代,一套完整的超市商品管理系统显得尤为重要。
2.1 问题的提出
在信息化高速发展的今天,超市商品管理的信息化管理已成为必不可缺的一部分,但是目前的大多是超市商品管理系统应用难度较高,许多工作需要技术人员配合才能完成,角色分工不明确;改版工作量大,系统扩展能力差,应用时更是降低了灵活性,这就使得一套完善的、能够正常工作的商品管理系统应运而生。
2.2 可行性分析
系统的可行性分析是对课题的通盘考虑,是系统开发者进行进一步工作的前提,是系统设计与开发的前提与基础。系统的可行性分析可以使系统开发者尽可能早的估计到课题开发过程中的困难,并在定义阶段认识到系统方案的缺陷,这样就能花费较少的时间和精力,也可以避免许多专业方面的困难。所以,系统的可行性分析在整个开发过程中是非常重要的。
2.2.1 经济可行性分析
因为通过网络传递销售信息可以不受距离的,因此可以借阅许多的人力和物力,方便管理,由此可以减少不必要的开支,同时该系统可以提高超市的销售效率,即提高了超市的经济效益,所以从经济上完全是可行的。
2.2.2 技术可行性分析
本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那些有一般的计算机知识的人员就可以轻松上手。而整个超市管理系统采用最友好的交互界面,简介明了,不需要对数据库进行深入的了解。
由此,该系统的操作是可行的,有必要开发该系统。
综合以上三方面,该系统具有很高的开发可行性,无论是从技术上或者经济上还是操作上。因此,可以设计该系统的数据流程图,建立数据字典。
2.3 系统的设计目标
本系统主要包括四大模块,分别是人事管理模块,销售管理模块,进货管理模块,库存管理模块。每个模块的功能如下:
1. 人事管理模块功能:
(1)实现职工信息的查询;
(2)实现职工信息的更新,包括增加、删除、修改功能;
(3)实现供货商信息的查询;
(4)实现供货商信息的更新,包括增加、删除、修改功能。
2. 销售管理模块功能:
(1)进行前台的销售;
(2)将前台的销售与后台的数据库联系起来。
3. 进货管理模块功能:
(1)实现进货信息的查询;
(2)实现进货信息的更新,包括增加、删除、修改功能。
4. 库存管理模块功能:
(1)实现商品库存信息的查询;
第3章 系统开发的技术背景
3.1 开发技术及运行环境
3.1.1 系统所采用的开发技术
通过权衡对各种编程语言和数据库使用的熟练程度,本系统选用Microsoft Visual Studio 2005作为前台开发工具,后台数据库采用SQL Server 2005,整体设计以软件工程思想为指导思想,力求开发一个实用性强、操作简单且功能完整的超市商品管理系统。
3.1.2 系统运行环境
客户端
操作系统:Windows NT/2000/XP或更高版本
服务器
操作系统:Windows XP
数据库:Microsoft SQL Server 2005
前台:Microsoft Visual Studio 2005
第4章 系统分析与总体设计
4.1 系统结构框架
一般的超市商品管理系统,主要由五大模块组成,即商品信息管理模块,人事管理模块,销售管理模块,进货管理模块,库存管理模块,此系统也不例外,主要有此五大模块组成。图4-1系统功能结构图。
图4-1 系统功能结构图
4.2 系统功能设计
系统功能设计是使整个系统能基本实现超市的进、销、存等管理功能,能让超市管理者更直观的了解超市的经营状况,以做出相应的经营决策。管理信息系统(MIS)就是要对这些资源建立正确的数据库,并进行信息的收集、传送、存储、编制成各种凭证、报表、台帐、图形等信息,同时对这些信息进行维护,通过实测超市的各种运行情况,并利用过去的历史数据预测未来的发展,从超市全局的角度出发进行决策,利用信息控制超市的行为,附注超市完成其目标。
本系统主要包括四大模块,分别是人事管理模块,销售管理模块,进货管理模块,库存管理模块。每个模块的功能如下:
1. 商品管理模块功能:
(1)实现商品信息的查询;
(2)实现职工信息的更新,包括增加、删除、修改功能;
2. 人事管理模块功能:
(1)实现职工信息的查询;
(2)实现职工信息的更新,包括增加、删除、修改功能;
(3)实现供货商信息的查询;
(4)实现供货商信息的更新,包括增加、删除、修改功能。
3. 销售管理模块功能:
(1)实现前台商品的销售;
(2)将商品的销售信息与数据库联系起来。
4. 进货管理模块功能:
(1)实现进货信息的查询;
(2)实现进货信息的更新,包括增加、删除、修改功能。
5. 库存管理模块功能:
(3)实现库存信息的查询;
第5章 系统数据库设计
5.1超市管理系统数据库E-R模型
通过对超市管理系统分析,得出系统的E-R图。图5-1 数据库E-R模型图。
图5-1 数据库E-R模型图
5.2数据库表设计
5.2.1 职工信息表
职工信息表(StaffBill)用于存储职工信息,职工编号为主键是唯一标识。表中各字段功能定义如表5-1所示。
| 中文字段名 | 英文字段名 | 字段类型 | 长度 | 主键/外键 | 字段值约束 |
| 职工编号 | staffID | char | 6 | P | NOT NULL |
| 姓名 | name | nvarchar | 8 | NOT NULL | |
| 性别 | sex | nchar | 2 | NOT NULL | |
| 类别 | kind | nvarchar | 10 | NULL | |
| 身份证号 | idCard | varchar | 18 | NOT NULL | |
| 备注 | others | ntext | 50 | NULL |
5.2.2 用户登录表
用户登录表(Users_Info)用于存储用户的基本登录信息。表中各字段功能定义如表5-2所示。
| 中文字段名 | 英文字段名 | 字段类型 | 长度 | 主键/外键 | 字段值约束 |
| 帐号 | loginID | char | 6 | P/F | NOT NULL |
| 密码 | passWord | char | 6 | NOT NULL |
5.2.3 商品信息表
商品信息表(Goods_Info)用于存储商品的信息。表中各字段功能定义如表5-3所示。
| 中文字段名 | 英文字段名 | 字段类型 | 长度 | 主键/外键 | 字段值约束 |
| 商品编号 | merchID | char | 6 | P | NOT NULL |
| 供货商号 | profferID | char | 6 | F | NOT NULL |
| 名称 | fullName | nvarchar | 80 | NOT NULL | |
| 类别 | kind | nvarchar | 8 | NULL | |
| 单价 | unitCost | money | 4 | NOT NULL | |
| 备注 | others | ntext | 50 | NULL |
5.2.4 供货商信息表
供货商信息表(Sup_Info)用于存储供货商的信息。表中各字段功能定义如表5-4所示。
| 中文字段名 | 英文字段名 | 字段类型 | 长度 | 主键/外键 | 字段值约束 |
| 供货商号 | SupplierID | char | 6 | P | NOT NULL |
| 名称 | Name | nvarchar | 50 | NOT NULL | |
| 联系人 | contactPerson | nvarchar | 8 | NOT NULL | |
| 联系电话 | phone | varchar | 12 | NOT NULL | |
| 联系地址 | address | nvarchar | 50 | NOT NULL | |
| 备注 | others | ntext | 50 | NULL |
5.2.5 进货信息表
进货信息表(Buy)存储进货信息。表中各字段功能定义如表5-5所示。
| 中文字段名 | 英文字段名 | 字段类型 | 长度 | 主键/外键 | 字段值约束 |
| 进货单号 | BuyID | char | 6 | P | NOT NULL |
| 商品编号 | GoodsID | char | 6 | P/F | NOT NULL |
| 供货商号 | SupplierID | char | 6 | F | NOT NULL |
| 进货价 | Price | money | 4 | NOT NULL | |
| 数量 | Amount | int | 4 | NOT NULL | |
| 金额 | Sum | money | 4 | NOT NULL | |
| 进货日期 | Date | datetime | 8 | NOT NULL | |
| 备注 | Remark | ntext | 50 | NULL |
5.2.6 销售信息表
销售信息表(Sell)用于存储销售信息。表中各字段功能定义如表5-6所示。
| 中文字段名 | 英文字段名 | 字段类型 | 长度 | 主键/外键 | 字段值约束 |
| 销售单号 | SeelID | char | 6 | P | NOT NULL |
| 商品编号 | GoodsID | char | 6 | P/F | NOT NULL |
| 销售数量 | Amount | int | 4 | NOT NULL | |
| 销售日期 | Date | datetime | 8 | NOT NULL |
5.2.7 库存信息表
库存信息表(Stock)存储库存信息。表中各字段定义如表5-7所示。
| 中文字段名 | 英文字段名 | 字段类型 | 长度 | 主键/外键 | 字段值约束 |
| 商品编号 | GoodsID | char | 6 | P/F | NOT NULL |
| 库存数量 | Amount | int | 4 | NOT NULL |
5.3 创建数据库
(1)使用T—SQL语句创建超市商品管理系统数据库。
CREATE DATABASE db_SMMS ON PRIMARY
( NAME = N'db_SMMS', FILENAME = F:\\SMMS\\SMMS\\\\DataBase \\db_SMMS.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'db_SMMS_log', FILENAME = N'F:\\SMMS\\SMMS\\DataBase\\ db_SMMS_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
(2)使用T—SQL语句创建库存表。
CREATE TABLE Stock(
GoodsID varchar (10) COLLATE Chinese_PRC_CI_AS NOT NULL,
Amount int NOT NULL,
PRIMARY KEY (StockID),
FOREIGN KEY (GoodsID) REFERENCES tb_Goods(GoodsID));
(3)使用T—SQL语句创建库存视图。
create view v_StockS
AS
SELECT tb_Stock.StockID, tb_Goods.GoodsName, tb_Stock.Amount, tb_ Stock.Remark FROM
tb_Stock INNER JOIN tb_Goods ON tb_Stock.G
第6章 系统功能模块实现
6.1 系统登录模块
用户登录模块在本系统的首页。用户输入用户名和密码后,系统进行验证,验证通过进入程序的主界面。界面如图6-1所示。
图6-1 用户登录界面
主要实现代码如下:
public bool Veri(string tb_table, string Id, string Pwd)
{
tb_table + " where UserName='" + Id.Trim() + "'
and Pass='" + Pwd.Trim() + "'");
用户名或密码错误!", "提示",
MessageBoxButtons.OK, MessageBoxIcon.Information);
请将登录信息添写完整");
6.2 商品信息管理模块
此模块进行对商品信息的录入,能够对商品进行合理的管理,界面如图6-2所示。
图6-2 商品信息管理界面
主要实现代码如下:
private void btnAdd_Click(object sender, EventArgs e)
请输入商品名称!");
请输入商品单价!");
请选择商品类型!");
请输入保质期");
此商品名称已存在!");
获取编号
获取编号
+ "','" + txtName.Text + "','" + TypeID + "','" + txtRemark.Text + "'," + txtPrice.Text +
向库存添加信息
添加成功!");
添加失败");
6.3 职工信息管理模块
此模块有对职工的添加,修改,删除等功能,能够对用户进行合理的管理,界面如图6-2所示。
图6-3 职工信息管理界面
主要实现代码如下:
private void btnSave_Click(object sender, EventArgs e)
请添加职工姓名!");
获取编号
添加成功!");
修改成功!");
6.4 供货商信息管理模块
此模块有对供货商的添加,修改,删除等功能,能够对供货商进行合理的管理。界面如图6-3所示。
图6-4 供货商管理界面
主要实现代码如下:
private void btnSave_Click(object sender, EventArgs e)
请输入供货商名称!");
此供货商名称已存在!");
获取编号
添加成功!");
此供货商名称已存在!");
修改成功!");
6.5 添加销售信息模块
销售员将销售信息录入方便了销售工作,提高了工作效率。界面如图6-4所示。
图6-5 添加销售信息界面
主要实现代码如下:
private void button2_Click(object sender, EventArgs e)
商品数量" + Amount1+ " 件" + "\\n" + "\\n";
实付款 " + PayS + " 元" + "\\n" + "\\n";
应付款 " + TotalPrice.ToString() + " 元" + "\\n" + "\\n";
找零 元" ;
系统提示");
请购买商品!");
6.6 添加进货信息模块
录入进货信息加强对商品的管理,使商品信息更为详细,方便了对商品的管理。界面如图6-5所示。
图6-6 用添加进货信息界面
主要实现代码如下:
private void btnAdd_Click(object sender, EventArgs e)
请输入商品编号!");
请输入商品单价!");
请输入商品数量!");
请将生产日期填写完整!");
请将进货日期填写完整");
此商品不存在!");
获取编号
获取编号
+ "','" +txtID.Text + "','" + DataClass.MyMeans.Login_Name + "',"+txtPrice.Text +
向库存添加信息
添加成功!");
添加失败");
}
6.7 库存信息管理模块
库存信息管理能够使用户更为了解商品的库存情况,从而有利于商品的进货和销售的管理。界面如图6-6所示。
图6-7 库存信息管理界面
主要实现代码如下:
private void btnSearch_Click(object sender, EventArgs e)
请输入查询信息");
设置基数行的颜色
商品名称";
商品单价";
保质期";
库存数量";
}
6.8权限设置管理模块
对不同的用户分不同的权限,有利于系统的管理,只有超级管理员才具有分配权限的功能。界面如图6-7所示。
图6-8 权限设置界面
主要实现代码如下:
private void btnSave_Click(object sender, EventArgs e)
只遍历CheckBox控{
设置成功");
第7章 关键技术实现方法
7.1 身份验证
调用此方法来进行对用户信息的合法性验证,有利于提高系统的安全性。
主要实现代码如下:
public bool Veri(string tb_table, string Id, string Pwd)
{
tb_table + " where UserName='" + Id.Trim() + "'
and Pass='" + Pwd.Trim() + "'");
用户名或密码错误!", "提示",
MessageBoxButtons.OK, MessageBoxIcon.Information);
请将登录信息添写完整");
7.2 自动编号
通过此方法来自动进行编号,使用户的操作更为简便,提高了用户添加信息的效率。
主要实现代码如下:
public String GetAutocoding(string TableName, string ID)
查找指定表中ID号为最大的记录
if (MyDR.HasRows) //当查找到记录时
MyDR.Read(); //读取当前记录
将当前找到的最大编号转换成整数
最大编号加
将整数值转换成指定格式的字符串用填充字符
return s; //返回自动生成的编号
当数据表没有记录时,返回
7.3 设置文本框只能输入数字型字符串
通过此方法进行对用户的输入格式进行约束,从而提高数据的合法性。
主要实现代码如下:
public void Num_Jud(KeyPressEventArgs e, string s, int n)
if (n == 0) //只能输入整型
e.Handled = true; //处理KeyPress事件
可以输入整型或单精度型
if (e.KeyChar == '.') //如果输入“.”
if (s == "") //当前文本框为空
e.Handled = true; //处理KeyPress事件
当文本框不为空时
e.Handled = true; //处理KeyPress事件
结 论
经过半个月的努力,报告基本完成。从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达。历经了几个月的奋战,紧张而又充实的课程设计终于落下了帷幕。回想这段日子的经历和感受,我感慨万千,在这次课程设计的过程中,我拥有了无数难忘的回忆和收获。
我不会忘记这难忘的半个月的时间。课程报告的制作给了我难忘的回忆。在我徜徉书海查找资料的日子里,面对无数书本的罗列,最难忘的是每次找到资料时的激动和兴奋;理系统里,记忆最深的是每一步小小思路实现时那幸福的心情;为了报告我曾赶稿到深夜,但看着亲手设计超市商品管亲手打出的一字一句,心里满满的只有喜悦毫无疲惫。这段旅程看似荆棘密布,实则蕴藏着无尽的宝藏。我从资料的收集中,掌握了和巩固很多专业知识,让我对我所学过的知识有所巩固和提高,并且让我超市的发展及软件设计的最新发展技术有所了解。在整个过程中,我学到了新知识,增长了见识。在今后的日子里,我仍然要不断地充实自己,争取在所学领域有所作为。
致 谢
经过半个月的艰苦努力,我终于完成了超市商品管理系统的全部设计过程,并使该系统达到可实际应用的阶段。
软件设计是一个精细漫长的过程。在整个过程中,都需要周密的计划和安排,每一步骤,都需要按照软件工程标准来完成。在设计中,我始终坚持理论指导实践原则,并通过实践来加强理论的学习,通过学习锻炼,我熟悉了软件的一般过程,加强了对实际问题的处理能力。实践证明,在高科技突飞猛进的时代,光靠课堂所学的知识是远远不够的,必须依靠实践去不断的深化认识,尤其是计算机科学,操作性和实践性很强,只有加强实际的动手能力,才能更好的掌握这一现代化工具。
这次学习,无论是从技术上还是对环境的适应能力上讲,对我今后步入社会都打下了一个良好的基础。在学习过程中,我也遇到了一些困难,主要表现了技术和经验的欠缺,但通过努力,终于一一克服了。
在整个学习期间,曾得到了贾老师以及同学的大力支持和帮助,在此表示衷心的感谢!
参考文献
[1] 张基温,陈佳, 信息系统开发 清华大学出版社 2006年
[2] 卫红春, 信息系统分析与设计 西安电子科技大学出版社 2003年
[3] 黄梯云 , 管理信息系统 高等教育出版社 2005年
[4]方美琪 陈禹, 软件开发工具 经济科学出版社 2008年
[5]王珊, 数据组织与管理 经济科学出版社 1996年
[6]袁然,王诚梅,SQL Server 2005数据库简明教程 电子工业出版 2006 年
| 指导教师评语及设计成绩 | 评 语 |
课程设计成绩:
指导教师: 日期: 年 月 日 |
