鱼C论坛

 找回密码
 立即注册
查看: 1142|回复: 6

[已解决]函数运行不完整

[复制链接]
发表于 2021-9-20 10:27:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include<iostream>
  2. #include<fstream>
  3. #include<cstring>
  4. #include <stdlib.h>
  5. #include <conio.h>
  6. #include<vector>
  7. using namespace std;
  8. int n;

  9. class Student
  10. {public:
  11.         char sname[20];
  12.         char snum[20];
  13.         char sclass[20];
  14.         void input();
  15. };
  16. /*--------------------------学生登陆-----------------------------*/
  17. void Student::input()
  18. {
  19.         cout<<"请输入您的姓名:"; cin>>sname;
  20.         cout<<"请输入您的学号:"; cin>>snum;
  21.         cout<<"请输入您的班级:"; cin>>sclass;
  22.         cout<<"登陆成功!输入任意字符继续";  
  23.         getchar();
  24.                 }
  25. /*--------------------------学生,教师类模板-----------------------------*/
  26. template<typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7>
  27. class Lesson
  28. {
  29.         public:
  30.         Lesson(){};
  31.         ~Lesson(){};
  32.         T1 tname[100];//教师姓名
  33.         T2 tlesson[100];//班级名称
  34.         T3 grade;//评教分数
  35.         T4 tnumber[100];//教师编号
  36.         T5 tele[100]; //电话
  37.         T6 snumber[50];//班级编号
  38.         T7 syard[100];//所在院系
  39.         void display();
  40.         void input();
  41.         void show();
  42. };

  43. /*--------------------------输出函数-----------------------------*/
  44. template<typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7>
  45. void Lesson<T1,T2,T3,T4,T5,T6,T7>::show()
  46. {
  47.         cout<<"教师姓名:"<<tname<<endl;
  48.         cout<<"教师编号:"<<tnumber<<endl;
  49.         cout<<"电话:"<<tele<<endl;
  50.         cout<<"班级名称:"<<tlesson<<endl;
  51.         cout<<"班级编号 :"<<snumber<<endl;
  52.         cout<<"所在院系 :"<<syard<<endl;
  53.         cout<<"评教分数:"<<grade<<endl;
  54. }
  55. /*--------------------------评学类-----------------------------*/
  56. class System
  57. {public:
  58.         System(){};
  59.         ~System(){};
  60.         void add();
  61.         int lname(char *x);
  62.         void find();
  63.         void change();
  64.         void dele();
  65.         void menu();
  66.         void display();//显示
  67.         void save();
  68.         void read();
  69. };
  70.         vector<Lesson<char,char,char,char,char,char,char> >v;
  71. /*--------------------------输入函数-----------------------------*/
  72. template<typename T1,typename T2,typename T3,typename T4,typename T5,typename T6,typename T7>
  73. void Lesson<T1,T2,T3,T4,T5,T6,T7>::input()
  74. {
  75.         cout<<"请输入教师姓名:";                cin>>tname;
  76.         cout<<"请输入教师编号:";                cin>>tnumber;
  77.         cout<<"请输入电话:";                        cin>>tele;  
  78.         cout<<"请输入班级名称:";                 cin>>tlesson;
  79.         cout<<"请输入班级编号 :";      cin>>snumber;
  80.         cout<<"请输入所在院系 :";      cin>>syard;
  81.         cout<<"请输入打分(0-100):";        cin>>grade;
  82.         try{                                                                                                                //异常处理
  83.                 if(grade<0||grade>100)        throw 0;
  84.                 else
  85.                 cout<<endl;}
  86.         catch(int)
  87.         {cout<<"输入数据错误,请重新输入";}
  88.         cout<<endl;
  89. }
  90. /*--------------------------读取函数-----------------------------*/
  91. void System::read()
  92. {
  93.     Lesson<char,char,char,char,char,char,char> ch;
  94.     ifstream infile("sys.txt",ios::binary);
  95.     if(!infile){
  96.         cout<<"文件打不开"<<endl;
  97.     }
  98.     infile.read((char*)&ch,sizeof(ch));
  99.     while(!infile.eof())
  100.     {
  101.     v.push_back(ch);
  102.     infile.read((char*)&ch,sizeof(ch));

  103.                cout<<"教师姓名:"<<ch.tname<<endl;
  104.                cout<<"教师编号:"<<ch.tnumber<<endl;
  105.                 cout<<"电话:"<<ch.tele<<endl;
  106.         cout<<"班级名称:"<<ch.tlesson<<endl;
  107.         cout<<"班级编号 :"<<ch.snumber<<endl;
  108.                 cout<<"所在院系 :"<<ch.syard<<endl;
  109.         cout<<"评教分数:"<<ch.grade<<endl;
  110.         cout<<endl;

  111.     }
  112.     infile.close();
  113.     cout<<"读取成功"<<endl;
  114.         getchar();
  115. }
  116. /*--------------------------保存函数-----------------------------*/
  117. void System::save()
  118.         {
  119.                
  120.                
  121.       ofstream outfile("sys.txt",ios::binary);
  122.           Lesson<char,char,char,char,char,char,char>t;
  123.           vector<Lesson<char,char,char,char,char,char,char> >::iterator ap;
  124.           if(!outfile)
  125.                   cout<<"文件不能被打开"<<endl;
  126.     else
  127.     {
  128.             for(ap=v.begin();ap!=v.end();ap++)
  129.         {
  130.                 t=*ap;
  131.              outfile.write((char*)&t,sizeof(t));
  132.              cout<<"保存成功"<<endl;
  133.         }
  134.         outfile.close();
  135.         getchar();
  136.     }

  137. }
  138. void System::display()
  139. {
  140.         for(int i=0;i<n;i++)
  141.         {v[i].show();}
  142.     cout<<"输入任意字符继续";        getchar();
  143. }
  144. /*--------------------------主菜单-----------------------------*/
  145. void System::menu()
  146. {
  147.         cout<<"--------------*评 教 管 理 系 统*-------------"<<endl;
  148.     cout<<"--------------*$1. 学生登陆界面*--------------"<<endl;
  149.     cout<<"--------------*$2. 增加评教信息*--------------"<<endl;
  150.     cout<<"--------------*$3. 更改评教信息*--------------"<<endl;
  151.     cout<<"--------------*$4. 查找评教信息*--------------"<<endl;
  152.     cout<<"--------------*$5. 显示评教信息*--------------"<<endl;
  153.     cout<<"--------------*$6. 删除评教信息*--------------"<<endl;
  154.     cout<<"--------------*$7. 保存相关数据*--------------"<<endl;
  155.     cout<<"--------------*$8. 读取相关数据*--------------"<<endl;
  156.     cout<<"--------------*$9. 退出评教系统*--------------"<<endl;
  157. }
  158. /*--------------------------添加数据-----------------------------*/
  159. void System::add()
  160. {
  161.         string h="y";
  162.         do{
  163.         Lesson<char,char,char,char,char,char,char>l;
  164.         l.input();
  165.         n++;
  166.         v.push_back(l);
  167.         cout<<"是否继续添加(y/n)?";
  168.         cin>>h;
  169.         }while(h=="y");
  170.         cout<<"添加成功!输入任意字符继续";
  171.         getchar();
  172. }
  173. /*--------------------------查找课程-----------------------------*/
  174. int System::lname(char *x)
  175. {
  176.         int i;
  177.     for(i=0;i<n;i++)
  178.     {
  179.         if(strcmp(v[i].tlesson,x)==0)
  180.         {  return i;}
  181.     }
  182.     return -1;
  183. }

  184. void System::find()
  185. {
  186.         char x[20];
  187.         int a;
  188.         cout<<"请输入要查找的教师名称:";        cin>>x;
  189.         a=lname(x);
  190.         if(a!=-1)
  191.         v[a].show();
  192.         else
  193.         cout<<"没有找到相关教师信息"<<endl;
  194.         cout<<"输入任意字符继续";
  195.         getchar();
  196. }
  197. /*--------------------------更改数据-----------------------------*/
  198. void System::change()
  199. {
  200.         char b[20];
  201.         int k;
  202.         cout<<"请输入需要修改的教师名称:";        cin>>b;
  203.         k=lname(b);
  204.         if(k!=-1){
  205.         cout<<"已找到,请输入新的信息:"<<endl;
  206.         v[k].input();}
  207.         cout<<"输入任意字符继续:";
  208.     getchar();
  209. }
  210. /*--------------------------删除数据-----------------------------*/
  211. void System::dele()
  212. {
  213.         char c[20];
  214.         int d;
  215.         cout<<"请输入要删除的教师名称:";        cin>>c;
  216.         d=lname(c);
  217.         if(d!=-1)
  218.         {for(;d<n-1;d++)
  219.         {strcpy(v[d].tname,v[d+1].tname);
  220.     strcpy(v[d].tlesson,v[d+1].tlesson);
  221.     v[d].grade==v[d+1].grade;
  222.         }
  223.         n--;
  224.         }
  225.         else
  226.     cout<<"输入错误,找不到该教师信息"<<endl;
  227.     cout<<"输入任意字符继续";
  228.     getchar();
  229. }
  230. /*--------------------------主函数-----------------------------*/
  231. int main()
  232. {       
  233.         Student x;
  234.         System y;
  235.         int a;
  236.         string ss="y";
  237.         do{
  238.                 system("cls");
  239.                 cout<<"欢迎进入评教管理系统"<<endl;
  240.             y.menu() ;
  241.                 cout<<"请输入相应阿拉伯数字:";
  242.             cin>>a;
  243.             switch(a)
  244.             {
  245.                     case 1:x.input();break;
  246.                     case 2:y.add();break;
  247.                     case 3:y.change();break;
  248.                     case 4:y.find();break;
  249.                     case 5:y.display();break;
  250.                     case 6:y.dele();break;
  251.                     case 7:y.save();break;
  252.                         case 8:y.read();break;
  253.                     case 9:ss="n";break;
  254.                 }
  255.                 }while(ss=="y");
  256.         return 0;
  257. }
复制代码



输入4查找,并没有效果
实在不明白是咋回事
最佳答案
2021-9-20 15:50:49
woshijunjun 发表于 2021-9-20 15:16
现在删除功能又出现问题了
呜呜

你都不调试程序的吗?
基础很重要的,先打基础吧

  1. #include <cstring>
  2. #include <fstream>
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include <vector>

  6. using namespace std;

  7. int n;

  8. class Student {
  9. public:
  10.     char sname[20];
  11.     char snum[20];
  12.     char sclass[20];
  13.     void input();
  14. };

  15. /*--------------------------学生登陆-----------------------------*/
  16. void Student::input() {
  17.     cout << "请输入您的姓名:"; cin >> this->sname;
  18.     cout << "请输入您的学号:"; cin >> this->snum;
  19.     cout << "请输入您的班级:"; cin >> this->sclass;
  20.     cout << "登陆成功!输入任意字符继续"; getchar();
  21. }

  22. /*--------------------------学生,教师类模板-----------------------------*/
  23. template <typename T> class Lesson {
  24. public:
  25.     Lesson(){};
  26.     ~Lesson(){};
  27.     T tname[100];   //教师姓名
  28.     T tlesson[100]; //班级名称
  29.     T grade;        //评教分数
  30.     T tnumber[100]; //教师编号
  31.     T tele[100];    //电话
  32.     T snumber[50];  //班级编号
  33.     T syard[100];   //所在院系
  34.     void display();
  35.     void input();
  36.     void show();
  37. };

  38. /*--------------------------输出函数-----------------------------*/
  39. template <typename T>
  40. void Lesson<T>::show() {
  41.     cout << "教师姓名:" << tname << endl;
  42.     cout << "教师编号:" << tnumber << endl;
  43.     cout << "电话:" << tele << endl;
  44.     cout << "班级名称:" << tlesson << endl;
  45.     cout << "班级编号 :" << snumber << endl;
  46.     cout << "所在院系 :" << syard << endl;
  47.     cout << "评教分数:" << grade << endl;
  48. }

  49. /*--------------------------评学类-----------------------------*/
  50. class System {
  51. public:
  52.     System(){};
  53.     ~System(){};
  54.     void add();
  55.     int lname(char *x);
  56.     void find();
  57.     void change();
  58.     void dele();
  59.     void menu();
  60.     void display(); //显示
  61.     void save();
  62.     void read();
  63. };

  64. vector<Lesson<char>> v;

  65. /*--------------------------输入函数-----------------------------*/
  66. template <typename T>
  67. void Lesson<T>::input() {
  68.     cout << "请输入教师姓名:"; cin >> tname;
  69.     cout << "请输入教师编号:"; cin >> tnumber;
  70.     cout << "请输入电话:"; cin >> tele;
  71.     cout << "请输入班级名称:"; cin >> tlesson;
  72.     cout << "请输入班级编号 :"; cin >> snumber;
  73.     cout << "请输入所在院系 :"; cin >> syard;
  74.     cout << "请输入打分(0-100):"; cin >> grade;
  75.     try {
  76.         if(grade < 0 || grade > 100) throw 0;
  77.         else cout << endl;
  78.     } catch(int) {
  79.         cout << "输入数据错误,请重新输入";
  80.     }
  81.     cout << endl;
  82. }

  83. /*--------------------------读取函数-----------------------------*/
  84. void System::read() {
  85.     Lesson<char> ch;
  86.     ifstream infile("sys.txt", ios::binary);
  87.     if(!infile) {
  88.         cout << "文件打不开" << endl;
  89.     }
  90.     infile.read((char *)&ch, sizeof(ch));
  91.     while(!infile.eof()) {
  92.         v.push_back(ch);
  93.         infile.read((char *)&ch, sizeof(ch));
  94.         cout << "教师姓名:" << ch.tname << endl;
  95.         cout << "教师编号:" << ch.tnumber << endl;
  96.         cout << "电话:" << ch.tele << endl;
  97.         cout << "班级名称:" << ch.tlesson << endl;
  98.         cout << "班级编号 :" << ch.snumber << endl;
  99.         cout << "所在院系 :" << ch.syard << endl;
  100.         cout << "评教分数:" << ch.grade << endl;
  101.         cout << endl;
  102.     }
  103.     infile.close();
  104.     cout << "读取成功" << endl;
  105.     getchar();
  106. }

  107. /*--------------------------保存函数-----------------------------*/
  108. void System::save() {
  109.     ofstream outfile("sys.txt", ios::binary);
  110.     Lesson<char> t;
  111.     vector<Lesson<char>>::iterator ap;
  112.     if(!outfile) cout << "文件不能被打开" << endl;
  113.     else {
  114.         for(ap = v.begin(); ap != v.end(); ap++) {
  115.             t = *ap;
  116.             outfile.write((char *)&t, sizeof(t));
  117.             cout << "保存成功" << endl;
  118.         }
  119.         outfile.close();
  120.         getchar();
  121.     }
  122. }

  123. void System::display() {
  124.     for(int i = 0; i < n; i++) {
  125.         v[i].show();
  126.     }
  127.     cout << "输入任意字符继续";
  128.     getchar(); getchar();
  129. }

  130. /*--------------------------主菜单-----------------------------*/
  131. void System::menu() {
  132.     cout << "--------------*评 教 管 理 系 统*-------------" << endl;
  133.     cout << "--------------*$1. 学生登陆界面*--------------" << endl;
  134.     cout << "--------------*$2. 增加评教信息*--------------" << endl;
  135.     cout << "--------------*$3. 更改评教信息*--------------" << endl;
  136.     cout << "--------------*$4. 查找评教信息*--------------" << endl;
  137.     cout << "--------------*$5. 显示评教信息*--------------" << endl;
  138.     cout << "--------------*$6. 删除评教信息*--------------" << endl;
  139.     cout << "--------------*$7. 保存相关数据*--------------" << endl;
  140.     cout << "--------------*$8. 读取相关数据*--------------" << endl;
  141.     cout << "--------------*$9. 退出评教系统*--------------" << endl;
  142. }

  143. /*--------------------------添加数据-----------------------------*/
  144. void System::add() {
  145.     string h = "y";
  146.     do {
  147.         Lesson<char> l;
  148.         l.input();
  149.         n++;
  150.         v.push_back(l);
  151.         cout << "是否继续添加(y/n)?";
  152.         cin >> h;
  153.     } while(h == "y");
  154.     cout << "添加成功!输入任意字符继续";
  155.     getchar();
  156. }

  157. /*--------------------------查找课程-----------------------------*/
  158. int System::lname(char *x) {
  159.     int i;
  160.     for(i = 0; i < n; i++) {
  161.         if(strcmp(v[i].tlesson, x) == 0) {
  162.             return i;
  163.         }
  164.     }
  165.     return -1;
  166. }

  167. void System::find() {
  168.     char x[20];
  169.     int a = -1;
  170.     cout << "请输入要查找的教师名称:";
  171.     cin >> x;
  172.     for(int i = 0; i < n; ++i) {
  173.         if(strcmp(v[i].tname, x) == 0) {
  174.             a = i; break;
  175.         }
  176.     }
  177.     if(a != -1) v[a].show();
  178.     else cout << "没有找到相关教师信息" << endl;
  179.     cout << "输入任意字符继续";
  180.     getchar(); getchar();
  181. }

  182. /*--------------------------更改数据-----------------------------*/
  183. void System::change() {
  184.     char b[20];
  185.     int k;
  186.     cout << "请输入需要修改的教师名称:";
  187.     cin >> b;
  188.     k = lname(b);
  189.     if(k != -1) {
  190.         cout << "已找到,请输入新的信息:" << endl;
  191.         v[k].input();
  192.     }
  193.     cout << "输入任意字符继续:";
  194.     getchar();
  195. }

  196. /*--------------------------删除数据-----------------------------*/
  197. void System::dele() {
  198.     char c[20];
  199.     int d = -1;
  200.     cout << "请输入要删除的教师名称:";
  201.     cin >> c;
  202.     for(int i = 0; i < n; ++i) {
  203.         if(strcmp(v[i].tname, c) == 0) {
  204.             d = i; break;
  205.         }
  206.     }
  207.     if(d != -1) {
  208.         for(; d < n - 1; d++) {
  209.             strcpy(v[d].tname, v[d + 1].tname);
  210.             strcpy(v[d].tlesson, v[d + 1].tlesson);
  211.             v[d].grade = v[d + 1].grade;
  212.         }
  213.         n--;
  214.     } else cout << "输入错误,找不到该教师信息" << endl;
  215.     cout << "输入任意字符继续";
  216.     getchar(); getchar();
  217. }

  218. /*--------------------------主函数-----------------------------*/
  219. int main() {
  220.     Student x;
  221.     System y;
  222.     int a;
  223.     string ss = "y";
  224.     do {
  225.         system("clear");
  226.         cout << "欢迎进入评教管理系统" << endl;
  227.         y.menu();
  228.         cout << "请输入相应阿拉伯数字:";
  229.         cin >> a;
  230.         switch(a) {
  231.         case 1: x.input(); break;
  232.         case 2: y.add(); break;
  233.         case 3: y.change(); break;
  234.         case 4: y.find(); break;
  235.         case 5: y.display(); break;
  236.         case 6: y.dele(); break;
  237.         case 7: y.save(); break;
  238.         case 8: y.read(); break;
  239.         case 9: ss = "n"; break;
  240.         }
  241.     } while(ss == "y");
  242.     return 0;
  243. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-20 11:46:48 | 显示全部楼层
我试了一下
无标题.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-20 12:41:33 | 显示全部楼层
稍微修改了一点
  1. #include <cstring>
  2. #include <fstream>
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include <vector>

  6. using namespace std;

  7. int n;

  8. class Student {
  9. public:
  10.     char sname[20];
  11.     char snum[20];
  12.     char sclass[20];
  13.     void input();
  14. };

  15. /*--------------------------学生登陆-----------------------------*/
  16. void Student::input() {
  17.     cout << "请输入您的姓名:"; cin >> this->sname;
  18.     cout << "请输入您的学号:"; cin >> this->snum;
  19.     cout << "请输入您的班级:"; cin >> this->sclass;
  20.     cout << "登陆成功!输入任意字符继续"; getchar();
  21. }

  22. /*--------------------------学生,教师类模板-----------------------------*/
  23. template <typename T> class Lesson {
  24. public:
  25.     Lesson(){};
  26.     ~Lesson(){};
  27.     T tname[100];   //教师姓名
  28.     T tlesson[100]; //班级名称
  29.     T grade;        //评教分数
  30.     T tnumber[100]; //教师编号
  31.     T tele[100];    //电话
  32.     T snumber[50];  //班级编号
  33.     T syard[100];   //所在院系
  34.     void display();
  35.     void input();
  36.     void show();
  37. };

  38. /*--------------------------输出函数-----------------------------*/
  39. template <typename T>
  40. void Lesson<T>::show() {
  41.     cout << "教师姓名:" << tname << endl;
  42.     cout << "教师编号:" << tnumber << endl;
  43.     cout << "电话:" << tele << endl;
  44.     cout << "班级名称:" << tlesson << endl;
  45.     cout << "班级编号 :" << snumber << endl;
  46.     cout << "所在院系 :" << syard << endl;
  47.     cout << "评教分数:" << grade << endl;
  48. }

  49. /*--------------------------评学类-----------------------------*/
  50. class System {
  51. public:
  52.     System(){};
  53.     ~System(){};
  54.     void add();
  55.     int lname(char *x);
  56.     void find();
  57.     void change();
  58.     void dele();
  59.     void menu();
  60.     void display(); //显示
  61.     void save();
  62.     void read();
  63. };

  64. vector<Lesson<char>> v;

  65. /*--------------------------输入函数-----------------------------*/
  66. template <typename T>
  67. void Lesson<T>::input() {
  68.     cout << "请输入教师姓名:"; cin >> tname;
  69.     cout << "请输入教师编号:"; cin >> tnumber;
  70.     cout << "请输入电话:"; cin >> tele;
  71.     cout << "请输入班级名称:"; cin >> tlesson;
  72.     cout << "请输入班级编号 :"; cin >> snumber;
  73.     cout << "请输入所在院系 :"; cin >> syard;
  74.     cout << "请输入打分(0-100):"; cin >> grade;
  75.     try {
  76.         if(grade < 0 || grade > 100) throw 0;
  77.         else cout << endl;
  78.     } catch(int) {
  79.         cout << "输入数据错误,请重新输入";
  80.     }
  81.     cout << endl;
  82. }

  83. /*--------------------------读取函数-----------------------------*/
  84. void System::read() {
  85.     Lesson<char> ch;
  86.     ifstream infile("sys.txt", ios::binary);
  87.     if(!infile) {
  88.         cout << "文件打不开" << endl;
  89.     }
  90.     infile.read((char *)&ch, sizeof(ch));
  91.     while(!infile.eof()) {
  92.         v.push_back(ch);
  93.         infile.read((char *)&ch, sizeof(ch));
  94.         cout << "教师姓名:" << ch.tname << endl;
  95.         cout << "教师编号:" << ch.tnumber << endl;
  96.         cout << "电话:" << ch.tele << endl;
  97.         cout << "班级名称:" << ch.tlesson << endl;
  98.         cout << "班级编号 :" << ch.snumber << endl;
  99.         cout << "所在院系 :" << ch.syard << endl;
  100.         cout << "评教分数:" << ch.grade << endl;
  101.         cout << endl;
  102.     }
  103.     infile.close();
  104.     cout << "读取成功" << endl;
  105.     getchar();
  106. }

  107. /*--------------------------保存函数-----------------------------*/
  108. void System::save() {
  109.     ofstream outfile("sys.txt", ios::binary);
  110.     Lesson<char> t;
  111.     vector<Lesson<char>>::iterator ap;
  112.     if(!outfile) cout << "文件不能被打开" << endl;
  113.     else {
  114.         for(ap = v.begin(); ap != v.end(); ap++) {
  115.             t = *ap;
  116.             outfile.write((char *)&t, sizeof(t));
  117.             cout << "保存成功" << endl;
  118.         }
  119.         outfile.close();
  120.         getchar();
  121.     }
  122. }

  123. void System::display() {
  124.     for(int i = 0; i < n; i++) {
  125.         v[i].show();
  126.     }
  127.     cout << "输入任意字符继续";
  128.     getchar();
  129. }

  130. /*--------------------------主菜单-----------------------------*/
  131. void System::menu() {
  132.     cout << "--------------*评 教 管 理 系 统*-------------" << endl;
  133.     cout << "--------------*$1. 学生登陆界面*--------------" << endl;
  134.     cout << "--------------*$2. 增加评教信息*--------------" << endl;
  135.     cout << "--------------*$3. 更改评教信息*--------------" << endl;
  136.     cout << "--------------*$4. 查找评教信息*--------------" << endl;
  137.     cout << "--------------*$5. 显示评教信息*--------------" << endl;
  138.     cout << "--------------*$6. 删除评教信息*--------------" << endl;
  139.     cout << "--------------*$7. 保存相关数据*--------------" << endl;
  140.     cout << "--------------*$8. 读取相关数据*--------------" << endl;
  141.     cout << "--------------*$9. 退出评教系统*--------------" << endl;
  142. }

  143. /*--------------------------添加数据-----------------------------*/
  144. void System::add() {
  145.     string h = "y";
  146.     do {
  147.         Lesson<char> l;
  148.         l.input();
  149.         n++;
  150.         v.push_back(l);
  151.         cout << "是否继续添加(y/n)?";
  152.         cin >> h;
  153.     } while(h == "y");
  154.     cout << "添加成功!输入任意字符继续";
  155.     getchar();
  156. }

  157. /*--------------------------查找课程-----------------------------*/
  158. int System::lname(char *x) {
  159.     int i;
  160.     for(i = 0; i < n; i++) {
  161.         if(strcmp(v[i].tlesson, x) == 0) {
  162.             return i;
  163.         }
  164.     }
  165.     return -1;
  166. }

  167. void System::find() {
  168.     char x[20];
  169.     int a = -1;
  170.     cout << "请输入要查找的教师名称:";
  171.     cin >> x;
  172.     for(int i = 0; i < n; ++i) {
  173.         if(strcmp(v[i].tname, x) == 0) {
  174.             a = i; break;
  175.         }
  176.     }
  177.     if(a != -1) v[a].show();
  178.     else cout << "没有找到相关教师信息" << endl;
  179.     cout << "输入任意字符继续";
  180.     getchar(); getchar();
  181. }

  182. /*--------------------------更改数据-----------------------------*/
  183. void System::change() {
  184.     char b[20];
  185.     int k;
  186.     cout << "请输入需要修改的教师名称:";
  187.     cin >> b;
  188.     k = lname(b);
  189.     if(k != -1) {
  190.         cout << "已找到,请输入新的信息:" << endl;
  191.         v[k].input();
  192.     }
  193.     cout << "输入任意字符继续:";
  194.     getchar();
  195. }

  196. /*--------------------------删除数据-----------------------------*/
  197. void System::dele() {
  198.     char c[20];
  199.     int d;
  200.     cout << "请输入要删除的教师名称:";
  201.     cin >> c;
  202.     d = lname(c);
  203.     if(d != -1) {
  204.         for(; d < n - 1; d++) {
  205.             strcpy(v[d].tname, v[d + 1].tname);
  206.             strcpy(v[d].tlesson, v[d + 1].tlesson);
  207.             v[d].grade = v[d + 1].grade;
  208.         }
  209.         n--;
  210.     } else cout << "输入错误,找不到该教师信息" << endl;
  211.     cout << "输入任意字符继续";
  212.     getchar();
  213. }

  214. /*--------------------------主函数-----------------------------*/
  215. int main() {
  216.     Student x;
  217.     System y;
  218.     int a;
  219.     string ss = "y";
  220.     do {
  221.         system("clear");
  222.         cout << "欢迎进入评教管理系统" << endl;
  223.         y.menu();
  224.         cout << "请输入相应阿拉伯数字:";
  225.         cin >> a;
  226.         switch(a) {
  227.         case 1: x.input(); break;
  228.         case 2: y.add(); break;
  229.         case 3: y.change(); break;
  230.         case 4: y.find(); break;
  231.         case 5: y.display(); break;
  232.         case 6: y.dele(); break;
  233.         case 7: y.save(); break;
  234.         case 8: y.read(); break;
  235.         case 9: ss = "n"; break;
  236.         }
  237.     } while(ss == "y");
  238.     return 0;
  239. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-20 14:58:53 | 显示全部楼层

有错误啊C:\Users\22482\Desktop\新建文件夹\新建文件夹
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-20 15:16:53 | 显示全部楼层

现在删除功能又出现问题了
呜呜
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-20 15:50:49 | 显示全部楼层    本楼为最佳答案   
woshijunjun 发表于 2021-9-20 15:16
现在删除功能又出现问题了
呜呜

你都不调试程序的吗?
基础很重要的,先打基础吧

  1. #include <cstring>
  2. #include <fstream>
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include <vector>

  6. using namespace std;

  7. int n;

  8. class Student {
  9. public:
  10.     char sname[20];
  11.     char snum[20];
  12.     char sclass[20];
  13.     void input();
  14. };

  15. /*--------------------------学生登陆-----------------------------*/
  16. void Student::input() {
  17.     cout << "请输入您的姓名:"; cin >> this->sname;
  18.     cout << "请输入您的学号:"; cin >> this->snum;
  19.     cout << "请输入您的班级:"; cin >> this->sclass;
  20.     cout << "登陆成功!输入任意字符继续"; getchar();
  21. }

  22. /*--------------------------学生,教师类模板-----------------------------*/
  23. template <typename T> class Lesson {
  24. public:
  25.     Lesson(){};
  26.     ~Lesson(){};
  27.     T tname[100];   //教师姓名
  28.     T tlesson[100]; //班级名称
  29.     T grade;        //评教分数
  30.     T tnumber[100]; //教师编号
  31.     T tele[100];    //电话
  32.     T snumber[50];  //班级编号
  33.     T syard[100];   //所在院系
  34.     void display();
  35.     void input();
  36.     void show();
  37. };

  38. /*--------------------------输出函数-----------------------------*/
  39. template <typename T>
  40. void Lesson<T>::show() {
  41.     cout << "教师姓名:" << tname << endl;
  42.     cout << "教师编号:" << tnumber << endl;
  43.     cout << "电话:" << tele << endl;
  44.     cout << "班级名称:" << tlesson << endl;
  45.     cout << "班级编号 :" << snumber << endl;
  46.     cout << "所在院系 :" << syard << endl;
  47.     cout << "评教分数:" << grade << endl;
  48. }

  49. /*--------------------------评学类-----------------------------*/
  50. class System {
  51. public:
  52.     System(){};
  53.     ~System(){};
  54.     void add();
  55.     int lname(char *x);
  56.     void find();
  57.     void change();
  58.     void dele();
  59.     void menu();
  60.     void display(); //显示
  61.     void save();
  62.     void read();
  63. };

  64. vector<Lesson<char>> v;

  65. /*--------------------------输入函数-----------------------------*/
  66. template <typename T>
  67. void Lesson<T>::input() {
  68.     cout << "请输入教师姓名:"; cin >> tname;
  69.     cout << "请输入教师编号:"; cin >> tnumber;
  70.     cout << "请输入电话:"; cin >> tele;
  71.     cout << "请输入班级名称:"; cin >> tlesson;
  72.     cout << "请输入班级编号 :"; cin >> snumber;
  73.     cout << "请输入所在院系 :"; cin >> syard;
  74.     cout << "请输入打分(0-100):"; cin >> grade;
  75.     try {
  76.         if(grade < 0 || grade > 100) throw 0;
  77.         else cout << endl;
  78.     } catch(int) {
  79.         cout << "输入数据错误,请重新输入";
  80.     }
  81.     cout << endl;
  82. }

  83. /*--------------------------读取函数-----------------------------*/
  84. void System::read() {
  85.     Lesson<char> ch;
  86.     ifstream infile("sys.txt", ios::binary);
  87.     if(!infile) {
  88.         cout << "文件打不开" << endl;
  89.     }
  90.     infile.read((char *)&ch, sizeof(ch));
  91.     while(!infile.eof()) {
  92.         v.push_back(ch);
  93.         infile.read((char *)&ch, sizeof(ch));
  94.         cout << "教师姓名:" << ch.tname << endl;
  95.         cout << "教师编号:" << ch.tnumber << endl;
  96.         cout << "电话:" << ch.tele << endl;
  97.         cout << "班级名称:" << ch.tlesson << endl;
  98.         cout << "班级编号 :" << ch.snumber << endl;
  99.         cout << "所在院系 :" << ch.syard << endl;
  100.         cout << "评教分数:" << ch.grade << endl;
  101.         cout << endl;
  102.     }
  103.     infile.close();
  104.     cout << "读取成功" << endl;
  105.     getchar();
  106. }

  107. /*--------------------------保存函数-----------------------------*/
  108. void System::save() {
  109.     ofstream outfile("sys.txt", ios::binary);
  110.     Lesson<char> t;
  111.     vector<Lesson<char>>::iterator ap;
  112.     if(!outfile) cout << "文件不能被打开" << endl;
  113.     else {
  114.         for(ap = v.begin(); ap != v.end(); ap++) {
  115.             t = *ap;
  116.             outfile.write((char *)&t, sizeof(t));
  117.             cout << "保存成功" << endl;
  118.         }
  119.         outfile.close();
  120.         getchar();
  121.     }
  122. }

  123. void System::display() {
  124.     for(int i = 0; i < n; i++) {
  125.         v[i].show();
  126.     }
  127.     cout << "输入任意字符继续";
  128.     getchar(); getchar();
  129. }

  130. /*--------------------------主菜单-----------------------------*/
  131. void System::menu() {
  132.     cout << "--------------*评 教 管 理 系 统*-------------" << endl;
  133.     cout << "--------------*$1. 学生登陆界面*--------------" << endl;
  134.     cout << "--------------*$2. 增加评教信息*--------------" << endl;
  135.     cout << "--------------*$3. 更改评教信息*--------------" << endl;
  136.     cout << "--------------*$4. 查找评教信息*--------------" << endl;
  137.     cout << "--------------*$5. 显示评教信息*--------------" << endl;
  138.     cout << "--------------*$6. 删除评教信息*--------------" << endl;
  139.     cout << "--------------*$7. 保存相关数据*--------------" << endl;
  140.     cout << "--------------*$8. 读取相关数据*--------------" << endl;
  141.     cout << "--------------*$9. 退出评教系统*--------------" << endl;
  142. }

  143. /*--------------------------添加数据-----------------------------*/
  144. void System::add() {
  145.     string h = "y";
  146.     do {
  147.         Lesson<char> l;
  148.         l.input();
  149.         n++;
  150.         v.push_back(l);
  151.         cout << "是否继续添加(y/n)?";
  152.         cin >> h;
  153.     } while(h == "y");
  154.     cout << "添加成功!输入任意字符继续";
  155.     getchar();
  156. }

  157. /*--------------------------查找课程-----------------------------*/
  158. int System::lname(char *x) {
  159.     int i;
  160.     for(i = 0; i < n; i++) {
  161.         if(strcmp(v[i].tlesson, x) == 0) {
  162.             return i;
  163.         }
  164.     }
  165.     return -1;
  166. }

  167. void System::find() {
  168.     char x[20];
  169.     int a = -1;
  170.     cout << "请输入要查找的教师名称:";
  171.     cin >> x;
  172.     for(int i = 0; i < n; ++i) {
  173.         if(strcmp(v[i].tname, x) == 0) {
  174.             a = i; break;
  175.         }
  176.     }
  177.     if(a != -1) v[a].show();
  178.     else cout << "没有找到相关教师信息" << endl;
  179.     cout << "输入任意字符继续";
  180.     getchar(); getchar();
  181. }

  182. /*--------------------------更改数据-----------------------------*/
  183. void System::change() {
  184.     char b[20];
  185.     int k;
  186.     cout << "请输入需要修改的教师名称:";
  187.     cin >> b;
  188.     k = lname(b);
  189.     if(k != -1) {
  190.         cout << "已找到,请输入新的信息:" << endl;
  191.         v[k].input();
  192.     }
  193.     cout << "输入任意字符继续:";
  194.     getchar();
  195. }

  196. /*--------------------------删除数据-----------------------------*/
  197. void System::dele() {
  198.     char c[20];
  199.     int d = -1;
  200.     cout << "请输入要删除的教师名称:";
  201.     cin >> c;
  202.     for(int i = 0; i < n; ++i) {
  203.         if(strcmp(v[i].tname, c) == 0) {
  204.             d = i; break;
  205.         }
  206.     }
  207.     if(d != -1) {
  208.         for(; d < n - 1; d++) {
  209.             strcpy(v[d].tname, v[d + 1].tname);
  210.             strcpy(v[d].tlesson, v[d + 1].tlesson);
  211.             v[d].grade = v[d + 1].grade;
  212.         }
  213.         n--;
  214.     } else cout << "输入错误,找不到该教师信息" << endl;
  215.     cout << "输入任意字符继续";
  216.     getchar(); getchar();
  217. }

  218. /*--------------------------主函数-----------------------------*/
  219. int main() {
  220.     Student x;
  221.     System y;
  222.     int a;
  223.     string ss = "y";
  224.     do {
  225.         system("clear");
  226.         cout << "欢迎进入评教管理系统" << endl;
  227.         y.menu();
  228.         cout << "请输入相应阿拉伯数字:";
  229.         cin >> a;
  230.         switch(a) {
  231.         case 1: x.input(); break;
  232.         case 2: y.add(); break;
  233.         case 3: y.change(); break;
  234.         case 4: y.find(); break;
  235.         case 5: y.display(); break;
  236.         case 6: y.dele(); break;
  237.         case 7: y.save(); break;
  238.         case 8: y.read(); break;
  239.         case 9: ss = "n"; break;
  240.         }
  241.     } while(ss == "y");
  242.     return 0;
  243. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-20 15:56:42 | 显示全部楼层
人造人 发表于 2021-9-20 15:50
你都不调试程序的吗?
基础很重要的,先打基础吧

好的,哥
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-26 11:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表