数据库课程设计成绩管理系统.docx

上传人:b****3 文档编号:5359959 上传时间:2022-12-15 格式:DOCX 页数:20 大小:235.13KB
下载 相关 举报
数据库课程设计成绩管理系统.docx_第1页
第1页 / 共20页
数据库课程设计成绩管理系统.docx_第2页
第2页 / 共20页
数据库课程设计成绩管理系统.docx_第3页
第3页 / 共20页
数据库课程设计成绩管理系统.docx_第4页
第4页 / 共20页
数据库课程设计成绩管理系统.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数据库课程设计成绩管理系统.docx

《数据库课程设计成绩管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计成绩管理系统.docx(20页珍藏版)》请在冰豆网上搜索。

数据库课程设计成绩管理系统.docx

数据库课程设计成绩管理系统

目 录

一、系统功能和结构

1.1程序设计目的

1.2需求分析

1.3 概要设计

1.3.1   算法分析及程序流程图

1.4任务安排

二、程序实现

2.1 模块详细设计

2.2核心代码详细解析

三、调试与操作说明

 程序演示

四、设计体会与总结

4.1  程序不足及功能扩充

4.2  设计心得

参考文献

 

致谢

 

一、系统功能和结构

1.1程序设计目的

学生成绩管理系统是应对学生人数增多、信息量增大的问题,实现管理的现代化、网络化,逐步摆脱当前学生成绩管理的人工管理方式,提高成绩管理效率而开发的。

希望该开发程序能够解决学生信息存储、学生成绩查询、录入还有课程查询等一系列功能,并提供了对各功能模块的查询和更新功能,且这两种功能基本上是通过存储过程来实现的,其中学生成绩查询和学生信息查询是系统开发的重点。

1.2需求分析

1)教职工:

a.信息要求:

对学生成绩的了解,对学生成绩会有一个成体的了解,在今后的课程教学中可以对自己进行改进。

同时还可以对教授的课程进行修改和重设。

还可以进一步了解学生的信息,加深对学生的了解,便于因材施教。

b.处理要求:

当学生基本信息发生变化时,老师能对其进行修改。

比如某些同学中有转校、后转来该系或转到其他系中,老师要能根据事实情况进行更新。

需要有的操作是修改、删除、增加。

能够管理课程信息。

如老师进行排课的时候能够有序的安排,不会出现错排或重复等一系列状况。

能够进行课程名、课时、学分的修改、删除和增添。

对成绩的管理,能够进行成绩的录入、修改、删除,能够清晰的了解学生的成绩和大体情况,以便做出相应的总结和改进。

c.安全性与完整性要求:

安全性要求:

1.系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;

2.系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;

3.系统应对不同用户设置不同的权限,区分不同的用户,如区分普通用户(学生),教职工。

完整性要求:

1.各种信息记录的完整性,信息记录内容不能为空;

2.各种数据间相互的联系的正确性;

3.相同的数据在不同记录中的一致性。

2)学生:

a.信息要求:

能够查询自己的成绩信息和大家的整体成绩好做出对自己的新的定位,同时还有更改自己的学生信息,还有就是查询新的课程信息。

b.处理要求:

当学生发现自己信息出现错误时,可以根据自己的实际情况来进行更改,比如某同学发现自己的年龄存储出现了错误就需要相应的机制进行修改、删除等。

同时还可进入成绩查询系统。

在该界面中同学可以查询自己的成绩,还可以查询整个科目的全部成绩。

数据需求

学生成绩管理系统就是对学生成绩信息的管理,所以首先我们需要知道的是学生有那些信息,并且是怎样进行分类的。

学生信息包含:

学生基本信息、课程基本信息、成绩信息。

学生基本信息根据要求应该包括学生对应的学号,姓名,性别,系别,学生年龄等;课程基本信息应该包课程号,课程名,课时,学分等;成绩表包含课程号,学号,成绩等。

与学生唯一一一对应的是学号,所以学号是唯一的主键,其他的都不能是,根据学号我们可以查找学生的基本信息,还有学生姓名等有关信息;根据课程号可以知道学生对应的成绩等。

与课程一一对应的是课程号,所以课程号是唯一主码,其他的都不是,根据课程号我们可以查询课程的基本信息,如课程名、对应的课时和对应的学分等。

与成绩对应的有两个主码,一个是课程号还有一个是学好。

只有这两个同时确定了之后才能确定一个准确的成绩。

在用户表中可以根据用户需要进行密码的修改等一系列操作。

综合分析对信息管理系统分四个表:

用户表(用户名,用户密码,用户等级)

学生表(学号,姓名,性别,系别,学生年龄)

课程表(课程号,课程名,课时,学分)

成绩表(课程号,学号,成绩)

 

1.3 概要设计

1.3.1    算法分析及程序流程图

数据流图

1)功能流图

该数据流图主要体现教职工对学生信息、课程信息和学生成绩的管理,然后存储的信息作用于查询系统。

在学生能够操作的只有成绩查询。

 

2)登录流图

 

数据字典

名字:

学生信息

描述:

学生成绩管理中存储的所有学生信息(包括所有学生查询的所需信息)

定义:

学生信息=学生学号+学生姓名+学生性别+院系+学生年龄

位置:

存储输出供查询

名字:

课程信息

描述:

有多个课程必要的信息组成

定义:

课程信息=课程号+课程名+课时+学分

位置:

存储输出供查询

名字:

用户表信息

描述:

用户情况的信息

定义:

用户信息=用户名+用户密码+用户

位置:

存储输出供查询

 

名字:

学生成绩信息

输入:

学生姓名

输出:

相应学生的成绩信息

名字:

查询信息

描述:

用户所提出的查询请求

定义:

查询信息=[课程查询信息|学生成绩查询信息]

位置:

课程表学生表成绩表

名字:

添加信息

输入:

学号,学生姓名,学生性别,院系,学生年龄

输出:

新输入的学生信息

名字:

删除信息

输入:

选中要删除的学生信息

输出:

删除完成

课程数据字典:

属性名

存储代码

类型

长度

课程存储号

course_id

int

4

课程号

course_no

int

4

课程名

course_name

char

10

课时

course_hour

int

4

学分

course_credit

int

4

状态

active_status

char

2

 

学生数据字典:

属性名

存储代码

类型

长度

学生存储号

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图)

2.2.2逻辑设计(与具体的DBMS有关的表结构)

该设计以概念结构设计中的E-R图为主要依据,设计出相关的整体逻辑结构。

根据总E-R图了解有四个实体,四个关系模式如下:

用户表(用户名,用户密码,用户等级)

学生表(学号,姓名,性别,系别,学生年龄)

课程表(课程号,课程名,课时,学分)

成绩表(课程号,学号,成绩)

2.2核心代码详细解析

1)在课程对话框中实现课程修改

voidCCourseDlg:

:

OnCourseEdit()

{

//得到CList当前所选的行号

introw=m_list.GetSelectionMark();

CStrings,strSQL;

//将当前行的第一列的值赋给s

s=m_list.GetItemText(row,0);

if(s=="")//如果s为空,则表示没有选中行

{

MessageBox("请选择一行!

");

}

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为空,则表示没有选中行

{

MessageBox("请选择一行!

");

}

else

{

//弹出窗口询问是否删除数据

if(MessageBox("确定要删除记录吗?

","删除询问

",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();

//设置active_status="N";

m_courseSet.m_active_status="N";

//更新数据库

m_courseSet.Update();

//关闭数据库

m_courseSet.Close();

//更新CList数据

RefreshList();

}

}

}

4)登录的确认

voidCLoginDlg:

:

OnOK()

{

CStringusername,password;//定义两个字符串变量

m_strUserName.GetWindowText(username);//将文本框中的值赋给username

m_strPassword.GetWindowText(password);//将文本框中的值赋给帕password

if(!

m_database.IsOpen()){//如果数据没有打开,则打开数据库

if(m_database.Open(_T("student")))//如果正确打开数据库

{

m_recordSet.m_pDatabase=&m_database;//将m_database对象赋给m_pDatabase

CStringstrSQL;

strSQL.Format("select*fromUSER_PSWDwhereuser_name='%s'anduser_password='%s'andactive_status='Y'",username,password);

m_recordSet.Open(CRecordset:

:

forwardOnly,strSQL);//打开记录集

if(m_recordSet.GetRecordCount()==0)//如果找不到记录

{

MessageBox("密码错误,请重新输入","密码错误",MB_OK|MB_ICONWARNING);//提示密码错误

m_strPassword.SetWindowText("");//清空密码文本框

m_strPassword.SetFocus();//设置用户名文本框为当前的焦点

}

else//如果找到记录

{

m_recordSet.GetFieldValue("user_level",m_userLevel);//则将数据库中的权限值赋给m_userLevel

CDialog:

:

OnOK();//进入到主窗口

}

m_recordSet.Close();//关闭记录集

m_database.Close();//关闭数据库

}

else//如果没有正确打开数据库

{

MessageBox("不能打开数据库");

}

}

}

5)修改密码的确认

voidCPasswordDlg:

:

OnOK()

{

//定义4个CEdit变量

CEdit*pUsername=(CEdit*)this->GetDlgItem(IDC_EDIT_USERNAME);

CEdit*pPassword=(CEdit*)this->GetDlgItem(IDC_EDIT_PASSWORD);

CEdit*pNew=(CEdit*)this->GetDlgItem(IDC_EDIT_NEW);

CEdit*pConfirm=(CEdit*)this->GetDlgItem(IDC_EDIT_CONFIRM);

//分别将文本框的值赋给4个字符串

CStringusername,password,newPassword,confirmPassword;

pUsername->GetWindowText(username);

pPassword->GetWindowText(password);

pNew->GetWindowText(newPassword);

pConfirm->GetWindowText(confirmPassword);

//定义数据库对象和记录集对象

CDatabasem_database;

CUserSetm_recordSet;

//判断新密码是是为空

if(newPassword.IsEmpty()||confirmPassword.IsEmpty())

{

MessageBox("密码不为空");

}

else

{

if(newPassword!

=confirmPassword)//判断两次输入的新密码是否相同

{

MessageBox("两次输入密码不一致,请重新输入新密码");

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_pDatabase

CStringstrSQL;

strSQL.Format("select*fromUSER_PSWDwhereuser_name='%s'anduser_password='%s'andactive_status='Y'",username,password);

m_recordSet.Open(CRecordset:

:

forwardOnly,strSQL);//打开记录集

if(m_recordSet.GetRecordCount()==0)//如果找不到记录

{

MessageBox("密码错误,请重新输入","密码错误",MB_OK|MB_ICONWARNING);//提示密码错误

pPassword->SetWindowText("");//清空密码文本框

pNew->SetWindowText("");//清空新密码文本框

pConfirm->SetWindowText("");//清空确认密码文本框

pPassword->SetFocus();//设置用户名文本框为当前的焦点

}

else//如果找到记录

{

//更新密码的sql语句

strSQL.Format("updateUSER_PSWDsetuser_password='%s'whereuser_name='%s'",newPassword,username);

m_database.ExecuteSQL(strSQL);//执行sql

MessageBox("修改密码成功!

");

CDialog:

:

OnOK();

}

m_recordSet.Close();//关闭记录集

m_database.Close();//关闭数据库

}

}

}

}

}

三、调试与操作说明

程序演示

1打开程序

2输入用户名密码登陆

3进入系统

4功能演示

修改密码

 

学生管理

 

课程管理

成绩管理

 

成绩查询

 

四、设计体会与总结

4.1  程序不足及功能扩充

1)在对用户权限的设计

该程序在对用户权限的设计比较混乱,不能够清晰的分出教职工和学生的使用权限,这会使程序的可用性和安全性出现很大的问题。

在这个方面,我们还有很多工作需要做,比如对登录用户在数据库的设计过程中要增加权限的设计,使的在登录后能够根据权限来进行相应的操作,不会是用户越级等。

2)在对成绩进行修改的设计

该程序在对程序进行修改的设计还不够完善,在对一组选定的成绩进行修改时会弹出一个有错误的对话框,不过在之后的操作没有任何问题。

还有就是在选定修改科目后仍然可以修改科目,这一点的设计还不是很合理。

在之后的设计中还需要改进。

3)在成绩查询浏览过程中的设计

改程序在对学生成绩查询的设计部分也存在不足,虽然是按照学生姓名以及课程名进行查询,但是在没有一个通表的情况下这种操作是很危险的。

他不能让用户直观的看到可以查询学生的姓名还有就是通有的课程名,这使该部分的设计存在很大问题,不能很好的完成查询功能。

 

4.2设计心得

课程设计是我们数据库专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.

说实话,课程设计真的有点累.然而,当我看到自己与团队一手设计出来的成果,慢慢回味这几周的心路历程,一种少有的成功喜悦使倦意顿消.虽然这可以说是我刚学会走完的第一步,也是人生的一点小小的胜利,然而它令我感到自己成熟的许多,通过课程设计,使我深深体会到,干任何事都必须耐心,细致.

短短几周的课程设计,使我发现了自己所掌握的知识是真正如此的缺乏,自己综合应用所学的专业知识能力是如此的不足,几年来的学习了那么多的课程,今天才知道自己并不会用.想到这里,真的心急了,在最后一年的时间里一定要好好学习,为今后工作打好基础!

感谢贾老师的精心教导!

 

 

参考文献

[1]卢湘江,李向荣,晏子.MySQL高级配置和管理.北京:

清华大学出版社,2001.9

[2]萨师煊,王珊.数据库系统概论.北京:

高等教育出版社,2002

[3]张海藩.软件工程.北京:

人民邮电出版社,2006

[4]孙明丽王斌,sqlserver2005数据库系统开发.北京,人民邮电出版社.2007.7

[5]苗雪兰.数据库系统原理及应用教程[M].北京,机械工业出版社.2007.8

 

致谢

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1