数据库学生成绩管理系统课程设计报告.docx
《数据库学生成绩管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《数据库学生成绩管理系统课程设计报告.docx(35页珍藏版)》请在冰点文库上搜索。
数据库学生成绩管理系统课程设计报告
数据库学生成绩管理系统课程设计报告
————————————————————————————————作者:
————————————————————————————————日期:
洛阳理工学院
课程设计报告
课程名称数据库课程设计
设计题目学生成绩查询系统
专业计算机科学与技术
班级B100506
学号B10050634
姓名孙帅杰
完成日期2013年1月6号
课程设计任务书
设计题目:
学生成绩管理系统
设计内容与要求:
设计内容:
教务员可以输入学生、教师、班级、课程信息,一个班级只属于一个专业,一个学生只属于一个班级。
教务员负责输入每个专业、每个班级需要学习哪些课程,指定课程的任课教师.一个教师可以教授多个班的多门课程。
教师可以查看学习该课程的学生名单.课程结束后,教师可以录入课程成绩。
课程分两类,必修课和选修课。
学生可以选修课程,每学期几门。
学生可以查看自己各门课程的成绩。
学生还可以进行评教,给老师打分。
系统管理员可以输入教室信息,并结合班级、课程、教室信息实现自动排课。
设计要求:
要求完成需求分析,写出功能需求和数据需求描述;
在需求分析的基础上完成数据库的概念结构设计、逻辑结构设计、物理结构
设计;
用C#语言,完成管理系统的部分程序模块的界面设计。
指导教师:
陶荣
2012年12月28日
课程设计评语
成绩:
指导教师:
年月日
1。
绪论
1.1设计目的
本课程设计的目的是使学生能熟练掌握简单的简单Windows窗体应用程序的设计和ADO。
net的应用,希望通过本次课程设计锻炼学生使用C#语言解决实际问题的能力。
1。
2开发工具选择
本系统后台数据库采用MicrosoftSQLServer数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;前台采用Microsoft公司的VisualStudio2010作为主要开发工具,可与SQLServer2008数据库无缝链接.
1。
3开发环境
系统开发平台:
MicrosoftVisualStudio2010
系统开发语言:
C#
数据库管理软件:
SQLServer2008
1。
4本报告的主要内容
本报告详细的介绍了学生成绩管理系统的开发过程,主要涉及到的工作如下:
系统的需求分析、系统的总体设计、系统的概念设计、系统各模块的详细设计、系统运行与测试。
2。
需求分析
2。
1系统需求简介
(1)系统目标
1.根据查询条件实现学生信息的查询
2。
学生选课信息查询、成绩信息的查询
3。
学生信息、课程信息、成绩信息的增加、删除、修改
4.对基本信息完成增加、删除、修改时,需注意表与表之间的关联
(2)功能需求分析
本系统的功能需求分析如下:
1。
学生信息查询:
学生可以根据学号、姓名、专业进行查询.
2。
学生信息管理:
主要是用于学生信息更新、插入、删除;
3.学生成绩录入:
用于学生成绩管理,录入学生成绩,也可以更新;
(3)性能需求分析
1.登录、用户界面需求:
简洁、易懂、易用、友好的用户界面。
2。
安全保密性需求:
只有凭借用户名和密码登陆系统,才能进行信息的管理等.
3。
总体设计
3。
1设计概述
根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。
把这些模块结合起来组成一个整体。
逐一实现各个功能。
3。
2系统总体结构及功能模块划分
经过对系统的需求分析,学生信息管理系统主要划分为三个部分:
学生信息查询,学生信息管理,学生成绩录入三个功能模块.系统的总体结构如图3—1所示.
图3-1系统的总体结构示意图
(1)学生信息查询模块
学生信息查询:
学生可以根据本人学号、姓名进行信息查询。
学生信息查询模块结构如图3-2所示.
图3-2学生信息管理模块结构示意图
(2)学生信息管理模块
学生信息管理:
主要是用于学生信息更新、插入、删除。
学生管理模块结构如图3—3所示.
图3—3学生信息管理模块结构示意图
3。
3系统数据库概念结构设计
根据对数据项与数据结构的分析,设计出能够满足系统需求的各种实体,及它们之间的关系,为后面的逻辑结构设计打下基础.
(1)系统E—R图
系统E-R图可以将各个实体之间的关系显示出来,将各个实体间的属性依赖表示明白。
教师与课程之间的关系:
教师与课程之间是m:
n的关系,即一个老师能教多门课程,一门课程可以由多个老师讲授。
图3—4教师与课程实体图
学生与教师之间的关系:
学生与教师之间是n:
m的关系,即一名老师可以教授多个学生,而一个学生可以由多个教师来教。
图3-5教师与学生的实体图
学生与课程之间的关系:
学生与课程之间是n:
m的关系,即一个学生可以选修多门课程,一门课程可以被多个学生选学。
图3-6学生与课程的实体图
学生与成绩之间的关系是n:
m的关系:
图3—7学生与成绩的实体图
管理员与用户的关系:
图3-8管理员与用户的实体图
图3-9学生成绩管理全局E—R图
3.4逻辑结构设计
(1)将E-R图转化为关系模型为:
管理员(用户名,密码)
学生(学号,姓名,性别,系名,专业,出生日期)
教师(教师号,姓名,性别,院系,联系电话)
课程(课程号,课程名,学分,教师)
成绩(学号,课程号,姓名,课程名,成绩,授课老师)
管理(教师号,学号,密码)
教授(教师号,课程号,课程名)
选修(学号,课程号,成绩)
讲授(教师号,课程号)
(2)将以上数据关系模型进行优化处理得关系模型:
学生信息(学号,姓名,性别,系名,专业,出生日期)
教师信息(教师号,姓名,性别,院系,联系电话)
管理员信息(用户名,密码,用户级别)
课程表(课程号,课程名,学分,教师)
成绩表(学号、课程号、成绩)
(3)物理模型设计
学生信息表具体有学号,姓名,性别,系名,专业,出生日期,如表3-1所示
表3—1学生信息表
字段
类型
长度
约束
索引
学号
字符型
8
主键约束
有
姓名
字符型
10
性别
字符型
2
系名
字符型
20
专业
数值型
20
出生日期
字符型
8
教师信息具体有教师号,姓名,性别,院系,专业,联系电话,如表3—2所示
表3-2教师信息表
字段
类型
长度
约束
索引
教师号
字符型
8
主键约束
有
姓名
字符型
10
性别
字符型
2
院系
字符型
20
专业
数值型
20
联系电话
字符型
11
管理员信息具体有用户名、密码、用户级别,如表3—3所示
字段
类型
长度
备注
用户名
字符型
8
学号、教师号
密码
字符型
6
用户级别
字符型
10
一般操作员/系统管理员
表3-3管理员信息表
课程表信息具体有课程号,课程名,学分,教师,如表3-4所示
表3—4课程表信息
字段
类型
长度
约束
索引
课程号
字符型
10
主键约束
有
课程名
字符型
30
学分
字符型
2
教师
字符型
10
成绩表具体有学号,课程号,成绩,如表3-5所示
表3—5成绩表
字段
类型
长度
约束
索引
学号
字符型
8
主键
有
课程号
字符型
10
主键
有
成绩
数值型
5
4。
主程序设计
4.1登录系统
namespaceCourseDesign
{
publicpartialclassLoginForm:
Form
{
#region属性
///
///是否登录
///〈/summary>
privatebool_isLogin=false;
publicboolIsLogin
{
get{return_isLogin;}
set{_isLogin=value;}
}
//用于记录当前登录用户名;
privatestaticstring_currentUser;
publicstaticstringCurrentUser
{
get{return_currentUser;}
}
//用于记录当前登录用户密码;
privatestaticstring_currentPsw;
publicstaticstringCurrentPsw
{
get{return_currentPsw;}
}
#endregion
publicLoginForm()
{
InitializeComponent();
this.labelInfo.Text=”";
this.txtBoxUser.Text="admin";
this。
txtBoxPsw。
Text="0";
}
//登录
privatevoidbtnOK_Click(objectsender,EventArgse)
{
if(txtBoxUser.Text.Trim()==”")
{
this.labelInfo.Text=”请输入您的用户名!
”;
}
elseif(txtBoxPsw.Text.Trim()=="”)
{
this。
labelInfo。
Text=”请输入您的密码!
”;
//MessageBox.Show("请输入您的密码",”错误提示:
”,MessageBoxButtons.OK,MessageBoxIcon。
Warning);
}
else
{
Commandcom=newCommand();
stringstr=@”select*fromUserInfowhereuserId=’"+txtBoxUser。
Text。
ToString()+”’”;
DataTabletable=com。
GetDataSet(str);
if(table.Rows.Count〈=0)
{
this.labelInfo.Text=”用户名不存在!
”;
txtBoxUser。
Text="”;
txtBoxPsw.Text=””;
return;
}
str=@”select*fromUserInfowhereuserId='"+txtBoxUser。
Text.ToString()+”’andpassWard='”+txtBoxPsw.Text。
ToString()+"’";
DataTabletableUser=com.GetDataSet(str);
if(tableUser.Rows。
Count〉0)
{
_currentUser=txtBoxUser。
Text;
_currentPsw=txtBoxPsw.Text;
IsLogin=true;
this。
Close();
}
else
{
this.labelInfo。
Text="密码错误!
”;
txtBoxPsw。
Text="”;
}
}
}
//取消
privatevoidbtnCencle_Click(objectsender,EventArgse)
{
this.Close();
}
//重置
privatevoidbtnReset_Click(objectsender,EventArgse)
{
txtBoxUser.Text=”";
txtBoxPsw。
Text="”;
}
privatevoidtxtBoxUser_Click(objectsender,EventArgse)
{
this。
labelInfo.Text="”;
}
privatevoidtxtBoxPsw_Click(objectsender,EventArgse)
{
this.labelInfo。
Text=””;
}
}
}
图4—1用户登录界面
4.2学生信息查询、保存、及修改
namespaceCourseDesign
{
publicpartialclassfrmViewInfo:
Form
{
#region属性
privateDBHelper。
TypeOfOperationForBill_mOperTypeOfBill=DBHelper.TypeOfOperationForBill。
nNull;
publicDBHelper.TypeOfOperationForBillOperTypeOfBill
{
get{return_mOperTypeOfBill;}
set{_mOperTypeOfBill=value;}
}
//
privatebool_isNew=false;
publicboolIsNew
{
get{return_isNew;}
set{_isNew=value;}
}
privatebool_isModified=false;
publicboolIsModified
{
get{return_isModified;}
set{_isModified=value;}
}
#endregion
publicfrmViewInfo(DBHelper。
TypeOfOperationForBillOperType)
{
_mOperTypeOfBill=OperTypeOfBill;
InitializeComponent();
SetFromText();
}
publicvirtualvoidSetFromText()
{
if(OperTypeOfBill==TypeOfOperationForBill.nView)
{
this.Text=”查看学生信息”;
}
else
{
this.Text="编辑学生信息”;
}
}
//添加
privatevoidtoolStripBtnAdd_Click(objectsender,EventArgse)
{
//this。
dataGridViewInfo.Rows。
Add();
//_isNew=true;
Commandcom=newCommand();
stringstrClass=@”selectclassIdfromClassInfowhereclassName='"+dataGridViewInfo。
CurrentRow.Cells["classid"]。
Value.ToString()+”'”;
stringdtClass=com.GetScalar(strClass)。
ToString();
stringstrdept=@"selectsdeptNofromSdeptwherename='”+dataGridViewInfo.CurrentRow.Cells[”Sdept"].Value。
ToString()+”'”;
stringdtDept=com。
GetScalar(strdept).ToString();
stringstr="select*fromStudentInfowherestuNum='"+dataGridViewInfo。
CurrentRow。
Cells[”stuNum”].Value。
ToString()+"'”;
DataTabledtable=com.GetDataSet(str);
if(dtable.Rows.Count〈=0)
{
if(dataGridViewInfo["stuNum”,dataGridViewInfo。
CurrentRow。
Index].Value!
=null&&dataGridViewInfo["name”,dataGridViewInfo。
CurrentRow。
Index].Value!
=null&&
dataGridViewInfo["sex”,dataGridViewInfo.CurrentRow。
Index].Value!
=null&&dataGridViewInfo["birthday”,dataGridViewInfo。
CurrentRow。
Index]。
Value!
=null&&
dataGridViewInfo["nation”,dataGridViewInfo.CurrentRow.Index].Value!
=null&&dataGridViewInfo[”address",dataGridViewInfo.CurrentRow。
Index]。
Value!
=null&&
dataGridViewInfo[”phone”,dataGridViewInfo。
CurrentRow.Index]。
Value!
=null&&dataGridViewInfo[”classid”,dataGridViewInfo.CurrentRow.Index].Value!
=null&&
dataGridViewInfo[”Sdept",dataGridViewInfo。
CurrentRow.Index].Value!
=null&&dataGridViewInfo["intoSchoolDate”,dataGridViewInfo。
CurrentRow.Index]。
Value!
=null)
{
stringsql=”insertintoStudentInfo(stuNum,name,sex,birthday,nation,address,phone,classid,intoSchoolDate,Sdept)values”;
sql+=”('”+dataGridViewInfo。
CurrentRow.Cells["stuNum”]。
Value.ToString()+"’,'”+dataGridViewInfo.CurrentRow。
Cells["name"]。
Value.ToString()+”’,'”+dataGridViewInfo。
CurrentRow.Cells[”sex”].Value。
ToString()
+"',’"+dataGridViewInfo。
CurrentRow。
Cells[”birthday”]。
Value.ToString()+"’,’"+dataGridViewInfo。
CurrentRow.Cells["nation”].Value。
ToString()+"',’”+dataGridViewInfo.CurrentRow.Cells[”address”].Value.ToString()
+"’,'"+dataGridViewInfo。
CurrentRow.Cells["phone"]。
Value.ToString()+”','"+dtClass+”',’”+dataGridViewInfo.CurrentRow。
Cells["intoSchoolDate”].Value。
ToString()+”',’"+dtDept+”’)";
if(com.ExecuteCommand(sql)〉0)
{
dataGridViewInfo。
Rows.Clear();
SelectStudentInfo();
MessageBox.Show("数据添加成功!
");
}
}
else
{
MessageBox。
Show("信息填写不完整!
请补充完整!
");
}
}
else
{
MessageBox.Show("该学生已存在,请审核信息!
");
}
}
protectedvirtualvoidfrmViewInfo_Load(objectsender,EventArgse)
{
this。
dataGridViewInfo。
Rows。
Clear();
this.dataGridViewInfo.Columns。
Clear();
//this.dataGridViewInfo.EditMode=DataGridViewEditMode.EditOnEnter;
DataGridViewColumncol=null;
col=newDataGridViewTextBoxColumn();
col。
Name=”stuNum”;
col.HeaderText=”学号";
this。
dataGridViewInfo.Columns。
Add(col);
col=newDataGridViewTextBoxColumn();
col.Name="name”;
col.HeaderText=”姓名”;
this。
dataGridViewInfo。
Columns。
Add(col);
DataGridViewComboBoxColumncol0=newDataGridViewComboBoxColumn();
col0.FlatStyle=FlatStyle。
Flat;
col0。
HeaderText=”性别";
col0.Name=”sex”;
col0.Items.Add(”男”);
col0.Items。
Add(”女");
this.dataGridViewInfo。
Columns.Add(col0);
col=newDataGridViewTextBoxColumn();
col.Name=”birthday”;
col.HeaderText=”出生年月";
this。
dataGridViewInfo.Columns。
Add(col);
col=newDataGridViewTextBoxColumn();
col.Name="nat