c++1学生信息管理系统docx.docx

上传人:b****6 文档编号:6860363 上传时间:2023-01-11 格式:DOCX 页数:37 大小:22KB
下载 相关 举报
c++1学生信息管理系统docx.docx_第1页
第1页 / 共37页
c++1学生信息管理系统docx.docx_第2页
第2页 / 共37页
c++1学生信息管理系统docx.docx_第3页
第3页 / 共37页
c++1学生信息管理系统docx.docx_第4页
第4页 / 共37页
c++1学生信息管理系统docx.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

c++1学生信息管理系统docx.docx

《c++1学生信息管理系统docx.docx》由会员分享,可在线阅读,更多相关《c++1学生信息管理系统docx.docx(37页珍藏版)》请在冰豆网上搜索。

c++1学生信息管理系统docx.docx

c++1学生信息管理系统docx

学生信息管理系统

1.课程设计的目的

 

随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已

 

逐步成熟。

管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要

 

高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。

VC++程序设计课程设计是计算机科学与技术专业的《VC++程序设计》课程的综合性

 

实践环节。

VC++程序设计是一门实用性很强的学科,是进行软件开发的主要工具,只有

 

进行实际操作,才能将理论知识和实际应用有机的结合起来,锻炼学生分析解决实际问

题的能力,提高学生实际运用的能力,为学生毕业设计,日后工作中的软件开发打下良

 

好的基础。

 

2.需求分析

 

用计算机技术实现的科学化管理,是在信息技术迅速发展的今天学校提高管理效率

的必需选择。

学生信息管理系统是典型的信息管理系统(MIS),其开发主要包括后台数

 

据库的建立和维护以及前端应用程序的开发两个方面。

对于前者要求建立起数据一致性

 

和完整性强、数据安全性好的库。

而对于后者则要求应用程序功能完备、易使用等特点。

 

学生信息管理系统用来将某一个院系按专业、班级来管理学生的基本信息、课程信

 

息和学生成绩。

下面就其系统功能作简单的说明。

该系统主要是方便查询学生的信息,

 

用该系统可以查到学生的姓名,年龄,学号,性别,学院,班级等。

可以统计学生在某

 

一学期的总学分或者单科成绩、总成绩。

 

系统主要功能包括:

信息操作功能、查询功能、统计功能、分析功能。

 

信息操作功能

 

(1)学生基本信息的添加、修改和删除。

学生基本信息包括:

学号(学号的前6

 

位为班级号)、姓名、性别、出生日期和所在专业。

(2)学生成绩信息的添加、修改和删除。

学生成绩信息包括:

学号、课程号、成绩和和学分。

 

2.2查询功能

可以通过学号来查询学生基本信息,通过学号可以查询学生的选课信息,通过学号

 

和学期查询学生的成绩,通过课程号查询该课程的信息。

 

2.3统计功能

 

统计学生某个学期或所有学期课程的总学分,统计学生某个学期的或所有学期的单

 

科成绩或者总成绩。

 

运行环境

 

(1)硬件环境

 

处理器:

InterCentrinoDuo。

 

内存:

521MB。

 

硬盘空间:

80G。

 

(2)软件环境

 

操作系统:

WindowsXP

 

Microsoftvisualc++Microsoftaccess数据库

 

3.总体设计系统的结构图

 

学生信息管理系统是对学生的基本信息和成绩信息进行管理,主要包括添加、修改

 

和删除学生的基本信息及课程的基本信息;录入、修改和删除学生的成绩信息,对基本

 

信息、成绩信息进行查询、排序及统计等操作,从而实现学生信息管理的自动化与计算

 

机化。

本课题将实现一个简化的学生信息管理系统。

(1)添加信息:

使用这个模块,可以添加学生的基本信息,包括学生的学号,姓名,民族,性别,籍贯,出生年月日,政治面貌,学院,专业,所在年级,寝室地址,毕业院校,身份证号,电子邮箱,联系电话,家庭住址,备注等。

(2)成绩导入:

包括学号,课程编号,课程名称,学分,成绩。

 

(3)信息查询:

包括学号,姓名,班级,学院。

(4)成绩查询:

包括课程名称,课程编号。

 

(5)个人信息:

当点击这个按钮时,可以显示当前某个人的信息。

 

(6)查看成绩:

点击这个按钮时,可以显示当前这个人的所有成绩。

 

设计数据库

 

用MicrosoftAccess创建一个数据库,含有3个主要数据表:

学生基本信息表

 

student、课程信息表couese和学生成绩表score。

这3个数据表的结构如表1~3所示。

这几个表中,学号studentno和课程号courseno内容都是唯一的,分别是student和course表中的主关键字。

Score表中的studentno和student表中的同名字段相对应,字段course和course表中的courseno字段相对应。

说明:

由于student和course表中都有专业字段,因此为便于用户操作,需要一个专业数据字典。

该数据字典也作为数

据库的一个数据表speical,其结构如表4所示。

 

表1学生基本信息表(

student)结构

序号

字段名称

数据类型

字段大小

小数位

字段含义

1

studentname

文本

20

姓名

2

studentno

文本

10

学号

3

xb

是/否

50

性别

4

birthday

日期/时间

出生年月

5

speical

文本

专业

 

表2

课程信息表(course)结构

序号

字段名称

数据类型

字段大小

小数位

字段含义

1

courseno

文本

7

——

课程号

2

special

文本

50

——

所属专业

3

coursename

文本

50

——

课程名

4

coursetype

文本

10

——

课程类型

5

openterm

数字

字节

——

开学学期

6

hours

数字

字节

——

课时数

7

credit

数字

单精度

1

学分

 

表3

学生课程成绩表(

score)结构

序号

字段名称

数据类型

字段大小

小数位

字段含义

1

studentno

文本

8

学号

2

course

文本

7

课程号

3

score

数字

单精度

1

成绩

4

credit

数字

单精度

1

学分

 

4.详细设计

该系统包含多个模块,期中重要的有6大模块,添加信息,成绩导入,信息查询,

 

成绩查询,个人信息,查看成绩。

该系统的主界面如图2所示。

 

图2系统的主界面

 

信息查询的设计

 

下面我们对信息查询做详细的设计。

信息查询这个模块的功能主要通过某个学生的

 

某一项信息,比如学号,班级,姓名,专业,年级,然后查询到这个学生的多个信息。

 

比如通过学生的学号,可以查询到这个学生所在学院,所在班级等。

当我们点击信息查

询这个按钮时,显示一个对话框,如图3所示。

 

图3信息查询的界面

 

当我们点击信息查询按钮时,会立刻弹出一个对话框,期中对话框中包括一个列表

框,列表框中包括学号,姓名,学院,专业,年级,列表框中还包括2个按钮,一个查找按钮,一个取消按钮。

使用CRecordSet类的成员变量m_strFilter、m_strSort和成员函数Open可以对表进行记录查询。

(1)打开Ex_ODBC应用程序的表的单资源,按如图4所示的布局添加控件,七宗添加的编辑框ID号设为IDC_EDIT_QUERY,查询按钮的ID号设为IDC_BUTTON_QUERY..

 

图4添加控件

 

(2)用MFCclasswizard为控件IDC_EDIT_QUERY添加关联变量m_strQuery.

 

(3)在CEx_ODBCView类中添加按钮控件IDC_BUTTON_QUERY的BN_CLICKED消息映射,并在映射函数中添加下列代码:

voidCMemberView:

:

RemoveAll()

 

{

 

c++实用教程[M].北京高等教育出版社,83-126

 

[2]孙越编著.VisualC++数据库开发自学教程[M].人民邮电出版社50-75

 

[3]王彬华,李建华编著.VisualC++实例教程[M]电子科技大学出版社

 

[4]李春葆,曾平编著.数据库原理与应用[M].北京清华大学出版社,41-74

 

附录:

 

#include""

 

#include""

 

#include""

 

#include""

 

#include""

 

#include""

 

#include""

 

#include""

 

#include""

 

#include""

 

#include""

 

#ifdef_DEBUG

 

#definenewDEBUG_NEW

 

#undefTHIS_FILE

 

staticcharTHIS_FILE[]=__FILE__;

 

#endif

 

}

 

//CMemberViewprinting

 

BOOLCMemberView:

:

OnPreparePrinting(CPrintInfo*pInfo)

 

{

 

//defaultpreparation

 

returnDoPreparePrinting(pInfo);

 

}

voidCMemberView:

:

OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)

 

{

 

//TODO:

addextrainitializationbeforeprinting

 

}

 

voidCMemberView:

:

OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)

 

{

 

//TODO:

addcleanupafterprinting

 

}

 

//CMemberViewdiagnostics#ifdef_DEBUG

voidCMemberView:

:

AssertValid()const

 

{

 

CListView:

:

AssertValid();

 

}

 

voidCMemberView:

:

Dump(CDumpContext&dc)const

 

{

 

CListView:

:

Dump(dc);

 

}

 

CMemberDoc*CMemberView:

:

GetDocument()//non-debugversionisinline

 

{

 

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMemberDoc)));return(CMemberDoc*)m_pDocument;

}

 

#endif//_DEBUG

 

//CMemberViewmessagehandlers

 

voidCMemberView:

:

RemoveAll()

 

{

 

//增加指针变量指向ListView的CListCtrl

CListCtrl*ctl;

 

ctl=&GetListCtrl();

 

//删除CListCtrl中的所有记录

 

ctl->DeleteAllItems();

 

}

 

//strSearch查询条件strMember关键字

 

voidCMemberView:

:

ListMember(CStringstrSearch,CStringstrMember)

 

{

 

//前此输出的用户记录

 

RemoveAll();

 

//建立一个指针,用以操作ListCtrl输出用户记录

 

CListCtrl*ctl;

 

ctl=&GetListCtrl();

 

//创建CMemberReSet的实例

 

CMemberReSetm_MemberReSet;

 

//记录用户序号

 

inti=0;

 

//定义一个变量来保存"%"以便设置SQL语句

 

charchrTemp='%';

 

CStringstrTemp;

 

try

 

{

 

if())

 

();

 

//设置查询条件"MemName=strMemberName"if(strMember=="")

 

{

 

AfxMessageBox("请输入关键字");

return;

 

}

 

if(strSearch=="学号")

 

{

 

CStringstr;

 

("select*frommemberwhereMemID='%s'orderbyMemIDASC",strMember);

 

(CRecordset:

:

snapshot,str,CRecordset:

:

none);

 

}

 

elseif(strSearch=="姓名")

 

{

 

"MemNameLIKE'%c%s%c'orderbyMemIDASC",chrTemp,LPCTSTR(),chrTemp);

 

(CRecordset:

:

snapshot,NULL,CRecordset:

:

none);

 

}

 

elseif(strSearch=="学院")

 

{

 

"MemIns='%s'orderbyMemIDASC",LPCTSTR());

 

(CRecordset:

:

snapshot,NULL,CRecordset:

:

none);

 

}

 

elseif(strSearch=="专业")

 

{

 

"MemSpeLIKE'%c%s%c'orderbyMemIDASC",chrTemp,LPCTSTR(),chrTemp);

 

(CRecordset:

:

snapshot,NULL,CRecordset:

:

none);

 

}

 

elseif(strSearch=="年级")

 

{

 

"MemYearLIKE'%c%s%c'orderbyMemIDASC",chrTemp,LPCTSTR(),chrTemp);

 

(CRecordset:

:

snapshot,NULL,CRecordset:

:

none);

 

}

elseif(strSearch=="

年级

tree")

 

{

 

"MemYear=%sorderbyMemIDASC",LPCTSTR());

 

(CRecordset:

:

snapshot,NULL,CRecordset:

:

none);

 

}

 

else

 

{

 

AfxMessageBox("条件选择错误");

 

return;

 

}

 

//输出匹配上查询到的用户记录,直到记录为空

 

while(!

())

 

{

 

ctl->InsertItem(i,;

 

ctl->SetItemText(i,1,;

 

ctl->SetItemText(i,2,;

 

ctl->SetItemText(i,3,;

 

ctl->SetItemText(i,4,;

 

ctl->SetItemText(i,5,;

 

ctl->SetItemText(i,6,;

 

ctl->SetItemText(i,7,;

 

();

 

}

 

if())

 

();

 

}

 

catch(CDBException*e)

 

{

e->Delete();

 

return;}

 

}

 

voidCMemberView:

:

EditCurUser()

 

{

 

//建立一个指针,用以操作ListCtrl输出用户记录

 

CListCtrl*ctl;

 

ctl=&GetListCtrl();

 

//寻找当前选中的记录的位置

 

POSITIONpos=ctl->GetFirstSelectedItemPosition();

 

if(pos==NULL)

 

{

 

//如果没有选择记录,则提示并退出

 

AfxMessageBox("请先选择一条信息!

");

 

return;

 

}

 

//获取当前记录的位置游标

 

intm_CurUser=ctl->GetNextSelectedItem(pos);

 

//创建一个MemberEditDlg的实例

 

CMemberEditDlgm_MemberEditDlg;

 

CMemberReSetm_MemberReSet;

 

//创建一个临时字符串来保存当前用户信息

 

charchrTemp[201]={'\0'};

 

//查找学号

 

ctl->GetItemText(m_CurUser,0,chrTemp,sizeof(char[20]));

 

if())

 

();

 

"MemIDLIKE'%s'",chrTemp);

(CRecordset:

:

snapshot,NULL,CRecordset:

:

none);

 

//输出匹配上条件用户记录,直到记录为空

 

if()&&!

())

 

{

 

//开始显示记录的内容

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

}

 

if()!

=IDOK)

 

{

 

//如果用户选择取消按钮,则退出

 

return;

}

 

UpdateData(FALSE);

 

if(MessageBox("确定修改记录?

","修改确认",MB_YESNO|MB_ICONQUESTION)==IDYES)

 

{

 

try

 

{

 

if())

 

();

 

//设置查询条件"MemID=chrTemp""MemID='%s'",chrTemp);

 

(CRecordset:

:

snapshot,NULL,CRecordset:

:

none);

 

//如果用户记录存在,则进行修改操作

 

if()&&!

())

 

{

 

//设置编辑当前记录

 

();

 

//开始编辑该条记录的内容

 

=;

 

=;

 

=;

 

=;

 

if())

 

{

 

();

 

}

 

//更新完毕,关闭数据库

 

();}

 

else

{

 

//关闭数据库

 

if())

 

();

 

//提示用户

 

AfxMessageBox("该记录不存在,无法修改!

");

 

return;

 

}

 

}

 

catch(CDBException*e)

 

{

 

e->ReportError();

 

return;

 

}

 

//将用户信息及时更新到ListCtrl中

 

ctl->SetItemText(m_CurUser,0,;

 

ctl->SetItemText(m_CurUser,1,;

 

ctl->SetItemText(m_CurUser,2,;

 

ctl->SetItemText(m_CurUser,3,;

 

ctl->SetItemText(m_CurUser,4,;

 

ctl->SetItemText(m_CurUser,5,;

 

ctl->SetItemText(m_CurUser,6,;

 

ctl->SetItemText(m_CurUser,7,;

 

}

 

}

 

voidCMemberView:

:

OnDblclk(NMHDR*pNMHDR,LRESULT*pResult)

 

{

 

//TODO:

Addyourcontrolnotificationhandlercodehere

*pResult=0;

 

EditCurUser();

 

}

 

voidCMemberView:

:

LookMember()

 

{

 

//创建一个MemberDialog的实例

 

CMemberDialogm_MemberDialog;

 

CMemberReSetm_MemberReSet;

 

CStringchrTemp=FindPosition();

 

if(chrTemp=="")

 

return;

 

if())

 

();

 

"MemIDLIKE'%s'",chrTemp);

 

(CRecordset:

:

snapshot,NULL,CRecordset:

:

none);

 

//输出匹配上条件用户记录,直到记录为空

 

if()&&!

()){

 

//开始显示记录的内容

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

=;

 

}

 

if()==IDCANCEL)

 

{

 

//如果用户选择取消按钮,则退出

 

return;

 

}

 

UpdateData(FALSE);

 

}

 

voidCMemberView:

:

DelCurUser()

 

{

 

//建立一个指针,用以操作ListCtrl输出用户记录

 

CListCtrl*ctl;

 

ctl=&GetListCtrl();

 

//寻找当前选中的记录的位置

 

POSITIONpos=ctl->GetFirstSelectedItemPosition();

 

if(pos==NULL)

 

{

 

//如果没有选择记录,则提示并退出

 

AfxMessageBox("请先选中一条记录!

");

 

return;}

//获取当前记录的位置游标

 

intm_CurUser=ctl->GetNextSelectedItem(pos);

 

//创建一个临时字符串来保存当前用户信息

 

charchrTemp[21]={'\0'};

 

//取得用户ID

 

ctl->GetIt

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

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1