c++1学生信息管理系统方案Word文档格式.docx
- 文档编号:17167640
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:27
- 大小:139.46KB
c++1学生信息管理系统方案Word文档格式.docx
《c++1学生信息管理系统方案Word文档格式.docx》由会员分享,可在线阅读,更多相关《c++1学生信息管理系统方案Word文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
硬盘空间:
80G。
(2)软件环境
操作系统:
WindowsXP
Microsoftvisualc++Microsoftaccess数据库
3.总体设计
3.1系统的结构图
学生信息管理系统是对学生的基本信息和成绩信息进行管理,主要包括添加、修改和删除学生的基本信息及课程的基本信息;
录入、修改和删除学生的成绩信息,对基本信息、成绩信息进行查询、排序及统计等操作,从而实现学生信息管理的自动化与计算机化。
本课题将实现一个简化的学生信息管理系统。
(1)添加信息:
使用这个模块,可以添加学生的基本信息,包括学生的学号,姓名,民族,性别,籍贯,出生年月日,政治面貌,学院,专业,所在年级,寝室地址,毕业院校,身份证号,电子邮箱,联系电话,家庭住址,备注等。
(2)成绩导入:
包括学号,课程编号,课程名称,学分,成绩。
(3)信息查询:
包括学号,姓名,班级,学院。
(4)成绩查询:
包括课程名称,课程编号。
(5)个人信息:
当点击这个按钮时,可以显示当前某个人的信息。
(6)查看成绩:
点击这个按钮时,可以显示当前这个人的所有成绩。
3.2设计数据库
用MicrosoftAccess创建一个数据库main.mdb,含有3个主要数据表:
学生基本信息表student、课程信息表couese和学生成绩表score。
这3个数据表的结构如表1~3所示。
这几个表中,学号studentno和课程号courseno内容都是唯一的,分别是student和course表中的主关键字。
Score表中的studentno和student表中的同名字段相对应,字段course和course表中的courseno字段相对应。
说明:
由于student和course表中都有专业字段,因此为便于用户操作,需要一个专业数据字典。
该数据字典也作为数据库main.mdb的一个数据表speical,其结构如表4所示。
表1学生基本信息表(student)结构
序号
字段名称
数据类型
字段大小
小数位
字段含义
1
2
3
4
5
studentname
studentno
xb
birthday
speical
文本
是/否
日期/时间
20
10
50
姓名
学号
性别
出生年月
专业
表2课程信息表(course)结构
6
7
courseno
special
coursename
coursetype
openterm
hours
credit
数字
字节
单精度
——
课程号
所属专业
课程名
课程类型
开学学期
课时数
学分
表3学生课程成绩表(score)结构
course
score
8
成绩
4.详细设计
该系统包含多个模块,期中重要的有6大模块,添加信息,成绩导入,信息查询,成绩查询,个人信息,查看成绩。
该系统的主界面如图2所示。
图2系统的主界面
4.1信息查询的设计
下面我们对信息查询做详细的设计。
信息查询这个模块的功能主要通过某个学生的某一项信息,比如学号,班级,姓名,专业,年级,然后查询到这个学生的多个信息。
比如通过学生的学号,可以查询到这个学生所在学院,所在班级等。
当我们点击信息查询这个按钮时,显示一个对话框,如图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()
{
//增加指针变量指向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(m_MemberReSet.IsOpen())
m_MemberReSet.Close();
//设置查询条件"
MemName=strMemberName"
if(strMember=="
"
)
{
AfxMessageBox("
请输入关键字"
);
return;
}
进入信息查询模块之后就可以对信息进行查询,我们选择选择框里选择“姓名”,然后在输入框里输入“陈一”,然后点查找按钮,然后就会弹出陈一的个人信息,如图5所示。
图5陈一的个人信息
在个人信息的模块里包括多个输入框,比如学号,姓名,性别,民族,籍贯,出生年月日,政治面貌,学院专业,所在年级,寝室地址,毕业院校,身份证号,电子邮箱,联系号码,家庭住址,家庭电话,备注。
又包括2个单击按钮,一个修改,一个取消。
我们可以在输入框里输入各种信息,也可以修改当前的信息,修改完然后点“修改”按钮,然后就会弹出一个消息对话框,如图6所示。
图6消息提示
在这个操作过程中我们需要建立一个映射控件消息。
(1)打开Ex_DlgCtrls应用程序项目。
(2)将项目工作区窗口切换到ResourseView页面,双击Dialog资源下的标识IDD_EX_DLGCTRLS_DLALOG,打开该对话框资源模板
(3)删除“TODO:
在这里设置对话控制”控件,添加一个按钮控件,保留其默认属性。
(4)按快捷键CTRL+W,打开"
MFCCLASSWIZAD"
对话框,查看“classname”列表中是否选择了CEx_DlgCtrlsDlg,在IDs列表中选择IDS_BUTTON1,这是添加按钮后,系统自动为此按钮设置的默认标示符,然后在Messages框中选择BN_CKICKED消息。
(5)单吸“Addfunction”按钮或者双击BN_CLICKED消息,出现“AddMemberFunction”对话框。
在这里可以输入成员函数的名称,系统默认的函数为ONButton1。
(6)单吸"
OK"
按钮,在MFCClassWizard的“Memberfunction”列表中将列出新增加的成员函数。
选择此函数,单吸“EditCode”按钮,开发环境的文档窗口中将自动打开该函数的源代码文件,并定位到该函数的实现代码处。
在此成员函数中添加下列代码:
VoidCEx_DlgCtrlsDlg:
onButton()
{MessageBox("
确定修改记录?
(7)编译并运行,当单击按钮时,就会执行ONButton1函数,弹出一个消息一个对话框。
5.心得体会
刚看到课程设计题目的时候,总感觉对visualc++处于一知半解的状态,开始分工也比较混乱,但是在划分模块后明确的各自分工,渐渐的有了点眉目。
在设计的过程中,经常会遇到这样那样的问题,比如说怎样才能实现我们所要的功能,设计过程中的图的画法,程序的编写、文档的编写、排版等。
由于课本上的知识太多,平时课间的学习并不能很好的理解和运用知识,面对这些问题,我们就自己上图书馆借书,网上搜素资料,相互讨论来解决我们的问题。
真的是体会到了只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正的为我所用,从而提高自己的实际动手能力和独立思考的能力。
此次课程设计,让我们学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高等等,无不让我们受益非浅。
6.参考文献
[1]王珊,萨师煊编著.vc++实用教程[M].北京高等教育出版社,2007.783-126
[2]孙越编著.VisualC++数据库开发自学教程[M].人民邮电出版社2003.750-75
[3]王彬华,李建华编著.VisualC++实例教程[M]电子科技大学出版社2004.48-95
[4]李春葆,曾平编著.数据库原理与应用[M].北京清华大学出版社,2006.141-74
附录:
#include"
stdafx.h"
member.h"
memberDoc.h"
memberView.h"
MainFrm.h"
MemberReSet.h"
MemberDialog.h"
MemberEditDlg.h"
ScoreDlg.h"
ScoreReSet.h"
MemberAdd.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
//CMemberView
IMPLEMENT_DYNCREATE(CMemberView,CListView)
BEGIN_MESSAGE_MAP(CMemberView,CListView)
//{{AFX_MSG_MAP(CMemberView)
ON_NOTIFY_REFLECT(NM_DBLCLK,OnDblclk)
//}}AFX_MSG_MAP
//Standardprintingcommands
ON_COMMAND(ID_FILE_PRINT,CListView:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,CListView:
ON_COMMAND(ID_FILE_PRINT_PREVIEW,CListView:
OnFilePrintPreview)
END_MESSAGE_MAP()
//CMemberViewconstruction/destruction
CMemberView:
CMemberView()
//TODO:
addconstructioncodehere
~CMemberView()
BOOLCMemberView:
PreCreateWindow(CREATESTRUCT&
cs)
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
//设置CListCtrl的格式为:
LVS_REPORT并且LVS_SINGLESEL
cs.style|=LVS_REPORT|LVS_SINGLESEL;
returnCListView:
PreCreateWindow(cs);
//CMemberViewdrawing
OnDraw(CDC*pDC)
CMemberDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
adddrawcodefornativedatahere
OnInitialUpdate()
//创建一个CListCtrl指针
//指向CListView的CListCtrl
//表格风格
SetExtendedStyle(ctl->
GetExtendedStyle()|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
//利用CLisrCtrl设置列的题头
InsertColumn(0,"
学号"
LVCFMT_LEFT,100);
InsertColumn(1,"
姓名"
InsertColumn(2,"
性别"
LVCFMT_LEFT,80);
InsertColumn(4,"
学院"
InsertColumn(5,"
专业"
InsertColumn(6,"
所在年级"
InsertColumn(7,"
联系号码"
InsertColumn(8,"
寝室地址"
LVCFMT_LEFT,200);
OnPaint();
CListView:
OnInitialUpdate();
//获取CMainFrame的指针
CMainFrame*m_Frm=(CMainFrame*):
AfxGetMainWnd();
//将CMainFrame的m_ListViet指针变量指向CMemberView的实列
m_Frm->
m_ListView=this;
YoumaypopulateyourListViewwithitemsbydirectlyaccessing
//itslistcontrolthroughacalltoGetListCtrl().
//CMemberViewprinting
OnPreparePrinting(CPrintInfo*pInfo)
//defaultpreparation
returnDoPreparePrinting(pInfo);
OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
addextrainitializationbeforeprinting
OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
addcleanupafterprinting
//CMemberViewdiagnostics
AssertValid()const
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
if(strSearch=="
{
CStringstr;
str.Format("
select*frommemberwhereMemID='
%s'
orderbyMemIDASC"
strMember);
m_MemberReSet.Open(CRecordset:
snapshot,str,CRecordset:
none);
}
elseif(strSearch=="
m_MemberReSet.m_strFilter.Format("
MemNameLIKE'
%c%s%c'
chrTemp,strMember.operatorLPCTSTR(),chrTemp);
m_MemberReSet.Open(CRecordset:
snapshot,NULL,CRecordset:
MemIns='
strMember.operatorLPCTSTR());
m_MemberReSet.m_strFilter.Format("
MemSpeLIKE'
m_MemberReSet.Open(CRecordset:
年级"
MemYearLIKE'
orderbyM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 学生 信息管理 系统 方案
![提示](https://static.bdocx.com/images/bang_tan.gif)