C++用数组、顺序表的方式做一个学生成绩管理系统

​​​​​​​

//顺序表实现 
#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;
} 

 

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值