学生管理系统实验报告-完整版

上传人:d*** 文档编号:154558329 上传时间:2020-12-07 格式:PDF 页数:17 大小:412.59KB
返回 下载 相关 举报
学生管理系统实验报告-完整版_第1页
第1页 / 共17页
学生管理系统实验报告-完整版_第2页
第2页 / 共17页
学生管理系统实验报告-完整版_第3页
第3页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《学生管理系统实验报告-完整版》由会员分享,可在线阅读,更多相关《学生管理系统实验报告-完整版(17页珍藏版)》请在金锄头文库上搜索。

1、学生学籍成绩管理系统: 学生的信息包括:姓名、学号、性别、班级、院系;学生的成绩信息包括英语、数学、程序 设计及体育成绩等各门课的成绩; 定义如下类,并建立一个文本文件Student.dat,用于存储学生、课程与成绩的相关信息。 文件格式自己定义。 学生类 CStudent (姓名、学号、性别、班级、院系); 课程类 CLesson( 课程名称、课程开设时间) ; 成绩类 CGrade(学号、课程名称、成绩) 要求实现如下功能: 在对话框上能够添加、删除、编辑和查询课程信息; 在对话框上能够添加、删除、编辑和查询学生信息; 在对话框上能够增加、删除、编辑和查询学生的选课信息; 在对话框上能够录

2、入和编辑学生某门课的考试成绩; 在对话框上能够按照学生姓名查询学生的选课信息和选课成绩,并统计出其总成绩、 平均成绩,计算出该学生的成绩的标准差; 显示全班的学生成绩排名。 统计出各班的平均成绩,并进行排名。 n i i x n x 1 _ 1 平均分: n i i xx n s 1 2 _ )( 1 标准差: 问题描述: 要求编写编写一个学生的学籍成绩管理系统,要实现能添加、删除、编辑和查询课程信息、 基本信息和选课信息。能录入和编辑学生的考试成绩还能查询已选的课程,总成绩, 平均成 绩还有标准差并排名。 问题分析: 本题重点考察的内容是数据信息的处理问题,其中包括学生数据的传递、改变, 学

3、生信 息的存储、 读取。能够进行计算每次输入的学生信息进行计算总分,平均分等,还要对所有 的学生成绩进行处理排名。同时通过对话框对各种不同数据编辑,又能够将它们相关联是本 题的一个主要难点。又因为要用到不同的查询方式,所以还需要需要不同的输出对话框。总 之该题的对数据处理要求挺高,综合性很强。 【算法设计 】 设计思想: 本题我认为关键地方在于通过三个类来传递数据的实现和对话框的设计,这题用到得对话框 较多, 变量名称选取要特别注意。还有就是对话上的按钮了,按钮满足题目整体要求的层面 上,并且还要达到最简,不要浪费, 也不能缺少功能,能将每次输入的学生信息进行数学处 理。一个对话框要多用途,通

4、过添加信息然后能够查询,尽量减少对话框的数量,以减少对 话框之间数据的传递,这样可以极大优化程序。 设计表示: 【调试报告】 实现: 调试过程中问题 1. 因为选课是动态的,而且一门课对应一门成绩,所以成绩也是个随着课程的添加而添加, 删除而删除,所以都用STL中的 list来装。这样把学生的所有信息都封装在一个类中更具 有整体的效果, 也有更加明确的思路。这里实现的要先输入班号,然后在内存中一个一个学 生去遍历, 找到班号相同的学生,然后对这些学生进行排序,再显示出来。 然而开始做时对 话框很多很繁琐,可以设计子对话框来进行整合各个类的不同功能,使界面更简洁干净。 2. 该题遇到了较为严重的

5、内存泄露问题: 没有找出问题代码的所在,但是通过debug 文件夹中“学生管理.exe”程序还是可以运行 然而会弹出警告窗口: 点击确认后还是会弹出我做的界面: 【附录】 源程序清单: 学生所有信息的类 class CAllInfor public: CAllInfor(); CAllInfor(CStudent virtual CAllInfor(); CStudent m_Stu; list m_Lessen; list m_Grade; double GetAveGrade(); ; 三大类对学生信息处理 1. 学生基本信息的对话框类 添加功能实现 void CBStudentInfor

6、:OnAdd() / TODO: Add your control notification handler code here UpdateData(TRUE); list:iterator p; bool judge = true; for ( p = m_AllInformation.begin();p != m_AllInformation.end();+p) if (p-m_Stu.m_School_Id = m_SchoolId) judge = false; if (judge) CStudent Stu(m_Name,m_Sex,m_Class,m_SchoolId,m_Col

7、lege); CAllInfor obj(Stu); m_AllInformation.push_back(obj); for (int i = 0;i+) if (m_list.GetItemText(i,0)=) int nRow = m_list.InsertItem(i,m_Name); /插入行 m_list.SetItemText(nRow, 1,m_Sex); /设置数据 m_list.SetItemText(nRow, 2,m_Class); m_list.SetItemText(nRow, 3,m_SchoolId); m_list.SetItemText(nRow, 4,m

8、_College); break; else MessageBox( 学号重复,请重新输入!); m_SchoolId =; m_Sex = ; m_Name = ; m_College = ; m_Class = ; UpdateData(FALSE); 编辑功能实现 void CBStudentInfor:OnEdit() / TODO: Add your control notification handler code here UpdateData(TRUE); list:iterator p; CString sname = m_list.GetItemText(m_SelectR

9、ow,0); for (p = m_AllInformation.begin();p != m_AllInformation.end();+p) if (p-m_Stu.m_Name = sname) p-m_Stu.m_Name = m_Name; p-m_Stu.m_Sex = m_Sex; p-m_Stu.m_Class = m_Class; p-m_Stu.m_School_Id = m_SchoolId; p-m_Stu.m_College = m_College; break; for (int j = 0;j 5;j+) switch (j) case 0:m_list.SetI

10、temText(m_SelectRow, 0,m_Name); break; case 1:m_list.SetItemText(m_SelectRow, 1,m_Sex); break; case 2:m_list.SetItemText(m_SelectRow, 2,m_Class); break; case 3:m_list.SetItemText(m_SelectRow, 3,m_SchoolId); break; case 4:m_list.SetItemText(m_SelectRow, 4,m_College); break; m_SchoolId =; m_Sex = ; m_

11、Name = ; m_College = ; m_Class = ; UpdateData(FALSE); 删除功能实现: void CBStudentInfor:OnDelete() / TODO: Add your control notification handler code here CString sname = m_list.GetItemText(m_SelectRow,0); list:iterator p; for (p = m_AllInformation.begin();p != m_AllInformation.end();+p) if (p-m_Stu.m_Nam

12、e = sname) m_AllInformation.erase(p); break; m_list.DeleteItem(m_SelectRow); m_SchoolId =; m_Sex = ; m_Name = ; m_College = ; m_Class = ; UpdateData(FALSE); 文件读取实现(从父对话框读到子对话框) BOOL CBStudentInfor:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here DWORD styles = LVS_EX_FULL

13、ROWSELECT|LVS_EX_GRIDLINES; ListView_SetExtendedListViewStyleEx(m_list.m_hWnd, styles, styles ); m_list.InsertColumn(0,姓名 ,LVCFMT_CENTER,70); m_list.InsertColumn(1,性别 ,LVCFMT_CENTER,70); m_list.InsertColumn(2,班级 ,LVCFMT_CENTER,70); m_list.InsertColumn(3,学号 ,LVCFMT_CENTER,100); m_list.InsertColumn(4,

14、学院 ,LVCFMT_CENTER,70); CMy520Dlg *pParent = (CMy520Dlg*)GetParent(); m_AllInformation.clear(); m_AllInformation = pParent-m_AllInformation; list:iterator p; int i; for (i = 0,p = m_AllInformation.begin();p != m_AllInformation.end();+p,+i) int nRow = m_list.InsertItem(i,p-m_Stu.m_Name); m_list.SetIte

15、mText(nRow,1,p-m_Stu.m_Sex); m_list.SetItemText(nRow,2,p-m_Stu.m_Class); m_list.SetItemText(nRow,3,p-m_Stu.m_School_Id); m_list.SetItemText(nRow,4,p-m_Stu.m_College); return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE 2. 选课和成绩信息: 添加的实现 oid CLessen_Grade:OnAdd() / TODO: Add your control notification handler code here UpdateData(TRUE); for (int i = 0;i+) if (m_list.GetItemText(i,0)=) int nRow = m_list.InsertItem(i,m_Class);/插入行 m_list.SetItemText(nRow,1,m_Time);/设置数据 m_list.SetItemText(nRow,2,m_Gra

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号