C++期末论文-学生成绩管理程序.doc

上传人:wj 文档编号:5334819 上传时间:2023-05-08 格式:DOC 页数:14 大小:1.11MB
下载 相关 举报
C++期末论文-学生成绩管理程序.doc_第1页
第1页 / 共14页
C++期末论文-学生成绩管理程序.doc_第2页
第2页 / 共14页
C++期末论文-学生成绩管理程序.doc_第3页
第3页 / 共14页
C++期末论文-学生成绩管理程序.doc_第4页
第4页 / 共14页
C++期末论文-学生成绩管理程序.doc_第5页
第5页 / 共14页
C++期末论文-学生成绩管理程序.doc_第6页
第6页 / 共14页
C++期末论文-学生成绩管理程序.doc_第7页
第7页 / 共14页
C++期末论文-学生成绩管理程序.doc_第8页
第8页 / 共14页
C++期末论文-学生成绩管理程序.doc_第9页
第9页 / 共14页
C++期末论文-学生成绩管理程序.doc_第10页
第10页 / 共14页
C++期末论文-学生成绩管理程序.doc_第11页
第11页 / 共14页
C++期末论文-学生成绩管理程序.doc_第12页
第12页 / 共14页
C++期末论文-学生成绩管理程序.doc_第13页
第13页 / 共14页
C++期末论文-学生成绩管理程序.doc_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++期末论文-学生成绩管理程序.doc

《C++期末论文-学生成绩管理程序.doc》由会员分享,可在线阅读,更多相关《C++期末论文-学生成绩管理程序.doc(14页珍藏版)》请在冰点文库上搜索。

C++期末论文-学生成绩管理程序.doc

甘肃政法学院

面向对象程序设计

期末考试

题目学生成绩管理程序

计算机科学学院

信息管理与信息系统班

学号:

201081020108

姓名:

贾燚

指导教师:

___金涛___

成绩:

_______________

完成时间:

2011年6月

项目说明

成绩管理是一个复杂的系统工程,其管理范围大、内容广,若采取旧管理方式,不仅耗费大量的人力物力,而且管理效率十分低下。

随着科学技术的迅猛发展,在各项管理中充分应用计算机管理信息系统及现代化的管理方式,尤其是一些高科技技术,让管理中的许多日常工作实现自动化。

一、数据库的设计

用MicosoftAccess2003创建一个数据库student.mdb,包含用于描述学生信息、课程成绩及课程信息的数据表student、score、course,其结构如表1、表2、表3所示。

表1学生信息表(student)结构

序号

字段名称

数据类型

字段大小

小数位

字段含义

1

studentname

文本

20

姓名

2

studentno

文本

10

学号

3

xb

是/否

性别

4

birthday

日期/时间

出生年月

5

special

文本

50

专业

表2学生课程成绩表(score)结构

序号

字段名称

数据类型

字段大小

小数位

字段含义

1

studentno

文本

8

学号

2

course

文本

7

课程号

3

score

数字

单精度

1

成绩

4

credit

数字

单精度

1

学分

表3课程信息表(course)结构

序号

字段名称

数据类型

字段大小

小数位

字段含义

1

courseno

文本

7

课程号

2

special

文本

50

所属专业

3

coursename

文本

50

课程名

4

coursestype

文本

10

课程类型

5

openterm

数字

字节

开课学期

6

hours

数字

字节

课时数

7

credit

数字

单精度

1

学分

二、程序框架界面及其添加的类

1.为上述数据库添加并创建一个ODBC数据源

⑴打开控制面板中的管理工具,如图1所示。

图1管理工具

(2)双击ODBC图标,进入ODBC数据管理器,如图2所示。

在这里,用户可以设置一些ODBC数据源的一些信息。

图2ODBC数据源管理器

(3)创建用户DSN

①单击“添加”按钮,弹出有一驱动程序列表的“创建新数据源”对话框,如图3所示。

在这里选择“MicosoftAccessDriver”。

图3“创建新数据源”对话框

②单击“完成”按钮,进入指定驱动程序的ODBCAccess安装对话框,单击“选择”按钮,然后在数据源名输入“student”,如图4所示。

图4ODBCAccess安装对话框

③单击“确定”按钮,刚才创建的用户数据源已被添加在“ODBC数据源管理器”的“用户数据源”列表中,如图5所示。

图5“用户数据源”列表

2.用MFCAppWizard创建一个单文档应用程序student,在向导的第6步选择基类CListView。

3.在应用程序项目中,用ClassWizard为数据表student、score、course创建并添加CRecordSet的派生类:

CStudentSet、CScoreSet和CCourseSet。

4.添加一个对话框资源IDD_STUINFO,用于学生信息数据的添加和修改。

如图6所示为“学生信息”对话框,创建的对话框类为CStuInfoDlg。

并依次为“学生信息”对话框的控件添加成员变量,如图7所示。

图6“学生信息”对话框

图7“学生信息”对话框添加成员变量

5.添加一个对话框资源IDD_SCORE,用于学生课程成绩数据的添加和修改。

如图8所示为“学生成绩”对话框,创建的对话框类为CscoreDlg。

并依次为“学生成绩”对话框的控件添加成员变量,如图9所示。

图8“学生成绩”对话框

图9为“学生成绩”对话框添加成员变量

6.添加一个对话框资源IDD_COURSE,用于课程信息数据的添加和修改。

如图10所示为“课程信息”对话框,创建对话框类为CCourseDlg。

并依次为“课程信息”对话框的控件添加成员变量,如图11所示。

图10“课程信息”对话框

图11为“课程信息”对话框添加成员变量

7.设计菜单项和工具栏,如图12所示。

图12菜单栏和工具栏

三、主要代码分析

1.用MFCClassWizard为CStuInfoDlg类添加WM_INITDIALOG消息映射,并添加下列初始化代码:

BOOLCStuInfoDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

if(m_strSex=="女")

CheckRadioButton(IDC_RADIO_M,IDC_RADIO_W,IDC_RADIO_W);

else

CheckRadioButton(IDC_RADIO_M,IDC_RADIO_W,IDC_RADIO_M);

m_strOKText.TrimLeft();

GetDlgItem(IDOK)->SetWindowText(m_strOKText);

if(m_strOKText=="修改")

{

GetDlgItem(IDC_EDIT_NAME)->EnableWindow(FALSE);

GetDlgItem(IDC_EDIT_NO)->EnableWindow(FALSE);

}

returnTRUE;

}

2.用MFCClassWizard为CStuInfoDlg类添加IDOK按钮的BN_CLILKED消息映射,并添加下列代码:

voidCStuInfoDlg:

OnOK()

{

UpdateData();

m_strName.TrimLeft();

m_strNO.TrimLeft();

if(m_strName.IsEmpty())

MessageBox("必须有姓名!

");

elseif(m_strNO.IsEmpty())

MessageBox("必须有学号!

");

else

}

3.为Cjy001View类添加一个成员函数DispAllRec,用于显示指定数据表的所有记录,并指定字段排序,strFiled默认参数值为"",其代码如下:

voidCjy001View:

:

DispAllRec(CStringtablename,CStringstrFiled)

{

CListCtrl&m_ListCtrl=GetListCtrl();

m_ListCtrl.DeleteAllItems();

intnColumnCount=m_ListCtrl.GetHeaderCtrl()->GetItemCount();

for(inti=0;i

m_ListCtrl.DeleteColumn(0);

_CommandPtrpCmd;

pCmd.CreateInstance(__uuidof(Command));

pCmd->ActiveConnection=m_pConnection;

CStringstrText;

strField.TrimLeft();

if(strField.IsEmpty())

strText.Format("SELECT*FROM%s",tablename);

else

strText.Format("SELECT*FROM%sORDERBY%s",tablename,strField);

pCmd->CommandText=_bstr_t(strText);

_RecordsetPtrpSet;

pSet.CreateInstance(__uuidof(Recordset));

pSet=pCmd->Execute(NULL,NULL,adCmdText);

FiledsPtrflds=pSet->GetFields();

_variant_tIndex;

Index.vt=VT_I2;

m_ListCtrl.InsertColumn(0,"序号",LVCEMT_LEFT,40);

for(i=0;i<(int)flds->GetCount();i++)

{

Index.iVal=i;

intnWidth=flds->GetItem(Index)->GetDefineSize()*9;

if(nWidth<40)nWidth=40;

m_ListCtrl.InsertColumn(i+1,(LPSTR)flds->GetItem(Index)->GetName(),LVSFMT_LEFT,nWidth);

}_bstr_tstr,value;

intnItem=0;

CStringstrItem;

while(!

pSet->adoEOF)

{

strItem.Format("%d",nItem+1);

m_ListCtrl.InsertItem(nItem,strItem);

for(i=0;i<(int)flds->GetCount();i++)

{

Index.iVal=i;

str=flds->GetItem(Index)->GetName();

value=pSet->GetCollect(str);

m_ListCtrl.SetItemText(nItem,i+1,(LPSTR)value);

}

pSet->MoveNext();

nItem++;

}

pSet->Close();

}

4.用MFCClassWizard为Cjy001View类添加该菜单的COMMAND消息映射,并添加下列代码:

voidCjy001View:

:

OnStuinfoAdd()

{

//TODO:

Addyourcommandhandlercodehere

CStuInfoDlgdlg;

if(dlg.DoModal()!

=IDOK)return;

_CommandPtrpCmd;

pCmd.CreateInstance(__uuidof(Command));

pCmd->ActiveConnection=m_pConnection;

CStringstrText;

strText.Format("SELECT*FROMstudentWHEREstudentname='%s'ANDstudentno='%s'",

dlg.m_strName,dlg.m_strNO);

pCmd->CommandText=_bstr_t(strText);

_RecordsetPtrpSet;

pSet.CreateInstance(__uuidof(Recordset));

pSet=pCmd->Execute(NULL,NULL,adCmdText);

if(!

pSet->adoEOF)

{

MessageBox(dlg.m_strName+"学生记录已添加过!

","重复添加");

pSet->Close();

return;

}

CStringstrSex,strTime;

if(dlg.m_strSex=="男")strSex="True";

elsesreSex="False";

strTime=dlg.m_tBirth.Format("%Y-%m-%d");

strText.Format("INSERTINFOstudent(studentname,studentno,xb,birthday,special)\

VALUES('%s','%s','%s','%s','%s')",

dlg.m_strName,dlg.m_strNO,strSex,strTime,dlg.m_strSpec);

pCmd->CommandText=_bstr_t(strText);

pCmd->Execute(NULL,NULL,adCmdText);

DispAllRec("student");

}

5.用MFCClassWizard为Cjy001View类添加该菜单的WM_RBUTTONDOWN消息映射,并添加下列代码:

CListView:

:

OnRButtonDown(nFlags,point);

{

CListCtrl&m_ListCtrl=GetListCtrl();

UINTuFlags;

intnItem=m_ListCtrl.HitTest(point,&uFlags);

if(uFlags&LVHT_ONITEMLABEL)

{

CStuInfoDlgdlg;

dlg.m_strOKText="修改";

dlg.m_strName=m_ListCtrl.GetItemText(nItem,1);

dlg.m_strNO=m_ListCtrl.GetItemText(nItem,2);

CStringstrSex,strTime;

strSex=m_ListCtrl.GetItemText(nItem,3);

if(strSex=="0")strSex="女";

elsestrSex="男";

dlg.m_strSex=strSex;

strTime=m_ListCtrl.GetItemText(nItem,4);

COleVariantvt(strTime);

vt.ChangeType(VT_DATE);

COleDateTimetm=vt;

dlg.m_tBirth=CTime(tm.GetYear(),tm.GetMonth(),tm.GetDay(),0,0,0);

dlg.m_strSpec=m_ListCtrl.GetItemText(nItem,5);

if(IDOK==dlg.DoModal())

{

if(dlg.m_strSex=="男")strSex="True";

elsestrSex="False";

strTime=dlg.m_tBirth.Format("%Y-%m-%d");

_CommandPtrpCmd;

pCmd.CreateInstance(__uuidof(Command));

pCmd->ActiveConnection=m_pConnection;

CStringstrText;

strText.Format("UPDATEstudentSETxb=%S,birthday='%s',special='&s'\

WHEREstudentname='%s'ANDstudentno='%s'",

strSex,strTime,dlg.m_strSpec,dlg.m_strName,dlg.m_strNO);

pCmd->CommandText=_bstr_t(strText);

pCmd->Execute(NULL,NULL,adCmdText);

DispAllRec("student");

}

}

}

学生学习成绩管理系统

四、主要框架,如图13所示

查询

修改

添加

内容

删除

课程信息

学生成绩

学生信息

图13主框架图

五、运行结果截图

1.运行弹出菜单,如图14所示

图14运行菜单

2.运行弹出的“学生信息”对话框,如图15所示

图15“学生信息”对话框

3.运行弹出的“学生成绩”对话框,如图16所示

图16“学生成绩”对话框

4.运行弹出的“课程信息”对话框,如图17所示

图17“课程信息”对话框

六、改进和总结

本学生信息管理系统基本功能已实现,有些功能存在一些局限性,编程代码的复用性不太完善,页面设计比较简单,缺乏修饰效果功能模块的实现需要进一步完善。

进一步深入理解数据库设计的整个过程,该学生选课系统的需求分析、数据库概念结构设计有关内容等。

掌握使用前台程序设计技术VC和SQLServer结合设计C/S结构的管理信息系统。

综合练习了SQLServer的使用和数据库得管理技术。

综合熟悉并练习了SQL语言在编程中的使用。

综合训练编程能力。

认识系统,取得系统需求分析,更重要得是在编程方面提高了实现目标代码得能力及调试代码得能力。

七、参考文献

(1)夏邦国刘凡馨《VisualC++数据库开发经典实例精解》出版社:

机械工业出版社2004.2

(2)陈世洪《SQLSERVER200管理,开发及应用实例》出版社:

人民邮电出版社2003.3

(3)郑阿奇丁有和《VisualC++实用教程》出版社:

机械工业出版社2002.3

(4)姜代红《数据库原理与应用》出版社:

机械工业出版社2005.6

(5)周鸣扬,于秋生《VisualC++程序设计教程》出版社:

机械工业出版社2001.5

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

当前位置:首页 > 小学教育 > 语文

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

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