MFC课程设计 ,C++课程设计 --学生成绩管理系统
ps:因为课设完成的过程大家都不太一样,以下的代码仅供学习一下在MFC下各个控件的用法,有问题欢迎留言讨论。
- 实验目的
- 使用MFC类库编制应用程序:按钮控件、静态控件及编辑框的应用。
- 了解MFC类的层次结构及主要类的用法,掌握使用MFC和向导来编写Windows应用程序。
- 熟悉Microsoft Visual Studio2013的开发环境。
- 掌握在Microsoft Visual Studio2013开发环境调试程序的方法。
- 掌握静态控件、按钮、流动条、编辑框、列表框、组合框和对话框的创建、消息发送和控件控制等内容。
- 对前面所学知识的总结,通过一个比较完整的应用程序的设计,将学过的知识连贯起来,掌握开发一个实际应用程序的步骤,同时学会使用开发工具实现界面友好的应用程序。并通过本实验,掌握如何运用面向对象技术对具体的应用系统进行分析和设计。
二、实验内容
本次c++课设的学生成绩管理系统是面向学生和教师的。该系统有三种身份账号,其中学生账号可以在里面查询自己的成绩,而教师账号可以添加,删除和修改学生的成绩,而管理员账号可以添加,删除和修改学生的成绩外,还能可以添加,删除和修改登录使用的账号。
另外,用单文档设计的学生成绩分析图形绘制。并用该学生成绩管理系统调用该画图的exe文件,实现在该学生成绩管理系统中显示学生成绩的直方图和曲线图。
登录界面:
学生成绩管理界面:
(1)、设计一个学生类Student,包括数据成员:姓名、学号、五门课程(高等数学,离散数学,C++课设,大学英语,大学体育)的成绩。
(2)、创建一个基于对话框的MFC应用程序,程序窗口的标题上有你姓名、学号和应用程序名称。使用(1)的类,实现对学生信息和成绩的输入和管理。
(3)、创建一个单文档的MFC应用程序,读取(2)中保存的文件中的学生成绩,分别用直方图和折线方式显示所有学生某课程的成绩分布图。
(4)创建一个登录管理界面,学生可以用学生账号登录查看成绩,教师可以使用教师账号登录查看并添加,删除,修改学生的成绩。而管理员账号可以添加,删除和修改学生和老师的登录账号,老师和学生账号只能修改自身的登录密码。
(5)创建一个学生成绩管理主界面,上面有list控件之间将存储在文件的学生信息显示在主界面上,另外还有查找控件,组合控件进行排序,添加,删除和修改控件。还有账号管理,重新登录和退出控件。
(6)创建一个学生信息查找后显示的学生详细信息界面,拥有教师账号的用户可以通过对这个界面信息的修改,按下“修改保存”的控件进行信息的修改。
(7)点击组合框排序,按确定键后,会通过list和文件的操作,进行对应的排序。可以进行的排序为:学号,高数成绩,离散成绩,c++课设成绩,英语成绩,体育成绩。排序后的内容会直接显示在学生成绩管理的主界面list中。
(8)用单文档对学生成绩储存的文件进行操作,并进行直方图和折线图的绘画。在学生成绩管理住界面点击统计分析,可以直接调用该单文档exe.
(8)创建一个重新登录界面,用户可以通过重新登录的方法进行该学生成绩管理系统用户的更换。该界面需要输入学号,旧密码,新密码,再次输入新密码才能修改该账号的密码。
(9)创建一个登录账号管理界面,只有admin的管理员账号才能进行账号的添加,修改和删除。
三实验设备
Win7操作系统
Microsoft Visual Studio2013
四、实验要求
1. 使用MFC类库编制应用程序:按钮控件、静态控件及编辑框的应用。
2. 了解MFC类的层次结构及主要类的用法,掌握使用MFC和向导来编写Windows应用程序。
3掌握静态控件、按钮、流动条、编辑框、列表框、组合框和对话框的创建、消息发送和控件控制等内容。
4对前面所学知识的总结,通过一个比较完整的应用程序的设计,将学过的知识连贯起来,掌握开发一个实际应用程序的步骤,同时学会使用开发工具实现界面友好的应用程序。并通过本实验,掌握如何运用面向对象技术对具体的应用系统进行分析和设计。
五、实验程序
(1)登录界面
LoginDlg.cpp的主要关键代码
//在主界面调用之前在BOOL CMFC课设学生成绩管理系统App::InitInstance()
中添加
CLoginDlg dl;
if (IDCANCEL == dl.DoModal())
return FALSE;
功能是实现先调用登录窗口。
void CLoginDlg::OnBnClickedOk() //点击登录的响应函数
{
if (CheckSuer()) //登录账号和密码的确定是否正确
CDialog::OnOK();
else
{
AfxMessageBox("用户名或密码错误"); //密码错误则弹出窗口提示错误
SetDlgItemText(IDC_NAME, ""); //重置两个编辑框
SetDlgItemText(IDC_PASS, "");
this->SetFocus();
}
}
bool CLoginDlg::CheckSuer() //账户和密码确认
{
CString szName, szPass;
GetDlgItemText(IDC_NAME, szName);
GetDlgItemText(IDC_PASS, szPass);
szName.MakeLower();
if (szName == "admin"&&szPass == "123") //是否为管理员账号
{
SUser u = { "admin", "123", 1 };
theApp.m_us = u; //将登录人员的信息记录在theApp中
return TRUE;
}
SUser u;
CFile file;
if (!file.Open("./user.dat", CFile::modeRead))
{
CreatUser();
if (!file.Open("./user.dat", CFile::modeRead))
return FALSE;
}
while (file.Read(&u, sizeof(u)))
{
if (szName == u.sName&&szPass == u.sPass)
{
theApp.m_us = u;
return TRUE;
}
}
return FALSE;
}
void CLoginDlg::CreatUser() //如果不存在账号和密码存储的文件,则新建一个存储文件
{
CFile file;
if (!file.Open("./user.dat", CFile::modeCreate | CFile::modeWrite))
{
AfxMessageBox("用户文件创建失败");
return;
}
}
(2)学生成绩管理主界面
BEGIN_MESSAGE_MAP(CMFC课设学生成绩管理系统Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_ManagePower, &CMFC课设学生成绩管理系统Dlg::OnBnClickedManagepower)
ON_BN_CLICKED(IDC_AGAIN_LOGIN, &CMFC课设学生成绩管理系统Dlg::OnBnClickedAgainLogin)
ON_BN_CLICKED(IDC_STUD