#include <iostream>
#include <string>
#include<stdlib.h>
#include <fstream>
#include <iomanip> //包含setw函数
#include<vector> //运用vector创建数组对象
const int N = 1000; //学生的人数
/7oid menu(); //输出菜单
/7oid writeFile(); //写入学生信息
/7oid readFile(); //读取学生信息
/7oid increase(); //增加学生信息
/7oid display(); //显示学生信息
/7oid modify(); //修改学生信息
/7oid search(); //查询学生信息
/7oid dele(); //删除学生信息
/7oid sort(); //排序学生信息
/7oid exit(); //退出
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; //系
string stuclass; //班级
string dorm; //宿舍
string English; //英语成绩
string Maths; //数学成绩
string 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==1) //判断学号是否重复
{
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;
i++;
} while (i < x + n);
writeFile(stu);
n += x;
cout << "添加成功!" << endl;
system("pause");
}
}
/7oid display(); //显示学生信息
//
/7oid modify(); //修改学生信息
/7oid search(); //查询学生信息
/7oid dele(); //删除学生信息
/7oid sort(); //排序学生信息
/7oid exit(); //退出
//主函数
int main()
{
int number;
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;
}
学生管理系统,我选择输入三个学生,输入第一个学生是正常的,再输入第二个学生时,第148行输出之后,系统直接输出第161行,我无法输入第149行,请问这是为什么
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 快乐鹦鹉 2022-12-15 15:11关注
你的一堆cin中,少了stu[i].stuclass 啊。提示输入11项,实际cin只有10项,导致按照提示就多输入了一项,这一项就被下一个编号接收了,所以149行不用再输入了
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报