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