学生成绩管理系统论文.pdf

上传人:tbuqq 文档编号:4950972 上传时间:2020-01-18 格式:PDF 页数:14 大小:1.16MB
返回 下载 相关 举报
学生成绩管理系统论文.pdf_第1页
第1页 / 共14页
学生成绩管理系统论文.pdf_第2页
第2页 / 共14页
学生成绩管理系统论文.pdf_第3页
第3页 / 共14页
学生成绩管理系统论文.pdf_第4页
第4页 / 共14页
学生成绩管理系统论文.pdf_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《学生成绩管理系统论文.pdf》由会员分享,可在线阅读,更多相关《学生成绩管理系统论文.pdf(14页珍藏版)》请在三一文库上搜索。

1、学生成绩管理系统 2010 2011 学年第二 学期 课程名称 C+程序设计 设计题目学生成绩管理系统 学生姓名张少龙 学号 0905290245 专业班级软件 0902 2011年 07 月 02日 一、概述 1 目的与要求 随着科技的发展, 基本上所有的具有一定数量数据的机构都开始使用计算机数据库来做 管理。几乎所有学校也都已经在使用计算机管理数据的机制,大大减少了学校学生成绩管理 的工作量。 该课程设计要求设计一个学生成绩的数据库管理系统,数据库中要求包含学生的 基本信息, 学科基本信息,以及学生所学课程的考试成绩。要方便学生进行成绩查询,通过 该课程设计, 应该达到把数据库理论知识更加

2、的巩固加深,加强动手能力与实践能力,学以 致用,与现实生活中的应用充分的结合起来。 2 设计环境 Microsoft Office Access Microsoft Visual C+ 6.0 2需求分析 1)教职工: a.信息要求: 对学生成绩的了解,对学生成绩会有一个成体的了解,在今后的课程教学中可以对自 己进行改进。 同时还可以对教授的课程进行修改和重设。还可以进一步了解学生的信息,加 深对学生的了解,便于因材施教。 b.处理要求: 当学生基本信息发生变化时,老师能对其进行修改。按照不同的需要有的操作是修改、 删除、增加。 对成绩的管理,能够进行成绩的录入、修改、删除,能够清晰的了解学生

3、的成绩和大 体情况,以便做出相应的总结和改进。 c完整性要求: 1.各种信息记录的完整性,信息记录内容不能为空; 2.各种数据间相互的联系的正确性; 3.相同的数据在不同记录中的一致性。 2)学生: a.信息要求: 能够查询自己的成绩信息和大家的整体成绩好做出对自己的新的定位,同时还有更改 自己的学生信息,还有就是查询新的课程信息。 b.处理要求: 当学生发现自己信息出现错误时,可以根据自己的实际情况来进行更改,比如某同学 发现自己的年龄存储出现了错误就需要相应的机制进行修改、删除等。 同时还可进入成绩查询系统。在该界面中同学可以查询自己的成绩,还可以查询整个 科目的全部成绩。 数据需求 学生

4、成绩管理系统就是对学生成绩信息的管理,所以首先我们需要知道的是学生有那些 信息,并且是怎样进行分类的。 学生信息包含:学生基本信息、 课程基本信息、成绩信息。学生基本信息根据要求应该 包括学生对应的学号,姓名,性别,系别,学生年龄等;课程基本信息应该包课程号,课程 名,课时,学分等;成绩表包含课程名称,学号,成绩等。 与学生唯一一一对应的是学号,所以学号是唯一的主键,其他的都不能是,根据学号我 们可以查找学生的基本信息,还有学生姓名等有关信息;根据课程号可以知道学生对应的成 绩等。 与课程一一对应的是课程号,所以课程号是唯一主码,其他的都不是, 根据课程号我们 可以查询课程的基本信息,如课程名

5、、对应的课时和对应的学分等。 与成绩对应的有两个主码,一个是课程号还有一个是学号。只有这两个同时确定了之后 才能确定一个准确的成绩。 在用户表中可以根据用户需要进行密码的修改等一系列操作。 综合分析对信息管理系统分四个表: 用户表(用户名,用户密码,用户等级) 学生表(学号,姓名,性别,系别,学生年龄) 课程表(课程号,课程名,课时,学分) 成绩表(课程号,学号,成绩) 3概要设计 算法分析及程序流程图 1)功能流图 录入学生 信息 录入学生 成绩 录入课程 信息 查询学生 成绩 学生 教职工 学生 课程 成绩 用户数据字典: 系统设计 学生成绩管理系统 学 生 信 息 添 加 学 生 姓 名

6、 查 询 学 生 信 息 删 除 学 生 信 息 修 改 学生信息管理学生成绩查询 课 程 名 查 询 课程信息管理 课 程 删 除 课 程 增 添 课 程 修 改 概念模型设计 (E-R 图) 成绩 修改 查询 学生 课程 选择 4逻辑和物理结构设计 逻辑设计 该设计以概念结构设计中的E-R 图为主要依据,设计出相关的整体逻辑结构。根据总 E-R 图了解有四个实体,四个关系模式如下: 用户表(用户名,用户密码,用户等级) 学生表(学号,姓名,性别,系别,学生年龄) 课程表(课程号,课程名,课时,学分) 成绩表(课程号,学号,成绩) 物理设计 创建我的数据库SC : CREATE DATABA

7、SE SCSQLDB ON ( NAME = SCSQLDB , FILENAME = D:Downloads200910510222SQLSCSQLDB.mdf , SIZE = 2, MAXSIZE =10, FILEGROWTH =1) LOG ON ( NAME =SCSQLLog, FILENAME = D:Downloads200910510222SQLSCSQLDB.ldf , SIZE =1, MAXSIZE =5, FILEGROWTH =1) 建立学生表: CREATE TABLE Student( sno varchar(8) NOT NULL PRIMARY KEY,

8、sn varchar(6) NOT NULL, sex varchar(2) NOT NULL, depart varchar(6) NOT NULL, age varchar(2) NOT NULL, ) 建立课程表: create table Course( cno varchar(4) not null primary key, cname varchar(10) null, xueshi int(4) null, xuefen int(4) null, ) 建立成绩表 create table SC ( sno varchar(8) not null primary key, cno

9、varchar(4) not null, chengji varchar(4) not null ) 2.2 核心代码详细解析 1) 在课程对话框中实现课程修改 void CCourseDlg:OnCourseEdit() /得到 CList 当前所选的行号 int row=m_list.GetSelectionMark(); CString s,strSQL; /将当前行的第一列的值赋给s s=m_list.GetItemText(row,0); if(s=“)/ 如果 s 为空,则表示没有选中行 MessageBox(“请选择一行! “); else/如果有选中一行 /定义查询条件,相当于

10、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

11、(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.SetWindowText(“); m_strName.EnableWindow(true); m_strName.SetWindow

12、Text(“); 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.E

13、nableWindow(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(MessageBox(“ 确定要删除记录吗?“,“删除询问 “,MB_OKCANCEL|MB_I

14、CONQUESTION)=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();

15、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_recordSet.m_pDatabase=/将 m_da

16、tabase对象赋给 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(“密码错误,请重新输入“,“密码错误 “,MB_OK|MB_I

17、CONWARNING);/提示密码错误 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(“不

18、能打开数据库“); 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_CONFIRM); /分

19、别将文本框的值赋给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(newPassword.

20、IsEmpty()|confirmPassword.IsEmpty() MessageBox(“密码不为空 “); else if(newPassword!=confirmPassword)/ 判断两次输入的新密码是否相同 MessageBox(“两次输入密码不一致,请重新输入新密码“); pNew-SetWindowText(“);/清空新密码文本框 pConfirm-SetWindowText(“);/清空确认密码文本框 pNew-SetFocus();/ 设置新密码文本框为焦点 else if(!m_database.IsOpen()/ 如果数据没有打开,则打开数据库 m_databas

21、e.Open(_T(“student“);/ 如果正确打开数据库 /m_recordSet.Edit(); m_recordSet.m_pDatabase=/ 将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);/打开记

22、录集 if(m_recordSet.GetRecordCount()=0)/ 如果找不到记录 MessageBox(“ 密 码 错 误 , 请 重 新 输 入 “,“ 密 码 错 误 “,MB_OK|MB_ICONWARNING);/提示密码错误 pPassword-SetWindowText(“);/ 清空密码文本框 pNew-SetWindowText(“);/清空新密码文本框 pConfirm-SetWindowText(“);/清空确认密码文本框 pPassword-SetFocus();/设置用户名文本框为当前的焦点 else/如果找到记录 /更新密码的sql 语句 strSQL.F

23、ormat(“update USER_PSWD set user_password=%s where user_name=%s“,newPassword,username); m_database.ExecuteSQL(strSQL);/ 执行 sql MessageBox(“修改密码成功 !“); CDialog:OnOK(); m_recordSet.Close();/ 关闭记录集 m_database.Close();/关闭数据库 三、调试与操作说明 程序演示 1 进入系统 4 功能演示 年纪成绩 平均成绩 查询某一课或某个学生成绩 四 、 设计体会与总结 4.1 程序不足及功能扩充 该

24、程序在对最有一个选项参数设置的设计还不够完善,点中了之后没反应。 3)在成绩查询浏览过程中的设计 改程序在对学生成绩查询的设计部分也存在不足,虽然是按照学生姓名以及课程名进 行查询, 但是在没有一个通表的情况下这种操作是很危险的。他不能让用户直观的看到可以 查询学生的姓名还有就是通有的课程名,这使该部分的设计存在很大问题,不能很好的完成 查询功能。 4.2设计心得 课程设计是我们数据库专业课程知识综合应用的实践训练,着是我们迈向社会,从事 职业工作前一个必不少的过程” 千里之行始于足下” ,通过这次课程设计,我深深体会到这 句千古名言的真正含义我今天认真的进行课程设计,学会脚踏实地迈开这一步,

25、就是为明 天能稳健地在社会大潮中奔跑打下坚实的基础 说实话,课程设计真的有点累然而,当我看到自己一手设计出来的成果,慢慢回味这 几周的心路历程, 一种少有的成功喜悦使倦意顿消虽然这可以说是我刚学会走完的第一步, 也是人生的一点小小的胜利,然而它令我感到自己成熟的许多,通过课程设计,使我深深 体会到,干任何事都必须耐心,细致 短短几周的课程设计,使我发现了自己所掌握的知识是真正如此的缺乏,自己综合应用 所学的专业知识能力是如此的不足,2 年来的学习了那么多的课程,今天才知道自己并不会 用想到这里,真的心急了,在最后一年的时间里一定要好好学习,为今后工作打好基础! 感谢吉老师的教导! 参考书籍 徐谡 ,徐立,张晓 ,张浩淼等 .C+应用与开发案例教程M. 清华大学出版社 刘惊雷 . Visual C+ 实用教程 M. 电子工业出版社

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1