

#include <iostream>
#include <string>
#include<stdlib.h>
#include <fstream>
#include <iomanip> //包含setw函数
#include<vector> //运用vector创建数组对象
const int N = 1000; //学生的人数
static int n = 0; //n为学生总人数,t控制循环
int t = 1;
using namespace std;
class Student { //创建学生类
public:
string name; //姓名
string gender; //性别
string num; //学号
int grade; //年级
string college; //学院
string system; //系
int stuclass; //班级
int dorm; //宿舍
int English; //英语成绩
int Maths; //数学成绩
int Program; //编程成绩
Student()
{
}
Student(string name, string gender, string num, int grade, string college, string system, int stuclass, int dorm,int English, int Maths,int Program)
{
this->name = name;
this->gender = gender;
this->num = num;
this->grade = grade;
this->college = college;
this->system = system;
this->stuclass = stuclass;
this->dorm = dorm;
this->English = English;
this->Maths = Maths;
this->Program = Program;
}
~Student()
{}
void show1() //输出信息
{
cout << left << setw(10) << name;
cout << left << setw(6) << gender;
cout << left << setw(12) << num;
cout << left << setw(6) << grade;
cout << left << setw(6) << college;
cout << left << setw(6) << system;
cout << left << setw(6) << stuclass;
cout << left << setw(6) << dorm;
cout << left << setw(6) << English;
cout << left << setw(6) << Maths;
cout << left << setw(6) << Program;
}
static void show2() //输出信息的名称
{
cout << left << setw(10) << "姓名";
cout << left << setw(6) << "性别";
cout << left << setw(12) << "学号";
cout << left << setw(6) << "年级";
cout << left << setw(6) << "院校";
cout << left << setw(6) << "系";
cout << left << setw(6) << "班级";
cout << left << setw(6) << "英语";
cout << left << setw(6) << "数学";
cout << left << setw(6) << "编程";
}
};
void menu() //输出菜单
{
printf("-----------------------------------------------------\n");
printf("---------------->>学生信息管理系统<<-----------------\n");
printf("--------------------->>主菜单<<----------------------\n");
printf("-----------------------------------------------------\n");
printf("* 1、增加学生信息 * 2、显示学生信息 *\n");
printf("-----------------------------------------------------\n");
printf("** 3、修改学生信息 * 4、查询学生信息 **\n");
printf("-----------------------------------------------------\n");
printf("** 5、删除学生信息 * 6、排序学生信息 **\n");
printf("-----------------------------------------------------\n");
printf("** 7、退出系统 * **\n");
printf("-----------------------------------------------------\n");
}
void writeFile(vector<Student> &stu) //写入学生信息
{
ofstream ofs;
ofs.open("D:\\林再\\学习\\大二\\面向对象的程序设计课程实践\\学生管理系统\\学生信息.txt", ios::out);
for (int i = n; i <= stu.size()+n; i++)
{
ofs << stu[i].name << " " << stu[i].gender << " " << stu[i].num << " "
<< stu[i].grade << " " << stu[i].college << " " << stu[i].system << " "
<< stu[i].dorm << " " << stu[i].English << stu[i].Maths << stu[i].Program << endl;
}
ofs.close();
}
void readFile(vector<Student> &stu) //读取学生信息
{
ifstream ifs; //创建流对象
ifs.open("学生信息.txt", ios::in); //打开文件
if (!ifs.is_open()) //判断文件是否打开成功
{
cout << "文件打开失败" << endl;
return;
}
for (int i = 0; i < stu.size(); i++)
{
ifs >> stu[i].name >> stu[i].gender >> stu[i].num >> stu[i].grade >> stu[i].college
>> stu[i].system >> stu[i].dorm >> stu[i].English >> stu[i].Maths >> stu[i].Program;
}
ifs.close();
}
void increase() //增加学生信息
{
cout << "----------------欢迎来到增加学生信息-----------------" << endl;
cout << "请输入待添加的学生人数:" << endl;
int x; //等待添加的学生人数
cin >> x;
int flag, i = n, j;
vector <Student> stu(x);
if (x > 0)
{
do
{
flag = 1;
while (flag != 0) //判断学号是否重复
{
flag = 0;
printf("请输入第%d位学生的学号:\n", i + 1);
cin >> stu[i].num;
for (j = 0; j < i; j++)
{
if (stu[i].num == stu[j].num)
{
cout << "该学号已经存在,请重新输入!" << endl;
flag = 1;
break;
}
}
printf("请输入第%d位学生姓名 性别 学号 年级 学院 系 班级 宿舍 英语成绩 数学成绩 编程成绩:\n", i + 1);
cin >> stu[i].name >> stu[i].gender >> stu[i].num >> stu[i].grade >> stu[i].college
>> stu[i].system >> stu[i].dorm >> stu[i].English >> stu[i].Maths >> stu[i].Program;
writeFile(stu);
i++;
}
n += x;
cout << "添加成功!" << endl;
system("pause");
} while (i < x + n);
}
}
//主函数
int main()
{
int number;
while (1)
{
menu();
printf("请输入菜单编号:");
cin >> number;
switch (number)
{
case 1:increase(); break; //增加学生信息
//case 2:display(); break; //显示当前信息
//case 3:modify(); break; //修改学生信息
//case 4:search(); break; //查询学生信息
//case 5:dele(); break; //删除学生信息
//case 6:sort(); break; //排序学生信息
//case 7:exit(0); break; //退出
default:printf("输入有误!");
}
}
return 0;
}