学 号 xxxxxxx
数据库应用技术课程设计
设计说明书
起止日期: 20xx 年 xx月 xx日 至 20xx 年 xx月 xx日
计算机工程系
20##年12月21日
课程设计任务书
20##—2011学年第 1 学期
xx 系 xx 专业 xxx 班级
课程设计名称:数据库应用技术
设计题目: 北京化工大学大学学生成绩管理系统
完成期限:自 20xx 年 xx月xx日至 20xx年 xx 月 xxx日共x 周
设计依据、要求及主要内容(可另加附页):
依据《数据库应用技术课程设计》大纲,按照计划完成内容,将选题、描述数据流程图、画出完整的E-R图、用表格形式设计数据库的逻辑模型、设计系统总体功能模块图、创建数据库各关系模式、编写应用程序,实现各个模块的功能、等计划认真实施。通过需求分析阶段、据库概念结构设计阶段、据库逻辑结构设计阶段、据库物理设计阶段、据库应用系统的开发(数据库前端应用开发)、据库的实施与维护这6个阶段的要求,完成对天津工业大学的学生管理系统。使其完成对学生成绩的录入;成绩的查询;学生成绩的修改;学生成绩的删除;退出等功能。希望本次课设顺利完成,通过本次课设可以锻炼自己的实际操作能力,从中学到必要的知识。
指导教师(签字):
教研室主任(签字):
批准日期: 年 月 日
课程设计进度计划表
北京化工大学成绩管理信息系统问题综述
一、问题提出
该系统实现对若干学生成绩进行管理,包括以下信息:学号,课程,成绩。
用户可对该系统进行成绩的查询,成绩的录入,成绩的修改,成绩的删除。
二、北京化工大学学生成绩管理信息系统基本背景
北京化工大学若干学生,每位学生所选若干课程;
每位学生包含学号Sno,课程Cno,课程成绩Grade;
用户可对学生课程进行成绩的查询、修改和删除。
三、系统需求分析
1.数据需求
学生成绩管理系统主要用于学生成绩信息管理,据分析学生成绩管理系统的数据表可需要:学生成绩表(SC表)。根据学生情况,可按以下步骤分析:
①确定学生学号Sno;
②确定学生所选课程Cno及各门课程的成绩Grade;
③用户信息,登陆名及密码。
2.数据的处理
用户功能模块:用户通过账号,密码登陆系统,进行学生成绩的录入,修改及删除。管理员模块的功能树如图所示。
用户模块功能树
四、系统总体设计
1.系统的功能
学生成绩管理系统主要用于学生成绩信息管理,用户可通过学号查询相关信息,包括:姓名,课程名,相应课程成绩并对其进行维护,将学生成绩录入,修改,删除,以便学生及老师的查询。
2.系统总体结构图。
五、数据库设计
1、数据库管理的产生和发展
数据库技术是应数据管理任务的需要而产生的。
人们借助计算机进行数据处理是近三十年的事,研究计算机的初衷是利用它进行复杂的科学计算。随着计算机技术的发展,其应用远远超出了这个范围。在应用需求推动下,在计算机硬件、软件发展的基础上,数据管理技术经历了人工管理、文件系统、数据库系统三个阶段。一下是各个阶段的特点:
(1)人工管理阶段:数据不保存、应用程序管理数据、数据不共享、数据不具有独立性。
(2)文件系统阶段:数据可以长期保存,有文件系统管理系统,数据共享性差,冗余度大。
(3)数据库系统阶段:数据结构化,数据的共享性高,冗余度低,易扩充,数据独立性高,数据有数据库管理系统统一管理和控制。为此,数据由数据库管理系统还提供了一下几方面的的数据控制功能,数据的安全性保护、数据的完整性检查、并发控制和数据恢复。
2.数据库的特点
(1)数据共享;
(2)面向全组织的数据结构化:数据不再从属于一个特定应用,而是按照某种模型组织成为一个结构化的整体。它描述数据本身的特性,也描述数据与数据之间的种种联系;
(3)数据独立性;
(4)可控数据冗余度;
(5)统一数据控制功能;
数据安全性控制,指采取一定的安全保密措施确保数据库中的数据不被非法用户存取而造成数据的泄密和破坏;数据完整性控制,是指数据的正确性、有效性与相容性;并发控制,多个用户对数据进行存取时,采取必要的措施进行数据保护;数据恢复,系统能进行应急处理,把数据恢复到正确状态。
3、数据库概念结构设计,E-R图
学生成绩管理系统的概念结构设计是系统的需求分析,数据处理结合联系E-R模型的设计方法。下图为学生数据库结构的E-R图。
4、逻辑结构设计,将上述概念模型转换为关系模式,并进行优化分析。
根据E-R图,将其转化为如下数据实体。
学生:姓名,学号;
课程:课程名称,课程号;
查询成绩:姓名,课程名称。
5、物理设计,选择实施环境,即选择SQLServer2000作为本信息系统的数据库管理系统。
为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计。
建立数据库时,应先对数据进行分析,包括类型,长度等,然后开始着手建立数据库。针对本系统,需设计学生表(SC),表内信息包括,学号,课程,成绩。
学生表(SC)所含数据;
6.实施环境。
本系统有SQL语言编写,在Visual studio 20## 或更高软件版本下可正常运行。
Visual Studio 2008简介:VS2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。使用Visual Studio 2008可以高效开发Windows应用。设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。同时Visual Studio 2008支持项目模板、调试器和部署程序。Visual Studio 2008可以高效开发Web应用,集成了AJAX 1.0,包含AJAX项目模板,它还可以高效开发Office应用和Mobile应用。
六、系统详细设计
1.功能需求。
①用户通过账号,密码登陆系统;
②用户对学生课程成绩的查询、录入,修改及删除。
2.用户界面设计。
(1)主窗口设计
充分考虑界面易于操作的系统需求,主窗口使用简单和直观的设计,提供用户的登陆按键,及退出。主窗口的设计图如下:
主窗口设计图
(2)用户成绩查询,录入,修改,删除窗口设计图
3.程序代码设计与分析。
(1)成绩查询按键的主要代码
SqlConnection thisConnection = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=xxx08070087");
//表示到SQL Server的一个实例的连接
SqlCommand thisCommand = new SqlCommand("select * from SC where Sno='" + textBox1.Text + "'", thisConnection);
SqlDataAdapter thisAdapter = new SqlDataAdapter();
thisAdapter.SelectCommand = thisCommand;
DataSet thisDataSet = new DataSet();
thisConnection.Open();
thisAdapter.Fill(thisDataSet, "SC");
//在运行时设置 dataGrid1的数据源和数据成员属性,即在dataGrid1中显示数据集中的数据
dataGridView1.DataSource = thisDataSet.Tables[0];
thisConnection.Close();
分析:学生可以通过学号在“xxx08070087”库中的学生表(SC表)进行成绩的查询,学号对应textBox1输入。
(2)用户录入按键的代码
SqlConnection thisConnection = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=xxx08070087");
//表示到SQL Server的一个实例的连接
SqlCommand thisCommand = new SqlCommand("insert into SC(Sno,Cno,Grade) values ('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "')", thisConnection);
SqlDataAdapter thisAdapter = new SqlDataAdapter();
thisAdapter.SelectCommand = thisCommand;
DataSet thisDataSet = new DataSet();
thisConnection.Open();
thisAdapter.Fill(thisDataSet, "SC");
//在运行时设置 dataGrid1的数据源和数据成员属性,即在dataGrid1中显示数据集中的数据
if (thisDataSet != null)
{
MessageBox.Show("成功");
}
thisConnection.Close();
分析:管理员可对“xxx08070087”数据库中的学生表(SC表)进行成绩的录入。成绩的录入所需学号Sno,课程Cno,成绩Grade分别对应textBox1,textBox2,textBox3。当录入成功后系统会提示“成功”。
(3)成绩修改按键的主要代码
SqlConnection thisConnection = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=xxx08070087");
//表示到SQL Server的一个实例的连接
SqlCommand thisCommand = new SqlCommand("update SC set Grade='" + textBox1.Text + "' where Sno='" + comboBox1.Text + "'and Cno='" + comboBox2.Text + "'", thisConnection);
SqlDataAdapter thisAdapter = new SqlDataAdapter();
thisAdapter.SelectCommand = thisCommand;
DataSet thisDataSet = new DataSet();
thisConnection.Open();
thisAdapter.Fill(thisDataSet, "SC");
if (thisDataSet != null)
{
MessageBox.Show("修改已成功");
分析:管理员可对“xxx08070087”数据库中的学生表(SC表)进行成绩的修改。成绩的修改所需成绩Grade,学号Sno,课程Cno,分别对应textBox1,comboBox1,comboBox2。当修改成功后系统会提示“修改已成功”。
(4)成绩删除按键的主要代码
SqlConnection thisConnection = new SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=xxx08070087");
//表示到SQL Server的一个实例的连接
SqlCommand thisCommand = new SqlCommand("delete from SC where Sno ='" + comboBox1.Text + "'and Cno='" + comboBox2.Text + "'", thisConnection);
SqlDataAdapter thisAdapter = new SqlDataAdapter();
thisAdapter.SelectCommand = thisCommand;
DataSet thisDataSet = new DataSet();
thisConnection.Open();
thisAdapter.Fill(thisDataSet, "SC");
//在运行时设置 dataGrid1的数据源和数据成员属性,即在dataGrid1中显示数据集中的数据
if (thisDataSet != null)
{
MessageBox.Show("删除已成功");
}
thisConnection.Close();
分析:管理员可对“xxx08070087”数据库中的学生表(SC表)进行成绩的删除。成绩的修改所需学号,课程,分别对应comboBox1,comboBox2。当删除成功后系统会提示“删除已成功”。
(5)其他功能按键代码
退出键:
Application.Exit();
分析:退出该系统。
登陆键:
if (textBox1.Text == "lvjinxu" && textBox2.Text == "123456")
{
(new Form5()).Show();
}
else
MessageBox.Show("用户名或密码错误或为空,请重新输入", "提示");
分析:管理员登陆,账号:lvjinxu;密码:123456。登陆成功后,链接到Form5,若账号或密码错误,则显示“用户名或密码错误或为空,请重新输入”。
4.运行结果。
(1)主窗口程序运行结果:
用户输入账号与密码,登陆成功后,链接到Form5进行成绩的查询与管理
(2)用户进行查询运行的结果
输入学号,对应的相关成绩就会显示出来
(3)管理员对成绩的录入运行结果:
(4)用户对成绩的修改运行结果:
(5)管理员对成绩的删除运行结果:
七、系统使用说明
本系统是针对学生成绩管理而建立的系统,用户登录后可用对学生的课程及课程成绩进行操作。
用户账号:lvjinxu ;密码:123456;
用户可点击成绩查询,成绩修改,成绩录入,成绩删除来进行对学生成绩的查询和处理,将学号,成绩,课程输入相应的输入框中。
数据库的建立路径:D:\sqlserver2000\MSSQL\Data ,所建数据库为“xxx08070087”所需表为SC表
八、课设总结
通过做课程设计,我确实学到了相当多的东西。有些事情看起来很同意,但做起来并不是如此。在做本次数据库课程设计之前,我已经将课本上的东西基本掌握,自认为做一个很简单的课程设计应该很容易,然而真正操作起来却遇到了很多的麻烦。
首先,在开始做课程设计时对整个模块的把握不够好,以至于浪费了好多时间而没能按想象中的顺利完成。其次,在编写各个模块的程序代码时,真正感觉到了难度相当大,每次编写出来的代码都需要经过好几次修改才能顺利运行,而且在编写代码时常常会遇到一些很难解决的问题。
但是我总相信一句话“只要坚持,一千次失败过后,被会有一次闪亮的成功,凡事不能一蹴而就,对待学问、对待科研更是如此”,在做完这次课程设计之后,我也体会到了一种成功的喜悦。同时这次课程设计也让我查到了许多在数据库学习中的漏洞,我也通过这次的实践机会完善了自己的知识,起到了很好的查缺补漏的效果。
参考文献
1.《数据库原理及技术课程设计》作者:钱雪忠,甸海驰 清华大学出版社 2008
2.《SQL Server实用教程(第3版)》作者:刘启芳 电子工业出版社 2009
3.《数据库概论(第4版)》作者:萨师喧 2009
4.《Visual Studio 2008高级编程
》作者:(美)兰多夫,(美)加德纳
2009
5.《数据库原理与设计》作者:陶宏才 清华大学出版社 2009
含著作、教材、期刊论文等。