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