1、数据库课程设计成绩管理系统目 录一 、 系统功能和结构1.1 程序设计目的1.2 需求分析1.3概要设计1.3.1算法分析及程序流程图1.4 任务安排二、 程序实现 2.1模块详细设计2.2 核心代码详细解析三、 调试与操作说明程序演示四 、 设计体会与总结4.1程序不足及功能扩充4.2设计心得参考文献致谢一 、 系统功能和结构1.1 程序设计目的学生成绩管理系统是应对学生人数增多、信息量增大的问题,实现管理的现代化、网络化,逐步摆脱当前学生成绩管理的人工管理方式,提高成绩管理效率而开发的。希望该开发程序能够解决学生信息存储、学生成绩查询、录入还有课程查询等一系列功能,并提供了对各功能模块的查
2、询和更新功能,且这两种功能基本上是通过存储过程来实现的,其中学生成绩查询和学生信息查询是系统开发的重点。1.2 需求分析1)教职工: a.信息要求:对学生成绩的了解,对学生成绩会有一个成体的了解,在今后的课程教学中可以对自己进行改进。同时还可以对教授的课程进行修改和重设。还可以进一步了解学生的信息,加深对学生的了解,便于因材施教。b.处理要求:当学生基本信息发生变化时,老师能对其进行修改。比如某些同学中有转校、后转来该系或转到其他系中,老师要能根据事实情况进行更新。需要有的操作是修改、删除、增加。能够管理课程信息。如老师进行排课的时候能够有序的安排,不会出现错排或重复等一系列状况。能够进行课程
3、名、课时、学分的修改、删除和增添。对成绩的管理,能够进行成绩的录入、修改、删除,能够清晰的了解学生的成绩和大体情况,以便做出相应的总结和改进。c安全性与完整性要求:安全性要求:1.系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;2.系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;3.系统应对不同用户设置不同的权限,区分不同的用户,如区分普通用户(学生),教职工。完整性要求:1.各种信息记录的完整性,信息记录内容不能为空;2.各种数据间相互的联系的正确性;3.相同的数据在不同记录中的一致性。2)学生: a.信息要求:能
4、够查询自己的成绩信息和大家的整体成绩好做出对自己的新的定位,同时还有更改自己的学生信息,还有就是查询新的课程信息。b.处理要求:当学生发现自己信息出现错误时,可以根据自己的实际情况来进行更改,比如某同学发现自己的年龄存储出现了错误就需要相应的机制进行修改、删除等。同时还可进入成绩查询系统。在该界面中同学可以查询自己的成绩,还可以查询整个科目的全部成绩。数据需求学生成绩管理系统就是对学生成绩信息的管理,所以首先我们需要知道的是学生有那些信息,并且是怎样进行分类的。学生信息包含:学生基本信息、课程基本信息、成绩信息。学生基本信息根据要求应该包括学生对应的学号,姓名,性别,系别,学生年龄等;课程基本
5、信息应该包课程号,课程名,课时,学分等;成绩表包含课程号,学号,成绩等。与学生唯一一一对应的是学号,所以学号是唯一的主键,其他的都不能是,根据学号我们可以查找学生的基本信息,还有学生姓名等有关信息;根据课程号可以知道学生对应的成绩等。与课程一一对应的是课程号,所以课程号是唯一主码,其他的都不是,根据课程号我们可以查询课程的基本信息,如课程名、对应的课时和对应的学分等。与成绩对应的有两个主码,一个是课程号还有一个是学好。只有这两个同时确定了之后才能确定一个准确的成绩。在用户表中可以根据用户需要进行密码的修改等一系列操作。综合分析对信息管理系统分四个表:用户表(用户名,用户密码,用户等级)学生表(
6、学号,姓名,性别,系别,学生年龄)课程表(课程号,课程名,课时,学分)成绩表(课程号,学号,成绩)1.3 概要设计1.3.1算法分析及程序流程图数据流图1)功能流图该数据流图主要体现教职工对学生信息、课程信息和学生成绩的管理,然后存储的信息作用于查询系统。在学生能够操作的只有成绩查询。2)登录流图数据字典名字:学生信息 描述:学生成绩管理中存储的所有学生信息(包括所有学生查询的所需信息) 定义:学生信息学生学号学生姓名学生性别院系+学生年龄 位置:存储 输出供查询 名字:课程信息 描述:有多个课程必要的信息组成 定义:课程信息课程号课程名 +课时+学分位置:存储 输出供查询 名字:用户表信息
7、描述:用户情况的信息 定义:用户信息用户名+用户密码+用户 位置:存储 输出供查询名字:学生成绩信息输入:学生姓名输出:相应学生的成绩信息 名字:查询信息 描述:用户所提出的查询请求定义:查询信息课程查询信息|学生成绩查询信息 位置:课程表 学生表 成绩表名字:添加信息输入:学号,学生姓名,学生性别,院系,学生年龄输出:新输入的学生信息名字:删除信息输入:选中要删除的学生信息 输出:删除完成课程数据字典:属性名存储代码类型长度课程存储号course_idint4课程号course_noint4课程名course_namechar10课时course_hourint4学分course_credi
8、tint4状态active_statuschar2学生数据字典:属性名存储代码类型长度学生存储号student_idint4学号student_nochar8学生姓名student_namechar6学生性别student_sexchar2院系student_phonechar6状态active_statuschar2学生年龄student_agechar10成绩数据字典:属性名存储代码类型长度成绩存储号score_idint4学号student_nochat8课程号course_noint4成绩scoreint4状态active_statuschar2用户数据字典:属性名存储代码类型长度用户
9、名user_namevarchar50用户密码user_passwordvarchar50用户等级user_levelchar10状态active_statuschar10用户存储号user_idint43.系统设计 1.4 任务安排 需求分析和数据流图完成后,即可对该课程设计向小组成员分配任务 梅关求制定计划 需求分析和定义,并负责用户密码登录、用户密码的修改模块左盾详细设计程序编写,负责课程查询、学生查询模块李雄负责具体成绩查询模块软件测试 运行 及后期修改二、 程序实现2.1模块详细设计2.1.1概念设计(E-R图) 2.2.2 逻辑设计(与具体的DBMS有关的表结构)该设计以概念结构设
10、计中的E-R图为主要依据,设计出相关的整体逻辑结构。根据总E-R图了解有四个实体,四个关系模式如下:用户表(用户名,用户密码,用户等级)学生表(学号,姓名,性别,系别,学生年龄)课程表(课程号,课程名,课时,学分)成绩表(课程号,学号,成绩)2.2 核心代码详细解析1) 在课程对话框中实现课程修改 void CCourseDlg:OnCourseEdit() /得到CList当前所选的行号 int row=m_list.GetSelectionMark(); CString s,strSQL; /将当前行的第一列的值赋给s s=m_list.GetItemText(row,0); if(s=)
11、/如果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.EnableWindo
12、w(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)在课程对话框中实现课程添加void CCourseDlg:OnCourseAdd() /设置输入框为可编辑状态并清空输入框中的值 m_strNo.EnableWindow(true); m_strNo.SetWindowT
13、ext(); 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.Enabl
14、eWindow(false); m_bEdit.EnableWindow(false); m_bDel.EnableWindow(false); 3)在课程对话框中实现课程删除void CCourseDlg:OnCourseDel() /得到CList当前所选的行号 int row=m_list.GetSelectionMark(); CString s,strSQL; /将当前行的第一列的值赋给s s=m_list.GetItemText(row,0); if(s=)/如果s为空,则表示没有选中行 MessageBox(请选择一行!); else /弹出窗口询问是否删除数据 if(Messa
15、geBox(确定要删除记录吗?,删除询问,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()
16、; /更新CList数据 RefreshList(); 4)登录的确认void CLoginDlg:OnOK() CString username,password;/定义两个字符串变量 m_strUserName.GetWindowText(username);/将文本框中的值赋给username m_strPassword.GetWindowText(password);/将文本框中的值赋给帕password if(!m_database.IsOpen()/如果数据没有打开,则打开数据库 if(m_database.Open(_T(student)/如果正确打开数据库 m_recordSe
17、t.m_pDatabase=&m_database;/将m_database对象赋给m_pDatabase CString strSQL; strSQL.Format(select * from USER_PSWD where user_name=%s and user_password=%s and active_status=Y,username,password); m_recordSet.Open(CRecordset:forwardOnly,strSQL);/打开记录集 if(m_recordSet.GetRecordCount()=0)/如果找不到记录 MessageBox(密码错
18、误,请重新输入,密码错误,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/如果没有正确打开数
19、据库 MessageBox(不能打开数据库); 5)修改密码的确认void CPasswordDlg: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_CON
20、FIRM); /分别将文本框的值赋给4个字符串 CString username,password,newPassword,confirmPassword; pUsername-GetWindowText(username); pPassword-GetWindowText(password); pNew-GetWindowText(newPassword); pConfirm-GetWindowText(confirmPassword); /定义数据库对象和记录集对象 CDatabase m_database; CUserSet m_recordSet; /判断新密码是是为空 if(newP
21、assword.IsEmpty()|confirmPassword.IsEmpty() MessageBox(密码不为空); else if(newPassword!=confirmPassword)/判断两次输入的新密码是否相同 MessageBox(两次输入密码不一致,请重新输入新密码); pNew-SetWindowText();/清空新密码文本框 pConfirm-SetWindowText();/清空确认密码文本框 pNew-SetFocus();/设置新密码文本框为焦点 else if(!m_database.IsOpen()/如果数据没有打开,则打开数据库 m_database.
22、Open(_T(student);/如果正确打开数据库 /m_recordSet.Edit(); m_recordSet.m_pDatabase=&m_database;/将m_database对象赋给m_pDatabase CString strSQL; strSQL.Format(select * from USER_PSWD where user_name=%s and user_password=%s and active_status=Y,username,password); m_recordSet.Open(CRecordset:forwardOnly,strSQL);/打开记录
23、集 if(m_recordSet.GetRecordCount()=0)/如果找不到记录 MessageBox(密码错误,请重新输入,密码错误,MB_OK|MB_ICONWARNING);/提示密码错误 pPassword-SetWindowText();/清空密码文本框 pNew-SetWindowText();/清空新密码文本框 pConfirm-SetWindowText();/清空确认密码文本框 pPassword-SetFocus();/设置用户名文本框为当前的焦点 else/如果找到记录 /更新密码的sql语句 strSQL.Format(update USER_PSWD set
24、user_password=%s where user_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)在对用户权限的设计该程序在对用户权限的设计比较混乱,不能够
25、清晰的分出教职工和学生的使用权限,这会使程序的可用性和安全性出现很大的问题。在这个方面,我们还有很多工作需要做,比如对登录用户在数据库的设计过程中要增加权限的设计,使的在登录后能够根据权限来进行相应的操作,不会是用户越级等。2)在对成绩进行修改的设计该程序在对程序进行修改的设计还不够完善,在对一组选定的成绩进行修改时会弹出一个有错误的对话框,不过在之后的操作没有任何问题。还有就是在选定修改科目后仍然可以修改科目,这一点的设计还不是很合理。在之后的设计中还需要改进。3)在成绩查询浏览过程中的设计改程序在对学生成绩查询的设计部分也存在不足,虽然是按照学生姓名以及课程名进行查询,但是在没有一个通表的
26、情况下这种操作是很危险的。他不能让用户直观的看到可以查询学生的姓名还有就是通有的课程名,这使该部分的设计存在很大问题,不能很好的完成查询功能。4.2 设计心得课程设计是我们数据库专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础说实话,课程设计真的有点累然而,当我看到自己与团队一手设计出来的成果,慢慢回味这几周的心路历程,一种少有的成功喜悦使倦意顿消虽然这可以说是我刚学会走完的第一步,也是人生的
27、一点小小的胜利,然而它令我感到自己成熟的许多, 通过课程设计,使我深深体会到,干任何事都必须耐心,细致 短短几周的课程设计,使我发现了自己所掌握的知识是真正如此的缺乏,自己综合应用所学的专业知识能力是如此的不足,几年来的学习了那么多的课程,今天才知道自己并不会用想到这里,真的心急了,在最后一年的时间里一定要好好学习,为今后工作打好基础!感谢贾老师的精心教导! 参考文献1 卢湘江,李向荣,晏子. MySQL高级配置和管理. 北京:清华大学出版社,2001.92 萨师煊,王珊. 数据库系统概论. 北京:高等教育出版社,20023 张海藩. 软件工程. 北京:人民邮电出版社,20064孙明丽 王斌,sql server 2005 数据库系统开发.北京,人民邮电出版社.2007.7 5苗雪兰.数据库系统原理及应用教程M.北京,机械工业出版社.2007.8致谢
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1