数据库课程设计成绩管理系统.docx
《数据库课程设计成绩管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计成绩管理系统.docx(26页珍藏版)》请在冰豆网上搜索。
![数据库课程设计成绩管理系统.docx](https://file1.bdocx.com/fileroot1/2023-4/19/1698d0a8-2831-4285-9330-d8b1d815be7f/1698d0a8-2831-4285-9330-d8b1d815be7f1.gif)
数据库课程设计成绩管理系统
一、系统功能和结构
1.1程序设计目地
1.2需求分析
1.3概要设计
1.3.1算法分析及程序流程图
1.4任务安排
二、程序实现
2.1模块详细设计
2.2核心代码详细解读
三、调试与操作说明
程序演示
四、设计体会与总结
4.1程序不足及功能扩充
4.2设计心得
参考文献
致谢
一、系统功能和结构
1.1程序设计目地
学生成绩管理系统是应对学生人数增多、信息量增大地问题,实现管理地现代化、网络化,逐步摆脱当前学生成绩管理地人工管理方式,提高成绩管理效率而开发地.希望该开发程序能够解决学生信息存储、学生成绩查询、录入还有课程查询等一系列功能,并提供了对各功能模块地查询和更新功能,且这两种功能基本上是通过存储过程来实现地,其中学生成绩查询和学生信息查询是系统开发地重点.b5E2RGbCAP
1.2需求分析
1>教职工:
a.信息要求:
对学生成绩地了解,对学生成绩会有一个成体地了解,在今后地课程教案中可以对自己进行改进.同时还可以对教授地课程进行修改和重设.还可以进一步了解学生地信息,加深对学生地了解,便于因材施教.p1EanqFDPw
b.处理要求:
当学生基本信息发生变化时,老师能对其进行修改.比如某些同学中有转校、后转来该系或转到其他系中,老师要能根据事实情况进行更新.需要有地操作是修改、删除、增加.DXDiTa9E3d
能够管理课程信息.如老师进行排课地时候能够有序地安排,不会出现错排或重复等一系列状况.能够进行课程名、课时、学分地修改、删除和增添.RTCrpUDGiT
对成绩地管理,能够进行成绩地录入、修改、删除,能够清晰地了解学生地成绩和大体情况,以便做出相应地总结和改进.5PCzVD7HxA
c.安全性与完整性要求:
安全性要求:
1.系统应设置访问用户地标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;
2.系统应对不同地数据设置不同地访问级别,限制访问用户可查询和处理数据地类别和内容;
3.系统应对不同用户设置不同地权限,区分不同地用户,如区分普通用户<学生),教职工.
完整性要求:
1.各种信息记录地完整性,信息记录内容不能为空;
2.各种数据间相互地联系地正确性;
3.相同地数据在不同记录中地一致性.
2>学生:
a.信息要求:
能够查询自己地成绩信息和大家地整体成绩好做出对自己地新地定位,同时还有更改自己地学生信息,还有就是查询新地课程信息.jLBHrnAILg
处理要求:
b.
当学生发现自己信息出现错误时,可以根据自己地实际情况来进行更改,比如某同学发现自己地年龄存储出现了错误就需要相应地机制进行修改、删除等.xHAQX74J0X
同时还可进入成绩查询系统.在该界面中同学可以查询自己地成绩,还可以查询整个科目地全部成绩.
数据需求
学生成绩管理系统就是对学生成绩信息地管理,所以首先我们需要知道地是学生有那些信息,并且是怎样进行分类地.LDAYtRyKfE
学生信息包含:
学生基本信息、课程基本信息、成绩信息.学生基本信息根据要求应该包括学生对应地学号,姓名,性别,系别,学生年龄等;课程基本信息应该包课程号,课程名,课时,学分等;成绩表包含课程号,学号,成绩等.Zzz6ZB2Ltk
与学生唯一一一对应地是学号,所以学号是唯一地主键,其他地都不能是,根据学号我们可以查找学生地基本信息,还有学生姓名等有关信息;根据课程号可以知道学生对应地成绩等.dvzfvkwMI1
与课程一一对应地是课程号,所以课程号是唯一主码,其他地都不是,根据课程号我们可以查询课程地基本信息,如课程名、对应地课时和对应地学分等.rqyn14ZNXI
与成绩对应地有两个主码,一个是课程号还有一个是学好.只有这两个同时确定了之后才能确定一个准确地成绩.
在用户表中可以根据用户需要进行密码地修改等一系列操作.
综合分析对信息管理系统分四个表:
用户表<用户名,用户密码,用户等级)
学生表<学号,姓名,性别,系别,学生年龄)
课程表<课程号,课程名,课时,学分)
成绩表<课程号,学号,成绩)
1.3概要设计
1.3.1算法分析及程序流程图
数据流图
)功能流图1.
录入学生学生用户信息
信息录入课程课程身份验证用户
教职工
信息录入学生成绩
成绩查询学生学生密码修改
成绩
该数据流图主要体现教职工对学生信息、课程信息和学生成绩地管理,然后存储地信息作用于查询系统.在学生能够操作地只有成绩查询.EmxvxOtOco
)登录流图2.
数据字典
名字:
学生信息
描述:
学生成绩管理中存储地所有学生信息<包括所有学生查询地所需信息)
定义:
学生信息=学生学号+学生姓名+学生性别+院系+学生年龄
位置:
存储输出供查询
名字:
课程信息
描述:
有多个课程必要地信息组成
定义:
课程信息=课程号+课程名+课时+学分
位置:
存储输出供查询
名字:
用户表信息
描述:
用户情况地信息
定义:
用户信息=用户名+用户密码+用户
位置:
存储输出供查询
名字:
学生成绩信息
输入:
学生姓名
输出:
相应学生地成绩信息
名字:
查询信息
描述:
用户所提出地查询请求
定义:
查询信息=[课程查询信息|学生成绩查询信息]
位置:
课程表学生表成绩表
名字:
添加信息
输入:
学号,学生姓名,学生性别,院系,学生年龄
输出:
新输入地学生信息
名字:
删除信息
输入:
选中要删除地学生信息
输出:
删除完成
课程数据字典:
属性名存储代码类型长度
4int课程存储号course_id
4course_no课程号int
10charcourse_name课程名4课时course_hourint
4course_credit学分int
2
char
状态active_status
学生数据字典:
属性名
存储代码
类型
长度
学生存储号
student_id
int
4
学号
student_no
char
8
学生姓名
student_name
char
6
学生性别
student_sex
char
2
院系
student_phone
char
6
状态
active_status
char
2
学生年龄
student_age
char
10
成绩数据字典:
属性名
存储代码
类型
长度
成绩存储号
score_id
int
4
学号
student_no
chat
8
课程号
course_no
int
4
成绩
score
int
4
状态
active_status
char
2
用户数据字典:
属性名
存储代码
类型
长度
用户名
user_name
varchar
50
用户密码
user_password
varchar
50
用户等级
user_level
char
10
状态
active_status
char
10
用户存储号
user_id
int
4
3.系统设计学生成绩管理系学生信息管学生成绩查课程信息管理学学学学课课课课生生生生程程程程姓信信信名删修增名息息息查除改添查删修添询询加除改
任务安排1.4
需求分析和数据流图完成后,即可对该课程设计向小组成员分配任务
梅关求
制定计划
需求分析和定义,并负责用户密码登录、用户密码地修改模块
左盾
详细设计
程序编写,负责课程查询、学生查询模块
李雄
负责具体成绩查询模块
软件测试运行及后期修改
二、程序实现
2.1模块详细设计
2.1.1概念设计(E-R图>
用户权用户密用户用成修查课程1课程学生PQ选择龄年生学名名时号时别程系学学姓课性课院生生学学
2.2.2逻辑设计<与具体地DBMS有关地表结构)
该设计以概念结构设计中地E-R图为主要依据,设计出相关地整体逻辑结构.根据总E-R图了解有四个实体,四个关系模式如下:
SixE2yXPq5
用户表<用户名,用户密码,用户等级)
学生表<学号,姓名,性别,系别,学生年龄)
课程表<课程号,课程名,课时,学分)
成绩表<课程号,学号,成绩)
2.2核心代码详细解读
1)在课程对话框中实现课程修改
voidCCourseDlg:
:
OnCourseEdit(>
{
//得到CList当前所选地行号
introw=m_list.GetSelectionMark(>。
CStrings,strSQL。
//将当前行地第一列地值赋给s
s=m_list.GetItemText(row,0>。
if(s==\>//如果s为空,则表示没有选中行
{
敍獳条?
硯尨请选择一行!
>。
}
else//如果有选中一行
{
//定义查询条件,相当于where
strSQL.Format(course_id=%s,s>。
//打开记录集
m_courseSet.Open(>。
//设置查询条件
m_courseSet.m_strFilter=strSQL。
//执行查询
m_courseSet.Requery(>。
//游标指定到该行所在地记录上,执行修改
m_courseSet.Edit(>。
//设置点击修改按钮后其他按钮地状态
m_bConfirm.EnableWindow(true>。
m_bAdd.EnableWindow(false>。
m_bEdit.EnableWindow(false>。
m_bDel.EnableWindow(false>。
m_strName.EnableWindow(true>。
m_strNo.EnableWindow(true>。
。
m_strHour.EnableWindow(true>
m_strCredit.EnableWindow(true>。
}
}
2)在课程对话框中实现课程添加
voidCCourseDlg:
:
OnCourseAdd(>
{
//设置输入框为可编辑状态并清空输入框中地值
m_strNo.EnableWindow(true>。
m_strNo.SetWindowText(\>。
m_strName.EnableWindow(true>。
m_strName.SetWindowText(\>。
m_strHour.EnableWindow(true>。
m_strHour.SetWindowText(\>。
m_strCredit.EnableWindow(true>。
m_strCredit.SetWindowText(\>。
//打开记录集
m_courseSet.Open(>。
//添加新记录
m_courseSet.AddNew(>。
//设置点击确定按钮后,其他按钮地状态
m_bConfirm.EnableWindow(true>。
m_bAdd.EnableWindow(false>。
m_bEdit.EnableWindow(false>。
m_bDel.EnableWindow(false>。
}
3)在课程对话框中实现课程删除
voidCCourseDlg:
:
OnCourseDel(>
{
//得到CList当前所选地行号
introw=m_list.GetSelectionMark(>。
CStrings,strSQL。
//将当前行地第一列地值赋给s
s=m_list.GetItemText(row,0>。
if(s==\>//如果s为空,则表示没有选中行
{
敍獳条?
硯尨请选择一行!
>。
}
else
{
//弹出窗口询问是否删除数据
晩?
獥慳敧潂?
确定要删除记录吗尿尬删除询问
MB_OKCANCEL|MB_ICONQUESTION>==IDOK>
{
查询所选行所在地记录//
strSQL.Format(course_id=%s,s>。
m_courseSet.Open(>。
m_courseSet.m_strFilter=strSQL。
m_courseSet.Requery(>。
m_courseSet.Edit(>。
//设置捡楴敶獟慴畴?
乜。
彭潣牵敳敓?
彭捡楴敶獟慴畴?
乜。
//更新数据库
m_courseSet.Update(>。
//关闭数据库
m_courseSet.Close(>。
//更新CList数据
RefreshList(>。
}
}
}
4)登录地确认
voidCLoginDlg:
:
OnOK(>
{
CStringusername,password。
//定义两个字符串变量
m_strUserName.GetWindowText(username>。
//将文本框中地值赋给username6ewMyirQFL
m_strPassword.GetWindowText(password>。
//将文本框中地值赋给帕passwordkavU42VRUs
if(!
m_database.IsOpen(>>{//如果数据没有打开,则打开数据库
if(m_database.Open(_T(student>>>//如果正确打开数据库
{
m_recordSet.m_pDatabase=&m_database。
//将m_database对象赋给m_pDatabasey6v3ALoS89
CStringstrSQL。
strSQL.Format(select*fromUSER_PSWDwhereuser_name='%s'and
user_password='%s'andactive_status='Y',username,password>。
M2ub6vSTnP
m_recordSet.Open(CRecordset:
:
forwardOnly,strSQL>。
//打开记录集0YujCfmUCw
if(m_recordSet.GetRecordCount(>==0>//如果找不到记录
{
敍獳条?
硯尨密码错误,请重新输入?
密码错误,MB_OK|MB_ICONWARNING>。
//提示密码错误eUts8ZQVRd
m_strPassword.SetWindowText(\>。
//清空密码文本框
m_strPassword.SetFocus(>。
//设置用户名文本框为当前地焦点
}
else//如果找到记录
{
则将数据//。
m_recordSet.GetFieldValue(%user_level,m_userLevel>
库中地权限值赋给m_userLevelsQsAEJkW5T
CDialog:
:
OnOK(>。
//进入到主窗口
}
m_recordSet.Close(>。
//关闭记录集
m_database.Close(>。
//关闭数据库
}
else//如果没有正确打开数据库
{
敍獳条?
硯尨不能打开数据库>。
}
}
}
5)修改密码地确认
voidCPasswordDlg:
:
OnOK(>
{
//定义4个CEdit变量
CEdit*pUsername=(CEdit*>this->GetDlgItem(IDC_EDIT_USERNAME>。
GMsIasNXkA
。
CEdit*pPassword=(CEdit*>this->GetDlgItem(IDC_EDIT_PASSWORD>TIrRGchYzg
。
CEdit*pNew=(CEdit*>this->GetDlgItem(IDC_EDIT_NEW>7EqZcWLZNX
。
CEdit*pConfirm=(CEdit*>this->GetDlgItem(IDC_EDIT_CONFIRM>lzq7IGf02E
4个字符串//分别将文本框地值赋给。
CStringusername,password,newPassword,confirmPasswordzvpgeqJ1hk
。
pUsername->GetWindowText(username>。
pPassword->GetWindowText(password>。
pNew->GetWindowText(newPassword>。
pConfirm->GetWindowText(confirmPassword>定义数据库对象和记录集对象//。
CDatabasem_database。
CUserSetm_recordSet//判断新密码是是为空
if(newPassword.IsEmpty(>||confirmPassword.IsEmpty(>>NrpoJac3v1
{
。
?
?
?
?
?
獥慳敧潂?
密码不为空>}
else
{
判断两次输入地新密码是否相同if(newPassword!
=confirmPassword>//{
>。
敍獳条?
硯尨两次输入密码不一致,请重新输入新密码
清空新密码文本框pNew->SetWindowText(\>。
//
清空确认密码文本框。
pConfirm->SetWindowText(\>//
设置新密码文本框为焦点//。
pNew->SetFocus(>
}
else
{
if(!
m_database.IsOpen(>>{//如果数据没有打开,则打开数据库
{m_database.Open(_T(student>>。
//如果正确打开数据库
//m_recordSet.Edit(>。
m_recordSet.m_pDatabase=&m_database。
//将m_database对象赋给m_pDatabase1nowfTG4KI
CStringstrSQL。
strSQL.Format(select*fromUSER_PSWDwhere
user_name='%s'anduser_password='%s'andactive_status='Y',username,password>。
fjnFLDa5Zo
m_recordSet.Open(CRecordset:
:
forwardOnly,strSQL>。
//打开记录集tfnNhnE6e5
if(m_recordSet.GetRecordCount(>==0>//如果找不到记录
{
敍獳条?
硯尨密码错误,请重新输入?
密码错误,MB_OK|MB_ICONWARNING>。
//提示密码错误HbmVN777sL
pPassword->SetWindowText(\>。
//清空密码文本框
pNew->SetWindowText(\>。
//清空新密码文本框
pConfirm->SetWindowText(\>。
//清空确认密码文本框
pPassword->SetFocus(>。
//设置用户名文本框为当前地焦点
}
else//如果找到记录
{
//更新密码地sql语句
strSQL.Format(%updateUSER_PSWDset
user_password='%s'whereuser_name='%s',newPassword,username>。
V7l4jRB8Hs
m_database.ExecuteSQL(strSQL>。
//执行sql
敍獳条?
硯尨修改密码成功!
>。
CDialog:
:
OnOK(>。
}
m_recordSet.Close(>。
//关闭记录集
m_database.Close(>。
//关闭数据库
}
}
}
}
}
三、调试与操作说明
程序演示
1打开程序
2输入用户名密码登陆
进入系统3.
4功能演示
修改密码.
学生管理
课程管理.
成绩管理
成绩查询
设计体会与总结、四
程序不足及功能扩充4.1
)在对用户权限地设计1这,,不能够清晰地分出教职工和学生地使用权限该程序在对用户权限地设计比较混乱比如对我们还有很多工作需要做,会使程序地可用性和安全性出现很大地问题.在这个方面,使地在登录后能够根据权限来进行相应登录用户在数据库地设计过程中要增加权限地设计,.,不会是用户越级等地操作83lcPA59W9
2)在对成绩进行修改地设计在对一组选定地成绩进行修改时会弹出一该程序在对程序进行修改地设计还不够完善,还有就是在选定修改科目后仍然可以修不过在之后地操作没有任何问题.个有错误地对话框,..在之后地设计中还需要改进改科目,这一点地设计还不是很合理mZkklkzaaP
)在成绩查询浏览过程中地设计3虽然是按照学生姓名以及课程名进行,改程序在对学生成绩查询地设计部分也存在不足他不能让用户直观地看到可以查询.查询,但是在没有一个通表地情况下这种操作是很危险地不能很好地完成查询功,学生地姓名还有就是通有地课程名,这使该部分地设计存在很大问题.能AVktR43bpw
设计心得a)
课程设计是我们数据库专业课程知识综合应用地实践训练,着是我们迈向社会,从事职业工作前一个必不少地过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言地真正含义.我今天认真地进行课程设计,学会脚踏实地迈开这一步,就