#include <iostream>
#include <string>
using namespace std;
class Teacher
{
private:
string number;//学号
string name;//名字
string sex;//性别
string telephone;//手机号码
string nation;//籍贯
public:
Teacher* next;//next指向下一位学生,构成链表
Teacher() { next = NULL; }
Teacher(string n, string num, string s, string tp, string na)
{
name = n;
number = num;
sex = s;
telephone = tp;
nation = na;
next = NULL;
};//构造函数
string getname() { return name; }//名字
string getnum() { return number; }//学号
string gets() { return sex; }//性别
string gettp() { return telephone; }//手机号码
string getna() { return nation; }//籍贯
void setname(string n) { name = n; }//修改名字
void sets(string s) { sex = s; }//修改性别
void settp(string tp) { telephone = tp; }//修改手机号码
void setna(string na) {nation = na;}//修改籍贯
void setnum(string num) { number = num; }//修改工号
};
class Operation
{
private:
Teacher* head;
public:
Operation()
{
head = new Teacher;
int end1;
}
void Menu();//菜单
void Insert();//插入
void Search();//查找
void Remove();//修改
void Delete();//删除
void Print();//输出
};
int end1;
void Operation::Menu()
{
cout << "*******************************************************************************************" << endl;
cout << "------------------------- 学生信息管理系统 -------------------------" << endl;
cout << "------------------------- *********************** -------------------------" << endl;
cout << "------------------------- 1.增加学生信息 -------------------------" << endl;
cout << "------------------------- 2.显示学生信息 -------------------------" << endl;
cout << "------------------------- 3.查找学生信息 -------------------------" << endl;
cout << "------------------------- 4.删除学生信息 -------------------------" << endl;
cout << "------------------------- 5.修改学生信息 -------------------------" << endl;
cout << "------------------------- 6.安全退出系统 -------------------------" << endl;
}
void Operation::Insert() //插入
{
string name;//名字
string number;//工号
string sex;//性别
string telephone;//手机号
string nation;
Teacher* p = NULL;
cout << "请输入要添加学生的信息:" << endl;
cout << "请输入姓名:";
cin >> name;
cout << endl;
cout << "请输入学号:";
cin >> number;
cout << endl;
cout << "请输入性别:";
cin >> sex;
cout << endl;
cout << "手机号码:";
cin >> telephone;
cout << endl;
cout << "籍贯:";
cin >> nation;
cout << endl;
Teacher* s = new Teacher(name,number, sex, telephone, nation);
p = head;
while (p->next != NULL && p->getnum() < s->getnum())
{
p = p->next;
}
s->next = p->next;
p->next = s;
}
void Operation::Delete()//删除
{
string name;
Teacher* p = head->next, * q = head;
cout << "请输入要删除学生信息的姓名:" << endl;
cin >> name;
while (p != NULL)
{
if (p->getname() == name)
{
q->next = p->next;
delete p;
break;
}
p = p->next;
q = q->next;
}
if (p != NULL)
{
cout << "删除成功!" << endl;
}
if (p == NULL)
{
cout << "\t\t没有找到!" << endl;
}
}
void Operation::Search()//查询
{
Teacher* p = NULL;
cout << "\n** 查询学生信息 **\n" << endl;
cout << "请输入查询方式:" << endl;
cout << "1.按学号查询" << endl;
cout << "2.按姓名查询" << endl;
cout << "3.返回" << endl;
char c;
cin >> c;
switch (c)
{
case '1':
{string n;
cout << "请输入你要查询的学生的学号" << endl;
cin >> n;
for (p = head; p != NULL; p = p->next)
{
if (p->getnum() == n)
{
cout
<< "姓名:" << p->getname() << endl
<< "学号:" << p->getnum() << endl
<< "性别:" << p->gets() << endl
<< "电话号码:" << p->gettp() << endl
<< "籍贯:" << p->getna() << endl;
}
}
break;
}
case '2':
{
string name;
cout << "请输入你要查询的学生姓名" << endl;
cin >> name;
for (p = head; p != NULL; p = p->next)
{
if (name == p->getname())
{
cout
<< "姓名:" << p->getname() << endl
<< "学号:" << p->getnum() << endl
<< "性别:" << p->gets() << endl
<< "手机号码:" << p->gettp() << end1
<< "籍贯:" << p->getna() << endl;
}
}
break;
}
case '3':
return;
}
}
void Operation::Print() //输出
{
Teacher* p;
cout
<< "姓名"
<< "\t学号"
<< "\t性别"
<< "\t手机号码"
<< "\t籍贯" << endl;
for (p = head->next; p != NULL; p = p->next)
cout
<< p->getname()
<< "\t" << p->getnum()
<< "\t" << p->gets()
<< "\t" << p->gettp()
<< "\t\t" << p->getna()
<< endl;
}
void Operation::Remove() //修改
{
string n;//修改项
string number;//学号
string name;//名字
string sex;//性别
string telephone;//手机号码
string nation;
cout << "请输入你要修改的学生姓名" << endl;
cin >> n;
Teacher* p;
for (p = head->next; p != NULL; p = p->next)
if (p->getname() == n)
{
cout << "请选择您要修改的信息项:" << endl;
cout << "1、学号,2、姓名,3、性别,4、手机号码,5、籍贯。" << endl;
int in;
cin >> in;
switch (in)
{
case 1:
cout << p->getnum() << "修改为:" << endl;
cin >> number; p->setnum(number);
break;
case 2:
cout << p->getname() << "修改为:" << endl;
cin >> name; p->setname(name);
break;
case 3:
cout << p->gets() << "修改为:" << endl;
cin >> sex; p->sets(sex);
break;
case 4:
cout << p->gettp() << "修改为:" << endl;
cin >> telephone; p->settp(telephone);
break;
case 5:
cout << p->getna() << "修改为:" << endl;
cin >> nation; p->setna(nation);
break;
default:
cout << "输入错误!" << endl;
break;
}
}
}
int main()
{
Operation O;
O.Menu();
while (1)
{
int flag = 1;
int n;
cout << "\n\t\t\n\t\t请选择:";
cin >> n;
switch (n)
{
case 1://增加
O.Insert();
break;
case 2://显示
O.Print();
break;
case 3://查找
O.Search();
break;
case 4://删除
O.Delete();
break;
case 5://修改
O.Remove();
break;
case 6://修改
flag = 0;
break;
}
if (flag == 0) break;
}
return 0;
}
在此代码的基础上,增加一个插入功能,和统计学生生源的功能,顺便检查一下错误,电话号码会不会太长而出现负号等
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
micthis 2023-12-06 22:43关注代码:
#include <iostream> #include <string> #include <map> using namespace std; class Student { private: string number;//学号 string name;//名字 string sex;//性别 string telephone;//手机号码 string nation;//籍贯 public: Student* next;//next指向下一位学生,构成链表 Student() { next = NULL; } Student(string n, string num, string s, string tp, string na) { name = n; number = num; sex = s; telephone = tp; nation = na; next = NULL; }//构造函数 string getname() { return name; }//名字 string getnum() { return number; }//学号 string gets() { return sex; }//性别 string gettp() { return telephone; }//手机号码 string getna() { return nation; }//籍贯 void setname(string n) { name = n; }//修改名字 void sets(string s) { sex = s; }//修改性别 void settp(string tp) { telephone = tp; }//修改手机号码 void setna(string na) {nation = na;}//修改籍贯 void setnum(string num) { number = num; }//修改工号 }; class Operation { private: Student* head; public: Operation() { head = new Student; } void Menu();//菜单 void Insert();//插入 void Search();//查找 void Modify();//修改 void Delete();//删除 void Statistics(); //生源统计 void Print();//输出 }; void Operation::Menu() { cout << "*******************************************************************************************" << endl; cout << "------------------------- 学生信息管理系统 -------------------------" << endl; cout << "------------------------- *********************** -------------------------" << endl; cout << "------------------------- 1.增加学生信息 -------------------------" << endl; cout << "------------------------- 2.显示学生信息 -------------------------" << endl; cout << "------------------------- 3.查找学生信息 -------------------------" << endl; cout << "------------------------- 4.删除学生信息 -------------------------" << endl; cout << "------------------------- 5.修改学生信息 -------------------------" << endl; cout << "------------------------- 6.学生生源统计 -------------------------" << endl; cout << "------------------------- 7.安全退出系统 -------------------------" << endl; } void Operation::Insert() //插入 { string name;//名字 string number;//工号 string sex;//性别 string telephone;//手机号 string nation; Student* p = NULL; cout << "请输入要添加学生的信息:" << endl; cout << "请输入姓名:"; cin >> name; cout << endl; cout << "请输入学号:"; cin >> number; cout << endl; cout << "请输入性别:"; cin >> sex; cout << endl; cout << "手机号码:"; cin >> telephone; cout << endl; cout << "籍贯:"; cin >> nation; cout << endl; Student* s = new Student(name,number, sex, telephone, nation); Student* q=head; p = head->next; while (p != NULL && p->getnum() < s->getnum()) { q=p; p = p->next; } q->next = s; s->next = p; } void Operation::Delete()//删除 { string name; Student* p = head->next, * q = head; cout << "请输入要删除学生信息的姓名:" << endl; cin >> name; while (p != NULL) { if (p->getname() == name) { q->next = p->next; delete p; break; } p = p->next; q = q->next; } if (p != NULL) { cout << "删除成功!" << endl; } else { cout << "\t\t没有找到!" << endl; } } void Operation::Statistics()//统计生源 { map<string,int> m; string s; for(Student* p=head->next;p!=NULL;p=p->next) m[p->getna()]++; if(m.size()>0) { cout<<"籍贯\t"<<"学生人数"<<endl; for(/*auto*/map<string,int>::iterator it=m.begin();it!=m.end();it++) cout<<it->first<<"\t"<<it->second<<endl; } else cout<<"没有学生无法统计生源"<<endl; } void Operation::Search()//查询 { Student* p = NULL; cout << "\n** 查询学生信息 **\n" << endl; cout << "请输入查询方式:" << endl; cout << "1.按学号查询" << endl; cout << "2.按姓名查询" << endl; cout << "3.返回" << endl; char c; cin >> c; switch (c) { case '1': { string n; cout << "请输入你要查询的学生的学号" << endl; cin >> n; for (p = head->next; p != NULL; p = p->next) { if (p->getnum() == n) { cout<< "姓名:" << p->getname() << endl << "学号:" << p->getnum() << endl << "性别:" << p->gets() << endl << "电话号码:" << p->gettp() << endl << "籍贯:" << p->getna() << endl; break; } } if(p==NULL) cout<<"没有找到"<<endl; } break; case '2': { string name; cout << "请输入你要查询的学生姓名" << endl; cin >> name; for (p = head->next; p != NULL; p = p->next) { if (name == p->getname()) { cout << "姓名:" << p->getname() << endl << "学号:" << p->getnum() << endl << "性别:" << p->gets() << endl << "手机号码:" << p->gettp() << endl << "籍贯:" << p->getna() << endl; break; } } if(p==NULL) cout<<"没有找到"<<endl; } break; case '3': return; } } void Operation::Print() //输出 { Student* p; cout << "姓名" << "\t学号" << "\t性别" << "\t手机号码" << "\t籍贯" << endl; for (p = head->next; p != NULL; p = p->next) cout << p->getname() << "\t" << p->getnum() << "\t" << p->gets() << "\t" << p->gettp() << "\t\t" << p->getna() << endl; } void Operation::Modify() //修改 { string n;//修改项 string number;//学号 string name;//名字 string sex;//性别 string telephone;//手机号码 string nation; cout << "请输入你要修改的学生姓名" << endl; cin >> n; Student* p; for (p = head->next; p != NULL; p = p->next) if (p->getname() == n) { cout << "请选择您要修改的信息项:" << endl; cout << "1、学号,2、姓名,3、性别,4、手机号码,5、籍贯。" << endl; int in; cin >> in; switch (in) { case 1: cout << p->getnum() << "修改为:" << endl; cin >> number; p->setnum(number); break; case 2: cout << p->getname() << "修改为:" << endl; cin >> name; p->setname(name); break; case 3: cout << p->gets() << "修改为:" << endl; cin >> sex; p->sets(sex); break; case 4: cout << p->gettp() << "修改为:" << endl; cin >> telephone; p->settp(telephone); break; case 5: cout << p->getna() << "修改为:" << endl; cin >> nation; p->setna(nation); break; default: cout << "输入错误!" << endl; break; } break; } if(p == NULL) cout<<"没有找到"<<endl; } int main() { Operation O; while (1) { int flag = 1; int n; O.Menu(); cout << "\n\t\t\n\t\t请选择:"; cin >> n; switch (n) { case 1://增加 O.Insert(); break; case 2://显示 O.Print(); break; case 3://查找 O.Search(); break; case 4://删除 O.Delete(); break; case 5://修改 O.Modify(); break; case 6://生源统计 O.Statistics(); break; case 7:// flag=0; break; } if (flag == 0) break; } return 0; }运行截图
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录