课程设计
学生档案管理系统
目 录
1、需求与功能分析...................................................................................................... 2 2、系统总体框架.......................................................................................................... 2 3、系统流程图.............................................................................................................. 4 4、模块设计与分析...................................................................................................... 5 5、类的设计与分析...................................................................................................... 5
5.1、CCourseDlg类.............................................................................................. 6 5.2、 CDepartmentDlg类.................................................................................... 7 5.3、CEncPunDlg类.............................................................................................. 8 5.4、CExperienceDlg类...................................................................................... 9 5.5、CLoginDlg类.............................................................................................. 10 5.6、CPhotoDlg类.............................................................................................. 11 5.7、CScoreDlg类.............................................................................................. 11 5.8、CStuManageDlg类...................................................................................... 12 5.9、CUserDlg类................................................................................................ 13 6、功能测试示图........................................................................................................ 14 7、存在的不足与对策................................................................................................ 21 8、程序源代码............................................................................................................ 21 9、使用手册................................................................................................................ 21 参考文献...................................................................................................................... 22
1
1、需求与功能分析
随着学校规模的不断扩大,学生数量的不断增加,学生的信息量也成倍增长。学生管理工作是学校各项工作的一个重要部分,其管理水平的高低将直接影响到人才的培养质量。面对庞大的信息量,如何有效地提高学生管理工作的效率是一个学校急需解决的问题。学生档案管理系统的设计目标是实现对学生信息的科学化、规范化管理,提高校园管理的效率,为高水平的校园管理提供保证。
学生档案管理系统作为学校管理中的一个子系统,与其它子系统,如教学管理系统、人事管理系统、后勤管理系统、图书管理系统等一起构成校园信息管理系统,为校园管理信息化提供一个子功能。所以,几乎所有的大、中、小学校都需要一套这样的管理系统来提高日常的工作效率。
经分析学生档案管理系统一般主要有以下几项功能要求:
●学生信息的录入与修改,包括基本信息、照片、教育经历、奖惩记录和学籍变动等。
●院系信息的查看,包括院系调整信息等。课程设置信息的查询。 ●学生成绩的管理,包括成绩的录入、修改和删除等。
●系统用户的查询和修改,包括系统用户的权限和密码设置等。
功能的齐全与操作的方便性,将大大提高学生档案的管理效率,可以说,学生档案管理系统是每个学校办公当中必备的一套管理系统,其需求是不言面喻的。
2、系统总体框架
2
查看院系设置 院系管理 院系调整 新生录入 学生基本信息管理 信息查询 修改或删除 照片录入 学生照片管理 照片查看 更改或删除 信息录入 学生教育经历管理 学生档案管理系统 信息查询 修改或删除 信息录入 奖惩管理 信息查询 修改或删除 学籍变更录入 学籍管理 信息查询 修改或删除 课程录入 课程设置管理 课程查询 修改或删除 成绩录入 学生成绩管理 成绩查询 修改或删除 用户录入 系统用户管理 权限查询 修改权限 图 1 系统框架图
3
3、系统流程图
系统的数据流程图如下所示。用户登录系统以后,根据用户的权限,可以执
行不同的操作。教务处管理人员可以输入学生信息、院系信息、课程信息等,教师可以录入学生成绩,学生可以查询信息和成绩。用户操作完成以后,可以注销此次曾登录,然后退出系统。
图 2 系统流程图
退出系统 注销 查询信息 查询成绩 录入/修改/删除信息 操作权限 录入/修改/删除信息 登录 系统启动 4
4、模块设计与分析
根据系统功能的要求可以将系统分解成院系管理、学生及基本信息管理、学
生照片管理、学生教育经历管理、奖惩管理、学籍管理、课程设置管理、学生成绩管理和系统用户管理等九个功能模块。
●院系管理:包括设置院系、专业、班级等,并能进行院系调整,包括增加新的院系、专业、班级和删除某些院系、专业、班级。
●学生基本信息管理:包括学生学号、姓名、性别、年龄、籍贯、入学时间等,当有新生到校时,就启动相应的信息管理功能,对所有的学生信息进行入库,随时掌握学生的基本信息,并能对错误信息进行修改和删除。
●学生照片管理:用来管理学生照片的,一个学号对应着一张照片,对学生照片可以进行录入、修改、删除和查看等。
●学生教育经历管理:记录学生受教育过程的,包括学生小学、初中、高中就读的年限以及学校。
●奖惩管理:针对学生在校的表现情况,对学生进行相应的处理工作,奖励的项目有各种奖学金和文体奖励,处罚的项目有通报批评、警告、严重警告、记过、留校查看、开除等。
●学籍管理:主要是对学生的学籍变更情况及时控制和管理,变更的原因有转系、休学、复学、退学和毕业离校。
●课程设置管理:包括课程编号、课程号、学时、学分、任课教师和上课地点等。 ●成绩管理:数据量比较大的管理工作,每次考试结束后负责对学生各个科目的成绩入库工作和对数据库成绩出错的校对工作。
●系统用户管理:主要是执行数据库的运行权限管理,例如学生只具有查询功能,教师可以录入、修改成绩等,而管理员具有最高权限,可以录入、修改学生信息、奖惩信息以及学籍变动信息等。
5、类的设计与分析
如图 3 本系统共有23个类,以下主要分析与本系统内容直接相关的类,它们分别为:
5
CCourseDlg类、CDepartmentDlg、CEncPunDlg类、CExperienceDlg类、CLoginDlg类、CPhotoDlg类、CScoreDlg类、CStuManageDlg类、CUserDlg类
图 3 StuManage全部类 5.1、CCourseDlg类
class CCourseDlg : public CDialog { // Construction public: CCourseDlg(CWnd* pParent = NULL); _RecordsetPtr m_pRecordset; int type;//1=add,2=del,3=modify // Dialog Data //{{AFX_DATA(CCourseDlg) enum { IDD = IDD_COURSE_DLG }; CDataGrid m_dgCourse; CString m_strCourseHour; CString m_strCourseId; CString m_strCourseName; CString m_strCoursePeriod; CString m_strCoursePlace; CString m_strCourseTeacher; //}}AFX_DATA // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CCourseDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: // Generated message map functions //{{AFX_MSG(CCourseDlg) virtual BOOL OnInitDialog(); afx_msg void OnAddCourseBtn(); afx_msg void OnCourseExecute(); afx_msg void OnDelCourseBtn(); afx_msg void OnModifyCourseBtn(); afx_msg void OnSelChangeDatagridCourse(short FAR* Cancel); afx_msg void OnChangeEditCourseId(); afx_msg void OnLookforCourseBtn(); DECLARE_EVENTSINK_MAP() 6 //}}AFX_MSG DECLARE_MESSAGE_MAP() };
表 1 CCourseDlg类说明表 名称 属性 m_strCourseHour CString变量 m_strCourseId CString变量 m_strCourseName CString变量 m_strCoursePeriod CString变量 m_strCoursePlace CString变量 m_strCourseTeacher CString变量 m_dgCourse CDataGrid变量 OnAddCourseBtn() 方法 OnCourseExecute() 方法 OnDelCourseBtn 方法 OnModifyCourseBtn() 方法 OnLookforCourseBtn() 方法 5.2、 CDepartmentDlg类
说明 学分 课程编号 课程名称 学时 上课地点 任课老师 课程列表 增加课程 确定 删除课程 修改 查询 class CDepartmentDlg : public CDialog CString m_strSchool; { CString m_strSpeciality; // Construction //}}AFX_DATA public: protected: CDepartmentDlg(CWnd* pParent = NULL); virtual void // standard constructor DoDataExchange(CDataExchange* pDX); _RecordsetPtr m_pRecordset_dep; protected: _RecordsetPtr m_pRecordset_spe; _RecordsetPtr m_pRecordset_cla; // Generated message map functions _RecordsetPtr m_pRecordset; //{{AFX_MSG(CDepartmentDlg) virtual BOOL OnInitDialog(); void SetStatus(BOOL status1,BOOL afx_msg void status2,BOOL status3); OnSelchangedTreeDepartment(NMHDR* int m_flag; pNMHDR, LRESULT* pResult); // Dialog Data afx_msg void OnAddDepartmentBtn(); //{{AFX_DATA(CDepartmentDlg) afx_msg void OnAddDepartmentBtnNext(); enum { IDD = IDD_DEPARTMENT_DLG }; afx_msg void OnExecuteDepartmentBtn(); CTreeCtrl m_treeDepartment; afx_msg void OnDeleteDepartmentBtn(); CString m_strClass; //}}AFX_MSG CString m_strDepartment; DECLARE_MESSAGE_MAP() }; 表 2 CDepartmentDlg类说明表 名称 属性 说明 m_treeDepartment CTreeCtrl变量 院系树 m_strClass CString变量 班级 7
m_strDepartment m_strSchool m_strSpeciality OnAddDepartmentBtn() void OnAddDepartmentBtnNext() OnExecuteDepartmentBtn() OnDeleteDepartmentBtn() 5.3、CEncPunDlg类
CString变量 CString变量 CString变量 方法 方法 方法 方法 院系 学校 专业 新增同级别 新增下一级别 删减 确定 class CEncPunDlg : public CDialog { // Construction public: CEncPunDlg(CWnd* pParent = NULL); // standard constructor _RecordsetPtr m_pRecordset; // Dialog Data //{{AFX_DATA(CEncPunDlg) enum { IDD = IDD_ENC_PUN_DLG }; CDateTimeCtrl m_timectrl; CComboBox m_cbEncFun; CTime m_timeEncFun; CString m_strEncFunMark; CString m_strStudentName; CString m_strEncFun; CString m_strStudentId; int m_looktype; CDataGrid m_dgResult; 表 3 CEncPunDlg类说明表 名称 属性 m_strStudentId CString变量 m_strStudentName CString变量 m_strEncFunMark CString 变量 m_strEncFun CString变量 m_cbEncFun CComboBox变量 m_timectrl CDateTimeCtrl变量 m_timeEncFun CTime OnViewEncfunBtn() 方法 8
BOOL m_add; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL protected: // Generated message map functions //{{AFX_MSG(CEncPunDlg) virtual BOOL OnInitDialog(); afx_msg void OnViewEncfunBtn(); afx_msg void OnAddEncfunBtn(); afx_msg void OnEncfunSaveBtn(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; 说明 学号 姓名 奖惩项 奖惩时间 备注 查看奖惩项 OnAddEncfunBtn() OnEncfunSaveBtn() 5.4、CExperienceDlg类
方法 方法 增加奖惩项 保存奖惩项 class CExperienceDlg : public CDialog { public: CExperienceDlg(CWnd* pParent = NULL); // standard constructor _RecordsetPtr m_pRecordset; protected: int action; int SelectType; virtual void DoDataExchange(CDataExchange* pDX);
enum { IDD = IDD_EXPERIENCE_DLG }; CEdit m_ID; // DDX/DDV support CDateTimeCtrl m_timectrlSenStart; //}}AFX_VIRTUAL CDateTimeCtrl m_timectrlJunStart; CDateTimeCtrl m_timectrlEleStart; // Implementation CDateTimeCtrl m_timectrlJunEnd; protected: CDateTimeCtrl m_timectrlEleEnd; CDateTimeCtrl m_timectrlSenEnd; // Generated message map functions CDataGrid m_dgExperience; //{{AFX_MSG(CExperienceDlg) CString m_strEleSchool; virtual BOOL OnInitDialog(); CString m_strId; afx_msg void OnAddExperienceBtn(); CString m_strName; afx_msg void OnDeleteExperienceBtn(); CString m_strJunSchool; afx_msg void OnModifyExperienceBtn(); CString m_strSenSchool; afx_msg void OnSaveExperienceBtn(); CTime m_timeEleEnd; afx_msg void OnLookforExperienceBtn(); CTime m_timeJunEnd; afx_msg void OnKillfocusEditExpId(); CTime m_timeSenEnd; //}}AFX_MSG CTime m_timeEleStart; DECLARE_MESSAGE_MAP() }; CTime m_timeJunStart; CTime m_timeSenStart; 表 4 CExperienceDlg类说明表 名称 属性 说明 m_dgExperience CDataGrid变量 教育经历列表 m_strEleSchool CString变量 小学学校 m_strJunSchool CString变量 初中学校 m_strSenSchool CString变量 高中学校 m_strId CString变量 学号 m_strName CString变量 姓名 m_timeEleStart CTime变量 小学入学时间 m_timectrlEleStart CDateTimeCtrl变量 9
m_timeEleEnd m_timectrlEleEnd m_timeJunStart m_timectrlJunStart m_timeJunEnd m_timectrlJunEnd m_timeSenStart m_timectrlSenStart m_timeSenEnd m_timectrlSenEnd OnAddExperienceBtn() OnDeleteExperienceBtn() OnModifyExperienceBtn() OnSaveExperienceBtn() OnLookforExperienceBtn() OnKillfocusEditExpId() 5.5、CLoginDlg类
CTime变量 CDateTimeCtrl变量 CTime变量 CDateTimeCtrl变量 CTime变量 CDateTimeCtrl变量 CTime变量 CDateTimeCtrl变量 CTime变量 CDateTimeCtrl变量 方法 方法 方法 方法 方法 方法 小学毕业时间 初中入学时间 初中毕业时间 高中入学时间 高中毕业时间 增加学生教育经历 删除学生教育经历 修改学生教育经历 保存学生教育经历 查询学生教育经历 按学生学号查询 class CLoginDlg : public CDialog { // Construction public: CLoginDlg(CWnd* pParent = NULL); // standard constructor _RecordsetPtr m_pRecordset_user; // Dialog Data //{{AFX_DATA(CLoginDlg) enum { IDD = IDD_LOGIN_DLG }; CString m_strLoginPwd; CString m_strLoginName; int m_nLoginLevel; //}}AFX_DATA // Overrides // ClassWizard generated virtual function overrides 表 5 CLoginDlg类说明 名称 属性 m_strLoginPwd CString变量 m_strLoginName CString变量 m_nLoginLevel int变量 OnLoginBtn() 方法 10
//{{AFX_VIRTUAL(CLoginDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL // Implementation protected: // Generated message map functions //{{AFX_MSG(CLoginDlg) afx_msg void OnLoginBtn(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; 说明 登录密码 登录用户 登录权限 确定登录 5.6、CPhotoDlg类 class CPhotoDlg : public CDialog { public: CPhotoDlg(CWnd* pParent = NULL); _RecordsetPtr m_pRecordset; int action; HBITMAP m_hPhotoBitmap; DWORD m_nFileLen; HBITMAP BufferToHBITMAP(); BOOL LoadBMPFile(const char* pBMPPathname); char *m_pBMPBuffer; void DestroyPhoto(); void DrawUserPhoto(int x,int y,CDC* pDC); enum { IDD = IDD_PHOTO_DLG }; CEdit m_ID; CString m_strId; CString m_strName; protected: virtual void DoDataExchange(CDataExchange* pDX); protected: afx_msg void OnAddPhotoBtn(); afx_msg void OnModifyPhotoBtn(); afx_msg void OnDeletePhotoBtn(); afx_msg void OnExecutePhotoBtn(); afx_msg void OnLookforPhotoBtn(); virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg void OnSelPhotoBtn(); afx_msg void OnKillfocusEditPhotoId(); //}}AFX_MSG DECLARE_MESSAGE_MAP() };
表 6 CPhotoDlg类说明 名称 m_strId m_strName OnAddPhotoBtn() OnModifyPhotoBtn() OnDeletePhotoBtn() OnExecutePhotoBtn() OnLookforPhotoBtn() 5.7、CScoreDlg类
属性 CStrin变量 CStrin变量 方法 方法 方法 方法 方法 说明 学号 姓名 录入图片 修改图片 删除图片 选择图片 查询图片 11
class CScoreDlg : public CDialog { // Construction public: CScoreDlg(CWnd* pParent = NULL); // standard constructor _RecordsetPtr m_pRecordset; _RecordsetPtr m_pRecordset_result; int action; // Dialog Data //{{AFX_DATA(CScoreDlg) enum { IDD = IDD_SCORE_DLG }; CDataGrid m_dgScore; CDataGrid m_dgResult; int m_nScore; CString m_strCourseId; CString m_strRemark; CString m_strId; CString m_strName; 表 7 CScoreDlg类说明 名称 m_strId m_strName m_nScore m_strCourseId m_strRemark m_strCourseName m_nLookType m_dgScore m_dgResult OnPutinScoreBtn() OnModifyScoreBtn() OnLookforScoreBtn() OnExecuteScoreBtn() OnDelScoreBtn() 5.8、CStuManageDlg类
12
int m_nLookType; CString m_strCourseName; protected: virtual void DoDataExchange(CDataExchange* pDX); protected: // Generated message map functions //{{AFX_MSG(CScoreDlg) virtual BOOL OnInitDialog(); afx_msg void OnPutinScoreBtn(); afx_msg void OnModifyScoreBtn(); afx_msg void OnLookforScoreBtn(); afx_msg void OnExecuteScoreBtn(); afx_msg void OnDelScoreBtn(); afx_msg void OnChangeEditScoreId(); afx_msg void OnChangeEditScoreCourseid(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; 属性 CString变量 CString变量 int变量 CString变量 CString变量 CString变量 int变量 int变量 CDataGrid变量 方法 方法 方法 方法 方法 说明 学号 姓名 分数 课程号 备注 课程名称 按学号查找 成绩列表 查找结果 录入 修改 查询 确定 删除 class CStudentDlg : public CDialog { // Construction public: CStudentDlg(CWnd* pParent = NULL); // standard constructor _RecordsetPtr m_pRecordset_stu; int SelectType; // Dialog Data //{{AFX_DATA(CStudentDlg) enum { IDD = IDD_STUDENT_DLG }; CEdit m_ID; CDateTimeCtrl m_timectrlTime; CString m_strNativePlace; int m_nAge; CString m_strName; CDataGrid m_dgStudent; CString m_strSex; CString m_strID; //}}AFX_DATA protected: // Generated message map functions //{{AFX_MSG(CStudentDlg) virtual BOOL OnInitDialog(); afx_msg void OnAddStudentBtn(); afx_msg void OnModifyStudentBtn(); virtual void OnOK(); afx_msg void OnDelStudentBtn(); afx_msg void OnLookforStudentBtn(); afx_msg void OnKillfocusEditStudentId(); //}}AFX_MSG DECLARE_MESSAGE_MAP() };
表 8 CStuManageDlg类说明 名称 属性 m_strID CString变量 m_strName CString变量 m_strSex CString变量 m_nAge int变量 m_strNativePlace CString变量 m_dgStudent CDataGrid变量 OnAddStudentBtn() 方法 OnModifyStudentBtn() 方法 OnDelStudentBtn() 方法 OnLookforStudentBtn() 方法 OnOK() 方法 5.9、CUserDlg类
13
说明 学号 姓名 性别 年龄 籍贯 学生基本信息表 录入 修改 删除 查询 更新列表 class CUserDlg : public CDialog { public: CUserDlg(CWnd* pParent = NULL); _RecordsetPtr m_pRecordset; int action; //{{AFX_DATA(CUserDlg) enum { IDD = IDD_USER_DLG }; CString m_strUserType; CDataGrid m_dgUser; CString m_strUserName; CString m_strUserPwd; }}AFX_DATA protected: virtual void DoDataExchange(CDataExchange* pDX); //
表 9 CUserDlg类说明 名称 属性 m_strUserName CString m_strUserPwd CString m_strUserType CString m_dgUser CDataGrid OnAddUserBtn() 方法 OnModifyUserBtn() 方法 OnDelUserBtn() 方法 OnExecuteUserBtn() 方法 OnLookforUserBtn() 方法 DDX/DDV support protected: // Generated message map functions //{{AFX_MSG(CUserDlg) afx_msg void OnAddUserBtn(); afx_msg void OnModifyUserBtn(); afx_msg void OnDelUserBtn(); afx_msg void OnExecuteUserBtn(); afx_msg void OnLookforUserBtn(); virtual BOOL OnInitDialog(); afx_msg void OnChangeEditUserName(); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; 说明 用户名 密码 用户类型 用户信息 添加 修改 删除 确定 查找 6、功能测试示图
14
图 4 系统总体界面测试图
图 5 登录界面测试图
15
图 6 学生基本信息测试图
图 7 照片管理测试图
16
图 8 学生教育经历测试图
图9 院系设置测试图
17
图10 课程设置测试图
图 11 成绩管理测试图
18
图 12 学籍管理测试图
图 13 奖惩管理测试图
19
图 14 用户管理测试图
图 15 提示先登录 图 16 学生无权修改数据 图 17 注销登录
图 18 登录成功
20
7、存在的不足与对策
由于在做本系统之前对MFC和数据库知识的掌握不够充分和熟练,在具体设
计本系统的时候无法从一个宏观的角度去进行本系统的一个整体框架的设计,有些功能是在做的过程中想到的时候才补上的,这样在整体上形成了一定的混乱和不规范。而由于知识的不足,一些功能并没有按照预期的想法做出来,例如数据的存储方面,并没有达到很好的效果,甚至会出现错误。
由于对数据库知识方面的掌握不足,刚开始是使用SQL Server 2005作为本
系统的数据库,后来改用Access 2003,在SQL语句操作不熟悉的情况下,在连接方面经常出来和种连接和查询问题。
由于缺乏一些美工方面的知识,界面的友好和美观工作受到一定的限制,无
法提供一个更加友好美观的操作界面。
从总体上来讲,通过对本次课程设计,更加熟悉地掌握的c++的知识,特别
是MFC和数据库方面的知识,但是也由此认识到自身知识的不足去设计方面的各种缺陷,对以后编程知识的学习起到了一定的借鉴作用。
8、程序源代码
本系统的所有源代码详见附件StuManage
9、使用手册
⑴选择“系统”|“登录”,弹出登录窗口,输入用户名、密码、并选择用户类型。不同的用户类型系统赋予 了不同的权限。学生用户只能查看数据,老师可以录入和修改学生数据,管理员可以录入和修改各种数据;
⑵登录系统后,选择“学生基本信息操作”,进入学生基本信息界面,学生基本信息显示在学生基本信息列表中。在学号编辑框中输入某个学生的学号,该学生的详细情况会在界面下方的相应文本框中。管理员及老师可以对学生的信息进行
21
修改;
⑶选择“照片管理”进入照片信息管理界面,第一条记录显示在界面上。在学号的编辑框中输入某个学生的学号,该学生的照片会自动显示在图像框中。 后面的“学生教育经历”、“成绩管理”、“学籍管理”、“奖惩管理”亦同理; ⑷选择“院系设置”进入院系设置界面。单击院系的某个节点,右侧的文本框中会显示该节点的详细情况,课程设置亦同理;
⑸用户管理:该功能只有管理员具有操作权限,可以进行用户的管理工作。
参考文献
[1].陈天华.面向对象程序设计与VisualC++6.0教程[M].1版.北京:清华大学出版社.
[2] Visual C++6.0 数据库开发指南 清华大学出版社,2005 [3] 深入浅出MFC 候俊杰 华中科技大学出版社 2001
[4] Visual C++ + SQL Server 数据库应用系统开发与实例 人民邮电出版社,2004
22