数据库课程设计实验报告.doc_第1页
数据库课程设计实验报告.doc_第2页
数据库课程设计实验报告.doc_第3页
数据库课程设计实验报告.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库系统概论课程设计实验报告书安徽工业大学计算机学院姓 名xxx专 业软件工程班 级092班学 号xxx指导教师申元霞分 数2011年 12 月 5 日数据库系统概论课程设计实验报告书 安徽工业大学计算机学院摘 要高校科研是高校面临的一项重要任务,科研管理内容也比较复杂,科研涉及的内容极广泛、面临项目、资金和人员的管理。我国高校科研主要是以文字档案的形式来对其信息进行管理。这种人工的管理方式不仅效率低下、出错率高,并且保密措施也不够严格。往往随着时间的推移、信息量的增大,使得其在进行分类添加或修改的时候难度不断增大,极大的阻碍了科研信息的更新和科研进程的发展。另外如果出现档案保管不妥导致丢失等问题,其对整个科研进程的危害将是毁灭性的。因此制作一个通用的高校科研管理系统是十分重要的和必要的。本课程设计采用的是c#制作一个科研管理系统。在本案例的制作中,涉及到菜单的制作方法以及菜单在新的主界面中(不是由向导生成的主对话框)的过程代码的编制方法,还涉及到系统多文档界面的制作。关键字:科研管理系统、科研信息管理、数据库操作、可视化编程。目录1 绪 论21.1 概述21.1.1 问题的提出21.1.2 本课题的意义21.2 开发环境与工具介绍21.2.1 ado.net简介22 系统需求分析与设计32.1 用户需求分析32.1.1 用户需求32.1.2 系统功能需求32.1.3 系统性能需求32.1.4 数据分析42.2 功能模块图及分模块功能描述52.2.1 系统的功能模块图52.2.2 系统功能模块简介52.3 数据库设计52.3.1 系统e-r图52.3.2 数据库逻辑结构设计93 系统实施103.1 建立数据库103.2 数据库连接113.3 主要模块实施123.3.1 登录模块的开发123.3.2 注册模块的开发133.3.3 主系统模块的开发143.3.4 密码修改模块的开发153.3.5 职称信息管理模块的开发163.3.6 科研信息管理模块的开发173.3.7 开发模块总览183.4 系统测试203.4.1 软件测试的对象203.4.2 软件测试的结果214 系统说明224.1 开发环境224.2 系统安装、配置与发布应用程序的步骤22总 结23参考文献24附录:部分源代码251 绪 论1.1 概述1.1.1 问题的提出 随着科研信息的数据量越来越大,人工操作越来越困难,需要对其定做科研管理系统。其目的是为了方便维护和方便操作管理科研信息。1.1.2 本课题的意义 1. 掌握数据库设计的基本方法,熟悉数据库设计的步骤;2. 通过设计数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力;3. 学习基本数据库编程方法。1.2 开发环境与工具介绍 开发环境:microsoft visual studio 2010和microsoft sql server 20051、开发环境microsoft visual studio 2010简介:visual studio是微软公司推出的开发环境。是目前最流行的windows平台应用程序开发环境。visual studio 2010版本于2010年4月12日上市,其集成开发环境(ide)的界面被重新设计和组织,变得更加简单明了。visual studio 2010同时带来了 net framework 4.0、microsoft visual studio 2010 ctp( community technology preview-ctp),并且支持开发面向windows 7的应用程序。除了microsoft sql server,它还支持 ibm db2和oracle数据库。microsoft visual studio 2010 采用拖曳式便能完成软件的开发。简简单单的操作便可以实现一个界面的生成。但拖曳的界面,也应当有相应的代码来实现功能。microsoft visual studio 2010支持c#、c+ 、vb。 可以快速实现相应的功能。2、数据库microsoft sql server 2005简介:sql server 是一个关系数据库管理系统。它最初是由microsoft sybase 和ashton-tate三家公司共同开发的,于1988 年推出了第一个os/2 版本。sql server 2005的几个主要特性增强,重点关注企业数据管理、开发人员生产力和商务智能。1.2.1 ado.net简介ado.net的名称起源于ado(activex data objects),这是一个广泛的类组,用于在以往的microsoft技术中访问数据.之所以使用ado.net名称,是因为microsoft希望表明,这是在.net编程环境中优先使用的数据访问接口.它提供了平台互用性和可伸缩的数据访问。ado.net增强了对非连接编程模式的支持,并支持rich xml。由于传送的数据都是xml格式的,因此任何能够读取xml格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ado .net组件,它可以是基于一个microsoft visual studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。ado.net是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但它同样也能够是文本文件、excel表格或者xml文件。ado.net允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议。一些老式的数据源使用odbc协议,许多新的数据源使用oledb协议,并且现在还不断出现更多的数据源,这些数据源都可以通过.net的ado.net类库来进行连接。ado.net提供与数据源进行交互的相关的公共方法,但是对于不同的数据源采用一组不同的类库。这些类库称为data providers,并且通常是以与之交互的协议和数据源的类型来命名的。2 系统需求分析与设计2.1 用户需求分析2.1.1 用户需求1、要较为真实的反应科研管理系统的运行状况,必须要能反应几个方面的信息,包括科研项目,项目获得的成果,参加人员信息,以及参加人员所在的部门的信息。2、该系统能够满足用户查看、添加、删除各个信息的基本要求。3、用户界面力求简洁、美观、具有较好的人性化。操作方便。2.1.2 系统功能需求要较为真实的反应科研管理系统的运行状况,必须要能反应几个方面的信息,包括科研项目,项目获得的成果,参加人员信息,以及参加人员所在的部门的信息。一个项目需要由一个或多个人员参加,并且必须要有一个主要负责人;一个项目可以获得一个成果,但是可能也获取不了成果,获得成果的要有一个成果编号;一个部门必须要有一个负责人,一个部门可以有多个成员参加,但是一个人只能属于一个部门;获得成果编号的项目需要费每个参与者一个证书,这个证书要有一个证书排名;人员的工资分成三部分,分别是基本工资、岗位工资和津贴工资,基本工资每个人都可以不同,岗位工资和津贴工资由职称决定;科研管理系统的功能需求包括五个部分,就是对科研项目、获得成果、参加人员和人员所在部门的增、删、查、改,以及对人员参加项目的增加和删除。增加功能需要用户输入项目的详细信息,但是违反数据库数据规则的数据输入将无法增加,比如对于项目的增加功能,增加的项目号不能重复,并且各输入的数据不能是空项;删除功能是删除相应的实体(项目、成果、人员、部门)和删除人员参加项目的关系;查找功能是根据相应的实体的若干个关键字来查找相应的实体,关键字的数目可以有多个也可以只有一个,但是如果某一个关键字可以决定就采用一个关键字,不论输入的关键字的数目是多少。比如,在查找项目时,当输入项目号码时,其他的关键字就不起作用。查看功能是在另一个单独的窗口中查看相应实体的相关信息,这样可以更加直观;修改功能,用来对相应的实体进行修改,但是必须遵循数据库对字段的约束条件。2.1.3 系统性能需求1、 能有较好的系统容错能力,在连接数据库、操作数据库时候能及时反映当时状况。2、 各板块具有较好的健壮性。例如:用户名登陆的友好提示和新用户注册的友好指导。2.1.4 数据分析 经过数据分析,列有以下数据字典:数据项名含义说明数据类型长度prof职称char20jobwage岗位工资intallowancewage津贴工资intano部门编号char10aname部门名称char100aaddr部门地址char100apostcode部门邮编号码char10aphone部门电话号码char20ahno部门负责人编号char20hno人员编号char10hname人员姓名char20hsex人员性别char2hnation人员名族char10hedu人员学历char10hbirth人员生日smalldatetimehano人员所在部门号char10hworktime人员工作时间smalldatetime数据项名含义说明数据类型长度hbasicwage人员基本工资inthprof人员职称char20pno项目编号char10pname项目名称char100psource项目来源char10pstatime项目开始时间smalldatetimependtime项目结束时间smalldatetimepinve项目投资经费intphno项目负责人编号char10prno成果编号char10prname成果名称char100pno成果所在项目号char10prank成果级别char10prgrade成果等级intprclass成果类别char20pradmtime成果颁发日期smalldatetimerole参加项目角色char20cno证书排名intid用户名char10password密码char102.2 功能模块图及分模块功能描述注册模块登陆模块2.2.1 系统的功能模块图窗口布局主系统模块科研信息人员信息部门信息密码修改成果项目获奖2.2.2 系统功能模块简介1、主系统:该系统采用多文档界面编程,支持多窗口操作。各模块都可在菜单中相应调用。2、系统登陆模块:该模块是系统的开始界面,需要用用户名和密码验证登陆系统,并支持自由注册。3、密码修改模块:该模块可在主系统菜单“管理”-“密码修改”中打开,修改自己登陆的密码。4、部门、职称、科研、项目、人员、成果、获奖记录管理模块:这些模块采用统一的模式,方便操作和管理。5、窗口布局模块:可以对同时打开多文档进行布局管理,有子选择项“水平平铺”、“垂直平铺”、“层叠”、“全部关闭”。 2.3 数据库设计2.3.1 系统e-r图 数据库的e-r图:图1:图2:图3:图4:图5:图6:图7:2.3.2 数据库逻辑结构设计 用户(用户名,密码,权限);职称(职称名,岗位工资,津贴工资);部门(部门号,部门名称,地址,邮编,联系方式,负责人号码);人员(编号,名字,性别,出生日期,名族,部门号,基本工资,学历,职称,工作时间);项目(项目号,项目名称,负责人编号,来源,起始时间,结束时间,经费);成果(成果编号,名称,项目编号,级别,类别,等级,批准时间);证书(成果号,人员编号,证书排名);参加(项目号,人员编号,角色);303 系统实施3.1 建立数据库 create table 部门(部门号 nchar(10) primary key,部门名称 nchar(100) not null,地址 nchar(100),邮编 nchar(10),联系方式 nchar(20),负责人号码 nchar(20) not null,);create table dbo.参加(项目号 nchar(10) primary key,人员编号 nchar(10) not null,角色 nchar(20));create table dbo.成果(成果编号 nchar(10) primary key,名称 nchar(100),项目编号 nchar(10) not null,级别 nchar(10) ,类别 nchar(10),等级 nchar(10),批准时间 smalldatetime);create table dbo.人员(编号 nchar(10) primary key,名字 nchar(20) not null,性别 nchar(2) not null,出生日期 smalldatetime ,名族 nchar(10) ,部门号 nchar(10) not null,基本工资 int ,学历 nchar(10),职称 nchar(20),工作时间 smalldatetime);create table dbo.项目(项目号 nchar(10) primary key,项目名称 nchar(10) not null,负责人编号 nchar(10) not null,来源 nchar(10),起始时间 nchar(10) ,结束时间 nchar(10),经费 nchar(10);create table dbo.用户(用户名 nchar(10) primary key,密码 nchar(10) not null,权限 nchar(10));create table dbo.证书(成果号 nchar(10) primary key,人员编号 nchar(10) not null,证书排名 int );create table dbo.职称(prof nchar(10) primary key,jobwage int ,allowancewage int);3.2 数据库连接 /以下是登录窗口模块的部分连接源码,以作为数据库连接的事例。见附录源码/连接数据库,连接字符串以数据库链接字符串为准。根据系统文件夹所在目录而定 string strsql = data source=.sqlexpress;attachdbfilename=c:documents and settingshp桌面数据库课程设计科研管理系统科研管理系统.mdf;integrated security=true;connect timeout=30;user instance=true; sqlconnection mycon = new sqlconnection(strsql); try string sql = select 密码 from 用户 where 用户名= + textbox1.text + ; sqlcommand command = new sqlcommand(); command.commandtext = sql; command.connection = mycon; mycon.open(); sqldatareader re = command.executereader(); re.read(); if (textbox2.text.trim() = re0.tostring().trim() this.hide(); form2 f2 = new form2(textbox1.text); f2.show(); else messagebox.show(密码错误!请重新输入!, 错误, messageboxbuttons.ok, messageboxicon.error); catch (exception ee) messagebox.show(用户不存在!); finally mycon.close(); 3.3 主要模块实施(源码见后)3.3.1 登录模块的开发 图一:登陆窗口 3.3.2注册模块的开发图二:注册窗口初始化图三:注册窗口用户名重名图四:注册窗口两次密码不一致3.3.3主系统模块的开发图五:主系统界面初始化3.3.4密码修改模块的开发图六:密码修改模块图七:密码修改模块窗口最大化(主程序是多文档)3.3.5职称管理模块的开发图八:职称管理模块3.3.6部门信息管理模块的开发图九:部门信息管理模块的开发3.3.7人员信息管理模块的开发图十:人员信息管理模块3.3.8获奖记录管理模块开发图十一:获奖记录管理模块3.3.9科研项目管理模块图十二:科研项目管理模块3.3.10科研成果管理系统图十三:科研成果管理系统3.3.11开发模块总览(点菜单窗口-水平平铺/垂直平铺可见)图十四:总览1图十五:总览23.4 系统测试3.4.1 软件测试的对象1、注册新用户测试:测试注册新用户时输入已存在用户名、两次密码输入不相同时情况的反馈。2、各信息管理模块测试:主要测试各个模块的数据库初始信息访问、添加信息、删除信息、遍历信息等的正确性。3、窗口布局测试:主要测试在多文档时候窗口布局的正确性。3.4.2 软件测试的结果经过测试,各对象测试通过。截图有下:图一:图二:图三:4 系统说明4.1 开发环境本系统的是在.net平台下开发的,系统的后台数据库为sql server 2005数据库;因此在使用本系统前,应先安装.net框架和sql server 2005数据库,否则该系统无法运行。4.2 系统安装、配置与发布应用程序的步骤系统的原文件直接复制到机器上后,在数据库管理系统上建立一个名为design的数据库后,系统便可以运行。总 结本次课程设计是我进入大学以来首次尝试数据库的多表的操作,以前也使用vs2010的c#和sql server2005连接操作过,但本次的实验要求的表较多加上很长时间没有使用c#了,所以在编程的时候遇到了不少的麻烦,对于数据库的连接我们可以通过系统里的服务先添加驱动,然后在c#中添加连接代码,对于实验的可视化界面,c#有自带的控件,拖动很简单,对于其中的代码操作,一定要注意,一个打开,就要对应一个关闭,要不然会在操作其他项时会报错,其中本次实验就出现过。总之,编程是一件非常繁琐的事情,要不断地调试、检查,需要我们长期的积累经验和耐性的学习!经过这次的课程设计,知道了自己的很多不足,其中包括数据库也有c#。知道了即使理论知识再好,不实际动手操作,就不算真正的掌握,真正动起手来,却变的木讷。以后会不断的在理论中实践,在实践中提高。再者,非常感谢老师在期间的帮助和不厌其烦的指导。让我在如此短的时间内完成了此次课程设计。在其中也学到了很多知识!也越发对软件编程浓厚的兴趣和喜爱,以后会不断的学习以求进步!参考文献数据库系统及应用 戴小平 主编 中国科技大学出版社 c#程序设计简明教程 陈佛敏 潘春华 吕洋波 编著 人民邮电出版社sql server 2005 数据库原理与应用基础 李小英 主编 清华大学出版社 附录:部分源代码1、 登陆窗口部分源码 public partial class 登陆窗口 : form public 登陆窗口() initializecomponent(); private void button确认_click(object sender, eventargs e) if (textbox1.text = ) messagebox.show(请输入用户名!); return; else if (textbox2.text = ) messagebox.show(请输入密码!); return; /链接数据库 string strsql = data source=.sqlexpress;attachdbfilename=c:documents and settingshp桌面数据库课程设计科研管理系统科研管理系统.mdf;integrated security=true;connect timeout=30;user instance=true; sqlconnection mycon = new sqlconnection(strsql); try string sql = select 密码 from 用户 where 用户名= + textbox1.text + ; sqlcommand command = new sqlcommand(); command.commandtext = sql; command.connection = mycon; mycon.open(); sqldatareader re = command.executereader(); re.read(); if (textbox2.text.trim() = re0.tostring().trim() /登陆成功 this.hide(); form2 f2 = new form2(textbox1.text); f2.show(); else messagebox.show(密码错误!请重新输入!, 错误, messageboxbuttons.ok, messageboxicon.error); catch (exception ee) messagebox.show(用户不存在!); finally mycon.close(); 2、 注册窗口部分源码private void button1_click(object sender, eventargs e) /button1为“注册”按钮 if (textbox1.text = ) messagebox.show(请输入用户名!用户名不能为空!,错误,messageboxbuttons.ok,messageboxicon.error); return; /链接数据库 string strsql = data source=.sqlexpress;attachdbfilename=c:documents and settingshp桌面数据库课程设计科研管理系统科研管理系统.mdf;integrated security=true;connect timeout=30;user instance=true; sqlconnection mycon = new sqlconnection(strsql); try string sql = select 用户名 from 用户 where 用户名= + textbox1.text + ; sqlcommand command = new sqlcommand(); command.commandtext = sql; command.connection = mycon; mycon.open(); sqldatareader re = command.executereader(); re.read(); if (re!=null) /输入的用户名未注册 mycon.close(); string strsql2 = data source=.sqlexpress;attachdbfilename=c:documents and settingshp桌面数据库课程设计科研管理系统科研管理系统.mdf;integrated security=true;connect timeout=30;user instance=true; sqlconnection mycon2 = new sqlconnection(strsql2); string sql2 = insert into 用户 values( + textbox1.text + , + textbox2.text + ,null) ; sqlcommand command2 = new sqlcommand(); command2.commandtext = sql2; command2.connection = mycon2; mycon2.open(); int n = command2.executenonquery(); mycon2.close(); messagebox.show(恭喜!注册成功!, 提示, messageboxbuttons.ok, messageboxicon.information); this.close(); else /数据库查询异常 mycon.close(); messagebox.show(注册失败!请稍候重试!, 错误, messageboxbuttons.ok, messageboxicon.error); catch (exception eee) /用户名已注册,标签变可见提示 label5.visible = true; return; private void textbox3_textchanged(object sender, eventargs e) /两个密码验证 if (textbox2.text != textbox3.text&textbox3.text!=&textbox2.textlength=textbox3.textlength) label6.visible = true; return; else label6.visible = false; /错误重输 private void textbox2_textchanged(object sender, eventargs e) label6.visible = false; textbox3.text = ; private void textbox1_textchanged(object sender, eventargs e) label5.visible = false; textbox2.text = ; textbox3.text = ; 3、 修改密码模块 private void button1_click(object sender, eventargs e) label6.visible = false; string strsql = data source=.sqlexpress;attachdbfilename=c:documents and settingshp桌面数据库课程设计科研管理系统科研管理系统.mdf;integrated security=true;connect timeout=30;user instance=true; sqlconnection mycon = new sqlconnection(strsql); try string sql = select 密码 from 用户 where 用户名= +label2.text + ; sqlcommand command = new sqlcommand(); command.commandtext = sql; command.connection = mycon; mycon.open(); sqldatareader re = command.executereader(); re.read(); if (textbox1.text.trim() = re0.tostring().trim()/原密码正确 if (textbox2.text = textbox3.text)/新密码相同 mycon.close(); string strsql2 = data source=.sqlexpress;attachdbf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论