「已注销」 2022-12-15 16:03 采纳率: 91.2%
浏览 31
已结题

学生管理系统,在修改学生信息这个函数,我试图用要修改的学生学号“p”与原有的stu[h].num学生学号做对比,但是失败了,请问要怎么修改

img

我在所有函数的外面定义了一个,vectorstu(N),然后想把它用在“修改学生信息”的函数中,不知道可以可以,但是编译之后有问题。

img

img

#include <iostream>
#include <string>
#include<stdlib.h>
#include <fstream>
#include <iomanip>      //包含setw函数
#include<vector>        //运用vector创建数组对象
const int N = 1000;     //学生的人数
//void menu();                        //输出菜单
//void writeFile();                            //写入学生信息
//void readFile();                             //读取学生信息
//void increase();                    //增加学生信息
//void display();                    //显示学生信息
//void modify();                    //修改学生信息
//void search();                    //查询学生信息
//void dele();                    //删除学生信息
//void sort();                    //排序学生信息
//void 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 home;                      //籍贯
        string phonenumber;                    //电话号码
        string English;                    //英语成绩
        string Maths;                        //数学成绩
        string Program;                    //编程成绩
        Student()
        {

        }
  //      Student(string name, string gender, string num, int grade, string college, string system, string stuclass, string dorm,string home, string phonenumber, 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->home= home;
  //          this->phonenumber = phonenumber;
  //          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) << home;
            cout << left << setw(20) << phonenumber;
            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) << "英语";
            cout << left << setw(6) << "数学";
            cout << left << setw(6) << "编程";
        }
};
vector<Student>stu(N);                                  //在所有函数的外面定义了
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].stuclass<<" "
            << stu[i].dorm << " " << stu[i].English << stu[i].Maths << stu[i].Program << endl;
    }
    ofs.close();
}

void readFile(vector<Student> &stu)                             //读取学生信息
{
    ifstream ifs;                                               //创建流对象
    ifs.open("D:\\王晴\\学习\\大二\\面向对象的程序设计课程实践\\学生管理系统\\学生信息.txt", ios::in);                          //打开文件
    if (!ifs.is_open())                                         //判断文件是否打开成功
    {
        cout << "文件打开失败" << endl;
        return;
    }
    char c;
    while ((c = ifs.get())!= EOF)
    {
        cout << c;
    }

    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].stuclass >> stu[i].dorm >>stu[i].home>>stu[i].phonenumber
                    >> stu[i].English >> stu[i].Maths >> stu[i].Program;
                i++;
        } while (i < x + n);
        
        writeFile(stu);
        n += x;
        cout << "添加成功!" << endl;
        system("pause");
    }

}
void display()                    //显示学生信息
{

    if (n == 0)
        printf("您好,现在暂无学生信息,请先添加学生信息!\n");
    else
    {
        printf("现在共有%d名学生\n", n);
        vector<Student>stu(n);
        readFile(stu);
    }
}
void modify()                    //修改学生信息
{
    string p;                   //要修改的学生学号
    int h;
    cout << "请输入需要修改的学生学号:" << endl;
    cin >> p;
    ofstream ofs;
    ofs.open("D:\\王晴\\学习\\大二\\面向对象的程序设计课程实践\\学生管理系统\\学生信息.txt", ios::out);
    for (h = 0; h < n; h++)
    {
        if (p == stu[h].num)
        {
            cout << "请输入修改后的信息:" << endl;
            cin >> stu[h].name >> stu[h].gender >> stu[h].num >> stu[h].grade >> stu[h].college
                >> stu[h].system >> stu[h].stuclass >> stu[h].dorm >> stu[h].home >> stu[h].phonenumber
                >> stu[h].English >> stu[h].Maths >> stu[h].Program;
       
        ofs << stu[h].name << " " << stu[h].gender << " " << stu[h].num << " "
            << stu[h].grade << " " << stu[h].college << " " << stu[h].system << " " << stu[h].stuclass << " "
            << stu[h].dorm << " " << stu[h].English << stu[h].Maths << stu[h].Program << endl;
        ofs.close();
        }
        break;
    }
}
//void search();                    //查询学生信息
//void dele();                    //删除学生信息
//void sort();                    //排序学生信息
//void exit();                    //退出

//主函数
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("输入有误!");
        }
    }

}



  • 写回答

1条回答 默认 最新

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

    啥叫失败了?

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

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 修改了问题 12月15日
  • 创建了问题 12月15日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程