VC++学生信息管理系统课程设计报告.docx
《VC++学生信息管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《VC++学生信息管理系统课程设计报告.docx(33页珍藏版)》请在冰豆网上搜索。
VC++学生信息管理系统课程设计报告
项目名称
设计开始日期
2012-08-20
项目完成日期
2012-08-24
文档评审主要考核内容
评审项目
评审内容
项目名称
课题是否从实际出发,是否满足工作量需求,是否具有创意等
文档格式
文档格式是否规范;文字是否规范;图表是否规范;术语是否准确等
文档质量
程序设计思想与整体框架是否清晰等
程序功能完备性评审主要内容
评审项目
评审内容
程序运行状况
程序是否能正常运行;是否出现死锁;是否遇到错误而中止运行
程序正确性
对于给定的输入数据,是否能得到正确的输出结果
程序与文档的一致性
程序与各种文档的内容是否一致
程序的代码量
程序代码量的大小
实现方法
图形界面或命令行界面,美观程度
程序功能
程序的功能是否完备
答辩评审内容
评审项目
评审内容
答辩思路
答辩思路是否清晰
回答问题
回答问题是否正确
考勤评定成绩
考勤成绩
课程设计是否按照要求在机房完成课程设计
总成绩
课程设计题目:
学生信息管理系统
问题阐述与分析:
1.设计背景:
随着学校的发展,需要对越来越多的学生信息进行处理,依靠传统的处理方式已经满足不了要求,所以可以通过编一个学生信息管理系统,使学生的信息能够集中管理,由于这个数据量比较大,而对于大量数据的处理,采用数据库更为安全简便。
在此,可以通过学生信息管理系统这个项目来学习数据库的使用和注意事项。
对于学生信息管理系统这个项目,需要处理学生的基本信息,姓名,学号,年龄,性别,宿舍,联系方式等。
2.设计实现意义
有利于学生的管理便利
3.所要解决的主要问题
帮助老师、同学们更方便快捷的查询学生的信息
4.应用范围
本系统适用于理论研究。
即用来对平台功能的增减,修改及相关算法优化等做研究。
工作量:
我在学习VC++的MFC编程,数据库的相关知识,同时进行下面的工作,
1.拟定课程设计的主要方向——学生信息管理系统;
2.明确所做系统的主要需要解决的问题,根据问题分析系统所要实现的主要功能,根据功能设计出不同的模块——登陆模块,注册模块,维护模块。
3.设计系统的登录及各个主要功能的界面外观;
4.以各个界面所要实现的功能为以依据,为各个部分编写代码并匹配数据库;登陆模块,能进行登录,并且输入错误时,有提示信息
注册模块,可进行用户的注册
维护模块,能进增加,删除,修改等动作
5.调试程序,修改程序中出现的错误,并在功能,外观方面对程序进行完善,使程序实用性更强;
6.完成工程。
工作计划安排:
2012年8月20日---8月20日:
进行系统分析,确定各模块及具体实现方案。
2011年8月20日---8月21日:
进行系统的分析,确定各部分需要完成的主要功能,确定具体实现方案,并学习相关知识,确定使用VC++6.0。
2011年8月21日---8月22日:
根据分析和设计,开始系统的实现,进行代码的编写。
2011年8月22日~8月23日
各模块合并,调试运行。
2011年9月23日---8月24日:
系统完善,撰写报告
1绪论
1.1项目简介
本系统主要实现学生信息管理功能,为老师与同学提供一个可以快速查找信息的平台。
1.2设计目的
方便老师与同学查看学生信息,提高学生信息管理的效率,节省时间,从而实现学校工作的边界管理。
1.3设计内容
主要包括:
用户的登陆于注册,对学生信息的增加删除修改。
2需求分析
2.1数据需求
系统需要处理哪些数据
总体分为用户输入的数据和从数据库中获得的数据。
主要数据类型包括:
CString类型数据、double类型数据、int类型数据和CTime类型数据。
2.2事务需求
用户:
登陆、注册,对数据的增删改
3概要设计
3.1系统的大致流程图
4详细设计
4.1系统的流程图
4.2整体逻辑数据库结构
4.3涉及算法的思想
4.3.1建立数据库
通过ADO建立两个数据库(新建MicrosoftOfficeAccess应用程序)存放登陆信息和学生信息。
4.3.2数据录入
在新建学生信息数据库中录入学生信息。
4.3.3登录框的设计
4.3.3.1建立变量Sname,Spsw,通过格式变幻,将CString格式转换成数据库规定的格式
4.3.3.2通过compare函数将输入的用户名与密码与数据库比较
4.3.4注册框的设计
先判定输入框里的名字在数据库里不存在,然后将输入的信息替换入数据库
4.3.5添加记录
4.3.5.1建立一个新的窗口,包含姓名,学号,年龄等基本信息录入框
4.3.5.2用户录入要添加记录信息,如果要添加记录和已有记录不冲突就会把录入信息添加到新建MicrosoftOfficeAccess应用程序记录集中。
4.3.6修改记录
对已经录入的学生信息进行修改
4.3.7删除记录将已选中的记录从记录集中去除。
5用户使用说明
5.1开发运行环境
5.1.1设备:
本系统对设备的要求很低,一般的电脑主机都能运行。
运行前安装VisualC++6.0。
5.1.2支持软件:
系统支持:
Windows7等。
开发工具:
VisualC++6.0、Access2010。
5.2数据库的名称及内容
本系统包含两个数据库,Data和Database数据库,Database数据库中储存的是用户名与密码,Data数据库中储存的是学生的学号、姓名、年龄、联系方式、宿舍。
Data(学生通讯表)
字段名称
中文含义
数据类型
宽度
Num
学号
文本
20
Name
姓名
文本
20
Age
年龄
数字
3
Home
宿舍
文本
20
Phone
联系电话
文本
20
Database(管理登录表)
字段名称
中文含义
数据类型
宽度
Logname
用户名
文本
20
Logpsw
用户密码
文本
20
6关键源程序
6.1建立工程
6.2模块1
先在学生信息管理系统.cpp中添加代码,通过ADO创建登陆数据库
//学生信息管理系统.cpp:
Definestheclassbehaviorsfortheapplication.
#include"stdafx.h"
#include"学生信息管理系统.h"
#include"学生信息管理系统Dlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
//CMyApp
BEGIN_MESSAGE_MAP(CMyApp,CWinApp)
//{{AFX_MSG_MAP(CMyApp)
//NOTE-theClassWizardwilladdandremovemappingmacroshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSG
ON_COMMAND(ID_HELP,CWinApp:
:
OnHelp)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CMyAppconstruction
CMyApp:
:
CMyApp()
{
//TODO:
addconstructioncodehere,
//PlaceallsignificantinitializationinInitInstance
}
//TheoneandonlyCMyAppobject
CMyApptheApp;
CDaoDatabasedb;//建立全局变量,在其他地方调用时要加extern
//CMyAppinitialization
BOOLCMyApp:
:
InitInstance()
{
AfxEnableControlContainer();
//Standardinitialization
//Ifyouarenotusingthesefeaturesandwishtoreducethesize
//ofyourfinalexecutable,youshouldremovefromthefollowing
//thespecificinitializationroutinesyoudonotneed.
#ifdef_AFXDLL
Enable3dControls();//CallthiswhenusingMFCinasharedDLL
#else
Enable3dControlsStatic();//CallthiswhenlinkingtoMFCstatically
#endif
//这里就是程序入口,在这里添加数据库检查代码
CStringFilepath="Database.mdb";
CDaoRecordsetDbset(&db);
CFileFindFfind;//先看看存不存在数据库文件
BOOLflag=Ffind.FindFile(Filepath);
Ffind.Close();
if(!
flag)//如果没有就创建
{
CStringsqlcmd="CREATETABLEDataTable(NameVARCHAR(20),PswVARCHAR(20))";
db.Create(Filepath);
db.Execute(sqlcmd);
Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT*FROMDataTable",0);
Dbset.AddNew();
Dbset.SetFieldValue("Name",_variant_t("wzh"));
Dbset.SetFieldValue("Psw",_variant_t("123456"));
Dbset.Update();
Dbset.Close();
db.Close();
}//建立数据库文件,设置初始化账号
CMyDlgdlg;
m_pMainWnd=&dlg;
intnResponse=dlg.DoModal();
if(nResponse==IDOK)
{
//TODO:
Placecodeheretohandlewhenthedialogis
//dismissedwithOK
}
elseif(nResponse==IDCANCEL)
{
//TODO:
Placecodeheretohandlewhenthedialogis
//dismissedwithCancel
}
//Sincethedialoghasbeenclosed,returnFALSEsothatweexitthe
//application,ratherthanstarttheapplication'smessagepump.
returnFALSE;
}
voidCMyDlg:
:
OnPaint()
{
if(IsIconic())
{
CPaintDCdc(this);//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
//Centericoninclientrectangle
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
//Drawtheicon
dc.DrawIcon(x,y,m_hIcon);
}
else
{
//给窗体添加背景
CPaintDCdc(this);
CRectrc;
GetClientRect(&rc);
CDCdcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmapbmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1);
BITMAPbitmap;
bmpBackground.GetBitmap(&bitmap);//取得bmpBackground中图片的信息,放在bitmap所指的指针中
CBitmap*pbmpPri=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rc.Width(),rc.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
//CDialog:
:
OnPaint();
}
}
进入系统
voidCMyDlg:
:
OnButton1()
{
DIALOGLOGtec;
tec.DoModal();
}
退出系统
voidCMyDlg:
:
OnButton2()
{
if(IDYES==MessageBox("确定退出?
","退出程序",MB_ICONQUESTION|MB_YESNO))
DestroyWindow();
}
6.3模块2
登陆
externCDaoDatabasedb;//调用那个全局变量
voidDIALOGLOG:
:
Onlogbt()
{
//判断输入筐里的内容和数据库里的内容是否吻合
UpdateData(true);
CDaoRecordsetDbset(&db);
CStringFilepath="Database.mdb";
CStringSname,Spsw;
_variant_tvarname,varpsw;
db.Open(Filepath);
Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT*FROMDataTable",0);
varname=Dbset.GetFieldValue("Name");
varpsw=Dbset.GetFieldValue("Psw");
Sname=(LPCSTR)_bstr_t(varname);
Spsw=(LPCSTR)_bstr_t(varpsw);
Dbset.Close();
db.Close();
if(m_logname.IsEmpty()||m_logpsw.IsEmpty())//如果输入框中存在空输入
{
MessageBox("信息不能为空!
");
return;
}
if(Sname.Compare(m_logname)==0&&Spsw.Compare(m_logpsw)==0)//如果密码和用户与数据库一致
{
MessageBox("登入成功!
","温情提示");
DIALOG3dlg;
dlg.DoModal();
}
else
{
MessageBox("用户名或密码错误!
","温情提示");
return;
}
}
注册
voidDIALOGLOG:
:
Onlogreg()
{
DIALOGREGdlg;
dlg.DoModal();
}
6.4模块3
取消
voidDIALOGREG:
:
OnRegcancle()
{
CDialog:
:
OnCancel();
}
注册
voidDIALOGREG:
:
OnRegbt()
{
//让数据库里一直只有一个用户
UpdateData(true);//及时更新数据
CStringFilepath="Database.mdb";
CStringSname;
_variant_tvarname;
CDaoRecordsetDbset(&db);
db.Open(Filepath);
Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT*FROMDataTable",0);
varname=Dbset.GetFieldValue("Name");
Sname=(LPCSTR)_bstr_t(varname);
if(m_regname.IsEmpty()||m_regpsw.IsEmpty())
{
MessageBox("信息不能为空!
","温情提示");
return;
}
if(m_regpsw!
=m_regpsw1)
{
AfxMessageBox("密码不一致");
return;
}
if(Sname.Compare(m_regname)!
=0)//如果输入框里的名字在数据库里不存在
{
Dbset.Edit();//将新数据代替旧数据
Dbset.SetFieldValue("Name",_variant_t(m_regname));
Dbset.SetFieldValue("Psw",_variant_t(m_regpsw));
Dbset.Update();
MessageBox("用户注册成功!
","温情提示");
CDialog:
:
OnOK();
}
else//如果输入的名字和数据库里的一致,这提示存在该用户
{
MessageBox("该用户已存在!
","温情提示");
}
Dbset.Close();
db.Close();
}
6.5模块4
初始化窗口
BOOLDIALOG3:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
m_list.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);//设置扩展样式
m_list.InsertColumn(0,"学号",LVCFMT_LEFT,100,0);//添加学号项
m_list.InsertColumn(1,"姓名",LVCFMT_LEFT,100,1);//添加姓名项
m_list.InsertColumn(2,"年龄",LVCFMT_LEFT,100,2);//添加年龄项
m_list.InsertColumn(3,"联系方式",LVCFMT_LEFT,200,3);//添加联系方式项
m_list.InsertColumn(4,"宿舍",LVCFMT_LEFT,100,4);//添加宿舍项
readDb();//在初始化函数中,如果没有找到数据库文件就创建,并且在列表中显示出来
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
通过ADO创建学生信息数据库
voidDIALOG3:
:
readDb()
{
CStringFilepath="Data.mdb";//将数据库文件Data.mdb在程序的同一目录下
CFileFindFfind;//先看看存不存在数据库文件
BOOLflag=Ffind.FindFile(Filepath);
Ffind.Close();
if(!
flag)//如果没有,就创建
{
aa.Create(Filepath);
CStringsqlcmd="CREATETABLEDataTable(NumVARCHAR(20),NameVARCHAR(20),AgeVARCHAR(3),PhoneVARCHAR(20),HomeVARCHAR(20))";//创建内部表,并设置两个属性(姓名,年龄)
aa.Execute(sqlcmd);//执行sql指令
aa.Close();//创建完成一定要关闭,否则出错
MessageBox("数据库已建立成功!
","温情提示");
}
_variant_tvarnum,varname;
COleVariantvarage,varphone,varhome;
CStringSname,Sage,Snum,Sphone,Shome;
inti=0;
aa.Open(Filepath);
Dbset.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT*FROMDataTable",0);
while(!
Dbset.IsEOF())
{
varnum=Dbset.GetFieldValue("Num");
varname=Dbset.GetFieldValue("Name");
varage=Dbset.GetFieldValue("Age");
varphone=Dbset.GetFieldValue("Phone");
varhome=Dbset.GetFieldValue("Home");
Snum=(LPCSTR)_bstr_t(varnum);
Sname=(LPCSTR)_bstr_t(varname);
Sage=(LPCSTR)varage.pbstrVal;
Sphone=(LPCSTR)varphone.pbstrVal;
Shome=(LPCSTR)varhome.pbstrVal;//分别将数据库里面读出来的文件转换成CString
m_list.InsertItem(i,"");
m_list.SetItemText(i,0,Snum);
m_list.SetItemText(i,1,Sna