课 程 设 计 论 文
基于C#的网上花店系统的设计与实现
THE DESIGN AND REALIZATION OF Online florist SYSTEM ON
THE C#
学生姓名:尚 硕
学 号: 201120212031 年级专业:2011级计算机应用一班 指导老师:顾军华老师
2011年 12月28 日
课程设计报告
目 录
摘 要 ....................................................................................................................... 2 一、需求分析 ............................................................................................................ 2
1.1开发背景和意义 ............................................................................................ 2 1.2功能需求分析 ............................................................................................... 3 1.3性能需求分析 ............................................................................................... 4 1.4数据库需求分析 ............................................................................................ 4
二、概念结构设计 ..................................................................................................... 6 三、逻辑结构设计 ..................................................................................................... 7 四、物理结构设计与实现 .......................................................................................... 7 五、详细功能设计与实现 .......................................................................................... 9
5.1登陆模块设计与实现 ..................................................................................... 9 5.2主菜单模块设计与实现 ...................................................... 错误!未定义书签。 5.3职工基本信息管理模块设计与实现 .................................... 错误!未定义书签。 5.4工资档案模块设计与实现 .................................................. 错误!未定义书签。 5.5奖惩情况模块设计与实现 .................................................. 错误!未定义书签。
5.6工资发放模块设计与实现 .... 错误!未定义书签。5.7考勤信息模块设计与实现 5.8用户管理模块设计与实现 .................................................. 错误!未定义书签。
六、总结 ...................................................................................... 错误!未定义书签。6 参考文献 ............................................................................................................... 197 致 谢 ...................................................................................... 错误!未定义书签。7
《网上花店系统》设计文档
作 者:尚硕
- 2 -
错误!未定《C#》课程设计报告
指导老师:顾军华
摘 要:
现如今,随着经济的不断发展,有越来越多的人喜欢网上购物。有些人把网上购物作为一种时尚,不过更主要的,网上购物可以节约时间且操作方便。这说明随着生活节奏的加快,人们已经把网上购物作为生活的一部分。所以,我做这个系统的目的就是想模拟网上购物系统,不能和现在的网购系统相比,有很大的差距。
关键词:C# SQL Server2000数据库 网上花店系统
一、需求分析
1.开发背景和意义
管理信息系统就是我们常说的MIS(Management InformationSystem),在强调管理,强调信息的现代社会中它变得越来越普及。传统的登记表的做法极大的影响了工作流程效率和数据的正确性、完整性、安全性,已经逐渐落后于时代。利用软件管理系统代替手工的企业工资管理,将会大大提高工作效率。
用户的需求具体体现在各种信息的提供、保存、更新和查询上,这就要求数据库的结构能充分满足各种信息的输出和输入。需求分析阶段主要是收集基本数据,确定数据结构及数据处理的流程,组成一份详尽的数据字典,以便为后面的概念设计和逻辑设计打下基础。 2.功能需求分析
系统主要包括职工,部门的基本信息管理,工资的计算和管理,职工的管理制度,管理员和用户的管理三大功能模块,以下为各部分的详细介绍: 职工,部门的基本信息管理功能包括:
对工作人员基本信息的增、删、改; 按职工编号查询员工信息; 对部门基本信息的增、删、改、查; 按部门名称查询该部门的人员信息; 工资的计算和管理功能包括:
职工工资档案的修改和查询; 职工奖惩情况的修改和查询;
职工的工资由工资档案和奖惩情况计算得出结果,包括修改和查询; 根据职工工资总额查找一定范围工资的职工基本信息等等; 职工制度的管理功能包括:
职工的表现情况的增、删、改;
-19-
《C#》课程设计报告
职工考勤情况的增、删、改等等; 管理员和用户的管理功能包括:
以管理员登录可以对所有的功能模块进行操作;
以用户身份登录只能查看自己的基本信息,修改自己的密码; 系统功能图如下:
工资管理系统 职工信息管理 部门信息管理 工资管理制度 管理制度 系统职工基本信息 职工信息查询 部门信息操作 部门信息查询 部门变动情况 工资档案 职工奖惩情况 工资发放情况 职工考勤 职工调动 退出系统
系统功能图
3. 性能需求分析
安全性:设立口令号和密码验证方式,防止非法用户登录进行操作,用户凭口令号和密码进入此系统,可以更改密码。 4.数据库需求分析
登录信息 寻找信息 用 户 信息错误 登 录 操 作 返回信息 数据库
图1.2 数据库需求分析——数据流图
-19-
《C#》课程设计报告
生成数据字典: 1).数据项描述 数据项名称:职工编号 别名:zgbh
含义说明:惟一标识一个职工的代号 类型:varchar 长度:50 其它数据项略 2).数据结构描述 名称:部门 含义说明:定义了一个部门的有关信息 组成结构:部门编号、部门名称、部门人数、负责人、联系电话 名称:工资 含义说明:定义了一个职工的工资信息 组成结构:编号、姓名、岗位工资、部门、基本工资、补贴、公积金、备注 名称:考勤 含义说明:定义了一个职工考勤的有关信息 组成结构:编号、姓名、部门、加班、请假、旷班、备注 名称:职工 含义说明:定义了一个职工的有关信息 组成结构:编号、姓名、部门、性别、出生日期、民族、婚否、职称、政治面貌、身份证号、学历、入职时间、家庭住址、联系电话、简历、备注 名称:奖惩 含义说明:定义了一个职工奖惩的有关信息 组成结构:编号、姓名、部门、奖惩说明、奖惩类型、奖惩日期,、备注 3).数据流(非数据项)说明
-19-
《C#》课程设计报告
数据流名称:新职工登记表 含义:新职工入职时填写的数据表格 来源:管理人员 去向:录入职工档案 数据流量:不定 组成:编号、姓名、部门、性别、出生日期、民族、婚否、职称、政治面貌、身份证号、学历、入职时间、家庭住址、联系电话、简历、备注 数据流名称:工资档案表 含义:管理部门对员工工资的记录的工资数据 来源:管理人员 去向:录入工资档案表 数据流量:不定 组成:编号、姓名、岗位工资、基本工资、津贴、补贴、公积金、备注 数据流名称:查询结果 含义:领导、管理人员、员工需要了解自己工资的情况等原始数据及统计信息 来源:查询处理 去向:领导、管理人员、职工 数据流量:不定 组成:工资发放信息和考勤信息等原始数据及统计信息
4)数据存储说明 (以其中的三个表为例说明)
数据存储名称:职工基本档案表 含义说明:存放职工档案信息 存储方式:一条记录存储一个职工的档案信息,整个表存储所有职工的档案信息 -19-
《C#》课程设计报告
处理要求:增、删、改和查询、排序 说明:编号用来唯一标识一个职工 数据存储名称:工资档案表 含义说明:存放工资的基本信息 存储方式:一条记录存储一个职工的基本信息,整个表存储所有职工的工资信息 处理要求:增、删、改和查询、排序 说明:编号用来唯一标识一个职工工资 数据存储名称:考勤信息 含义说明:存放职工考勤的信息 存储方式:一条记录存储一个职工某年某月的考勤信息,整个表存储所有职工的考勤信息 处理要求:增、删、改和查询、排序以及统计 说明:姓名和考勤日期和用来唯一标识某个职工某年某月的的考勤信息 二、概念结构设计
姓 名 职 称 性 别 年 龄 -19- 电话号码 职工基本信息 家庭住址 政治面貌 《C#》课程设计报告
民 族 婚 否 姓 名 备 注 固定工资 工资发放表 发放日期 奖惩金额 工资总额 其它加 其它扣 职工编号 备 注 姓 名 公积金 工资档案表 基本工资 五 险 津 贴 岗位工资
图2.1 部分概念结构图
三、逻辑结构设计
四、物理结构设计与实现 物理结构设计的原则如下:
(1) 尽可能的减少数据冗余和重复。 (2) 结构设计与操作设计相结合。 (3) 数据结构具有相对的稳定性。
-19-
《C#》课程设计报告
基于以上设计原则,本系统设计了一个数据库,包含职工基本信息表、部门信息表、工资档案、奖惩表、工资发放表、考勤表、职工调动表、用户表等表。本系统中相关数据库表结构设计举例如下:
职工基本信息表
字段名 职工编号 姓 名 职 称 性 别 年 龄 民 族 婚 否 政治面貌 家庭住址 电话号码 部门名称 部门信息表 字段名 部门编号 部门名称 数据类型 int Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 Varchar2 长度 4 50 50 50 50 50 50 50 50 50 50 字段值约束 Not null Not null 主外键 p 数据类型 char char 长度 10 10 -19-
字段值约束 主外键 Not null p 《C#》课程设计报告
部门人数 负责人 电 话 工资档案
char char char 10 10 10 字段名 职工编号 姓 名 基本工资 岗位工资 津 贴 五 险 公积金 备 注 奖惩表
数据类型 int Varchar2 float float float float float Varchar2 长度 4 50 8 8 8 8 8 50 字段值约束 Not null Not null 主外键 p 字段名 职工编号 姓 名 奖励金额 惩罚金额 奖惩日期 数据类型 int Varchar2 float float Varchar2 长度 4 50 8 8 50 字段值约束 Not null Not null 主外键 p -19-
《C#》课程设计报告
备 注 工资发放表
Varchar2 50 字段名 职工编号 姓 名 固定工资 奖惩金额 其它加 其它扣 工资总额 备 注 用户表 字段名 用户名 口 令 密 码 数据类型 int Varchar2 float float float float float Varchar2 长度 4 50 8 8 8 8 8 50 字段值约束 Not null Not null 主外键 p 数据类型 int Varchar2 Varchar2 长度 4 50 50 字段约束值 主外键 Not null p 五、部分详细设计及功能实现 用户登录窗口
-19-
《C#》课程设计报告
核心代码如下:
if (oper.LoginSystem(userName.Text, Pwd.Text,Indentify.Text).Tables[0].Rows.Count > 0)
{
if (Indentify.Text == \"管理员\")
{
frMain main = new frMain();
main.Show();
this.Visible = false; } else {
用户使用
useruse= new 用户使用(userName.Text,Indentify.Text);
useruse.Show(); this.Visible = false; } } else {
MessageBox.Show(\"操作员用户名称或密码错误,请重新输入!\", \"系统提示\", MessageBoxButtons.OK, MessageBoxIcon.Information);
userName.Focus(); } }
主窗体设计
-19-
《C#》课程设计报告
核心代码如下:
private
void
treeView_NodeMouseClick(object
case \"职工信息\": ds oper.GetDataSetWorkersIn(); break; case \"部门信息\": ds oper.GetDataSetDepartIn(); break; case \"调动信息\": ds oper.GetDataSetChangeIn(); break; case \"用户信息\": ds oper.GetDataSetUsers();
break; case \"考勤信息\": ds oper.GetDataSetKaoQin(); break; case \"工资档案\": ds oper.GetDataSetWageRecord();
=
break; case \"工资管理\": ds
= = = = = = =
sender, TreeNodeMouseClickEventArgs e) {
DataSet ds = null; txtCount.Visible = false;
if (e.Node.Text == \"工资管理系统 yi\")
{
MessageBox.Show(\"欢迎使用本工资管理系统!\", \"系统提示\", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); }
else if (e.Node.Text == \"工资计算\") {
txtCount.Visible = true; } else {
switch (e.Node.Text) {
case \"基本信息\": ds oper.GetDataSetWorkersIn(); break;
-19-
《C#》课程设计报告
oper.GetDataSetSendWage(); break; case \"工资发放\": ds oper.GetDataSetSendWage(); break; case \"奖惩制度\": ds
= =
oper.GetDataSetReward(); break; }
WageView.DataSource ds.Tables[0].DefaultView; } }
=
职工基本信息
核心代码如下:
private void workerInfo_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
txtId.Text g();
txtName.Text g();
txtZhicheng.Text g();
txtXingbie.Text
=
workerInfo.SelectedRows[0].Cells[3].Value.ToStrin
=
workerInfo.SelectedRows[0].Cells[2].Value.ToStrin
=
workerInfo.SelectedRows[0].Cells[1].Value.ToStrin
=
workerInfo.SelectedRows[0].Cells[0].Value.ToStrin
g();
txtNianling.Text g();
txtHunfou.Text g();
txtMinzu.Text g();
txtMianmao.Text g();
txtZhuzhi.Text
= =
workerInfo.SelectedRows[0].Cells[7].Value.ToStrin
=
workerInfo.SelectedRows[0].Cells[6].Value.ToStrin
=
workerInfo.SelectedRows[0].Cells[5].Value.ToStrin
=
workerInfo.SelectedRows[0].Cells[4].Value.ToStrin
-19-
《C#》课程设计报告
workerInfo.SelectedRows[0].Cells[8].Value.ToString();
txtDianhua.Text g();
txtBumen.Text =
=
workerInfo.SelectedRows[0].Cells[9].Value.ToStrin
txtHunfou.Text = \"\"; txtMianmao.Text = \"\"; txtZhuzhi.Text = \"\"; txtDianhua.Text = \"\"; txtBumen.Text = \"\"; txtMinzu.Text = \"\";
workerInfo.SelectedRows[0].Cells[10].Value.ToStri
ng(); }
private void
btnDelete_Click(object
sender, EventArgs e)
{
DataSet ds = null; if (txtId.Text != \"\") { int
i=
oper.DeleteWorkersIn(txtId.Text.ToString()); ds = oper.GetDataSetWorkersIn();
workerInfo.DataSource = ds.Tables[0].DefaultView; } else { int i
=
oper.DeleteWorkersIn(workerInfo.SelectedCells[0].
Value.ToString()); ds =
oper.GetDataSetWorkersIn();
workerInfo.DataSource = ds.Tables[0].DefaultView; }
txtId.Text = \"\"; txtName.Text = \"\"; txtZhicheng.Text = \"\"; txtXingbie.Text = \"\"; txtNianling.Text = \"\";
工资发放情况设计
MessageBox.Show(\"数据删除成功!\", \"系统提示\", MessageBoxButtons.OK, MessageBoxIcon.Information); }
private void btnAdd_Click(object sender, EventArgs e) {
DataSet ds = null; if(txtId.Text==\"\")
MessageBox.Show(\"职工编号不能为空!\", \"系统提示\", MessageBoxButtons.OK, MessageBoxIcon.Information);
else if (txtName.Text == \"\") MessageBox.Show(\"职工姓名不能为空!\", \"系统提示\", MessageBoxButtons.OK, MessageBoxIcon.Information); else { int i
=
oper.InsertWorkersIn(txtId.Text,
txtName.Text,
txtZhicheng.Text, txtXingbie.Text, txtNianling.Text, txtHunfou.Text, txtMinzu.Text, txtMianmao.Text, txtZhuzhi.Text, txtDianhua.Text, txtBumen.Text); ds =
oper.GetDataSetWorkersIn();
workerInfo.DataSource = ds.Tables[0].DefaultView; }
MessageBox.Show(\"数据添加成功!\", \"系统提示\", MessageBoxButtons.OK, MessageBoxIcon.Information); }
-19-
《C#》课程设计报告
核心代码如下:
private
void
id_SelectedIndexChanged(object
private void Exit_Click(object sender, EventArgs e) {
new frMain().Show();
= = = = = = = = =
this.Visible = false; }
private
Wagefafang_CellMouseClick(object DataGridViewCellMouseEventArgs e) {
id.Text ng();
name.Text ng();
Gdgz.Text ng();
Jcje.Text ng();
Qtj.Text
= =
Wagefafang.SelectedRows[0].Cells[3].Value.ToStri
=
Wagefafang.SelectedRows[0].Cells[2].Value.ToStri
=
Wagefafang.SelectedRows[0].Cells[1].Value.ToStri
=
Wagefafang.SelectedRows[0].Cells[0].Value.ToStri
void sender,
sender, EventArgs e) {
DataSet ds = new DataSet(); ds
oper.GetDataSetSendWage(id.Text); name.Text
ds.Tables[0].Rows[0][1].ToString(); Gdgz.Text
ds.Tables[0].Rows[0][2].ToString(); Jcje.Text
ds.Tables[0].Rows[0][3].ToString(); Qtj.Text
ds.Tables[0].Rows[0][4].ToString(); Qtk.Text
ds.Tables[0].Rows[0][5].ToString(); Gzze.Text
ds.Tables[0].Rows[0][6].ToString(); Ffrq.Text
ds.Tables[0].Rows[0][7].ToString(); Beizhu.Text ds.Tables[0].Rows[0][8].ToString(); }
-19-
《C#》课程设计报告
Wagefafang.SelectedRows[0].Cells[4].Value.ToString();
Qtk.Text ng();
Gzze.Text ng();
Ffrq.Text =
=
Wagefafang.SelectedRows[0].Cells[6].Value.ToStri
=
Wagefafang.SelectedRows[0].Cells[5].Value.ToStri
}
private void Modify_Click(object sender, EventArgs e) {
DataSet ds = null; if (id.Text == \"\")
MessageBox.Show(\"职工编号不能为空!\", \"系统提示\", MessageBoxButtons.OK, Wagefafang.SelectedRows[0].Cells[7].Value.ToStri
ng();
Beizhu.Text =
Wagefafang.SelectedRows[0].Cells[8].Value.ToStri
ng(); }
private void Qtk_TextChanged(object sender, EventArgs e) {
Int Gdgz1
= Convert.ToInt16(Gdgz.Text); int Jcje1
=
Convert.ToInt16(Jcje.Text); int Qtj1
=
Convert.ToInt16(Qtj.Text); int Qtk1
=
Convert.ToInt16(Qtk.Text);
int Gzze1 = Gdgz1 + Jcje1 - Qtk1 + Qtj1;
Gzze.Text=Gzze1.ToString();
用户修改密码窗体设计
MessageBoxIcon.Information); else { int i
=
oper.UpdateSendWage(id.Text, name.Text,
Gdgz.Text, Jcje.Text, Qtj.Text, Qtk.Text, Gzze.Text,
Ffrq.Text, Beizhu.Text); ds =
oper.GetDataSetSendWage();
Wagefafang.DataSource = ds.Tables[0].DefaultView;
MessageBox.Show(\"数据修改成功!\", \"系统提示\", MessageBoxButtons.OK, MessageBoxIcon.Information); } ReFresh(); }
-19-
《C#》课程设计报告
核心代码如下:
private void Modify_Click(object sender, EventArgs e) {
string mima = Test(); // Shenfen.Text = mima; if (Username.Text == \"\")
MessageBox.Show(\"用户名不能为空\"); else if (mima==\"\")
MessageBox.Show(\"该用户不存在!\"); else if(mima!=Jmm.Text.ToString())
MessageBox.Show(\"输入的密码不正确!\");
else if (Xmm.Text != Cxmm.Text||Xmm.Text==\"\"||Cxmm.Text==\"\") MessageBox.Show(\"修改的密码不确定,请重新修改!\"); else {
int i = oper.UpdateUsers(Username.Text,Xmm.Text,Shenfen.Text); MessageBox.Show(\"修改成功!\"); Refresh(); } }
普通用户使用窗体设计
-19-
《C#》课程设计报告
核心代码如下:
private void button1_Click(object
EventArgs e) {
DataSet ds = new DataSet(); ds
oper.GetDataSetWorkersIn_Gzff(id.Text); name.Text = ds.Tables[0].Rows[0][\"姓名\"].ToString();
Zhicheng.Text
ds.Tables[0].Rows[0][\"职称\"].ToString(); Bmmc.Text
ds.Tables[0].Rows[0][\"部门名称\"].ToString(); Nianling.Text
ds.Tables[0].Rows[0][\"年龄\"].ToString(); Xingbie.Text
ds.Tables[0].Rows[0][\"性别\"].ToString(); Minzu.Text
ds.Tables[0].Rows[0][\"民族\"].ToString(); Zzmm.Text
ds.Tables[0].Rows[0][\"政治面貌\"].ToString(); Jtzz.Text = ds.Tables[0].Rows[0][\"家庭住址\"].ToString(); Hunfou.Text
= = = = = = = =
sender, ds.Tables[0].Rows[0][\"婚否\"].ToString();
ds
oper.GetDataSetChangeIn(id.Text);
Ybm.Text = ds.Tables[0].Rows[0][\"原部门\"].ToString();
Xbm.Text = ds.Tables[0].Rows[0][\"现部门\"].ToString();
Ddrq.Text = ds.Tables[0].Rows[0][\"调动日期\"].ToString();
ds
oper.GetDataSetKaoQin(id.Text); Qingjia.Text
ds.Tables[0].Rows[0][\"请假\"].ToString(); Kuanggong.Text
ds.Tables[0].Rows[0][\"旷工\"].ToString();
Jiaban.Text = ds.Tables[0].Rows[0][\"加班\"].ToString();
Kqrq.Text = ds.Tables[0].Rows[0][\"考勤日期\"].ToString();
ds
= = = = =
-19-
《C#》课程设计报告
oper.GetDataSetSendWage(id.Text);
Gdgz.Text=ds.Tables[0].Rows[0][\"固定工资\"].ToString();
Jcje.Text=ds.Tables[0].Rows[0][\"奖惩金额\"].ToString();
Qtj.Text=ds.Tables[0].Rows[0][\"其它加\"].ToString();
Qtk.Text=ds.Tables[0].Rows[0][\"其它扣\"].ToString();
Gzze.Text=ds.Tables[0].Rows[0][\"工资总额\"].ToString();
Ffrq.Text = ds.Tables[0].Rows[0][\"发放日期\"].ToString(); }
六、总结
虽然到目前为止做了几个MIS了,但这次给我的体会和感悟比前几次都要深刻。首先,sql数据库让我感到了数据库的作用之大,功能之强,使用方便。以前总以为数据库没什么大作用,因为根本除了建表外也没什么关键作用,但是通过这次做工资管理系统,深深地领悟到了数据库的作用。一个好的MIS系统,首先要看数据库设计的是否合理,是否能保证数据的一致性,完整性和安全性等等诸多方面。其次,C#,通过本次课程设计,明白了C#能“驰骋江湖”的原因,作为一种面向对象的编程工具,它的确有着无人能比的强大功能和方便性。它给编程者带来了超强的编程便捷性,使他们能不用面对复杂的代码和杂乱的命令也能做出非常好的软件。
参考文献
[1] C#编程及应用程序开发教程 清华大学出版社 2007.5 [2] 数据库系统原理及应用教程 机械工业出版社 2008.4
致谢
每一次做完课程设计都有许多要感谢的人,因为一个人的力量是有限的,集体的力量才是伟大的。感谢朱老师这半学期的教导,感谢同学的不耐其烦的
-19-
《C#》课程设计报告
帮助,也感谢一直默默支持我们学习的辛劳的父母,我们虽然还有很多不完善的地方,但是我们会好好学习,一定发挥自己最大的水平。
-19-
因篇幅问题不能全部显示,请点此查看更多更全内容