1.介绍

大一下学期摸的C++,期末要求做的学生管理系统。基本上是自己一个人完成(摸鱼写了几天),没有项目的经验,也没有参考其他人的项目。感觉还有很多可以改进的地方。

功能方面基本的增改删查,加上排序、数据导出、筛选(筛选比较简陋)。就是没有批量导入的功能。

有什么问题或者意见,欢迎友好交流,提高能力。

2.源代码

主函数:

#include "Datam.h"
#include "Show.h"
#include "Logic.h"
#include "Menu.h"
#include "GlobalValue.h"
#include <iostream>using namespace std;
int main()
{int cmd=1;                                               //变量数字命令序号Datam d1;                                                //Datam的对象Show s1;                                                 //Show的对象Menu m1;                                                 //Menu的对象Logic l1;                                                //Lodic的对象cout << "     欢迎使用学生管理系统!       \n";d1.FileRaC();                                            //读取数组大小至变量,要先于数组读取d1.Fileinput();                                           //读取数据至数组while (cmd != 0){s1.Mshowm();                                          //显示主菜单cin >> cmd;system("cls");switch (cmd){case 1:m1.Menuone();                                     //显示一号子菜单break;case 2:m1.Menutwo();break;case 3:m1.Menuthree();break;case 4:m1.Menufour();break;case 5:m1.Menufive();break;case 6:d1.Outfile();system("pause");system("cls");break;case 7:d1.Initial();system("pause");system("cls");break;case 0:break;default:s1.Erroec();break;}};cout << "您已经退出了学生管理系统,欢迎再次使用\n";return 0;
}

全局变量:

#pragma once                                    //全局变量
#include <string>
#include<vector>using namespace std;extern int row;                                 //学生数(行数)
extern int col;                                 //(整数)属性数(列数)
extern int abtc;                                //属性数(整数属性+字符串属性)
extern vector<vector<long long>> dint;          //变长数组,行数不固定,存放整数数据
extern vector<vector<string>> str;              //变长数组,行数不固定,存放字符串数据
extern vector<string> abt;                      //变长数组,存放所有的属性名称
extern int dte;                                 //给显示数据时保留的距离dte
/*全局变量的初始化*/
#include "GlobalValue.h"
#include<vector>int row = 200;
int col = 10;
int abtc = 10;
/*
row和col的值必须大于文件“RaC.txt”中存放的值,否则会出现不明原因错误,以我目前的知识水平
还没有解决方案,所以这里学生信息数量上限设为200,学生(整数)属性上限设为10
新添加的abtc同理,应该是向量的问题
*/vector<vector<long long>> dint(row, vector<long long>(col));
vector<vector<string>> str(row, vector<string>(2));
vector<string> abt(abtc);
int dte = 15;

数据管理:

/*数据管理类*/
#include <iostream>using namespace std;class Datam
{
public:Datam();~Datam();static void FileRaC();         //读取存放行数和列数的文件到变量row和colstatic void Fileinput();       //读取数据传入到数组static void Fileout();         //数据顺序输出到屏幕static void Outfile();         //导出数据至文件static void Initial();         //数据初始化void Addabt();                 //添加更多成绩void Adds(int);                //添加n个学生的信息static void Storefile();       //储存数据至文件void Changeid(long long , string ); //查找学号修改某个学生的单个数据void Changena(string, string); //查找姓名修改某个学生的单个数据void Removeid(long long);      //使用学号查询某学生信息后删除该条void Removen(string);          //使用姓名查询某学生信息后删除该条
}; 
#include "Datam.h"
#include "Show.h"
#include "GlobalValue.h"
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>using namespace std;Datam::Datam() {}
Datam::~Datam() {}void Datam::FileRaC()
{Show s1;ifstream racfile("DATA\\RaC.txt");                   //RaC文件存放行数和列数的数值,其中前一个数是行数,后一个数是列数racfile >> row;                                //前一个是行数racfile >> col;                                //后一个是列数(属性数)重要的事多说几遍ifstream abtfile("DATA\\abt.txt");                   //读取属性文件if (!racfile && !abtfile)s1.Errorf();abtc = col + 2;for (int i = 0; i < abtc; i++){abtfile >> abt[i];}racfile.close();                                  //关闭文件abtfile.close();
}void Datam::Fileinput()
{Show s1;                                              //Show的对象ifstream infile("DATA\\data1.txt");                   //data1文件存放整数类型的数据ifstream cinfile("DATA\\data2.txt");                  //data2文件存放字符串类型的数据if (!infile&&!cinfile)s1.Errorf ();else{for (int i = 0; i < row; i++)                     //将data1中的数据存放到数组dint{for (int j = 0; j < col; j++)infile >> dint[i][j];}for (int i = 0; i < row; i++)                //将data2中的数据存放到数组str{for (int j = 0; j < 2; j++)cinfile >> str[i][j];}}infile.close();                                  //关闭文件cinfile.close();
}void Datam::Fileout()                                 //显示全部学生数据
{for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){if (j == 0)cout << setw(dte) << dint[i][j] << setw(dte) << str[i][0] << setw(dte) << str[i][1];else if (j == col-1) cout << setw(dte) << dint[i][j] << endl;else cout << setw(dte) << dint[i][j];}}
}void Datam::Outfile()
{ofstream outfile("out.txt", ios::trunc);for (int i = 0; i < abtc; i++) {if (i == abtc - 1) {outfile << setw(dte) << abt[i] << endl;}else {outfile << setw(dte) << abt[i];}}for (int i = 0; i < row; i++) {for (int j = 0; j < abtc; j++){if (j == 0) {outfile << setw(dte) << dint[i][j];}else if (j == 1 || j == 2) {outfile << setw(dte) << str[i][j - 1];}else if (j == abtc - 1) {outfile << setw(dte) << dint[i][j - 2] << endl;}else{outfile << setw(dte) << dint[i][j-2];}}}cout << "数据文件已导出至exe文件同一目录下的out.txt" << endl;outfile.close();
}void Datam::Initial()
{Datam d1;ofstream racfile("DATA\\RaC.txt", ios::trunc);ofstream abtfile("DATA\\abt.txt", ios::trunc);ofstream infile("DATA\\data1.txt", ios::trunc);ofstream cinfile("DATA\\data2.txt", ios::trunc);racfile << "6   5  ";abtfile << "学号   姓名   性别   年龄   成绩1   成绩2   成绩3   ";infile << "8   18   100   94   91   15   18   95   95   90   27   18   96   83   90   30   18   98   86   "<< "92   67   19   57   87   98   49   18   78   98   76   ";  cinfile << "孙杭   男   王天志   男   吴潇   男   瞿思宇   男   周韦   男   叶淑   女   ";racfile.close();abtfile.close();abtfile.close();abtfile.close();d1.FileRaC();d1.Fileinput();cout << "初始化成功(  重启后完成  )" << endl;
}void Datam::Addabt()
{int n = 0, cmd = 1;int a = 0, c = 0;Show s1;Datam d1;cout << "输入要添加的成绩的个数:";cin >> n;a = abtc;c = col;abtc += n;col += n;for (int i = a; i < abtc; i++) {cout << "为第" << i - 3 << "个成绩命名:";cin >> abt[i];}cout << "---------------------------------\n";cout << "   请使用数字序号来进行操作      \n";cout << "      1.将添加后的成绩初始化为0  \n";cout << "      2.将添加后的成绩顺序录入   \n";cout << "请输入数字序号:";while (cmd != 0){cin >> cmd;switch (cmd){case 1:for (int i = 0; i < row; i++) {for (int j = c; j < col; j++) {dint[i][j] = 0;}}cout << "初始化成功" << endl;system("pause");system("cls");break;case 2:for (int j = 5; j < col; j++) {cout << "当前输入" << abt[j + 2] << endl;for (int i = 0; i < row; i++){cout << "正在输入学号:" << dint[i][0] << " 姓名:" << str[i][0] << " 的成绩:";cin >> dint[i][j];}}cout << "输入完成!" << endl;system("pause");system("cls");break;case 0:system("cls");break;default:s1.Erroec();break;}if (cmd == 1 || cmd == 2) break;}d1.Storefile();d1.FileRaC();d1.Fileinput();
}void Datam::Adds(int n)
{int mid;Datam d1;mid = row;                                          //中间变量储存旧的row值row += n;                                           //增加row值的大小for (int i = mid; i < row; i++)                     //依次录入每个学生的信息{cout << "请输入第" << i+1 << "个学生的信息" << endl;for (int j = 0; j < abtc; j++){if (j == 1||j == 2){cout << abt[j] << ":";cin >> str[i][j-1];}else if (j == 0){cout << abt[j] << ":";cin >> dint[i][j];}else{cout << abt[j] << ":";cin >> dint[i][j-2];}}}d1.Storefile();cout << "录入完成" << endl;}void Datam::Storefile()
{ofstream infile("DATA\\data1.txt", ios::trunc);                   //分别打开所有数据文件,并且清空文件ofstream cinfile("DATA\\data2.txt", ios::trunc);ofstream racfile("DATA\\RaC.txt", ios::trunc);ofstream abtfile("DATA\\abt.txt", ios::trunc);for (int i = 0; i < row ; i++)                              //分别保存数据至文件{for (int j = 0; j < col ; j++){infile << dint[i][j] << "   ";}}for (int i = 0; i < row; i++){for (int j = 0; j < 2; j++){cinfile << str[i][j] << "   ";}}racfile << row << "   ";racfile << col << "   ";for (int i = 0; i < abtc; i++){abtfile << abt[i] << "   ";}infile.close();                                  //关闭文件cinfile.close();racfile.close();abtfile.close();
}void Datam::Changeid(long long id, string fabt)
{int frow = 201;Show s1;Datam d1;for (int i = 0; i < row; i++){if (id == dint[i][0]){frow = i;}}if (frow == 201) {s1.Nofound();}else {for (int i = 0; i < abtc; i++){if (abt[i] == fabt){if (i == 1 || i == 2){cout << "原数据为:" << str[frow][i - 1] << endl;cout << "修改" << abt[i] << "为:";cin >> str[frow][i - 1];}else if (i != 0){cout << "原数据为:" << dint[frow][i - 2] << endl;cout << "修改" << abt[i] << "为:";cin >> dint[frow][i - 2];}else{cout << "原数据为:" << dint[frow][i] << endl;cout << "修改" << abt[i] << "为:";cin >> dint[frow][i];}}}d1.Storefile();                                             //数据保存cout << "修改成功" << endl;}
}void Datam::Changena(string name, string fabt)
{int frow = 201;Show s1;Datam d1;for (int i = 0; i < row; i++){if (name == str[i][0]){frow = i;}}if (frow == 201){s1.Nofound();}else {for (int i = 0; i < abtc; i++){if (abt[i] == fabt){if (i == 1 || i == 2){cout << "原数据为:" << str[frow][i - 1] << endl;cout << "修改" << abt[i] << "为:";cin >> str[frow][i - 1];}else if (i != 0){cout << "原数据为:" << dint[frow][i - 2] << endl;cout << "修改" << abt[i] << "为:";cin >> dint[frow][i - 2];}else{cout << "原数据为:" << dint[frow][i] << endl;cout << "修改" << abt[i] << "为:";cin >> dint[frow][i];}}}d1.Storefile();                                             //数据保存cout << "修改成功" << endl;}
}void Datam::Removeid(long long id)
{int frow = 201;Datam d1;Show s1;for (int i = 0; i < row; i++){if (id == dint[i][0]){frow = i;}}if (frow == 201){s1.Nofound();}else {for (int i = frow; i < row; i++){if (i == row - 1){str[i][0] = str[i][1] = '\0';for (int j = 0; j < col; j++){dint[i][j] = 0;}}for (int j = 0; j < abtc; j++){if (j == 0){dint[i][j] = dint[i + 1][j];}else if (j == 1 || j == 2){str[i][j - 1] = str[i + 1][j - 1];}else{dint[i][j - 2] = dint[i + 1][j - 2];}}}cout << "删除成功" << endl;row -= 1;d1.Storefile();}
}void Datam::Removen(string name)
{int frow=201;Datam d1;Show s1;for (int i = 0; i < row; i++){if (name == str[i][0]){frow = i;}}if (frow == 201){s1.Nofound();}else {for (int i = frow; i < row; i++){if (i == row - 1){str[i][0] = str[i][1] = '\0';for (int j = 0; j < col; j++){dint[i][j] = 0;}}for (int j = 0; j < abtc; j++){if (j == 0){dint[i][j] = dint[i + 1][j];}else if (j == 1 || j == 2){str[i][j - 1] = str[i + 1][j - 1];}else{dint[i][j - 2] = dint[i + 1][j - 2];}}}cout << "删除成功" << endl;row -= 1;d1.Storefile();}
}

逻辑:

/*逻辑类*/
#include <iostream>using namespace std;class Logic
{
public:Logic();~Logic();static void Sman();              //筛选出性别男static void Swoman();            //筛选出性别女static void Siddts();            //将学生学号从大到小排序static void Sidstd();            //将学生学号从小到大排序static void Fradts();            //将学生总成绩从大到小排序static void Frastd();            //将学生总成绩从大到小排序
};
#include "Logic.h"
#include "GlobalValue.h"
#include "Show.h"
#include <iomanip>
#include<vector>using namespace std;Logic::Logic() {}
Logic::~Logic() {}void Logic::Sman()
{string man = "男";Show s1;for (int i = 0; i < row; i++){if(str[i][1]==man)s1.Ones(i);                       //显示一个学生的信息}
}void Logic::Swoman()
{string woman = "女";Show s1;for (int i = 0; i < row; i++){if (str[i][1] == woman)s1.Ones(i);                       //显示一个学生的信息}
}void Logic::Siddts()
{vector<long long>id(row, 0);                          //存放排序后的学生学号Show s1;                                        //Show的对象for (int i = 0; i < row; i++)                   //将dint中的学号存入id{id[i] = dint[i][0];}for (int i = 1; i < row; i++)                   //使用冒泡排序从大到小排列数组id{for (int j = 0; j < row - i; j++){if (id[j] < id[j + 1]){long long buffer = id[j];id[j] = id[j + 1];id[j + 1] = buffer;}}}for (int i = 0; i < row; i++)                //遍历dint的学号信息与排序后的id数组核对,核对成功一个,输出一个{for (int j = 0; j < row; j++){if (id[i] == dint[j][0]){s1.Ones(j);                       //显示一个学生的信息}}}
}void Logic::Sidstd()
{vector<long long>id(row, 0);                          //存放排序后的学生学号Show s1;                                        //Show的对象for (int i = 0; i < row; i++)                   //将dint中的学号存入id{id[i] = dint[i][0];}for (int i = 1; i < row; i++)                   //使用冒泡排序从小到大排列数组id{for (int j = 0; j < row - i; j++){if (id[j] > id[j + 1]){long long buffer = id[j];id[j] = id[j + 1];id[j + 1] = buffer;}}}for (int i = 0; i < row; i++)                //遍历dint的学号信息与排序后的id数组核对,核对成功一个,输出一个{for (int j = 0; j < row; j++){if (id[i] == dint[j][0]){s1.Ones(j);                       //显示一个学生的信息}}}
}void Logic::Fradts()
{Show s1;vector<vector<long long>> fra(row, vector<long long>(2,0));for (int i = 0; i < row; i++){fra[i][0] = dint[i][0];for (int j = 2; j <abtc ; j++){fra[i][1] += dint[i][j];}}for (int i = 1; i < row; i++)                   //使用冒泡排序从大到小排列数组fra{for (int j = 0; j < row - i; j++){if (fra[j][1] < fra[j + 1][1]){long long buffer = fra[j][1];fra[j][1] = fra[j + 1][1];fra[j + 1][1] = buffer;buffer = fra[j][0];fra[j][0] = fra[j + 1][0];fra[j + 1][0] = buffer;}}}for (int i = 0; i < row; i++)                //遍历学号{for (int j = 0; j < row; j++){if (fra[i][0] == dint[j][0]){s1.Ones(j);                       //显示一个学生的信息}}}
}void Logic::Frastd()
{Show s1;vector<vector<long long>> fra(row, vector<long long>(2, 0));for (int i = 0; i < row; i++){fra[i][0] = dint[i][0];for (int j = 2; j < abtc; j++){fra[i][1] += dint[i][j];}}for (int i = 1; i < row; i++)                   //使用冒泡排序从大到小排列数组fra{for (int j = 0; j < row - i; j++){if (fra[j][1] > fra[j + 1][1]){long long buffer = fra[j][1];fra[j][1] = fra[j + 1][1];fra[j + 1][1] = buffer;buffer = fra[j][0];fra[j][0] = fra[j + 1][0];fra[j + 1][0] = buffer;}}}for (int i = 0; i < row; i++)               //遍历学号{for (int j = 0; j < row; j++){if (fra[i][0] == dint[j][0]){s1.Ones(j);                       //显示一个学生的信息}}}
}

显示:

/*显示类*/
#include <iostream>using namespace std;class Show
{
public:Show();~Show();static void Abt();         //显示属性栏static void Mshowm();      //显示主菜单static void Errorf();      //文件读取错误信息static void Erroec();      //命令读取错误信息static void Nofound();     //未找到错误信息static void Mones();       //1号子菜单显示static void Mtwos();       //2号子菜单显示static void Mthrs();       //3号子菜单显示static void Mfour();       //4号子菜单显示static void Mfive();       //5号子菜单显示void Ones(int);            //(使用行数row)显示某个学生的信息void Onesm(string);        //使用姓名查询某学生信息void Onesid(long long);    //使用学号查询某学生信息static void Image(string); //将某次成绩以图像显示
};
#include "Show.h"
#include "GlobalValue.h"
#include <iostream>
#include <iomanip>using namespace std;Show::Show(){}
Show::~Show(){}void Show::Abt()
{for (int i = 0; i < abtc; i++){if (i == abtc - 1) cout << setw(dte) << abt[i] << endl;else cout << setw(dte) << abt[i];}
}void Show::Mshowm()
{cout << "---------------------------------\n";cout << "   请使用数字序号来进行操作      \n";cout << "      1.录入学生信息             \n";cout << "      2.显示学生信息             \n";cout << "      3.修改学生信息             \n";cout << "      4.查询学生信息             \n";cout << "      5.删除学生信息             \n";cout << "      6.导出学生信息             \n";cout << "      7.学生数据初始化           \n";cout << "      0.退出    系统             \n";cout << "请输入数字序号:";
}void Show::Errorf()
{cout << "打开文件错误,未找到文件,可能无法正常运行程序。 " << endl;
}void Show::Erroec()
{cout << "错误,未找到该命令,请重新输入序号" << endl;cout << "请重新输入命令序号:";
}void Show::Nofound()
{cout << "错误,未找到该信息" << endl;
}void Show::Mones()
{cout << "---------------------------------\n";cout << "   请使用数字序号来进行操作      \n";cout << "      1.录入学生信息             \n";cout << "      0.返回上一菜单             \n";cout << "请输入数字序号:";
}void Show::Mtwos()
{cout << "---------------------------------\n";cout << "   请使用数字序号来进行操作      \n";cout << "      1.按照文件中的顺序         \n";cout << "      2.按照学号从大到小         \n";cout << "      3.按照学号从小到大         \n";cout << "      4.按照总成绩从大到小       \n";cout << "      5.按照总成绩从小到大       \n";cout << "      6.显示全部性别为男的学生   \n";cout << "      7.显示全部性别为女的学生   \n";cout << "      8.将某次成绩以图像显示     \n";cout << "      0.返回上一菜单             \n";cout << "请输入数字序号:";
}void Show::Mthrs()
{cout << "---------------------------------\n";cout << "   请使用数字序号来进行操作      \n";cout << "      1.使用学号查找后修改信息   \n";cout << "      2.使用姓名查找后修改信息   \n";cout << "      3.添加更多成绩             \n";cout << "      0.返回上一菜单             \n";cout << "请输入数字序号:";
}void Show::Mfour()
{cout << "---------------------------------\n";cout << "   请使用数字序号来进行操作      \n";cout << "      1.使用学号查询             \n";cout << "      2.使用姓名查询             \n";cout << "      0.返回上一菜单             \n";cout << "请输入数字序号:";
}void Show::Mfive()
{cout << "---------------------------------\n";cout << "   请使用数字序号来进行操作      \n";cout << "      1.使用学号查找后删除       \n";cout << "      2.使用姓名查找后删除       \n";cout << "      0.返回上一菜单             \n";cout << "请输入数字序号:";
}void Show::Ones(int found)
{for (int i = 0; i < col; i++){if (i == 0){cout << setw(dte) << dint[found][i];cout << setw(dte) << str[found][0] << setw(dte) << str[found][1];}else if (i == col - 1) cout << setw(dte) << dint[found][i] << endl; else cout << setw(dte) << dint[found][i];}
}void Show::Onesm(string name)
{Show s1;for (int i = 0; i < row; i++){if (name == str[i][0]){s1.Ones(i);}else if (i == row - 1) s1.Nofound();}
}void Show::Onesid(long long id)
{Show s1;for (int i = 0; i < row; i++){if (id == dint[i][0]){s1.Ones(i);}else if (i == row - 1) s1.Nofound();}
}void Show::Image(string fra)
{int ffra = 0;cout << setw(dte) << abt[0] << setw(dte) << abt[1];for (int i = 4; i < abtc; i++){if (fra == abt[i]){ffra = i;cout << setw(dte) << abt[i] << endl;}}for (int i = 0; i < row; i++){cout << setw(dte) << dint[i][0] << setw(dte) << str[i][0] << "     ";for (int j = 0; j < dint[i][ffra - 2]; j++){cout << "I";}cout << endl;}
}

菜单:

/*菜单类*/
#include <iostream>using namespace std;class Menu
{
public:Menu();~Menu();static void Menuone();              //1.录入学生信息 的子菜单static void Menutwo();              //2.显示学生信息 的子菜单static void Menuthree();            //3.修改学生信息 的子菜单static void Menufour();             //4.查询学生信息 的子菜单static void Menufive();             //5.删除学生信息 的子菜单
};
#include "Menu.h"
#include "Show.h"
#include "Datam.h"
#include "Logic.h"
#include <iostream>using namespace std;Menu::Menu() {};
Menu::~Menu() {};void Menu::Menuone()
{int cmd = 1;                           //变量数字命令序号int n = 0;                             //添加的学生信息数量Show s1;                               //Show的对象Datam d1;s1.Mones();                           //这一行显示模块负责显示菜单选项while (cmd != 0)                       //如果cmd=2退出循环,返回上一菜单{cin >> cmd;switch (cmd){case 1:cout << "输入录入学生信息的个数:" << endl;      //这一行数据处理模块进行添加信息cin >> n;d1.Adds(n);system("pause");system("cls");break;case 0:                            //返回主菜单system("cls");break;default:s1.Erroec();                   //命令错误break;}if (cmd == 1) break;               //完成学生信息输入后,退出循环}
}void Menu::Menutwo()
{int cmd = 1;string fra;Show s1;Datam d1;Logic l1;s1.Mtwos();while (cmd != 0){cin >> cmd;switch (cmd){case 1:cout << "按照文件中的顺序:" << endl;s1.Abt();d1.Fileout();system("pause");system("cls");break;case 2:cout << "按照学号从大到小:" << endl;s1.Abt();l1.Siddts();system("pause");system("cls");break;case 3:cout << "按照学号从小到大:" << endl;s1.Abt();l1.Sidstd();system("pause");system("cls");break;case 4:cout << "按照总成绩从大到小:" << endl;s1.Abt();l1.Fradts();system("pause");system("cls");break;case 5:cout << "按照总成绩从小到大:" << endl;s1.Abt();l1.Frastd();system("pause");system("cls");break;case 6:cout << "显示性别为男的学生:" << endl;s1.Abt();l1.Sman ();system("pause");system("cls");break;case 7:cout << "显示性别为女的学生:" << endl;s1.Abt();l1.Swoman();system("pause");system("cls");break;case 8:cout << "输入要显示的那次成绩:";cin >> fra;cout << "将某次成绩以图像显示:" << endl;s1.Image(fra);system("pause");system("cls");break;case 0:                            //返回主菜单system("cls");break;default:s1.Erroec();                   //命令错误break;}if (cmd == 1 || cmd == 2 || cmd == 3 || cmd == 4 || cmd == 5 || cmd == 6 || cmd == 7 || cmd == 8) break;}
}void Menu::Menuthree()
{int cmd = 1;long long id = 0;int n = 0;string abtname;string name;string fabt;Show s1;Datam d1;s1.Mthrs();                            //这一行显示模块负责显示菜单选项while (cmd != 0)                       //如果cmd=2退出循环,返回上一菜单{cin >> cmd;switch (cmd){case 1:cout << "输入你要修改的学生的学号:";cin >> id;cout << "输入你要修改的项目:";cin >> fabt;d1.Changeid(id, fabt);system("pause");system("cls");break;case 2:cout << "输入你要修改的学生的姓名:";cin >> name;cout << "输入你要修改的项目:";cin >> fabt;d1.Changena(name ,fabt);system("pause");system("cls");break;case 3:system("cls");d1.Addabt();case 0:                            //返回主菜单system("cls");break;default:s1.Erroec();                   //命令错误break;}if (cmd == 1 || cmd == 2 || cmd == 3) break;               //完成学生信息输入后,退出循环}
}void Menu::Menufour()
{int cmd = 1;long long id = 0;string name;Show s1;s1.Mfour();while (cmd != 0)                       {cin >> cmd;switch (cmd){case 1:cout << "输入学生学号:";cin >> id;s1.Abt();s1.Onesid(id);system("pause");system("cls");break;case 2:cout << "输入学生姓名:";cin >> name;s1.Abt();s1.Onesm(name);system("pause");system("cls");break;case 0:system("cls");break;default:s1.Erroec();                   //命令错误break;}if (cmd == 1 || cmd == 2) break;}
}void Menu::Menufive()
{int cmd = 1;long long id = 0;string name;Show s1;Datam d1;s1.Mfive();while (cmd != 0){cin >> cmd;switch (cmd){case 1:cout << "输入要删除的学生的学号:";cin >> id;d1.Removeid(id);system("pause");system("cls");break;case 2:cout << "输入要删除的学生的姓名:";cin >> name;d1.Removen(name);system("pause");system("cls");break;case 0:system("cls");break;default:s1.Erroec();                   //命令错误break;}if (cmd == 1 || cmd == 2) break;}
}

3.数据文件和执行文件

程序运行或者调试的需要一个DATA文件,里面存放的是学生数据。

网盘:

链接:https://pan.baidu.com/s/17l6Zw4C3-shrDuVBe0HmTw
提取码:79zv

运行效果:

大一期末项目:学生管理系统相关推荐

  1. ssh html项目,SSH项目-学生管理系统

    SSH项目-学生管理系统 资源下载此资源下载价格为3D币,请先登录 资源文件列表 StudentManagent/.classpath , 979 StudentManagent/.myhiberna ...

  2. QT项目-学生管理系统

    前言 本文章主要讲解本人在QT学习期间所开发的项目-学生管理系统,代码主要参考于网上查找. 一.界面展示 功能主要包括,学生信息的插入删除,以及修改. 再加上按照id,或者成绩的升降序排序 二.代码展 ...

  3. Python基础 编写项目 学生管理系统

    print('欢迎来到成绩管理系统'.center(30,'*')) list = [] while True: print('1.录入成绩') print('2.查看成绩') print('3.删除 ...

  4. MySQL数据库期末项目 图书馆管理系统

    1 项目需求分析 1.1 项目名称 图书馆管理系统 1.2 项目功能 在以前大多部分图书馆都是由人工直接管理,其中每天的业务和操作流程非常繁琐复杂,纸质版的登记信息耗费了大量的人力物力.因此图书馆管理 ...

  5. Java项目:学生管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)

    源码获取:博客首页 "资源" 里下载! 一.项目简述 本系统功能包括: 学生管理,教师管理,课程管理,成绩管理,系统管理等等. 二.项目运行 环境配置: Jdk1.8 + Tomc ...

  6. Java项目:学生管理系统(无库版)(java+打印控制台)

    源码获取:博客首页 "资源" 里下载! 功能介绍: 学生成绩管理系统成绩表 用户管理操作: /*** 用户管理操作*/ @Controller @RequestMapping(&q ...

  7. JavaSE-初级阶段项目-学生管理系统

    1.需求分析 配置 项目文件 环境:IDEA IntelliJ 工具包 :hutool-poi-apidocs 工具包导入: 右击项目文件 open module settings 3.具体实现 (1 ...

  8. 参考别人博客,自己实现用idea运行eclipse项目--学生管理系统-

    别人的博客:https://blog.csdn.net/zeal9s/article/details/90690524 我自己录制的视频: 百度网盘:链接:https://pan.baidu.com/ ...

  9. 期末项目——人力资源管理系统需求分析

    人力资源管理系统需求分析 小组成员:朱国辉 许珍源 需求获取及分析 1.1 业务需求 随着现在计算机技术的不断完善,以及现代经济的不断发展,传统的管理技术不再满足企业的需要,越来越多的企业注重计算机信 ...

最新文章

  1. UILabel中的多行文本
  2. 全球首部AI交响变奏曲问世,AI技术应用再拓边界
  3. python爬虫完整实例-python爬虫实战之爬取京东商城实例教程
  4. office在线编辑器
  5. 子域名查询DNS记录查询
  6. 按键精灵易语言c,求助(把按键精灵的源码转为易语言的)
  7. 设计模式:单例和简单工厂
  8. remote: Incorrect username or password ( access token ) fatal: Authentication failed for gitee
  9. IBM总架构师寇卫东:话说程序员的职业生涯-IT程序人生-职业生涯规划
  10. 程序员的奋斗史(二)——今天你跑步了吗
  11. Atom飞行手册翻译: 2.2 在Atom中移动
  12. 小甲鱼python课后题和答案简书_小甲鱼Python入门 10讲 答案
  13. php txt替换,文本替换专家批量替换TXT文本内容教程
  14. Flink服务的HA配置
  15. 大牛深入讲解!6年老Android面经总结,系列教学
  16. 瑞思拜 我儿豁 SpringMVC基础 兄弟们冲冲冲
  17. python控制相机,在OpenCV / Python中设置相机参数
  18. 化繁为简,微软 Desktop Flow(“RPA”)正式在华商用!
  19. android自定义标尺,Android自定义标尺滑动选择值效果
  20. 微信小程序----使用微信内置地图查看位置wx.openLocation(Object object)

热门文章

  1. 在获取ADID时遇到疑似库版本不匹配的问题
  2. html中创建表格在正上方的表格标题
  3. Android App性能流畅度测评分析可以用到工具
  4. 超级详细VM16虚拟机安装CentOS 6.8创建虚拟机
  5. remap_pfn_range()详解
  6. Word打开docx文件报错
  7. 手机拍证件照有什么诀窍
  8. 服务器主动推送消息数据给客户端
  9. 「罗马人的故事 III 胜者的迷思」读后感 Part1,格拉古兄弟
  10. 有关公司治理的一些收获