Vc++课设课程设计报告.docx
- 文档编号:4754447
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:40
- 大小:2.14MB
Vc++课设课程设计报告.docx
《Vc++课设课程设计报告.docx》由会员分享,可在线阅读,更多相关《Vc++课设课程设计报告.docx(40页珍藏版)》请在冰豆网上搜索。
Vc++课设课程设计报告
一、需求与功能分析1
二、系统总体框架1
三、模块设计与分析1
四、类的设计与分析2
五、特色算法分析6
六、功能测试6
七、存在的不足与对策14
八、程序源代码15
一.需求与功能分析
本系统为了更好地实现对考试相关信息管理。
本系统主要功能是对文件进行读取,修改和删除等。
系统由MFC编写,有友好的操作界面,设计简单明朗也是一大特色,能够很方便管理员进行操作,其中实现功能如下:
输入:
考生相关信息:
考生姓名,考号,性别,班别,监考老师。
功能:
对学生资料的查询,修改,删除,添加。
二.系统总体框架
三.模块设计与分析
1.查询考生信息
当按下这个按钮,会弹出一个窗口,用户可以输入需要查询的考生考号,然后该考生的信息就会显示在下面的列表上.
2.添加考生信息
当按下这个按钮,会弹出一个窗口,然后再把需要添加的资料添在相应的信息栏上.这样该考生资料就会添加在名为db1数据库的表1上。
3.修改考生信息
当按下这个按钮,会弹出一个窗口,用户可以输入需要修改的考生考号,然后再把需要修改的资料添在相应的信息栏上.
4.删除部分考生信息
在主窗口的列表中,点选需要删除的一栏或多栏,按下删除按钮,弹出一个对话框,按确定,该资料就会从数据库中删除掉。
四.类的设计与分析
添加考生信息的类:
classadd_student:
publicCDialog//主对话框类
{
//Construction
public:
add_student(CWnd*pParent=NULL);
enum{IDD=IDD_DIALOG1};
CStringm_class1;
CStringm_name;
CStringm_num;
CStringm_sex;
CStringm_teacher;
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
protected:
virtualvoidOnOK();
DECLARE_MESSAGE_MAP()
};
查询考生信息的类:
classfind:
publicCDialog
{
public:
CBrushbr;
CBitmaph;
_RecordsetPtrm_pSet;
find(CWnd*pParent=NULL);
enum{IDD=IDD_DIALOG3};
CListCtrlm_bank1;
CStringm_num;
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
protected:
afx_msgvoidOnButton1();
virtualBOOLOnInitDialog();
afx_msgHBRUSHOnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor);
DECLARE_MESSAGE_MAP()
private:
_bstr_tvar;
};
修改信息的类:
classname2:
publicCDialog
{
public:
CBitmapb;
CBrushbr;
name2(CWnd*pParent=NULL);
enum{IDD=IDD_DIALOG2};
CStringm_chass1;
CStringm_change;
CStringm_name;
CStringm_num;
CStringm_sex;
CStringm_teacher;
CStringm_oldnum;
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
protected:
virtualvoidOnOK();
virtualBOOLOnInitDialog();
afx_msgHBRUSHOnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor);
DECLARE_MESSAGE_MAP()
};
主对话框类:
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
enum{IDD=IDD_ABOUTBOX};
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
protected:
DECLARE_MESSAGE_MAP()
};
classCMuzi2App:
publicCWinApp
{
public:
CMuzi2App();
public:
virtualBOOLInitInstance();
DECLARE_MESSAGE_MAP()
};
classCMuzi2Dlg:
publicCDialog
{
public:
CBrushbr;
CBitmapb;
voidzhao();
_RecordsetPtrtea;
CMuzi2Dlg(CWnd*pParent=NULL);_RecordsetPtrm_stu;
_ConnectionPtrm_pConnection;
enum{IDD=IDD_MUZI2_DIALOG};
CStaticm_test;
CListCtrlm_bank;
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
protected:
HICONm_hIcon;
virtualBOOLOnInitDialog();
afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);
afx_msgvoidOnPaint();
afx_msgHCURSOROnQueryDragIcon();
afx_msgvoidOnButton1();
afx_msgvoidOnButton5();
afx_msgvoidOnClose();
afx_msgvoidOnButton8();
afx_msgvoidOnButton6();
afx_msgHBRUSHOnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor);
afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);
DECLARE_MESSAGE_MAP()
private:
_variant_tvar;
};
五、特色算法分析
在设计的开始阶段我就有一个疑惑,就是删除数据的问题怎么处理,当你删除一条数据时,下面的数据会怎么样?
怎么才能使下一条的数据完完全全地代替刚删除的数据?
我想了很多方法及上网查阅了很多资料都没有办法解决,因为即使你删除了,你该行的数据会变成一个空字符串,但也会相当于一条数据,这样就会使读文件时常出错。
开始,我想另外开一个窗口,填入要删除的考生号,然后进行删除,后来觉得实操起来有点繁琐,所以在列表种点选需要删除的一项或多项,再按删除按钮进行删除,这样比较方便快捷。
六、功能测试
1.进入考试管理系统:
2.按下“查询部分考生信息”按钮:
输入要查询的考生号:
3.删除考生信息:
点选需要删除的一栏或两栏:
按下“删除”按钮:
4.按下“添加考生信息”按钮:
填入要添加的考生资料:
OK:
5.按下“修改考生信息”按钮:
填入要修改的考生号和要修改成的资料:
OK:
七.存在的不足与对策
由于设计者的编程水平有限,并且在不熟悉的MFC环境下编写,所以难免出现不少的问题。
考试系统的功能不多,有最基本的查询,添加,修改删除。
1,开始,我只会用MFC来做窗口,后来,经过老师和同学的教导,实现了窗口之间的连接,数据库的连接,和功能的实现。
2.简单的程序基本完成了,就开始了美化的工作,为每个窗口添加了背景,和插图。
起初,导入图片时,经常出现说导入的图片,但无法显示的对话框,我以为导入失败了,所以试了很多次,后来才发现其实是导入成功了。
八、程序源代码
//muzi2Dlg.cpp:
implementationfile
#include"stdafx.h"
#include"muzi2.h"
#include"muzi2Dlg.h"
#include"add_student.h"
#include"find.h"
#include"name2.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog
{
public:
CAboutDlg();
//DialogData
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport
//Implementation
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//Nomessagehandlers
END_MESSAGE_MAP()
//CMuzi2Dlgdialog
CMuzi2Dlg:
:
CMuzi2Dlg(CWnd*pParent/*=NULL*/)
:
CDialog(CMuzi2Dlg:
:
IDD,pParent)
{
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
voidCMuzi2Dlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMuzi2Dlg)
DDX_Control(pDX,IDC_F,m_test);
DDX_Control(pDX,IDC_LIST1,m_bank);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMuzi2Dlg,CDialog)
//{{AFX_MSG_MAP(CMuzi2Dlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1,OnButton1)
ON_BN_CLICKED(IDC_BUTTON5,OnButton5)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BUTTON8,OnButton8)
ON_BN_CLICKED(IDC_BUTTON6,OnButton6)
ON_WM_CTLCOLOR()
ON_WM_CREATE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
//CMuzi2Dlgmessagehandlers
BOOLCMuzi2Dlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//Add"About..."menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
m_bank.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
m_bank.InsertColumn(0,"考生姓名",LVCFMT_LEFT,100);
m_bank.InsertColumn(1,"考号",LVCFMT_LEFT,100);
m_bank.InsertColumn(2,"性别",LVCFMT_LEFT,100);
m_bank.InsertColumn(3,"班别",LVCFMT_LEFT,100);
m_bank.InsertColumn(4,"监考老师",LVCFMT_LEFT,100);
CFontf;
f.CreateFont(72,56,50,50,60,1,0,1,1,1,1,1,1,"华文行楷");
m_test.SetFont(&f);
b.LoadBitmap(IDB_BITMAP3);
br.CreatePatternBrush(&b);
CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
//打开本地Access库db1.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=db3.mdb","","",adModeUnknown);
}
catch(_com_errore)
{
MessageBox("数据库连接失败,确认数据库phonebook.mdb是否在当前路径下!
");
this->CloseWindow();
returnFALSE;
}
//////表1连接
m_stu.CreateInstance(__uuidof(Recordset));
try
{
m_stu->Open("SELECT*FROM表1",
m_pConnection.GetInterfacePtr(),//获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error*e)
{
//AfxMessageBox(e->ErrorMessage());
MessageBox(e->ErrorMessage());
}
zhao();
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
//TODO:
Addextrainitializationhere
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
voidCMuzi2Dlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow
//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,
//thisisautomaticallydoneforyoubytheframework.
voidCMuzi2Dlg:
:
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
{
CDialog:
:
OnPaint();
}
}
//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags
//theminimizedwindow.
HCURSORCMuzi2Dlg:
:
OnQueryDragIcon()
{
return(HCURSOR)m_hIcon;
}
voidCMuzi2Dlg:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
add_studentas;
if(IDOK==as.DoModal())
{
m_stu->AddNew();
m_stu->PutCollect("studentname",(_bstr_t)as.m_name);
m_stu->PutCollect("number",(_bstr_t)as.m_num);
m_stu->PutCollect("sex",(_bstr_t)as.m_sex);
m_stu->PutCollect("class1",(_bstr_t)as.m_class1);
m_stu->PutCollect("teacher",(_bstr_t)as.m_teacher);
m_stu->Update();
}
m_bank.DeleteAllItems();
zhao();
}
voidCMuzi2Dlg:
:
OnButton5()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
findqq;
qq.m_pSet=m_stu;
qq.DoModal();
CStringnum;
}
voidCMuzi2Dlg:
:
OnClose()
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
m_stu->Close();
m_pConnection->Close();
CDialog:
:
OnClose();
}
voidCMuzi2Dlg:
:
OnButton8()
{
name2ac;
CStringnum;
if(IDOK==ac.DoModal())
{
if(!
m_stu->BOF)//判断指针状态是否正常
{
m_stu->MoveFirst();
while(!
m_stu->adoEOF)
{
var=m_stu->GetCollect("number");
num.Format(_com_util:
:
ConvertBSTRToString((_bstr_t)var));
if(num==ac.m_oldnum)
{
m_stu->PutCollect("number",(_bstr_t)ac.m_num);
m_stu->PutCollect("studentname",(_bstr_t)ac.m_name);
m_stu->PutCollect("sex",(_bstr_t)ac.m_sex);
m_stu->PutCollect("class1",(_bstr_t)ac.m_chass1);
m_stu->PutCollect("teacher",(_bstr_t)ac.m_teacher);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Vc 课程设计 报告