MFC学生信息管理系统课程设计报告
- 格式:doc
- 大小:128.00 KB
- 文档页数:16
C++基于MFC类可视化程序设计报告
方案概述
1、问题描述
学生信息包括:学号、姓名、性别、年龄、班级、专业等信息。
2、功能要求
(1)添加功能:程序能够添加学生的记录和课程设计题目记录,提供选择界面供用户选择所要添加的类别。添加记录时,要求学号和编号要唯一。如果添加了重复记录,则提示数据添加重复并取消添加。
(2)查询功能:可根据学号、姓名、编号、名称等信息对已添加的学生和课程设计题目进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息.
(3)显示功能:可当前系统中所有学生的信息和课程设计题目信息显示,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性.
(5)删除功能:主要实现对已添加的学生和课程设计题目记录进行删除.如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。
(6)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。
(7)注销功能:注销当前用户,返回登陆界面。
3、问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告.
学生选修课系统设计方案
系统登录界面:
登陆界面 系统界面 系统信息界面
主界面:
信息统计界面:
系统实现:
1.首先建立一个MFC类对话框,添加相关系统控件.如图:
2.在解决方案中添加Student类,并实现这个类。代码如下:
//Student.h
class Student {
public:
string name;
string stuNo;
string sex;
string major;
double score;
string banji;
public:
Student(void);
Student(string name,string stuNo,string sex,string major,double score,string banji);
}
//Student.cpp
#include ”StdAfx。h”
#include ”Student.h”
Student::Student(void)
{
}
Student::Student(string name,string stuNo,string sex,string major,double score,string banji)
{
this->name=name;
this->stuNo=stuNo;
this-〉sex=sex;
this—>major=major;
this-〉score=score;
this—>banji=banji;
}
3.将数据保存、读取。在解决方案中创建FileManager类。代码如下:
//FileManager。h
#pragma once
#include "Student。h”
class FileManager
{
private:
char filename[40];
public:
FileManager(char filename[]);
~FileManager(void); void add(Student stu);
int remove(string name);
void edit(Student stu);
Student search(string name);
map〈string,Student> loadAll();
void saveAll(map〈string,Student> m);
};
//FileManager。cpp
#include ”StdAfx.h”
#include "FileManager.h"
FileManager::FileManager(char filename[])
{
strcpy_s(this—>filename,40,filename);
}
FileManager::~FileManager(void)
{ }
void FileManager::add(Student s)
{
ofstream fout(filename,ios::out|ios::app);
fout<<<<" ”〈
fout。close();
}
int FileManager::remove(string name)
{
map〈string,Student〉 m=loadAll();
map〈string,Student>::iterator it=m。find(name);
if(it==m.end())
return 0;//表示学生不存在
else
{
m。erase(it);
saveAll(m);
return 1;//表示有一个学生被删除
}
}
void FileManager::edit(Student stu)
{
map〈string,Student> m=loadAll();
m[stu。name]=stu; saveAll(m);
}
Student FileManager::search(string name)
{
Student s;
map
map
for(p=m。begin();p!=m.end();p++)//据姓名查
if(name==p—〉first)//根据姓名找到
{
s=p->second;//取出该学生对象
break;
}
return s;
}
//将文件中的每一名学生(一行)存入一个map
map〈string,Student〉 FileManager::loadAll()
{
map〈string,Student〉 m;
map ifstream fin(filename,ios::in); while(!fin。eof()) { Student s; fin>〉s。name〉〉s。stuNo〉〉s.sex>〉s。major〉>s.score〉〉s.banji; if(.size()!=0) m[]=s; } fin。close(); return m; } void FileManager::saveAll(map { ofstream fout(filename,ios::out); Student s; map〈string,Student>::iterator p; for(p=m.begin();p!=m。end();p++) { s=p—>second;//取出该学生对象 fout〈〈〈〈" ”<〈s.stuNo<<” "< }