用C++编写一个学生信息管理系统 5
“学生信息管理系统设计与实现”1、问题描述学生信息包括:学号、姓名、性别、年龄、班级等信息。小学生除了包括学生所有信息外,还包括英语、数学和语文成绩。中学生除了包括小学生...
“学生信息管理系统设计与实现”
1、问题描述
学生信息包括:学号、姓名、性别、年龄、班级等信息。
小学生除了包括学生所有信息外,还包括英语、数学和语文成绩。
中学生除了包括小学生所有信息外,还包括地理、历史成绩、家庭住址等信息。
大学生除了包括学生所有信息外,还包括专业、家庭地址、联系方式等信息。
2、功能要求
(1)添加功能:程序能够添加不同学生的记录,提供选择界面供用户选择所要添加的类别,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
(3)显示功能:可显示当前系统中所有学生的记录,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。
(5)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。
(6)统计功能:能根据多种参数进行统计。能统计学生人数、按性别统计、按年龄统计等。
(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。
(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。
3、问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。 展开
1、问题描述
学生信息包括:学号、姓名、性别、年龄、班级等信息。
小学生除了包括学生所有信息外,还包括英语、数学和语文成绩。
中学生除了包括小学生所有信息外,还包括地理、历史成绩、家庭住址等信息。
大学生除了包括学生所有信息外,还包括专业、家庭地址、联系方式等信息。
2、功能要求
(1)添加功能:程序能够添加不同学生的记录,提供选择界面供用户选择所要添加的类别,要求学号要唯一,如果添加了重复学号的记录时,则提示数据添加重复并取消添加。
(2)查询功能:可根据学号、姓名等信息对已添加的学生记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。
(3)显示功能:可显示当前系统中所有学生的记录,每条记录占据一行。
(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意学号的唯一性。
(5)删除功能:主要实现对已添加的学生记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。
(6)统计功能:能根据多种参数进行统计。能统计学生人数、按性别统计、按年龄统计等。
(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。
(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。
3、问题的解决方案
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。 展开
1个回答
展开全部
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>//输入/输出文件流类
using namespace std;
class Student //定义类
{
private:
int tag; //删除标记 1:已删 0:未删
char name[10]; //姓名
int grade;//成绩
int ID;
public:
Student() {}//构造函数
int gettag() {return tag;} //获取删除标记
char* getname() {return name;} //获取驾驶员编号
int getID(){ return ID; }
int getgrade(){
return grade;
}
void setname(char*na){ strcpy_s(name, na); }
void setgrade(int n){ grade = n; }
void deldrive(){ tag = 1; }//设置删除标记 1:已删 0:未删
void addstudent(char* nname, int ngrade, int nID)//增加
{
tag = 0;
grade = ngrade;
ID = nID;
strcpy_s(name, nname);
}
void show()//显示信息
{
cout << " 学号: " << ID << endl;
cout << " 姓名: " << name << endl;
cout <<" 成绩: " << grade << endl;
}
};
//学生类库
class Studentlist
{
private:
int top; //记录指针与学号
Student student[100];//记录
public:
Studentlist() //构造函数,将txt读到程序
{
Student s;
top=-1;
fstream file("student.txt",ios::in);//打开一个输入文件
while (1)
{
file.read((char *)&s,sizeof(s));
if (!file)break;
top++;
student[top] = s;//循环逐个读入
}
file.close(); //关闭txt
}
int add(char* nname, int ngrade)//添加时先查找是否存在
{
top++;
student[top].addstudent(nname,ngrade,top);//调用类增加函数
return 1;
}
Student *findname(char* name)//按姓名查找
{
for (int i=0;i<=top;i++)
if (strcmp(student[i].getname(),name)==0 &&
student[i].gettag() == 0)//判断是否已经存在
{
return &student[i];
}
return NULL;
}
Student *findID(int ID)//按学号查找
{
for (int i = 0; i <= top; i++)
if (student[i].getID()== ID&&
student[i].gettag() == 0)//判断是否已经存在
{
return &student[i];
}
return NULL;
}
void show() //输出所有信息
{
for (int i=0;i<=top;i++)
student[i].show();
}
void tongji(){//统计函数
cout << " 优秀与及格人数" << endl;
cout << " 及格人数如下:";
for (int i = 0; i <= top; i++)
if (student[i].getgrade() >= 60)
student[i].show();
cout << "\n\n\n";
cout << " 优秀人数如下:";
for (int i = 0; i <= top; i++)
if (student[i].getgrade() >= 80)
student[i].show();
}
void studentlist();//维护
~Studentlist() //析构函数,将写到txt文件中
{
fstream file("student.txt",ios::out);
for (int i=0;i<=top;i++)
if (student[i].gettag() == 0)//循环输出信息到文本中
file.write((char *)&student[i], sizeof(student[i]));
file.close();
}
};
void Studentlist::studentlist()//维护函数实现
{
int choice = 1;//先行定义,避免choice未定义使用
char name[10]; //姓名
int grade;//成绩
int ID;
Student *r;//指针
while (choice != 6)
{
cout << "************************************\n学生成绩管理系统 ***********************************************************************\n***1--输入数据**********************\n***2--查询成绩**********************\n***3--修改成绩**********************\n***4--输出所有学生成绩**************\n***5--统计及格和优秀人数************\n***6--退出系统****************************\n*******************************" << endl;
cin >> choice;
switch (choice)
{
case 1://新增
cout << "输入姓名:";
cin >> name;
cout << "输入成绩:";
cin >> grade;
add(name, grade);
cout << "完成" << endl;;
break;
case 2://显示
int a;
while (a){
cout << "搜 索 菜 单 1 学 号 2 姓 名 0 退 出" << endl;
cin >> a;
switch (a){
case 1:
cout << "输入学号:";
cin >> ID;
r = findID(ID);
if (r == NULL)
{
cout << "该学生不存在" << endl;
system("pause");
break;
}
r->show();
system("pause");
break;
case 2:
cout << "输入姓名:";
cin >> name;
r = findname(name);
if (r == NULL)
{
cout << "该学生不存在" << endl;
system("pause");
break;
}
r->show();
system("pause");
break;
case 0:break;
default:cout << "输入错误,请重新输入"; break;
}
}; break;
case 3://更改
int b;
while (b){
cout << "更 改 菜 单 1 学 号 2 姓 名 0 退 出"<<endl;
switch (b){
case 1:
cout << "输入学号:";
cin >> ID;
r = findID(ID);
if (r == NULL)
{
cout << "该学生不存在" << endl;
system("pause");
break;
}
cout << "成绩:";
cin >> grade;
r->setgrade(grade);
system("pause");
break;
case 2:
cout << "输入姓名:";
cin >> name;
r = findname(name);
if (r == NULL)
{
cout << "该学生不存在" << endl;
system("pause");
break;
}
cout << "成绩:";
cin >> grade;
r->setgrade(grade);
system("pause");
break;
case 0:break;
default:cout << "输入错误,请重新输入"; break;
}
};
break;
case 4://全显
show();
system("pause");
break;
case 5://全删
tongji();
system("pause");
break;
case 6://退出
break;
default:cout << "输入错误,请重新输入"; break;
};
}
}
//main() 函数的实现,程序的主界面的引导
int main(void)
{
Studentlist a;
a.studentlist();
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询