//顺序表实现
#include <iostream>
#include <string>
#include <cstdlib>//exit
#include <iomanip>//setw()
using namespace std;
//创建结构体
typedef struct{
public:
string name;//姓名
char sex[20];//性别
char ID[20];//学号
char classname[20];//班级
double score;//成绩
}student;
typedef struct{
student *elem;//存储空间的基地址
int length;//表长度
}Sqlist;
//初始化
void init_stu(Sqlist &L){
L.elem=new student[1000];//最多存储1000名学生信息
if(L.elem==NULL) exit(0);
L.length=0;
}
//表格标签
void table(){
cout<<endl;
cout<<setiosflags(ios::left)<<setw(20)<<"姓名";
cout<<setw(20)<<"性别";
cout<<setw(20)<<"学号";
cout<<setw(20)<<"班级";
cout<<setw(20)<<"成绩"<<endl;
for(int a=0;a<20;a++){
cout<<"-----";
}
cout<<endl;
}
//添加功能
void add(Sqlist &L){
int i;
cout<<"请入要添加的学生个数:";
cin>>i;
for(int j=0;j<i;j++){
cout<<"请输入第"<<j+1<<"个学生的姓名:";
cin>>L.elem[L.length].name;
cout<<"请输入第"<<j+1<<"个学生的性别:";
cin>>L.elem[L.length].sex;
cout<<"请输入第"<<j+1<<"个学生的学号:";
cin>>L.elem[L.length].ID;
cout<<"请输入第"<<j+1<<"个学生的班级:";
cin>>L.elem[L.length].classname;
cout<<"请输入第"<<j+1<<"个学生的成绩:";
cin>>L.elem[L.length].score;
L.length++;
}
}
//显示功能
void output(Sqlist &L){
table();
for(int i=0;i<L.length;i++){
cout<<setiosflags(ios::left)<<setw(20)<<L.elem[i].name;
cout<<setw(20)<<L.elem[i].sex;
cout<<setw(20)<<L.elem[i].ID;
cout<<setw(20)<<L.elem[i].classname;
cout<<setw(20)<<L.elem[i].score<<endl;
}
for(int a=0;a<20;a++){
cout<<"-----";
}
cout<<endl;
}
//选择菜单
void menu(){
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;
cout<<"***************************"<<endl;
}
//删除功能
void del(Sqlist &L){
string a;
int flag=0;
cout<<"请输入要删除的学生姓名:";
cin>>a;
for(int i=0;i<L.length;i++){
if(L.elem[i].name==a){
flag++;
// cout<<i<<endl;
for(i;i<L.length;i++){
L.elem[i]=L.elem[i+1];
L.length--;
cout<<"删除成功"<<endl;
}
}
}
if(flag==0){
cout<<"没有该找到学生信息,无法进行删除"<<endl;
}
}
//查找功能
void lookup(Sqlist &L,string a){
table();
for(int e=0;e<L.length;e++){
if(L.elem[e].name==a){
cout<<setiosflags(ios::left)<<setw(20)<<L.elem[e].name;
cout<<setw(20)<<L.elem[e].sex;
cout<<setw(20)<<L.elem[e].ID;
cout<<setw(20)<<L.elem[e].classname;
cout<<setw(20)<<L.elem[e].score<<endl;
}
}
for(int a=0;a<20;a++){
cout<<"-----";
}
cout<<endl;
}
//修改功能
void alter(Sqlist &L,string b){
int ret,z=1;
int sign=0;
for(int e=0;e<L.length;e++){
if(L.elem[e].name==b){
sign++;
while(z){
cout<<"请选择修改改名学生的信息选项:"<<endl;
cout<<"0.姓名 1.性别 2.学号 3.班级 4.成绩 5.退出修改"<<endl;
cin>>ret;
switch(ret){
case 0:
cout<<"请重新输入该学生的姓名:";
cin>>L.elem[e].name;
system("pause");
break;
case 1:
cout<<"请重新输入该学生的性别:";
cin>>L.elem[e].sex;
system("pause");
break;
case 2:
cout<<"请重新输入该学生的学号:";
cin>>L.elem[e].sex;
system("pause");
break;
case 3:
cout<<"请重新输入该学生的班级:";
cin>>L.elem[e].sex;
system("pause");
break;
case 4:
cout<<"请重新输入该学生的成绩:";
cin>>L.elem[e].score;
system("pause");
break;
case 5:
z=0;
cout<<"修改完毕"<<endl;
break;
default:break;
}
}
}
}
if(sign==0){
cout<<"没有找到该学生,无法进行修改"<<endl;
}
}
//清空功能
void empty(Sqlist &L){
L.length=0;
cout<<"学生信息已被您全部清空"<<endl;
}
//主函数
int main(){
int num=0;
string u,v;
int a=1;
Sqlist M;
init_stu(M);
while(a){
menu();//菜单选择页面
cout<<"请输入您的选择:";
cin>>num;
switch(num){
case 1:
add(M);//添加学生信息
break;
case 2:
output(M);//显示所有学生的信息
system("pause");
break;
case 3:
del(M);//按姓名进行删除指定学生信息
system("pause");
break;
case 4:
cout<<"请输入查找学生的姓名:";
cin>>u;
lookup(M,u);//按姓名查找指定学生信息
system("pause");
break;
case 5:
cout<<"请输入要修改学生的姓名:";
cin>>v;
alter(M,v);//按照姓名重新修改指定学生信息
system("pause");
break;
case 6:
empty(M);//清空系统中所有信息
system("pause");
break;
case 7://退出当前使用的成绩管理系统
cout<<"成功退出成绩管理系统"<<endl;
a=0;
break;
default:break;
}
system("cls");
}
system("pause");
return 0;
}