数据库课程设计报告
课 程 设 计 报 告
课程名称 数据库原理课程设计 课题名称 学生信息管理系统
专
班
学 姓 名 陈静 指导教师 曾赛峰、张益星、李峰
2015年 12 月 28 日
湖南工程学院 课 程 设 计 任 务 书
课程名称 数据库原理课程设计 课 题 学生信息管理系统
专业班级
学生姓名
学 号 指导老师 曾赛峰、张益星、李峰 审 批
任务书下达日期 2015年 12月 28 日 任务完成日期 2015年 1 月 8 日
目 录
1 引言............................................................................................................. 错误!未定义书签。 2 需求分析 . .................................................................................................... 错误!未定义书签。
2.1设计内容 ........................................................................................ 错误!未定义书签。 2.2 系统综合需求 ................................................................................................................ 1 2.3 功能需求及模块分析 . ..................................................................... 错误!未定义书签。 2.3 数据字典 . ........................................................................................................................... 3 3 系统设计 . ...................................................................................................................................... 4
3.1 概念结构设计 . ................................................................................................................... 4 3.2 逻辑结构设计 . ................................................................................................................... 5 4 详细设计 . ...................................................................................................................................... 6
4.1 设计环境 . ........................................................................................................................... 6 4.2存储过程及触发器 . ............................................................................................................ 6 4.3 数据库的维护 . ................................................................................................................... 7 4.4 实现的主要技术手段和方法 . ........................................................................................... 7 5 心得体会 . .................................................................................................................................... 17 6 参考文献 . .................................................................................................................................... 18 7 附录............................................................................................................................................. 18
一、引言
数据库技术是计算机科学技术发展最快,应用最为广泛的技术之一。其在计算机设计,人工智能,电子商务,企业管理,科学计算等诸多领域均得到了广泛的应用,已经成为计算机信息系统和应用的核心技术和重要基础。
在21世纪的科技时代,科学技术突飞猛进, 信息社会的高科技时代,商品经济化的高效益,计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。为了适应现代社会人们高度强烈的时间观念,学生成绩管理系统为教学办公带来了极大的方便。
二、需求分析
2.1设计内容
数据库系统原理的课程设计要求学生综合利用本课程的有关知识,在教师的指导下,利用特定的数据库设计环境,针对具体的问题,完成从系统的需求分析、数据库的概念设计、数据库的逻辑设计,到数据库实现等设计过程,最终实现一个较为完整的反映应用需求的数据库系统。因此,在设计中,要求学生应该全面考虑各个设计环节以及它们之间的相互联系。
2.2系统综合需求
高校学生的成绩管理工作量大、繁杂, 人工处理非常困难。学生成绩管理系统借助于计算机强大的处理能力, 大大减轻了管理人员的工作量, 并提高了处理的准确性。学生成绩管理系统的开发运用, 实现了学生成绩管理的自动化, 不仅把 广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来, 而且对学生成绩的判断和整理更合理、更公正, 同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。
2.3功能需求及模块分析
功能需求:能够进行数据库的数据定义、数据操纵、数据控制等处理功能, 进行联机处理的相应时间要短。
系统功能分析是在系统开发的总体任务的基础上完成的。本设计中学生成绩管理系统需要完成的功能主要有:
(1)有关学生信息的基本操作,包括查询所在班级进行学生基本信息操作(查询、修改、删除)、查询某个学生的学生基本信息操作等。
(2)有关学生课程信息的基本操作,包括查询所在班级进行学生所选课程信息操作(查询、修改、删除)、查询某个学生所学课程的基本操作等。 (3)有关学生成绩信息的基本操作,包括查询所在班级进行学生所选课程成绩操作(查询、修改、删除)、查询某个学生所学课程成绩的基本操作等。 对各项功能进行集中、分块,按照结构化程序设计的要求,系统功能模块图如下:
2.4数据字典
用户的需求具体体现在各种信息的查询、修改、删除,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。针对一般学生信息管理系统的需求,能过对学生学习过程的内容和数据流程分析,设计如下所示的数据项和数据结构:
(1)学生信息管理:通过这一模块,可以实现学生基本情况的添加、修改、删除,数据项包括学生学号、学生姓名、性别、年龄、所在系。
(2)学生信息查询:通过这一模块,使用查询条件学号,姓名,性别可以查询各个学生的情况,数据项包括学生学号、学生姓名、性别、年龄、所在系。 (3)学生成绩管理:通过这一模块,可以实现学生成绩情况的添加、修改、删除,数据项包括学号、课程号、成绩 。
(4)
学生信息查询:通过这一模块,使用学号查询条件,可以实现学生成绩情况的查询,数据项包括学号、课程号、成绩 。
(5)学生课程管理:通过这一模块,可以实现学生课程的添加、修改、删除, 数据项包括课程号、课程名、先行课、学分。
(6)学生奖学金管理:通过这一模块,可以实现已获奖学金信息的添加、修改、删除,数据项包括学号、姓名、已获奖学金。
(7)管理员选项:通过这一模块,可以实现对学生信息管理系统管理人员的添
加,数据项包括用户名和密码。
三、系统设计
3.1概念结构设计
概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS 的概念模型。
首先设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。该设计规划出的实体有:学生实体、课程实体。全局概念模式(E-R 图):
3.2逻辑结构设计
逻辑结构是独立于任何一种数据模型的信息结构。逻辑结构的任务是把概念结构设计阶段设计好的基本E-R 图转化为宜选用的DBMS 所支持的数据模型相符合的逻辑结构,并对其进行优化。E-R 图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模式,如何确定这些关系模式的属性和码。
设计学生成绩管理数据库,包括课程、学生、教师、成绩四个关系, 其关系模式中对每个实体定义的属性如下:学生信息表(学号,姓名,性别,年龄,系别) ;课程信息表(课程号,课程名,先选课号,学分);学生成绩表(学号,课程号,成绩);用户权限表(UserName ,Password );学生奖学金信息表。
1. 学生信息表student
学生信息表student
2. 课程信息表course
课程信息表course
3学生成绩表score
学生成绩表score
4管理员信息表stu_user
管理员信息表stu_user
5学生奖学金信息表stujc
管理员信息表stujc
四、详细设计
4.1设计环境:
① VMware Workstation ② Microsoft Visual C++ 6.0
4.2 存储过程及触发器
作为数据库应用系统,数据的一致性需要得到保证,通过单纯的手工编码方式,工作烦琐,容易出错,而且不易于扩展。采用DBMS 的外码约束,Unique 约束,触发器的使用来解决这一问题。
(1)建立数据库
(2)创建表 创建学生信息表: create table student
(sno char(5) not null unique, sname char(20), ssex char(2), sage int, sdept char(12)); (3)向数据库中添加信息
4.3数据库的维护
当试运行数据库合格后,数据库开发工作基本完成,即可投入运行了。但是由于应用环境在不断变化,数据库运行但是,由于应用环境在不断变化,数据库运行过程中物理存储也会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,也是设计工作的继续和提高,因为这个数据库系统比较简单,数据量也小,数据库中基本不会发生什么较大的变化,但是还是需要做好数据的备份和维护工作,我们可以利用备份功能对数据进行备份,如果数据库受到破坏或者系统故障,我们就可以利用备份文件恢复数据库的数据,当然也可以
利用其他各种方法进行数据维护。
4.4实现的主要技术手段和方法
一、 创建数据库文件.mdf
1、开始菜单→打开Microsoft Visual Stdio2010→新建项目→选择windows 窗体应用程序→右键项目名→添加新建项→选择数据→基于服务的数据库
2、数据库连接方法
SqlConnection myConnection = new SqlConnection (@"Data
Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\stu_managesystem.mdf;
Integrated Security=True;User Instance=True");
二、学生信息处理
1.学生信息的管理功能,,此部分实现了对学生基本信息添加修改删除操作。
关键代码如下
namespace stu_managesystem {
public partial class stu_inf : Form public stu_inf() {
InitializeComponent(); }
SqlConnection myConnection; SqlCommand sqlCommand;
private void stu_inf_Load(object sender, EventArgs e) {
// myConnection = new SqlConnection(); myConnection = new SqlConnection (@"Data
Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\stu_managesystem.mdf;
Integrated Security=True;User Instance=True"); sqlCommand = new SqlCommand ();
sqlCommand.Connection = myConnection;
sqlCommand.CommandType = CommandType .Text;
sqlCommand.CommandText = "select * from student"; myConnection.Open(); SqlDataReader dreader =
sqlCommand.ExecuteReader(CommandBehavior .CloseConnection); while (dreader.Read()) {
ListViewItem newItem =
listView1.Items.Add(dreader["sno" ].ToString().Trim());
newItem.SubItems.Add(dreader["sname" ].ToString().Trim());
newItem.SubItems.Add(dreader["ssex" ].ToString().Trim());
newItem.SubItems.Add(dreader["sage" ].ToString().Trim());
newItem.SubItems.Add(dreader["sdept" ].ToString().Trim()); }
dreader.Close(); }
private void listView1_SelectedIndexChanged(object sender, EventArgs e) {
if (listView1.SelectedItems.Count > 0) {
textBox1.Text = listView1.SelectedItems[0].Text; textBox2.Text =
listView1.SelectedItems[0].SubItems[1].Text; textBox3.Text =
listView1.SelectedItems[0].SubItems[2].Text; textBox4.Text =
listView1.SelectedItems[0].SubItems[3].Text; textBox5.Text =
listView1.SelectedItems[0].SubItems[4].Text; } }
private void button1_Click(object sender, EventArgs e) {
if (button1.Text == " 添加" ) {
button1.Text = " 保存" ;
textBox1.Text = "" ; textBox2.Text = "" ; textBox3.Text = "" ; textBox4.Text = "" ; textBox5.Text = "" ; textBox1.Focus();
textBox1.ReadOnly = false ; textBox2.ReadOnly = false ; textBox3.ReadOnly = false ; textBox4.ReadOnly = false ; textBox5.ReadOnly = false ;
button2.Enabled = false ; button3.Enabled = false ; } else {
sqlCommand.CommandText = "insert into student values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')" ; myConnection.Open();
int cmdresults = sqlCommand.ExecuteNonQuery(); myConnection.Close(); if (cmdresults == 1) {
textBox1.ReadOnly = true ; textBox2.ReadOnly = true ; textBox3.ReadOnly = true ; textBox4.ReadOnly = true ; textBox5.ReadOnly = true ;
button2.Enabled = true ; button3.Enabled = true ; ListViewItem newItem = listView1.Items.Add(textBox1.Text);
newItem.SubItems.Add(textBox2.Text); newItem.SubItems.Add(textBox3.Text); newItem.SubItems.Add(textBox4.Text); newItem.SubItems.Add(textBox5.Text); button1.Text = " 添加" ;
MessageBox .Show(" 插入数据成功" ); } else
MessageBox .Show(" 插入数据失败" ); } }
void TextBox1TextChanged(object sender, EventArgs e) { } }
2.学生信息查询功能,此部分实现了对学生信息的查询功能。
关键代码如下
namespace stu_managesystem {
public partial class stu_ser : Form
{
public stu_ser() {
InitializeComponent(); }
private SqlDataAdapter sqlDataAdapter; private DataSet dsScore;
private void stu_ser_Load(object sender, EventArgs e) {
// SqlConnection myConnection = new SqlConnection(); SqlConnection myConnection = new SqlConnection (@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\stu_managesystem.mdf;
Integrated Security=True;User Instance=True");
SqlCommand sqlCommand = new SqlCommand (); sqlCommand.Connection = myConnection;
sqlCommand.CommandType = CommandType .Text;
sqlCommand.CommandText = "select * from student"; sqlDataAdapter = new SqlDataAdapter (); sqlDataAdapter.SelectCommand = sqlCommand; SqlCommandBuilder builder = new SqlCommandBuilder (sqlDataAdapter); dsScore = new DataSet ();
sqlDataAdapter.Fill(dsScore, "student" );
this .BindingContext[dsScore, "student" ].PositionChanged += new EventHandler (BindingManagerBase_PositionChanged); dataGridView1.DataSource = dsScore; dataGridView1.DataMember = "student" ; ShowPosition(); //setState(true); }
private void ShowPosition() {
int iCnt, iPos;
iCnt = this .BindingContext[dsScore, "student" ].Count; iPos = this .BindingContext[dsScore, "student" ].Position + 1;
}
private void BindingManagerBase_PositionChanged(object sender, EventArgs e) {
ShowPosition(); }
private void button1_Click(object sender, EventArgs e) {
if (textBox1.Text == "" )
{ MessageBox .Show(" 学号不能为空" ); } else {
string a = textBox1.Text;
// SqlConnection myConnection = new SqlConnection(); SqlConnection myConnection = new SqlConnection (@"Data Source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\stu_managesystem.mdf;
Integrated Security=True;User Instance=True");
SqlCommand sqlCommand = new SqlCommand (); sqlCommand.Connection = myConnection;
sqlCommand.CommandType = CommandType .Text;
sqlCommand.CommandText = "select * from student where sno='" + a + "'" ;
sqlDataAdapter = new SqlDataAdapter (); sqlDataAdapter.SelectCommand = sqlCommand; SqlCommandBuilder builder = new SqlCommandBuilder (sqlDataAdapter);
dsScore = new DataSet ();
sqlDataAdapter.Fill(dsScore, "student" ); this .BindingContext[dsScore, "student" ].PositionChanged += new
EventHandler (BindingManagerBase_PositionChanged); dataGridView1.DataSource = dsScore; dataGridView1.DataMember = "student" ; ShowPosition(); textBox1.Text = "" ; } } } }
3.学生成绩管理,此部分实现了对学生基本成绩添加、修改、删除操作。
关键代码与学生信息管理相似
4.学生成绩查询,此部分实现了对学生成绩的查询操作。
关键代码与学生信息查询相似
5. 学生课程管理,此部分实现了对学生课程信息的添加、修改、删除操作。
关键代码与学生信息管理相似
6. 学生奖学金管理,此部分实现了对学生已获奖学金信息的添加、修改、删除操作。
关键代码与学生信息管理相似
7. 管理员添加,此部分实现了对管理人员添加操作。
关键代码如下
namespace stu_managesystem {
public partial class add_user : Form {
public add_user() {
InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) {
if (textBox1.Text == "" ) {
MessageBox .Show(" 用户名不能为空" ); }
if (textBox2.Text == "" ) {
MessageBox .Show(" 密码不为空" ); } else {
string a = textBox1.Text; string b = textBox2.Text; DB_CZ u = new DB_CZ();
string sql = "insert into stu_user values('" + a + "','" + b + "')" ;
u.ExcSql(sql);
MessageBox .Show(" 添加成功" );
textBox1.Text = "" ; textBox2.Text = "" ; } }
private void add_user_Load(object sender, EventArgs e) { } } }
8. 关闭,此部分实现了对软件的关闭退出功能
关键代码如下
private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)
{
this .Close(); }
五、心得体会
数据库技术是计算机科学技术发展最快,应用最为广泛的技术之一。其在计算机设计,人工智能,电子商务,企业管理,科学计算等诸多领域均得到了广泛的应用,已经成为计算机信息系统和应用的核心技术和重要基础。
从需求分析阶段不断地搜索资料,充分了解自己所做的课题,总算整了一个像样点的需求分析,经过不断地测试,不断地改进,其中还是发下了不少问题,第一次做这些工作,没有任何经验,甚至无从下手,还是很谢谢老师和同学的帮忙,从中也学到了一些代码的写法,为什么要这样写,通过和同学的讨论,找到一些书本上没有的方法,如何数据绑定等等,怎样从数据库中将数据提取出来放到一个文本框或者标签内,这些东西是组成界面的东西,虽然小,但是可以体现整个软件的水平,其实并不需要建多少数据库的表,写多少复杂的存储过程,是不是用了数据库函数,触发器等等,但是至少要弄明白这些东西如果操作,清晰思路才能将功能分清晰。
经过一段时间的学习与实践,学生信息理系统基本上开发好了。人如果没有自信,没有目标,没有信心就不可能把事情做好,当其他人都在迷茫的时候,自己一定要坚信目标,大学毕业出去即是面临找工作,从学习这个专业,到以后做这方面的工作都需要不断地去学习去实践,这次实践可以给我们敲一个警钟,我们面临毕业,面临择业,需要这些实践经验,在困难面前要勇于尝试,这是这次课程设计给我的最大感想。
六、参考文献
1. 《Visual C++ .net 2003程序设计》 何炜等 冶金工业出版社 P247-261
2. 《数据库系统概论(第三版)》 萨师煊等 高等教育出版社
3. 《Windows 用户界面开发》 [美] Everett N. McKay著 北京大学出版社
4. 常州VC 编程网 用Visual C++开发数据库应用程序
5. Microsoft MSDN 关于MFC ODBC部分的文档
七、附录
课程设计评分表
教师签名: 日 期:
(注:1.此页附在课程设计报告之后;2.综合成绩按优、良、中、及格和不及格五级评定。)