学生基本信息管理程序
纪念迄今为止我为一个程序写过的最长的代码。。。
耍人玩的题目,这题目要求就根本就是随便想出来的吧!!!

ps:庄哥出品,必属精品!
main.cpp文件
#include"studentManagement.h"
int main(){
studentManagement sm;
int num=sm.ask_for_create();
while(1){
num=sm.ask();
switch(num){
case 1:sm.recreate();break;
case 2:sm.add();break;
case 3:sm.find();break;
case 4:sm.revise();break;
case 5:sm.del();break;
case 6:sm.show();break;
case 7:sm.open();break;
case 8:sm.save();break;
default:sm.sayGoodbye();
}
// 1创建 2添加 3查询 4修改 5删除 6显示 7文件导入 8文件导出 9退出
}
}
studentManagement.h文件
#include<string>
#include<iostream>
#include<windows.h>
#include<vector>
#include<map>
#include<fstream>
#include"student.h"
using namespace std;
class studentManagement{
private:
vector<student> vec;
map<string,bool> mp;
void slowSay(string str){
for(int i=0;i<str.size();i++){
cout<<str[i];
Sleep(40);
}
cout<<endl;
}
public:
studentManagement(){
SetConsoleTitle("学生信息管理系统");
}
int ask(){
system("cls");
system("color 0A");
slowSay("请选择下面的一个项目:");
slowSay("1.创建");
slowSay("2.添加");
slowSay("3.查询");
slowSay("4.修改");
slowSay("5.删除");
slowSay("6.显示");
slowSay("7.文件导入");
slowSay("8.文件导出");
slowSay("9.退出");
slowSay("请选择:");
string str;
getline(cin,str);
if(str.length()==1&&str[0]>48&&str[0]<58) return (int)(str[0]-48);
else{
slowSay("***?\n让你输入1-9之间的数字!\n\n");
return ask();
}
}
int ask_for_create(){
int num=ask();
while(num!=1){
if(num==9) sayGoodbye();
slowSay("要先选择创建呦!");
Sleep(100);
num=ask();
}
slowSay("创建成功");
Sleep(100);
return num;
}
void recreate(){
slowSay("你已经创建过了");
}
void add(){
string num,name,sex,age,cls,faculty,speciality;
slowSay("请输入学号:");
getline(cin,num);
if(mp[num]==1){
slowSay("学号重复,请重新输入");
add();
return;
}
slowSay("请输入姓名:");
getline(cin,name);
slowSay("请输入性别:");
getline(cin,sex);
slowSay("请输入年龄:");
getline(cin,age);
slowSay("请输入班级:");
getline(cin,cls);
slowSay("请输入学院:");
getline(cin,faculty);
slowSay("请输入专业:");
getline(cin,speciality);
student stu(num,name,sex,age,cls,faculty,speciality);
mp[num]=1;
vec.push_back(stu);
slowSay("添加成功");
}
void find(){
slowSay("按学号查询输入1,按班级和专业综合查询输入2");
string str;
getline(cin,str);
if(str.size()==1&&(str[0]==49||str[0]==48)){
int idx=-1;
if(str[0]==49){
slowSay("请输入学号:");
string num;
getline(cin,num);
for(int i=0;i<vec.size();i++){
if(vec[i].num==num){
idx=i;
break;
}
}
}
else if(str.size()==1&&str[0]==50){
string speciality;
slowSay("请输入专业:");
getline(cin,speciality);
string cls;
slowSay("请输入班级:");
getline(cin,cls);
for(int i=0;i<vec.size();i++){
if(vec[i].speciality==speciality&&vec[i].cls==cls){
idx=i;
break;
}
}
}
if(idx==-1){
slowSay("该名学生信息未被添加!");
}
else{
slowSay("找到该学生!");
slowSay("该学生的学号、姓名、性别、年龄、班级、学院、专业分别为:");
student p=vec[idx];
cout<<p.num<<' '<<p.name<<' '<<p.sex<<' '<<p.age<<' '<<p.cls<<' '<<p.faculty<<' '<<p.speciality<<endl;
slowSay("输入任意键继续");
getchar();
}
}
else{
slowSay("请按正确格式输入!");
find();
}
}
void revise(){
string num,name,sex,age,cls,faculty,speciality;
slowSay("请输入学号:");
getline(cin,num);
if(mp[num]==0){
slowSay("学号不存在,请重新输入");
revise();
return;
}
slowSay("请输入新姓名:");
getline(cin,name);
slowSay("请输入新性别:");
getline(cin,sex);
slowSay("请输入新年龄:");
getline(cin,age);
slowSay("请输入新班级:");
getline(cin,cls);
slowSay("请输入新学院:");
getline(cin,faculty);
slowSay("请输入新专业:");
getline(cin,speciality);
int idx=-1;
for(int i=0;i<vec.size();i++)
if(vec[i].num==num){
idx=i;
break;
}
student stu(num,name,sex,age,cls,faculty,speciality);
vec[idx]=stu;
slowSay("修改成功");
}
void del(){
slowSay("按学号删除输入1,按姓名删除输入2");
string str;
getline(cin,str);
if(str.size()==1&&(str[0]==49||str[0]==48)){
int idx=-1;
if(str[0]==49){
slowSay("请输入学号:");
string num;
getline(cin,str);
for(int i=0;i<vec.size();i++){
if(vec[i].num==num){
idx=i;
break;
}
}
}
else if(str.size()==1&&str[0]==50){
string name;
slowSay("请输入姓名:");
getline(cin,name);
for(int i=0;i<vec.size();i++){
if(vec[i].name==name){
idx=i;
break;
}
}
}
if(idx==-1){
slowSay("该名学生信息未被添加!");
}
else{
mp[vec[idx].num]=0;
vec.erase(vec.begin()+idx,vec.begin()+idx+1);
slowSay("成功删除该学生!");
}
}
else{
slowSay("请按正确格式输入!");
find();
}
}
void show(){
slowSay("所有学生的学号、姓名、性别、年龄、班级、学院、专业分别为:");
for(int i=0;i<vec.size();i++){
student p=vec[i];
cout<<p.num<<' '<<p.name<<' '<<p.sex<<' '<<p.age<<' '<<p.cls<<' '<<p.faculty<<' '<<p.speciality<<endl;
}
slowSay("输入任意键继续");
getchar();
}
void open(){
slowSay("请输入导入文件名称");
string ss;
getline(cin,ss);
ifstream is(ss,ios::in);
if(is!=NULL){
slowSay("正在导入文件......原先导入信息将被删除");
mp.clear();
vec.clear();
int n;
cin>>n;
for(int i=0;i<n;i++){
string num,name,sex,age,cls,faculty,speciality;
is>>num>>name>>sex>>age>>cls>>faculty>>speciality;
student stu(num,name,sex,age,cls,faculty,speciality);
vec[i]=stu;
}
slowSay("导入成功!");
Sleep(100);
}
else{
slowSay("文件不存在,请重新输入");
open();
return;
}
}
void save(){
slowSay("请输入导出文件名称");
string ss;
getline(cin,ss);
ofstream os(ss,ios::out);
os<<vec.size()<<endl;
for(int i=0;i<vec.size();i++){
student p=vec[i];
os<<p.num<<' '<<p.name<<' '<<p.sex<<' '<<p.age<<' '<<p.cls<<' '<<p.faculty<<' '<<p.speciality<<endl;
}
slowSay("导出成功!");
Sleep(100);
}
void sayGoodbye(){
slowSay("谢谢使用\n");
exit(0);
}
};
student.h文件
#include<string>
using namespace std;
class student{
public:
string num,name,sex,age,cls,faculty,speciality;
student(string num,string name,string sex,string age,string cls,string faculty,string speciality):
num(num),name(name),sex(sex),age(age),cls(cls),faculty(faculty),speciality(speciality){}
// 学号、姓名、性别、年龄、班级、学院、专业
};

浙公网安备 33010602011771号