C++学籍管理系统课程设计报告含代码.docx
- 文档编号:28677316
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:40
- 大小:65.86KB
C++学籍管理系统课程设计报告含代码.docx
《C++学籍管理系统课程设计报告含代码.docx》由会员分享,可在线阅读,更多相关《C++学籍管理系统课程设计报告含代码.docx(40页珍藏版)》请在冰豆网上搜索。
C++学籍管理系统课程设计报告含代码
C++学籍管理系统课程设计报告(含代码)
LT
3.5修改密码功能及代码设计…………………………………………30
3.6删除功能及代码设计………………………………………………34
3.7修改功能及代码设计………………………………………………36
第四章界面设计与实现----------------------------------------(37)
4.1学生信息管理系统…………………………………………………37
4.2学生资料设置………………………………………………………37
4.3成绩设置……………………………………………………………38
4.4学生资料显示………………………………………………………38
4.5成绩显示……………………………………………………………39
4.6修改密码……………………………………………………………39
总结---------------------------------------------------------(40)
工作安排-----------------------------------------------------(43)
参考文献-----------------------------------------------------(44)
第一章绪论
1.1课程设计背景
经过一个学期对《C++程序设计》的学习,学习到了基本的理论知识,了解到了C++语言程序设计的思想,现在把这些知识运用到实际中来。
学籍管理信息系统是高校管理的重要组成部分,它能够为用户提供充足的信息和快捷的查询手段。
使用计算机对学生资料、成绩信息进行管理,能够极大的提高学生管理的效率,节约教育经费,这也是适应学校信息化建设发展趋势的重要因素。
因此我们有必要开发学籍管理信息系统。
1.2课程设计目的
全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法。
正确理解掌握C++面向对象程序设计的基本特性:
类、对象、继承与派生、多态、虚函数、模板、流类库等。
遵循软件过程的各个环节进行系统分析、设计、实现、集成、测试,并相应给出软件规格说明书等制品。
了解当前常用的软件开发工具(VisualC++),要求熟练掌握基于MFC的程序设计,培养解决实际问题的能力。
1.3课程设计思路
实现学生基本情况的录入、修改、删除等基本操作;能实现学生成绩的录入、修改、删除等基本操作;能方便的对学生的各个学期成绩进行统计;能具有成绩统计、排名等功能;可行性分析由于本系统管理的对象单一,都是在校学生,且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。
第二章系统总体规划
2.1前期准备
学习C++6.0课本理论知识,查找、搜集相关资料,讨论出具体思路、方法,在整个过程中周老师给了我们必不可少的许多指导,使我们能够顺利地完成前期各项工作。
2.2系统功能
基于系统需求分析,该系统具有以下基本功能:
用户管理:
管理系统操作人员,设置操作人员账号、密码、用户资料等。
用户资料:
学生通过登录,可以查询到自己的资料、成绩、排名,同时可以修改密码。
成绩管理:
管理员根据学生成绩保存到系统中,同时可计算出综合排名、平均分等信息。
基础数据管理:
维护学生资料,主要包括院系、专业设置,联系方式、学号等个人信息设置等。
功能图
第三章系统分析设计
3.1建立MFC主界面及代码设计
#include"stdafx.h"//头文件
#include"学生信息管理系统.h"
#include"学生信息管理系统Dlg.h"
#include"xueshengziliao2.h"
#include"xueshengziliao1.h"
#include"stu.h"
#include"fstream.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
classCAboutDlg:
publicCDialog//定义类CAboutDlg及数据和方法
{
public:
CAboutDlg();
enum{IDD=IDD_ABOUTBOX};
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
:
IDD)
{
}
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
END_MESSAGE_MAP()
CMyDlg:
:
CMyDlg(CWnd*pParent)//构造函数
:
CDialog(CMyDlg:
:
IDD,pParent)
{
m_xuehao2=0.0f;
m_mima=0.0f;
m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
voidCMyDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
DDX_Text(pDX,IDC_EDIT1,m_xuehao2);
DDX_Text(pDX,IDC_EDIT2,m_mima);
}
BEGIN_MESSAGE_MAP(CMyDlg,CDialog)//窗口链接函数的实现
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_guanliyuandenglu,Onguanliyuandenglu)
ON_BN_CLICKED(IDC_xueshengdenglu,Onxueshengdenglu)
ON_BN_CLICKED(IDC_guanbi,Onguanbi)
END_MESSAGE_MAP()
BOOLCMyDlg:
:
OnInitDialog()//布尔函数的实现
{
CDialog:
:
OnInitDialog();
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
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);
}
}
SetIcon(m_hIcon,TRUE);
SetIcon(m_hIcon,FALSE);
returnTRUE;
}
voidCMyDlg:
:
OnSysCommand(UINTnID,LPARAMlParam)
{
if((nID&0xFFF0)==IDM_ABOUTBOX)
{
CAboutDlgdlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog:
:
OnSysCommand(nID,lParam);
}
}
voidCMyDlg:
:
OnPaint()//添加背景图片
{
if(IsIconic())
{
CPaintDCdc(this);
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2;
dc.DrawIcon(x,y,m_hIcon);
}
else
{
//CDialog:
:
OnPaint();//要禁止这个调用
CPaintDCdc(this);
CRectrect;
GetClientRect(&rect);
CDCdcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmapbmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1);
BITMAPbitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap*pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,
bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
}
}
HCURSORCMyDlg:
:
OnQueryDragIcon()//最小化窗口
{
return(HCURSOR)m_hIcon;
}
voidCMyDlg:
:
Onguanliyuandenglu()//管理员登录
{
this->UpdateData(true);
if(m_mima==123&&m_xuehao2==321)
{
xueshengziliao2a;
this->OnCancel();//跳出此窗口时关闭此窗口
a.DoModal();//跳转到另一窗口
}
else
this->MessageBox("管理员的学号或密码输入错误!
");
}
VoidCMyDlg:
:
Onxueshengdenglu()//学生登录
{
structstustu;
boolnum=false;
boolcode=false;
intfind=0;
this->UpdateData(true);
ifstreamii("data.txt");//读取数据
while(ii.eof()==0)
{
ii.read((char*)&stu,sizeof(stu));
if(stu.xuehao==m_xuehao2)
{
find=1;
break;
}
}
ii.close();
if(find==0)
{
this->MessageBox("该学号尚未注册!
");
}
else{
num=true;
if(stu.mima==m_mima)
{
code=true;
}
else
this->MessageBox("密码错误!
");
}
if(num==true&&code==true)
{
xueshengziliao1aa;
this->UpdateData(true);
aa.m_dianhua1=stu.dianhua;//更新关联变量
aa.m_dizhi1=stu.dizhi;
aa.m_mima1=stu.mima;
aa.m_nianbanji1=stu.nianbanji;
aa.m_xingbie1=stu.xingbie;
aa.m_xingming1=stu.xingming;
aa.m_xuehao1=stu.xuehao;
aa.m_xueyuan1=stu.xueyuan;
aa.m_zhuanye1=stu.zhuanye;
aa.m_jiguan1=stu.jiguan;
this->UpdateData(false);
this->OnCancel();
aa.DoModal();//跳转窗口
}
}
voidCMyDlg:
:
Onguanbi()//关闭此窗口
{
this->OnOK();
}
3.2学生资料设置及代码设计
#include"stdafx.h"
#include"学生信息管理系统.h"
#include"学生信息管理系统Dlg.h"
#include"xueshengziliao2.h"
#include"chengji2.h"
#include"fstream.h"
#include"stu.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
xueshengziliao2:
:
xueshengziliao2(CWnd*pParent/*=NULL*/)
:
CDialog(xueshengziliao2:
:
IDD,pParent)
{
m_zhuanye2=_T("");
m_xueyuan2=_T("");
m_xuehao2=0.0f;
m_xingming2=_T("");
m_xingbie2=_T("");
m_nianbanji2=_T("");
m_mima2=0.0f;
m_jiguan2=_T("");
m_dizhi2=_T("");
m_dianhua2=0.0f;
}
voidxueshengziliao2:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
DDX_Text(pDX,IDD_zhuanye2,m_zhuanye2);
DDX_Text(pDX,IDD_xueyuan2,m_xueyuan2);
DDX_Text(pDX,IDD_xuehao2,m_xuehao2);
DDX_Text(pDX,IDD_xingming2,m_xingming2);
DDX_Text(pDX,IDD_xingbie2,m_xingbie2);
DDX_Text(pDX,IDD_nianbanji2,m_nianbanji2);
DDX_Text(pDX,IDD_mima2,m_mima2);
DDX_Text(pDX,IDD_jiguan2,m_jiguan2);
DDX_Text(pDX,IDD_dizhi2,m_dizhi2);
DDX_Text(pDX,IDD_dianhua2,m_dianhua2);
}
BEGIN_MESSAGE_MAP(xueshengziliao2,CDialog)
ON_BN_CLICKED(IDC_chaxun2,Onchaxun2)
ON_BN_CLICKED(IDC_fanhui2,Onfanhui2)
ON_BN_CLICKED(IDC_guanbi2,Onguanbi2)
ON_BN_CLICKED(IDC_queren2,Onqueren2)
ON_BN_CLICKED(IDC_shanchu2,Onshanchu2)
ON_BN_CLICKED(IDC_shezhichengji2,Onshezhichengji2)
ON_BN_CLICKED(IDC_xiugai2,Onxiugai2)
END_MESSAGE_MAP()
Voidxueshengziliao2:
:
Onfanhui2()//关闭此窗口并返回
{
this->OnCancel();
CMyDlga;
a.DoModal();
}
Voidxueshengziliao2:
:
Onguanbi2()//关闭此窗口
{
this->OnOK();
}
Voidxueshengziliao2:
:
Onchaxun2()//查询用户资料
{
intfindFlag=0;
this->UpdateData(true);
structstustu;
ifstreamis("data.txt");
while(is.eof()==0)
{
is.read((char*)&stu,sizeof(stu));
if(m_xuehao2==stu.xuehao)
{
findFlag=1;
break;
}
}
is.close();
if(findFlag==1)
{
m_xingming2=stu.xingming;
m_mima2=stu.mima;
m_xuehao2=stu.xuehao;
m_dianhua2=stu.dianhua;
m_dizhi2=stu.dizhi;
m_nianbanji2=stu.nianbanji;
m_xingbie2=stu.xingbie;
m_xueyuan2=stu.xueyuan;
m_zhuanye2=stu.zhuanye;
m_jiguan2=stu.jiguan;
}
else
{
this->MessageBox("此学号用户不存在!
");
m_xingming2="";
m_mima2=0;
m_xuehao2=0;
m_dianhua2=0;
m_dizhi2="";
m_nianbanji2="";
m_xingbie2="";
m_xueyuan2="";
m_zhuanye2="";
m_jiguan2="";
}
this->UpdateData(false);
}
voidxueshengziliao2:
:
Onxiugai2()//修改用户资料
{
unsignedlongposition=NULL;
intfindFlag=0;
this->UpdateData(true);
structstustu;
ifstreamis("data.txt");
while(is.eof()==0)
{
position=is.tellg();
is.read((char*)&stu,sizeof(stu));
if(stu.xuehao==m_xuehao2)
{
findFlag=1;
break;
}
}
is.close();
if(findFlag==0)
{
this->MessageBox("此学号用户不存在!
");
return;
}
ofstreamos("data.txt",ios:
:
ate);
os.seekp(position);
strcpy(stu.xingming,m_xingming2);
stu.mima=m_mima2;
stu.xuehao=m_xuehao2;
stu.dianhua=m_dianhua2;
strcpy(stu.dizhi,m_dizhi2);
strcpy(stu.nianbanji,m_nianbanji2);
strcpy(stu.xingbie,m_xingbie2);
strcpy(stu.xueyuan,m_xueyuan2);
strcpy(stu.zhuanye,m_zhuanye2);
strcpy(stu.jiguan,m_jiguan2);
os.write((char*)&stu,sizeof(stu));
os.close();
this->MessageBox("修改成功");
}
voidxueshengziliao2:
:
Onqueren2()//用户注册
{
stustu,stu1;
this->UpdateData(true);
strcpy(stu.xingming,m_xingming2);
stu.mima=m_mima2;
stu.xuehao=m_xuehao2;
stu.dianhua=m_dianhua2;
strcpy(stu.dizhi,m_dizhi2);
strcpy(stu.nianbanji,m_nianbanji2);
strcpy(stu.xingbie,m_xingbie2);
strcpy(stu.xueyuan,m_xueyuan2);
strcpy(stu.zhuanye,m_zhuanye2);
strcpy(stu.jiguan,m_jiguan2);
ifstreamis("data.txt");
inti=0;
while(is.eof()==0)
{
is.read((char*)&stu1,sizeof(stu1));
if(stu1.xuehao==m_xuehao2)
{
i=1;
this->MessageBox("此学号用户已登记!
");
break;
}
}
is.close();
if(i==0)
{
ofstreamos("data.txt",ios:
:
app);
os.write((char*)&stu,sizeof(stu));
os.close();
MessageBox("此学号用户注册成功!
");
}
}
Voidxueshengziliao2:
:
Onshanchu2()//删除用户资料
{
unsignedlongposition=NULL;
structstustu;
intfindFlag=0;
this->UpdateData(true);
ifstreamis("data.txt");
while(is.eof()==0)
{
position=is.tellg();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 学籍 管理 系统 课程设计 报告 代码
