实验报告书
安徽工业大学计算机学院
姓 名 | 黄飞 |
专 业 | 网络工程 |
班 级 | 111班 |
学 号 | 119074292 |
指导教师 | 周兵 |
分 数 |
摘 要
本系统为科研管理系统,是基于.net的数据库管理系统。本系统采用C#编写,
充分利用.Net框架的各种组件和sql server 2005数据库管理软件,例如 Button控件,label控件,Textbox控件,radiobutton控件,datagridview控件等等。
本系统有登陆界面,登陆身份分为管理员和普通用户,通过管理员登陆可以实现修改,删除添加操作,通过普通用户登陆,可以实现对数据的查看操作,查看时通过输入关键字即主键来调出所要查的信息。各个界面直观,简洁明了。
起初在开发本系统的时候,不知道是用JAVA做好还是C#好,最后发现C#里面有很多的控件,觉得C#比较方便,于是便通过查看有关C#winform程序设计的书,认真学习了相关控件,对相关控件的作用属性有了了解,然后进行开发,编写程序。在开发的过程中,总是会遇到各种小错误,比如在对数据库插入操作时,C#里面的sql语句对于字符串要加单引号的,我没有加,找了半天错误都没找出来哪里出错了,最后百度了这个问题,一下就解决了。在做这个系统的过程中,我不断的学习,不断的掌握了各种知识,从而兴趣也越来越大,最终花了一个多的星期大致完成了本系统,本系统还有部分功能没有实现,在今后我会全部实现这些功能。
关键词:科研管理系统 C/S, SQL server2005, C#
1.
1 绪 论
1.1 概述
1.1.1 问题的提出
如今科研信息特别多,杂乱无章不方便用户查询 修改,添加,删除等操作,为了便于对数据的管理,提出做一个科研管理系统来管理这些信息。
1.1.2 本课题的意义
1.通过编写科研管理系统,方便用户对数据的管理,在编写程序的过程中使学生了解数据库系统的理论,掌握数据库的设计方法及数据库的运用和开发技术。
2. 通过设计数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力;
3. 学习数据库应用系统开发方法。培养学生初步的软件设计能力,形成良好的编程风格
1.2 开发环境与工具介绍
开发环境 c# 语言,.Net平台,sql server 2005 搭建服务器
1.2.1 ADO.NET简介
ado.net可让开发人员以一致的方式存取资料来源(例如 SQL Server 与 XML),以及透过 OLE DB 和 ODBC 所公开的资料来源。资料共用的消费者应用程序可使用ado.net 来连接至这些资料来源,并且撷取、处理及更新其中所含的资料。[1]
ado.net可将资料管理的资料存取分成不连续的元件,这些元件可分开使用,也可串联使用ado.net也包含 .NET Framework 资料提供者,以用于连接资料库、执行命令和撷取结果。这些结果会直接处理、放入ado.net DataSet 物件中以便利用机器操作 (Ad Hoc)的方式公开给使用者、与多个来源的资料结合,或在各层之间进行传递。DataSet 物件也可以与.NET Framework 资料提供者分开使用,以便管理应用程序本机的资料或来自 XML 的资料。[1]
ado.net类别 (Class) 位于 System.Data.dll 中,而且会与 System.Xml.dll 中的XML 类别整合。[1]
ado.net可为撰写 Managed 程式码的开发人员提供类似于ActiveX Data Objects (ADO)提供给原生元件物件模型 (Component Object Model,COM)开发人员的功能。建议使用ado.net而非ADO来存取.NET 应用程序中的资料。[1]
ADO .NET会提供最直接的方法,让开发人员在 .NET Framework 中进行资料存取
1.2.2 科研管理系统研究状况
如今社会科研项目越来越多,对科研项目管理的研究也越来越多,到目前为止,绝大多数高校没有一套完整.先进。使用的科研管理系统在实际运行,造成这种状况的原因是多方面的,不仅仅是软件研究的难度和复杂度问题,更重要的是观念和认识的问题,以及管理不统一,不规范的问题。随着我国高等教育改革的不断深化和教育管理现代化的不断推进,全面实现可研管理网络化。信息化.现代化已迫在眉睫。因此,许多高校开始新一轮注重软件建设,开始对科研管理系统进行研究开发。
2 系统需求分析与设计
2.1 用户需求分析
2.1.1 用户需求
每个部门(DEPT)有若干个教师(TEACHER),每个教师只能属于一个部门;每个教师可参加多个科研项目(PROJ),一个科研项目可有若干教师参加;某一个教师管理一个科研项目,每个科研项目只有一个管理者;每个科研项目可能获一项成果;参与获奖项目的教师有一个证书排名。
教师职称的不同,其岗位工资与津贴工资也不同。
2.1.2 系统功能需求分析
系统功能分为两部分功能,一个是普通用户功能,普通用户可以查看各种项目信息,教师信息,成果信息,以及项目管理等信息。另一个是管理员功能,管理员可以对各种项目信息,教师信息,成果信息,以及项目管理等信息进行增加,修改,删除操作。
2.1.3 系统性能需求
系统通过相关接口函数来连接数据库,对数据库进行操作。本系统是一个的数据库系统,拥有自己的数据库,自己的用户,自己的CPU,运行自己的DBMS,执行局部应用。
2.1.4 数据分析
数据需要统一存在在一个服务器上,用户不需要关系数据的物理位置分布细节,也不关系数据副本的一致性,对数据的操作完全由系统来实现。
2.2 功能模块图及分模块功能描述
2.2.1 系统的功能模块图
2.2.2 系统功能模块简介
首先是登陆界面,分为一般用户登陆和管理员登陆,一般用户进行查询操作,管理员可以进行添加,修改,删除操作。
2.3 数据库设计
2.3.1 系统E-R图
2.3.2 数据库逻辑结构设计
由E—R图可知关系模式为:
部门(部门编号,部门名称,负责人,地址,邮编,联系电话)
教师(教师号,姓名,性别,民族,文化程度,所在部门,职称,基本工资,岗位工资,津贴工资)
项目(项目编号,项目名称,项目来源,经费,开始时间,参加人员角色)
科研成果(成果编号,项目名称,类别,级别,等级,证书排名,批准时间)
参加(教师号,项目编号,参加时间)
管理(教师号,项目编号,管理时间)
通过对此关系模式进行评价确定了此模式,然后在数据库里建了六张相应的表如下图:
3 系统实施
3.1 建立数据库
本系统用的是SQL server 2005数据库,直接建了一个名为Design的数据库,然后新建六张表,设置各个属性的类型,设置各个表的主键。
3.2 数据库连接
String strConn = @"server=JOHN-PC\\SQL2005;database=design;user=sa;pwd=123";
try
{
SqlConnection conn = new SqlConnection(strConn);
conn.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
第一条语句定义连接数据库的字符串,try里面定义数据库连接对象,并将连接字符串传给这个对象,再通过Open();方法打开数据库。Catch里面实现的是如果连接不成功,抛出不成功的异常。
3.3 主要模块实施
3.3.1 登录模块的开发
登陆模块截图:
登陆模块主要代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 科?研D管¨¹理¤¨ª系¦Ì统ª3
{
public partial class Form登Ì?录? : Form
{
public Form登Ì?录?()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "admin" && textBox2.Text == "123" && radioButton2.Checked == true)
{
this.Hide();
Form増?删¦?改? form2 = new Form増?删¦?改?();
form2.Show();
}
else if (textBox1.Text == "users" && textBox2.Text == "123" && radioButton1.Checked == true)
{
this.Hide();
// Form3 form3 = new Form3();
// form3.Show();
}
else
{
MessageBox.Show("输º?入¨?有®D误¨®,ê?请?检¨¬查¨¦用®?户¡ì名?和¨ª密¨¹码?!ê?");
}
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
3.3.2 增删改查模块开发
由于各个部分功能截图较多,实现代码较多,不方便放到这个文档中,所以已经将本系统界面以及相应的代码打包发到老师您的邮箱中,请查收。
3.4 系统测试
3.4.1 软件测试的对象
1.科研管理系统的查看功能
2.科研管理系统的添加功能
3.科研管理系统的修改功能
4.科研管理系统的删除功能
3.4.2 软件测试的结果
添加功能截图:
修改功能截图:
4 系统说明
4.1 开发环境
本系统的是在.NET平台下开发的,系统的后台数据库为sql server 2005数据库;因此在使用本系统前,应先安装.NET框架和sql server 2005数据库,否则该系统无法运行。
4.2 系统安装、配置与发布应用程序的步骤
系统的原文件直接复制到机器上后,在数据库管理系统上建立一个名为Design的数据库后,系统便可以运行。
管理员 用户名:admin
密码: 123
普通用户 用户名:users
密码:123
总 结
花了接近一个星期的时间,这一个星期我不敢说自己有多大的进步,获得了多少知识,掌握了多少知识,但起码是了解了项目开发的部分过程。虽然,上过数据库这门课程,但是我们在课程上学习的只是理论知识,有了这次亲身经历科研管理系统设计的过程细节,使我对数据库有了更深一层次的认识。
对于这次设计的科研管理系统,实现的功能有部门信息.教师信息,项目信息,科研成果信息的添加;部门信息,教师信息的修改;部门信息的删除;部门信息的查询。未完成的功能有:教师信息,项目信息,科研成果信息的查询以及科研管理信息,教师信息,项目信息的删除。为了进一步完善科研管理系统,我决定在假期实现其他未完成的功能。
通过对科研管理系统的设计发现这其中需要的很多知识,我们都没有接触过,上网查资料的时候发现我们课堂上学习的知识仅仅是皮毛,同时也发现有许多已经学过的东西自己都没有理解彻底,不能灵活运用于实际中,这就需要自己不断的大量实践,通过不断的自学,发现问题,思考问题,进而解决问题。在这个过程中,我深刻理解了所学的知识,同时也学到了很多实用的东西,而且激发了我对数据库设计的兴趣,在今后的时间里,我一定会多找些课题来设计相应系统来提高自己的实践能力。
最后,感谢老师教了我很多理论知识,给了我这个课程设计的机会,让我顺利完成了这个系统的开发。但是,由于时间仓促以及本人的水平有限,本系统还有很多不完善的部分以及未完成的功能,也难免存在漏洞,恳请老师谅解。
参考文献
<<数据库系统及应用>> 中国科学技术出版社
< 附录:部分源代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace 科?研D管¨¹理¤¨ª系¦Ì统ª3 { public partial class Form添¬¨ª加¨®科?研D成¨¦果? : Form { public Form添¬¨ª加¨®科?研D成¨¦果?() { InitializeComponent(); } private void button2_Click(object sender, EventArgs e) { this.Close(); Form添¬¨ª加¨® form添¬¨ª加¨® = new Form添¬¨ª加¨®(); form添¬¨ª加¨®.Show(); } private void button1_Click(object sender, EventArgs e) { String strConn = @"server=JOHN-PC\\SQL2005;database=design;user=sa;pwd=123"; try { SqlConnection conn = new SqlConnection(strConn); conn.Open(); String sqlInsert = "insert into 科?研D成¨¦果?表À¨ª(成¨¦果?编À¨¤号?,项?目?名?称?,类¤¨¤别Àe,级?别Àe,等̨¨级?,证¡è书º¨¦排?名?) values(" + "'" + textBox1.Text.ToString() + "','" + textBox2.Text.ToString() + "','" + textBox3.Text.ToString() + "','" + textBox4.Text.ToString() + "','" + textBox5.Text.ToString() + "','" + textBox6.Text.ToString() + "')"; SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = sqlInsert; cmd.ExecuteNonQuery(); MessageBox.Show("插?入¨?成¨¦功|!ê?"); textBox1.Text = ""; textBox2.Text = ""; textBox3.Text = ""; textBox4.Text = ""; textBox5.Text = ""; textBox6.Text = ""; conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } } using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; namespace 科?研D管¨¹理¤¨ª系¦Ì统ª3 { public partial class Form修T改? : Form { int flag = 0; public Form修T改?() { InitializeComponent(); } private void button5_Click(object sender, EventArgs e) { String strConn = @"server=JOHN-PC\\SQL2005;database=design;user=sa;pwd=123"; try { SqlConnection conn = new SqlConnection(strConn); conn.Open(); SqlCommand Cmd = new SqlCommand(); Cmd.Connection = conn; SqlDataAdapter da = new SqlDataAdapter(); DataSet ds = new DataSet(); SqlCommand selectCmd = new SqlCommand(); if (flag == 1) { String sql = "update 部?门?信?息¡é表À¨ª set 部?门?名?称?='"+textBox2.Text+"',负o责e人¨?='"+textBox3.Text+"',地Ì?址¡¤='"+textBox4.Text+"',邮®¨º编À¨¤='"+textBox5.Text+"',联¢a系¦Ì电Ì?话¡ã='"+textBox6.Text+"'"+"where 部?门?编À¨¤号?='"+textBox1.Text+"'"; Cmd.CommandText = sql; int i=Cmd.ExecuteNonQuery(); if (i == 1) { MessageBox.Show("修T改?成¨¦功|!ê?"); } else { MessageBox.Show("您¨²输º?入¨?的Ì?"+label1.Text+"不?存ä?在¨²,ê?请?重?新?输º?入¨?!ê?"); } selectCmd.Connection = conn; selectCmd.CommandText = "select * from 部?门?信?息¡é表À¨ª"; da.SelectCommand = selectCmd; da.Fill(ds, "部?门?信?息¡é表À¨ª"); dataGridView1.DataSource = ds.Tables[0]; } else if (flag == 2) { String sql = "update 教¨¬师º|信?息¡é表À¨ª set 姓?名?='" + textBox2.Text + "',性?别Àe='" + textBox3.Text + "',民?族Á?='" + textBox4.Text + "',文?化¡¥程¨¬度¨¨='" + textBox5.Text + "',所¨´在¨²部?门?='" + textBox6.Text + "',职¡ã称?='" + textBox7.Text + "',基¨´本À?工¡è资Á¨º='" + textBox8.Text + "',岗¨²位?工¡è资Á¨º='" + textBox9.Text + "',津¨°贴¬¨´工¡è资Á¨º='" + textBox10.Text +"'"+ "where 教¨¬师º|号?='" + textBox1.Text + "'"; Cmd.CommandText = sql; int i = Cmd.ExecuteNonQuery(); if (i == 1) { MessageBox.Show("修T改?成¨¦功|!ê?"); } else { MessageBox.Show("您¨²输º?入¨?的Ì?" + label1.Text + "不?存ä?在¨²,ê?请?重?新?输º?入¨?!ê?"); } selectCmd.Connection = conn; selectCmd.CommandText = "select * from 教¨¬师º|信?息¡é表À¨ª"; da.SelectCommand = selectCmd; da.Fill(ds, "教¨¬师º|信?息¡é表À¨ª"); dataGridView1.DataSource = ds.Tables[0]; } conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void button1_Click(object sender, EventArgs e) { flag = 1; label1.Text = ""; label2.Text = ""; label3.Text = ""; label4.Text = ""; label5.Text = ""; label6.Text = ""; label7.Text = ""; label8.Text = ""; label9.Text = ""; label10.Text = ""; textBox1.Text = ""; textBox2.Text = ""; textBox3.Text = ""; textBox4.Text = ""; textBox5.Text = ""; textBox6.Text = ""; textBox7.Text = ""; textBox8.Text = ""; textBox9.Text = ""; textBox10.Text = ""; label1.Text = "部?门?编À¨¤号?"; label2.Text = "部?门?名?称?"; label3.Text = "负o责e人¨?"; label4.Text = "地Ì?址¡¤"; label5.Text = "邮®¨º编À¨¤"; label6.Text = "联¢a系¦Ì电Ì?话¡ã"; textBox1.Visible = true; textBox2.Visible = true; textBox3.Visible = true; textBox4.Visible = true; textBox5.Visible = true; textBox6.Visible = true; textBox7.Visible = false; textBox8.Visible = false; textBox9.Visible = false; textBox10.Visible = false; String strConn = @"server=JOHN-PC\\SQL2005;database=design;user=sa;pwd=123"; try { SqlConnection conn = new SqlConnection(strConn); conn.Open(); SqlDataAdapter da = new SqlDataAdapter(); DataSet ds = new DataSet(); SqlCommand selectCmd = new SqlCommand(); selectCmd.Connection = conn; selectCmd.CommandText = "select * from 部?门?信?息¡é表À¨ª"; da.SelectCommand = selectCmd; da.Fill(ds, "部?门?信?息¡é表À¨ª"); dataGridView1.DataSource = ds.Tables[0]; conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void button6_Click(object sender, EventArgs e) { this.Close(); Form増?删¦?改? form= new Form増?删¦?改?(); form.Show(); } private void button2_Click(object sender, EventArgs e) { flag = 2; label1.Text = ""; label2.Text = ""; label3.Text = ""; label4.Text = ""; label5.Text = ""; label6.Text = ""; label7.Text = ""; label8.Text = ""; label9.Text = ""; label10.Text = ""; textBox1.Text = ""; textBox2.Text = ""; textBox3.Text = ""; textBox4.Text = ""; textBox5.Text = ""; textBox6.Text = ""; textBox7.Text = ""; textBox8.Text = ""; textBox9.Text = ""; textBox10.Text = ""; label1.Text = "教¨¬师º|号?"; label2.Text = "姓?名?"; label3.Text = "性?别Àe"; label4.Text = "民?族Á?"; label5.Text = "文?化¡¥程¨¬度¨¨"; label6.Text = "所¨´在¨²部?门?"; label7.Text = "职¡ã称?"; label8.Text = "基¨´本À?工¡è资Á¨º"; label9.Text = "岗¨²位?工¡è资Á¨º"; label10.Text = "津¨°贴¬¨´工¡è资Á¨º"; textBox1.Visible = true; textBox2.Visible = true; textBox3.Visible = true; textBox4.Visible = true; textBox5.Visible = true; textBox6.Visible = true; textBox7.Visible = true; textBox8.Visible = true; textBox9.Visible = true; textBox10.Visible = true; String strConn = @"server=JOHN-PC\\SQL2005;database=design;user=sa;pwd=123"; try { SqlConnection conn = new SqlConnection(strConn); conn.Open(); SqlDataAdapter da = new SqlDataAdapter(); DataSet ds = new DataSet(); SqlCommand selectCmd = new SqlCommand(); selectCmd.Connection = conn; selectCmd.CommandText = "select * from 教¨¬师º|信?息¡é表À¨ª"; da.SelectCommand = selectCmd; da.Fill(ds, "教¨¬师º|信?息¡é表À¨ª"); dataGridView1.DataSource = ds.Tables[0]; conn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } } }