ImageVerifierCode 换一换
格式:DOC , 页数:23 ,大小:288.50KB ,
资源ID:4046098      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4046098.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学生成绩管理系统详细操作过程Word格式.doc)为本站会员(wj)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

学生成绩管理系统详细操作过程Word格式.doc

1、 EnableMenuItem(3,MF_BYPOSITION | MF_DISABLED | MF_GRAYED);【步骤3】在CMainFrame中添加自己定义的函数void SetMenuSta(int type),此函数在登陆对话框的OnOK()中被调用,即当用户进入系统后使“进入系统”菜单项不可用,并根据用户类型使相应菜单可用。当类型为1时(学生),使“学生权限”菜单可用;当类型为2时(教师),使“教师权限”菜单可用;当类型为3时,使“管理员”菜单可用。void CMainFrame:SetMenuSta(int type)AfxGetMainWnd()-EnableMenuItem

2、(0,MF_BYPOSITION | MF_DISABLED | MF_GRAYED); if(type=1) EnableMenuItem(1,MF_BYPOSI TION | MF_ENABLED);/在上面的OnCreate中可以直接通过GetMenu()对菜单操作, /但这里却必须先通过AfxGetMainWnd()获得主窗体指针, /浪费了我一晚上时间,虽然解决了,但还不知道为什么。 if(type=2) AfxGetMainWnd()-EnableMenuItem(2,MF_BYPOSITION | MF_ENABLED); if(type=3)EnableMenuItem(3,M

3、F_BYPOSITION | MF_ENABLED);【步骤4】通过上面两步并不能按我们的想法实现菜单变灰的操作,运行系统各菜单都是可用的,我们必须在CMainFrame的构造函数中添加下面一句代码:m_bAutoMenuEnable=FALSE; m_bAutoMenuEnable必须放在CMainFrame()里初始化,不可用放在登陆对话框的OnOK()函数中,要不其他三个菜单可用变灰,但“进入系统”菜单项却总是不能变灰。数据库设计:根据以上思路,我们使用SQL数据库建立一个“学生成绩管理系统”,其下有4张表,分别为用户表USERS、学生成绩表COURSE_SCORE、学生信息表STUDE

4、NT_INFO和教师信息表TEACHER_INFO。表1 用户表USERS字段名 类型 长度 说明USER_ID char 20 用户名USER_PASSWORD char 20 密码USER_TYPE int 4 1为学生,2为教师,3为管理员表2 学生成绩表COURSE_SCORE字段名 类型 长度 说明STU_ID char 10 学生ID,系统中学生的唯一标识COURSE_ID char 10 课程号,系统中课程的唯一标识COURSE_NAME char 10 课程名SCORE int 4 课程分数表3 学生信息表STUDENT_INFO字段名 类型 长度 说明STU_ID char

5、10 学生ID,系统中学生的唯一标识STU_NAME char 10 学生姓名ENROLLMENT_TIME datetime 8 入学时间DEPARTMENT char 20 所在学院MAJOR char 20 所在专业SEX int 4 性别:0表示男,1表示女BIRTHDAY datetime 8 生日HOMETOWN varchar 50 籍贯ADDRESS varchar 50 现在住址PHONE char 20 个人电话号码RACE char 10 民族PARTY int 4 政治面貌:0表示党员,1表示预备党员,2表示团员,3表示其他 DIRECTION varchar 50 其

6、他信息具体实现步骤:(一)登陆模块设计1、当刚进入系统时候,用户点击“进入系统”菜单项后系统界面如下:按上面的登陆对话框摆放好控件,其中各个控件ID及对应变量如下图所示:从上图中也可以看出,我们为该登陆对话框建立了个新类:CLoginDlg,它的具体创建过程就不介绍了。2、因为登陆对话框要使用SQL数据库中的USERS表,所以需要在程序中添加类CLoginSet,步骤如下:【步骤1】在项目名“学生成绩管理系统”上单击鼠标右键,在弹出的New Class对话框中的Name文本框中输入CLoginSet,在Base class下拉文本框中选择CRecordset。【步骤2】单击OK按钮,弹出Dat

7、abase Option对话框,在ODBC下拉文本框中选择“学生成绩管理系统”数据库,单击OK按钮,弹出Select Database Tables对话框,选择dbo.USERS选项,单击OK按钮。这样就建立了一个CRecordset的对象,就可以对数据库中的USERS表进行操作了。3、在LoginDlg.cpp中引入头文件LoginSet.h,将CRecordSet对象CLoginSet引入登陆对话框: #include “LoginSet.h”4、声明全局变量。在学生成绩管理系统.cpp文件中添加如下代码:/ CDatabase型变量,用于连接数据库CDatabase m_database

8、;/学生登陆后在系统中的唯一ID值CString m_ID;在LoginDlg.cpp添加如下语句,使用已经声明过的全局变量(记得在以后的每个模块中都要添加):extern CDatabase m_database;extern CString m_ID;5、为登陆对话框的“确定”按钮添加消息代码,如下:void CLoginDlg:OnOK() BOOL bLogin=FALSE;CLoginSet *m_recordset=new CLoginSet(&m_database); CString strSQL;UpdateData(TRUE);if(m_usetype.Compare(学生)

9、=0)type=1;elseif(m_usetype.Compare(教师type=2;elseif(m_usetype.Compare(管理员type=3;strSQL.Format(select * from USERS where USER_ID=%s AND USER_PASSWORD= AND USER_TYPE=%d,m_useID,m_usepassword,type);m_recordset-Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);if(m_recordset-GetRecordCount()=0)if(countGetFieldValue(U

10、SER_ID,m_ID);bLogin=TRUE;if(bLogin)MessageBox(欢迎进入学生成绩管理系统!EndDialog(IDOK);CMainFrame *mainfrm=new CMainFrame();mainfrm-SetMenuSta(type); m_database.Close();/CDialog:OnOK(); 6、为登陆菜单下的“进入系统”添加响应函数,此函数是在CMainFrame类中添加的,代码如下:OnLogin() / TODO: Add your command handler code hereCLoginDlg login; login.DoM

11、odal();(二)学生成绩查询模块设计 1、 如果用户类型是1,即学生时,用户可以查询自己的成绩。 在其中用户可以根据课程号或者课程名查询自己的成绩。按上面的学生成绩查询对话框摆放好控件,其中各个控件ID及对应变量如下图所示:从上图中也可以看出,我们为该学生成绩查询对话框建立了个新类:CStuCheckScoreDlg,它的具体创建过程就不介绍了。2、因为学生成绩查询对话框要使用SQL数据库中的COURSE_SCORE表,所以需要在程序中添加类CCourseScoreSet,步骤如下:【步骤1】在项目名“学生成绩管理系统”上单击鼠标右键,在弹出的New Class对话框中的Name文本框中输

12、入CCourseScoreSet,在Base class下拉文本框中选择CRecordset。【步骤2】单击OK按钮,弹出Database Option对话框,在ODBC下拉文本框中选择“学生成绩管理系统”数据库,单击OK按钮,弹出Select Database Tables对话框,选择dbo. COURSE_SCORE选项,单击OK按钮。这样就建立了一个CRecordset的对象,就可以对数据库中的COURSE_SCORE表进行操作了。3、在StuCheckScoreDlg.cpp中引入头文件CourseScoreSet.h,将CRecordSet对象CCourseScoreSet引入登陆对

13、话框: #include “CourseScoreSet.h”4、 在StuCheckScoreDlg.cpp添加如下语句,使用已经声明过的全局变量(记得在以后的每个模块中都要添加):5、为学生成绩查询模块的“查询”按钮添加响应事件:void CStuCheckScoreDlg:OnCheckButton() CString strSQL;CDBVariant varValue;if(m_keyword.Compare(课程号select * from COURSE_SCORE where COURSE_ID=,m_cost); elseselect * from COURSE_SCORE w

14、here COURSE_NAME=CCourseScoreSet *m_recordset=new CCourseScoreSet(&对不起,没有您所需要的结果,请核对后重新输入!int temp=0;m_stuID=m_recordset-m_STU_ID;m_courseID=m_recordset-m_COURSE_ID;m_coursename=m_recordset-m_COURSE_NAME;m_score=m_recordset-m_SCORE;Close();UpdateData(FALSE);注意:在上面我们对对话框中各个文本框对应的变量进行赋值时,并不是使用 m_recor

15、dset-GetFieldValue(3,varValue); m_coursename=varValue.m_pstring-GetBuffer(1);不用这么麻烦的写法,直接用m_recordset中的变量就行了,m_recordset中的变量对应这数据库表中的各个字段,且和表中字段类型都一致。(三)教师操作学生成绩信息模块设计 1、 如果用户类型是2,即教师时,用户可以查询学生的成绩,还可以对学生成绩进行增、改、删操作。查询学生成绩和上个模块差不多,就不做了。而对学生成绩的增、改、删操作就是通过这个模板实现的。界面如下:在其中的列表控件中显示COURSE_SCORE中所有的信息,并且当用

16、户点击其中一行时,可以在上面的文本框中进行显示。按上面的对话框摆放好控件,其中各个控件ID及对应变量如下图所示:从上图中也可以看出,我们为该教师操作学生成绩对话框建立了个新类:COperateScore,它的具体创建过程就不介绍了。2、因为教师操作学生成绩对话框也要使用SQL数据库中的COURSE_SCORE表,所以需要在OperateScore.cpp中引入在前面创建的COURSE_SCORE表所对应的记录集对象的头文件CourseScoreSet.h,将CRecordSet对象CCourseScoreSet引入登陆对话框:3、 在OperateScore.cpp添加如下语句,使用已经声明过

17、的全局变量(记得在以后的每个模块中都要添加):4、因为该对话框中含有列表控件,我们需要对其进行初始化,让列表控件一开始就显示COURSE_SCORE表中的所有记录,并且把列表控件中的第一条记录显示在上面的文本框中。 【步骤1】右键点击COperateScore,在弹出的菜单中选择“Add windows message handle”项,然后在弹出的对话框的“新建windows消息/事件”中选择“WM_INITDIALOG”,然后点击“Add Handle”按钮,最后点击“Edit Existing”按钮,编写代码如下:BOOL COperateScore:OnInitDialog() CDi

18、alog:OnInitDialog();m_listscore.InsertColumn(0,学号 m_listscore.InsertColumn(1, m_listscore.InsertColumn(2,课程名 m_listscore.InsertColumn(3,成绩 RECT rect; m_listscore.GetWindowRect(&rect); int width=rect.right-rect.left; m_listscore.SetColumnWidth(0,width/4); m_listscore.SetColumnWidth(1,width/4); m_list

19、score.SetColumnWidth(2,width/4); m_listscore.SetColumnWidth(3,width/4); m_listscore.SetExtendedStyle(LVS_EX_FULLROWSELECT); initial(); Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE 【步骤2】在上面的OnInitDial

20、og()函数中我们设置了列表控件的表头和每列的间距,并在最后调用了initial()函数。initial()是我自定义的一个函数,用来将COURSE_SCORE表中的数据全部在该列表控件中显示出来。该函数是自定义函数,添加过程比较简单,不介绍。代码如下:void COperateScore:initial()m_listscore.DeleteAllItems(); CDBVariant varValue204;CCourseScoreSet m_recordset; int j=m_recordset.GetDatebase(varValue);int k;int i=0; char buf

21、20;for(k=0;kGetBuffer(1);m_listscore.SetItemText(i,1,varValuek1.m_pstring-m_listscore.SetItemText(i,2,varValuek2.m_pstring-/用来处理数据表中的整型字段sprintf(buf,%d,varValuek3.m_iVal);m_listscore.SetItemText(i,3,buf);i=0;settext(0);varValue204是CDBVariant型的,该类型的变量可以用来存储数据表中任意类型的字段,所在在数据库操作时用该变量比较方便。变量j表示COURSE_SC

22、ORE数据表中的行数,通过for循环把该数据表中的所有记录全部显示出来。数据表中的前3个字段我都是用varValuek0.m_pstring-GetBuffer(1)来显示在列表控件中,是因为数据表中前3个字段都是字符型的,而最后一个字段是用来显示分数的,该字段在数据表中我定义为了整型,所有用sprintf(buf, m_listscore.SetItemText(i,3,buf);来显示。【步骤3】在上面的initial()函数中我调用了GetDatebase(varValue)函数,该函数返回COURSE_SCORE数据表中的记录条数,我们将其赋给了j。并且该函数把COURSE_SCORE表中所有记录都存储在二维数组varValue中。在前面两个模块中我对数据库操作都是直接在该模块中操作的,但现在我要换种方法。我把对数据库的操作封装在了记录集类CCourseScoreSet中,

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2