c++1学生信息管理系统docxWord文件下载.docx
《c++1学生信息管理系统docxWord文件下载.docx》由会员分享,可在线阅读,更多相关《c++1学生信息管理系统docxWord文件下载.docx(37页珍藏版)》请在冰豆网上搜索。
位为班级号)、姓名、性别、出生日期和所在专业。
(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)结构
courseno
7
——
课程号
special
所属专业
coursename
课程名
coursetype
课程类型
openterm
数字
字节
开学学期
6
hours
课时数
credit
单精度
学分
表3
学生课程成绩表(
score)结构
8
course
score
成绩
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"
"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
}
//CMemberViewprinting
BOOLCMemberView:
OnPreparePrinting(CPrintInfo*pInfo)
//defaultpreparation
returnDoPreparePrinting(pInfo);
OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
//TODO:
addextrainitializationbeforeprinting
OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
addcleanupafterprinting
//CMemberViewdiagnostics#ifdef_DEBUG
AssertValid()const
CListView:
AssertValid();
Dump(CDumpContext&
dc)const
Dump(dc);
CMemberDoc*CMemberView:
GetDocument()//non-debugversionisinline
ASSERT(m_pDocument->
IsKindOf(RUNTIME_CLASS(CMemberDoc)));
return(CMemberDoc*)m_pDocument;
#endif//_DEBUG
//CMemberViewmessagehandlers
//增加指针变量指向ListView的CListCtrl
CListCtrl*ctl;
ctl=&
GetListCtrl();
//删除CListCtrl中的所有记录
ctl->
DeleteAllItems();
//strSearch查询条件strMember关键字
ListMember(CStringstrSearch,CStringstrMember)
//前此输出的用户记录
RemoveAll();
//建立一个指针,用以操作ListCtrl输出用户记录
//创建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'
chrTemp,LPCTSTR(),chrTemp);
snapshot,NULL,CRecordset:
学院"
MemIns='
LPCTSTR());
专业"
MemSpeLIKE'
年级"
MemYearLIKE'
年级
tree"
MemYear=%sorderbyMemIDASC"
else
条件选择错误"
//输出匹配上查询到的用户记录,直到记录为空
while(!
())
InsertItem(i,;
SetItemText(i,1,;
SetItemText(i,2,;
SetItemText(i,3,;
SetItemText(i,4,;
SetItemText(i,5,;
SetItemText(i,6,;
SetItemText(i,7,;
catch(CDBException*e)
e->
Delete();
}
EditCurUser()
//建立一个指针,用以操作ListCtrl输出用户记录
//寻找当前选中的记录的位置
POSITIONpos=ctl->
GetFirstSelectedItemPosition();
if(pos==NULL)
//如果没有选择记录,则提示并退出
请先选择一条信息!
"
//获取当前记录的位置游标
intm_CurUser=ctl->
GetNextSelectedItem(pos);
//创建一个MemberEditDlg的实例
CMemberEditDlgm_MemberEditDlg;
//创建一个临时字符串来保存当前用户信息
charchrTemp[201]={'
\0'
};
//查找学号
GetItemText(m_CurUser,0,chrTemp,sizeof(char[20]));
MemIDLIKE'
chrTemp);
//输出匹配上条件用户记录,直到记录为空
if()&
&
!
//开始显示记录的内容
=;
if()!
=IDOK)
//如果用户选择取消按钮,则退出
UpdateData(FALSE);
if(MessageBox("
确定修改记录?
"
修改确认"
MB_YESNO|MB_ICONQUESTION)==IDYES)
MemID=chrTemp"
MemID='
//如果用户记录存在,则进行修改操作
if()&
!
//设置编辑当前记录
//开始编辑该条记录的内容
//更新完毕,关闭数据库
//关闭数据库
//提示用户
该记录不存在,无法修改!
catch(CDBException*e)
ReportError();
//将用户信息及时更新到ListCtrl中
SetItemText(m_CurUser,0,;
SetItemText(m_CurUser,1,;
SetItemText(m_CurUser,2,;
SetItemText(m_CurUser,3,;
SetItemText(m_CurUser,4,;
SetItemText(m_CurUser,5,;
SetItemText(m_CurUser,6,;
SetItemText(m_CurUser,7,;
OnDblclk(NMHDR*pNMHDR,LRESULT*pResult)
Addyourcontrolnotificationhandlercodehere
*pResult=0;
EditCurUser();
LookMember()
//创建一个MemberDialog的实例
CMemberDialogm_MemberDialog;
CStringchrTemp=FindPosition();
if(chrTemp=="
()){
if()==IDCANCEL)
//如果用户选择取消按钮,则退出
DelCurUser()
请先选中一条记录!
charchrTemp[21]={'
//取得用户ID
GetIt