「已注销」 2022-12-15 14:42 采纳率: 91.2%
浏览 21
已结题

学生管理系统,我选择输入三个学生,输入第一个学生是正常的,再输入第二个学生时,第148行输出之后,系统直接输出第161行,我无法输入第149行,请问这是为什么

img

img


#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;
}
  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2022-12-15 15:11
    关注

    你的一堆cin中,少了stu[i].stuclass 啊。提示输入11项,实际cin只有10项,导致按照提示就多输入了一项,这一项就被下一个编号接收了,所以149行不用再输入了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月23日
  • 已采纳回答 12月15日
  • 创建了问题 12月15日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分