资源描述
数据库课程设计
设计题目: 工资管理系统
班 级: BX0901
学 号:
姓 名:
目录
一 绪论 ··········································3
二 需求分析 ·······································3
三 概要设计 ·······································4
四 物理设计 ·······································5
五 详细设计 ·······································6
六 调试分析 ·······································9
七 小结 ·············································16
八 参考文献···········································16
一、绪论
随着计算机技术的飞速发展和经济体制改革的不断深入,传统企业管理方法、手段以及工作效率已不能适应新的发展需要,无法很好地完成员工工资管理工作。提高公司企业管理水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。基于 C#与SQL server数据库技术建立一个通用工资管理系统,该系统为提供了查询、增加记录、删除等功能,功能比较的齐全,并对工资进行了统计如津贴管理、报表统计等。基本上能满足管理员和公司的要求。
此次数据库课程设计的主要设计如下:
原理分析、程序设计过程、程序实现和程序调试以及数据库的设计。
需求分析、概要结构设计、逻辑结构设计、物理结构设计和数据库的实施和维护。
主要包括三大功能模块:
1. 进入界面设计。
2. 员工管理界面设计。
二、 需求分析
功能需求分析:
该通用工资管理系统具备下列功能:管理员通过输入用户名和密码进下该系统后,可以进行一些基本查询(员工信息查询、部门领导信息查询、工资奖金信息查询)、工资管理(基本工资及津贴奖金设定、计算总工资、津贴管理、加班工资管理);通过输入密码,可以进行查询员工的数据(工资,奖金津贴,加班情况).
具体功能的详细描述如下
1. 用户名和密码即可进入[工资管理]功能窗体,在其中输入员工的相关信息, 按[查询]就可查找信息。
2. 点击[工资查询界面]功能窗体,输入员工号即可查询员工工资信息。
3. 点击[津贴查询界面]功能窗体,输入员工号即可查询员工津贴信息.
4. 点击[添加员工]功能窗体,输入员工号,点击快速添加即可添加员工。
5. 点击[删除员工]功能窗体,输入员工号,即可删除员工。
数据流需求分析:
登陆信息 返回信息
用 户
登 录
操 作
数据库
错误信息 寻找信息
数据库需求分析——数据流图
三、概要设计
根据需求分析阶段得到的功能需求,管理员、员工通过输入用户名号和密码进下该系统后,可以进行一些基本查询(员工工资信息查询、津贴信息查询)、还可以进行员工删除和添加员工的操作,员工通过登录并输入密码,可以进行查询自己的数据(工资,津贴)。
模块功能大概可以分为如下5个方面:这几个模块工资管理、添加和删除员工,登陆、退出。工资管理包括基本工资查询、津贴查询,添加员工、删除员工等。综上所述,得到客户端功能模块图如下图所示。
工资查询
登陆
显示界面
删除员工
添加员工
津贴查询
四、物理设计
1。 选择[登陆] 则会进入相应登陆界面.
2。 选择[工资查询] [津贴查询] [添加员工][删除员工][显示所有]菜单命令
3. 选择[工资查询界面]菜单命令即可进入 [工资查询]功能窗体。
4. 选择[津贴查询界面]菜单命令即可进入 [津贴查询]功能窗体。
5。 选择[添加员工]菜单命令即可进入 [添加员工]功能窗体.
6。选择[删除员工]菜单命令即可进入 [删除员工]功能窗体.
7. 选择[返回]将返回整个系统。
五、详细设计
(1) 数据库的E-R图及合并部分视图生成E—R 图
员工信息E—R图:
Worker
基本工资
工种号
部门
年龄
工种名称
用户名
性别
员工工资信息E-R图:
salary
工资
基本工资
奖金
员工号
总工资
年月
管理员用户E-R图:
useman
用户
用户号
密码
津贴管理E-R图:
jintie
员工号
加班费用
误工数
误工费
加班时间
(2) 数据库结构设计
根据上面概念结构设计阶段得到的E—R图,下一步应该将它转化为关系模型。可以得到对应的关系模式为:
Worker(工种号,基本工资,工种名称,部门,用户名,性别,年龄)
Salary(工资,员工号,基本工资,奖金,年月,总工资)
Usemen(用户号,用户,密码)
Jintie(员工号,加班时间,加班费用,误工数,误工费)
数据库表的建立:(sql语句及截图)
语句如下:
Create table worker
( 工种号 nchar(10) primary key,
工种名称 nchar(16),
基本工资 int,
部门 nchar(16),
用户名 nchar(16),
性别 char(4) check(性别in(‘男’,’女’)),
年龄 int
);
Create table salary
( 员工号 nchar(10) primary key,
工资 int,
基本工资 int,
奖金 int,
总工资 int,
年月 smalldatime
)
Create table usemen
( 用户号 nchar(10) primary key,
用户 int,,
密码 int,
)
六、调试分析
(1)数据库的表的建立与实现
Work 表的建立:
Salary表的建立:
Usemen表的建立:
Jintie表的建立:
1. 数据库的运行和截图:
登录界面截图,这里输入:
登录后:
查询工资界面:
津贴查询界面:
添加员工界面:
删除员工界面:
显示所有信息:
(2)调试与运行程序分析及存在的主要问题
在此次课程设计中的主要数据库部分为数据库的连接部分,该部分直接影响到数据库与应用程序的接口实现,而且必须注意数据库的名称与连接数据库是取的名称一致。下面是连接数据库部分的代码:
1。 连接数据库
C#语言代码如下:
界面:
namespace login
{
public partial class login : Form
{
static String strconn = @”server=。\SQLEXPRESS;database=工资查询系统;Integrated Security=True";
static SqlConnection conn = new SqlConnection(strconn);
public login()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
String strsql = ”use 工资查询系统 select * from userman where 用户=’”
+ textBox1。Text + ”’and 密码=’” + textBox2.Text + "'”;
try
{
conn。Open();
SqlCommand com = new SqlCommand(strsql, conn);
if (com。ExecuteScalar() != null)
{
this。Hide();
chaxunjiemian cx = new chaxunjiemian();
cx。ShowDialog();
}
else
{
MessageBox。Show(”密码错误!");
}
}
catch (Exception ce) { }
finally
{ conn。Close(); }
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
}
}
添加员工:
namespace login
{
public partial class tianjiayuangong : Form
{
String strcn = @”server=.\SQLEXPRESS;database=工资查询系统;Integrated Security=True”;
public tianjiayuangong()
{
InitializeComponent();
}
private void button1_Click_1(object sender, EventArgs e)
{
try
{
//string kind = "";
char yg = new char();
float jbgz = new float();
string 员工号 = textBox1。Text。Trim();
string 基本工资 = textBox2.Text.Trim();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = strcn;
conn。Open();
SqlDataAdapter ad = new SqlDataAdapter("USE 工资查询系统SELECT 基本工资,员工号,奖金工资,总工资FROM salary where 员工号=’” + textBox1.Text + ”’”, conn);
SqlCommand cmd1 = new SqlCommand("select * from salary", conn);
SqlDataAdapter sda1 = new SqlDataAdapter();
sda1.SelectCommand = cmd1;
DataSet ds1 = new DataSet();
sda1。Fill(ds1, ”salary");
// if (ds1。Tables["FL”].Rows[0][0] == null)
//Loan = 0。0f;
jbgz = float。Parse(ds1。Tables["salary"]。Rows[8][1]。ToString()) - float.Parse(ds1.Tables["salary”].Rows[8][0].ToString());
cmd1。CommandText = ”insert into salary(员工号,基本工资) values(\'” + 员工号 + ”\’,\'" + 基本工资+ ”\’)";
sda1.InsertCommand = cmd1;
sda1.Fill(ds1, ”salary”);
conn。Close();
MessageBox。Show("添加成功!”);
}
catch (Exception e2)
{
MessageBox。Show(e2。Message);
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
this。Hide();
chaxunjiemian cx = new chaxunjiemian();
cx。ShowDialog();
}
}
}
查询工资:
namespace login
{
publicpartialclasschaxungongzi : Form
{
String strcn = @"server=。\SQLEXPRESS;database=工资查询系统;Integrated Security=True";
public chaxungongzi()
{
InitializeComponent();
}
privatevoid button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection conn = newSqlConnection();
conn。ConnectionString = strcn;
conn。Open();
SqlDataAdapter ad = newSqlDataAdapter("USE 工资查询系统 SELECT 基本工资,员工号,奖金,工资,总工资 FROM salary where 员工号='”+textBox1.Text+"’”,conn);
DataSet ds = newDataSet();
ad.Fill(ds, ”student”);
DataTable table = ds。Tables[0];
dataGridView1。DataSource = table;
}
catch (Exception ce)
{ MessageBox。Show(ce.Message); }
finally
{}
}
privatevoid button2_Click(object sender, EventArgs e)
{
this.Hide ();
chaxunjiemian cx = newchaxunjiemian();
cx。ShowDialog();
}
}
}
查询界面:
namespace login
{
publicpartialclasschaxunjiemian : Form
{
staticString strconn = @”server=.\SQLEXPRESS;database=工资查询系统;Integrated Security=True";
staticSqlConnection conn = newSqlConnection(strconn);
public chaxunjiemian()
{
InitializeComponent();
}
privatevoid button1_Click(object sender, EventArgs e)
{
conn。Open();
this.Hide();
chaxungongzi cx = newchaxungongzi();
cx。ShowDialog();
}
privatevoid button2_Click(object sender, EventArgs e)
{
conn。Open();
this。Hide();
jintiechaxun cx = newjintiechaxun();
cx。ShowDialog();
}
privatevoid button3_Click(object sender, EventArgs e)
{
conn。Open();
this。Hide();
tianjiayuangong cx = newtianjiayuangong();
cx.ShowDialog();
}
privatevoid button4_Click(object sender, EventArgs e)
{
conn.Open();
this.Hide();
shanchuyuangong cx = newshanchuyuangong();
cx。ShowDialog();
}
privatevoid button5_Click(object sender, EventArgs e)
{
conn。Open();
this.Hide();
xianshisuoyou cx = newxianshisuoyou();
cx。ShowDialog();
}
}
}
津贴查询:
namespace login
{
publicpartialclassjintiechaxun : Form
{
String strcn = @"server=。\SQLEXPRESS;database=工资查询系统;Integrated Security=True";
public jintiechaxun()
{
InitializeComponent();
}
privatevoid button1_Click_1(object sender, EventArgs e)
{
try
{
SqlConnection conn = newSqlConnection();
conn.ConnectionString = strcn;
conn.Open();
SqlDataAdapter ad1 = newSqlDataAdapter(”USE 工资查询系统 SELECT 员工号,加班时间,加班费用,误工数,误工费 FROM jintie where 员工号=’” + textBox1。Text + ”'", conn);
DataSet ds1 = newDataSet();
ad1。Fill(ds1, "student2”);
DataTable table1 = ds1。Tables[0];
dataGridView1。DataSource = table1;
}
catch (Exception ce)
{ MessageBox.Show(ce.Message); }
finally
{ }
}
privatevoid button2_Click(object sender, EventArgs e)
{
this。Hide();
chaxunjiemian cx = newchaxunjiemian();
cx.ShowDialog();
}
}
}
删除员工界面:
namespace login
{
publicpartialclassshanchuyuangong : Form
{
String strcn = @"server=.\SQLEXPRESS;database=工资查询系统;Integrated Security=True";
public shanchuyuangong()
{
InitializeComponent();
}
privatevoid button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection conn = newSqlConnection();
conn.ConnectionString = "server=(local);uid=sa;pwd=13587703533;database=工资查询系统;”;
SqlCommand cmd = newSqlCommand();
cmd。CommandText = ”delete from salary where 员工号=” + this.textBox1.Text + ”";
//根据学生的编号来删除相应的学生的信息
cmd.Connection = conn;
conn.Open();//打开连接
cmd.ExecuteNonQuery();//用ExecuteNonQuery()的方法来执行查询语句
conn.Close();//关闭连接
}
catch (Exception ce)
{ MessageBox.Show(ce。Message); }
finally
{ }
}
privatevoid textBox1_TextChanged(object sender, EventArgs e)
{
}
privatevoid button2_Click(object sender, EventArgs e)
{
try
{
SqlConnection conn = newSqlConnection();
conn。ConnectionString = ”server=(local);uid=sa;pwd=13587703533;database=工资查询系统;";
SqlCommand cmd = newSqlCommand();
cmd。CommandText = "delete from jintie where 员工号=" + this。textBox1。Text + "";
//根据学生的编号来删除相应的学生的信息
cmd.Connection = conn;
conn.Open();//打开连接
cmd。ExecuteNonQuery();//用®?ExecuteNonQuery()的方法来执行查询语句?
conn。Close();//关闭连接
}
catch (Exception ce)
{ MessageBox。Show(ce。Message); }
finally
{ }
}
}
}
显示所有:
namespace login
{
publicpartialclassxianshisuoyou : Form
{
String strcn = @”server=。\SQLEXPRESS;database=工资查询系统;Integrated Security=True”;
public xianshisuoyou()
{
InitializeComponent();
}
privatevoid button1_Click(object sender, EventArgs e)
{
try
{
SqlConnection conn = newSqlConnection();
conn。ConnectionString = strcn;
conn。Open();
SqlDataAdapter ad = newSqlDataAdapter("USE 工资查询系¦统 SELECT 基本工资,员工号,奖金,工资,总工资 FROM salary ",conn);
DataSet ds = newDataSet();
ad.Fill(ds, ”student");
DataTable table = ds。Tables[0];
dataGridView1。DataSource = table;
}
catch (Exception ce)
{ MessageBox.Show(ce.Message); }
finally
{}
}
privatevoid button2_Click(object sender, EventArgs e)
{
this.Hide ();
chaxunjiemian cx = newchaxunjiemian();
cx。ShowDialog();
}
}
}
小结
该工资管理系统总体说来功能比较齐全,管理员和员工的一些基本的功能都已经具备;数据库的设计方面,建有员工表、管理员表、工资表、津贴表.数据库中存在一些问题,如数据冗余,不够完善.
但在做课程设计的过程中也遇到很多问题,一开始时其中最大的问题是不知道用哪种编译工具,后来选择了Microsoft Visual Studio,在编写程序时,编写程序起来也有点困难,但是也越来越顺利了。经过调试后终于把自已想到实现的功能一步步实现了,通过这次课程设计使我收获了好多,熟悉了C#的运用,还复习了数据库相关语句的编写.
此次课程设计让我感受颇多:做一个数据库其实是一件很有趣的事情。想到自己可以创建一个小型的数据库系统,有点学习后的满足感。数据库的建立并非难事,难点在于数据库的连接和编程语言的选择。C#的功能很强大,这也是我以后需要学习的课程,于是我毅然选择了它.再就是建立数据库系统的步骤,我的经验就是要先总体规划,再局部整理.先做好总的界面,再通过该界面的布置一步一步实现其功能!
同时我体会到:熟练的编程能力,对知识运用的强烈渴望及其创新和团队的合作精神设做好一个大型数据库的基础。因此通过此次课程设计我明显感觉到自身的不足,并希望以后能更加用心地运用所学知识和学习新的知识.
参考文献
[1] C#程序设计教程 电力出版社 2009
[2] 。施平安清华大学出版社, 2005
[3] 杨文龙,软件工程,电子工业出版社,1997
[4] 数据库系统概论 高等教育出版社 2006
14
展开阅读全文