数据库原理课程设计报告.docx
《数据库原理课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据库原理课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。
数据库原理课程设计报告
《数据库原理课程设计》课程设计
任务书
一、目的与要求
1.本实验是为网络工程、信息安全等专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力而设置的实践环节。
通过这个环节,使学生具备应用数据库原理对数据库系统进行设计的能力。
为后继课程和毕业设计打下良好基础。
2.通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。
3.通过对一个数据库系统的设计,培养学生对数据库需求分析、数据库方案设计、系统编码、界面设计和软件调试等各方面的能力。
是一门考查学生数据库原理、面向对象设计方法、软件工程和信息系统分析与设计等课程的综合实验。
二、主要内容
针对一个具有实际应用场景的中小型系统(见题目附录)进行数据库设计,重点分析系统涉及的实体、实体之间的联系,实现增加、删除、更新、查询数据记录等基本操作。
大致分为如下步骤:
1.理解系统的数据库需求,分析实体及实体间联系,画出E-R图:
1.分析确定实体的属性和码,完成对该实体的实体完整性、用户自定义完整性的定义。
2.设计实体之间的联系,包括联系类型和联系的属性。
最后画出完整的E-R图。
2.根据设计好的E-R图及关系数据库理论知识设计数据库模式:
1)把E-R图转换为逻辑模式;
2)规范化设计。
使用关系范式理论证明所设计的关系至少属于3NF并写出证明过程;如果不属于3NF则进行模式分解,直到该关系满足3NF为止,要求写出分解过程。
3)设计关系模式间的参照完整性,要求实现级联删除和级联更新。
4)用SQL语言完成数据库内模式的设计。
3.数据库权限的设计:
1)根据系统分析,完成授权操作;
2)了解学习收回权限的操作。
4.完成用户界面的设计,对重要数据进行加密。
5.连接数据库,用宿主语言实现系统所需的各种操作:
1)实现数据记录的录入、删除、查询和修改。
2)以视图的形式完成复杂查询,比如多表、多条件等。
三、进度计划
序号
设计(实验)内容
完成时间
备注
1
根据任务书完成信息模型(概念模型、逻辑模型、完整性、规范化)的设计,并基于选用的DBMS实现该信息模型,然后录入初始数据
2
根据任务书完成各种数据定义和数据操作,并保留所有SQL语句。
3
数据库权限设计,用户界面设计
4
用可视化开发工具环境开发学生选定的信息系统(C/S或者B/S模式)
5
系统的完善与验收
四、设计(实验)成果要求
1.在DBMS(如oracle,SQLServer2005/2008,DB2等)上完成完整的数据库的设计;
2.使用可视化开发平台完成信息系统,要求可以正确运行;
3.完成实验报告。
五、考核方式
1.在微机上检查数据库模式的设计、三大完整性的设计、关系属于几范式等;
2.在微机上检查系统的运行结果,要求学生阐述使用的相关技术;
3.实验报告的检查。
六、题目附录
1.学生信息管理信息系统
2.图书管理信息系统
3.物资管理信息系统
4.汽车销售管理信息系统
5.超市管理信息系统
6.通讯录管理信息系统
7.工资管理信息系统
8.酒店管理信息系统
9.小区物业管理信息系统
学生姓名:
指导教师:
年月日
一、课程设计(综合实验)的目的与要求
1.正文为宋体,五号字行间距为21
1.1------------
1.2------------
二、设计(实验)正文
1.正文为宋体,五号字行间距为21
1.1------------
1.2------------
三、课程设计(综合实验)总结或结论
1.正文为宋体,五号字行间距为21
1.1------------
1.2------------
四、参考文献
[1]作者1,作者2书名.出版单位,版本.出版日期
附录(设计流程图、程序、表格、数据等)
注:
根据课程设计、综合实验的内容将标题任选其一。
一、需求分析
1.需求概述
本系统将提供给教学管理人员和学生使用,进行日常教务工作的查询、管理和调度,提高时间的利用率和工作效率。
系统应该提供的功能包括:
1.永久存储用户输入的信息;
2.数据调度和数据查找操作简易;
3.数据的删除和更新很方便;
4.为不同级别用户设置不同操作权限;
本项目的产品是一个独立、完整的程序,目前不提供其他系统的接口。
2.数据描述
名称:
ADMIN
别名:
管理员表
描述:
管理员信息
定义:
管理员ID+姓名+登陆密码+管理员级别
位置:
SQLServer数据库
3.运行需求
1)用户界面
本系统采用C/S架构,所以在使用之前必须安装该程序,所以界面不会像B/S那样发生变形或者扭曲等危险,界面问题得到了解决。
2)硬件接口
本系统未使用任何硬件,只需要电脑配备基本的输入输出硬件即可,无另外诸如扫描器,加密器等硬件,故不需要硬件接口。
3)软件接口
本系统未与其他系统发生关系,也没有使用到系统的API,所以不对外提供软件接口。
4)故障处理
A、在用户输入一些不合理的数据的时候,能够进行一些合理的提示信息,不能因为输入错误而导致系统的错误,或者程序停止运行;
B、程序运行时,对服务器和网络通信故障能够识别并提示,当故障排除后,程序恢复正常运行;
C、数据库要求有灾难备份机制,以防止数据的全部丢失。
二、系统功能设计
2.1系统程序流程图
系统主体为信息的查询,更新,删除,故本系统的主要系统主题流程图为下
图:
系统总体流程图
2.2常用模块设计
2.2.1学生成绩和学生信息查询。
功能:
查询、浏览学生信息。
可以查询单一记录,也可以浏览所有信息。
操作:
单击显示即可浏览所有学生信息或成绩信息,输入学号点击查询可查询单独记录。
查询
条件
不符合条件
数据库
显示结果
退出
教师信息查询同上。
2.2.2学生成绩录入删除窗体
功能:
设置权限管理,管理人员可以录入删除学生成绩和信息。
操作:
在文本框处填写信息后点击添加实现录入成绩功能,输入学号点击删除实现成绩删除功能。
登陆成绩管理系统
成绩录入模块
学生考试成绩
退出系统
2.2.3学生成绩修改
功能:
修改学生成绩信息。
操作:
填写信息后,输入新的成绩,点击修改。
增加记录
不满足
条件
满足
数据库
显示结果
退出
学生信息录入修改同上。
2.2.4学生成绩单导出
功能:
将学生成绩单导出至指定位置的Excel表格
登陆
选择成绩单
选择路径
导出成绩
打开文件
退出
三、数据库概念设计
系统E-R图
n
编号
性别
姓名
管理
教师
考核
年龄
密码
n
n
n
系统E-R图结构
四、数据库逻辑设计
4.1数据库表设计
表名
说明
XS
学生信息表
KC
课程信息表
XS_XC
选课,成绩信息表
Admin
管理员信息表
Teacher
教师信息表
表1Admin表
字段号
字段名
字节长度
数据类型
说明
1
Admin_ID
int
管理员ID主码
2
Admin_name
10
nchar
管理员姓名
3
Admin_pass
10
nchar
管理员密码
4
Admin_level
int
管理员级别
表2KC表
字段号
字段名
字节长度
数据类型
是否允许空值
说明
1
KCH
int
否
课程号,主码
2
KCM
10
nchar
否
课程名
3
KKXQ
4
Int
否
开课学期
4
XS
Int
否
学时
5
XF
Int
否
学分
表3XS表结构
字段号
属性名
字节长度
数据类型
是否允许空值
说明
1
XH
10
nchar
否
学号,主码
2
XM
10
nchar
否
姓名
3
ZYM
10
nchar
是
专业名
4
PASS
10
nchar
否
密码
5
XB
10
nchar
是
性别
6
CSNY
date
否
出生日期
7
XF
int
否
已修学分
8
BZ
100
nchar
是
备注
表4XS_XC表结构
字段号
属性名
字节长度
数据类型
是否允许空值
说明
1
课程号
10
nchar
否
参照KC表主键
2
学号
10
nchar
否
参照XS表主键
3
成绩
Float
是
成绩(0~100)
4
id
int
否
主码
表5Teacher表结构
字段号
属性名
字节长度
数据类型
是否允许空值
说明
1
teach_num
10
nchar
否
教工号,主码
2
teach_name
10
nchar
否
姓名
3
teach_pass
10
nchar
是
密码
4
age
10
int
否
年龄
5
sex
4
nchar
是
性别
4.2数据库表关系图
4.3数据库视图设计
View_Score视图
5、系统编码与实现
5.1程序部分代码
界面名
主要功能
CourseForm
课程操作表
SearchForm
学生信息表
MainForm
主要界面
Averge
平均成绩查看界面
Index
首页
LoginForm
登陆界面
ExcelPutOut
电子表格输出表
MainForm1
选项卡式主界面
TeacherForm
教师管理页面
ChangePass
修改密码页面
下面将主要代码展示如下
5.1.1ExcelOperater.cs(Excel导出类)
usingSystem;
usingMicrosoft.Office.Interop.Excel;
usingSystem.Diagnostics;
usingSystem.Collections.Generic;
usingSystem.Reflection;
usingSystem.Data;
///
///Excel文件操作类
///
publicclassExcelOperater
{
#region变量
stringstrFilePath=string.Empty;
intsheetcount=0;
///
///当前Excel的Sheet总数
///
publicintSheetCount
{
get{returnsheetcount;}
set{sheetcount=value;}
}
ApplicationexcelApp;
Workbookwb;
#endregion
#region导出Excel文件
/**/////
///导出Excel文件
///
///要导出的DataSet
///要导出的文件名
publicvoidExportExcel(DataSetds,stringstrExcelFileName)
{
objectobjOpt=Missing.Value;
Applicationexcel=newApplication();
//excel.Visible=true;
_Workbookwkb=excel.Workbooks.Add(objOpt);
_Worksheetwks=(_Worksheet)wkb.ActiveSheet;
wks.Visible=XlSheetVisibility.xlSheetVisible;
introwIndex=1;
intcolIndex=0;
System.Data.DataTabletable=ds.Tables[0];
foreach(DataColumncolintable.Columns)
{
colIndex++;
excel.Cells[1,colIndex]=col.ColumnName;
}
foreach(DataRowrowintable.Rows)
{
rowIndex++;
colIndex=0;
foreach(DataColumncolintable.Columns)
{
colIndex++;
excel.Cells[rowIndex,colIndex]=row[col.ColumnName].ToString();
}
}
//excel.Sheets[0]="sss";
try
{
wkb.SaveAs(strExcelFileName,objOpt,null,null,false,false,XlSaveAsAccessMode.xlNoChange,null,null,null,null,null);
}
catch
{
}
wkb.Close(false,objOpt,objOpt);
excel.Quit();
}
#endregion
///
///创建Excel表
///
///
publicvoidCreateExcel(stringfileName)
{
Objectmissing=Missing.Value;
Microsoft.Office.Interop.Excel.Applicationm_objExcel=newMicrosoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbooksm_objWorkBooks=m_objExcel.Workbooks;
Microsoft.Office.Interop.Excel.Workbookm_objWorkBook=m_objWorkBooks.Add(true);
Microsoft.Office.Interop.Excel.Sheetsm_objWorkSheets=m_objWorkBook.Sheets;;
Microsoft.Office.Interop.Excel.Worksheetm_objWorkSheet=(Microsoft.Office.Interop.Excel.Worksheet)m_objWorkSheets[1];
m_objWorkBook.SaveAs(fileName,missing,missing,missing,missing,missing,Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange,
missing,missing,missing,missing,missing);
m_objWorkBook.Close(false,missing,missing);
m_objExcel.Quit();
}
///
///关闭Excel进程
///
///是否保存修改
publicvoidClose(boolsaveChange)
{
if(wb!
=null)
{
wb.Close(saveChange,strFilePath,Type.Missing);
}
if(excelApp!
=null)
{
excelApp.Workbooks.Close();
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
}
GC.Collect();
}
#endregion
}
5.1.2MainForm.cs(主界面代码)
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceScoreManagement
{
publicpartialclassMainForm:
Form
{
publicMainForm(stringrole)
{
InitializeComponent();
if(role=="1")
{
button2.Enabled=false;
button3.Enabled=false;
}
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
//创建学生信息查询窗体
SearchFormsearchfrm=newSearchForm();
searchfrm.ShowDialog();
}
privatevoidbutton2_Click(objectsender,EventArgse)
{
//创建学生信息修改窗体
ModifyFormmodifyfrm=newModifyForm();
modifyfrm.ShowDialog();
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
//创建学生成绩录入窗体
ScoreFormscorefrm=newScoreForm();
scorefrm.ShowDialog();
}
privatevoidMainForm_Load(objectsender,EventArgse)
{
}
privatevoidpictureBox2_Click(objectsender,EventArgse)
{
LoginFormloginfrm=newLoginForm();
loginfrm.ShowDialog();
this.Close();
}
privatevoidbutton4_Click(objectsender,EventArgse)
{
CourseFormcoursefrm=newCourseForm();
coursefrm.ShowDialog();
this.Close();
}
}
}
5.2部分界面截图
1)主界面
2)密码修改界面
3)学生信息查询界面
4)成绩管理界面
5)选课信息,成绩管理
6)教师信息管理界面
7)成绩单导出界面
六、总结体会
数据库课程上完后,我完成了一个基本的学生成绩管理系统,从系统需求分析、数据库设计开始到系统的设计实施,逐步熟悉了如何利用vs2010的C#平台和SQLServer2008数据库开发一个Winform应用系统。
在老师的知道下我经过了一周的时间,花了2天学习和完成各种图,在查阅部分资料逐渐了解系统需求后,我参照老师给我发的需求分析规格说明书、系统总体设计说明书和详细设计说明书,编写了一个简单的总体设计和详细设计说明书。
剩下的时间一直在反复编写和调试程序,从课本和网上查阅相关资料,终于完成了整个课程设计。
在这个过程中,也遇到不少困难,如编程逻辑把握不住,经验太少,不太善于调试程序等。
在一次次克服困难的过程中,我得到了极大的锻炼,获得了许多宝贵的软件开发经验和技巧,我相信这将为我今后的学习工作打下坚实的基础。
本次课程设计很好的锻炼了我的文档编写能力。
我也切实的体会到了文档的重要性。
也发现了自己自己的代码不够规范,在以后的学习中,需要完善自己的软件工程专业知识,从一名专业人员的角度理解客户的需求,提高自己的需求分析和软件设计能力,在以后的编程中规范好自己的代码。