学生成绩管理系统(顺序表+链表)

顺序表

#include<iostream>
#include<cstdio>
#include<string>
using namespace std;	//然后在加上这句 



void New_pro();		//新建顺序表
void Log_data();	//录入学生数据
void Inquire();		//查询学生信息
void Insert();		//插入学生信息
void Delete();		//删除学生信息
void Num_of_peo();	//统计学生人数
void Show_all();	//显示所有学生信息
void Menu();		//显示用户界面 

int num=0;	//统计学生人数 
typedef struct Student{
	string no;
	string name;
	int price;
}Student;
Student student[100];

int main(){
	
	printf("欢迎进入学生信息管理系统!\n\t\t\t\t作者:Pibuyi\n\n"); 
	int a;
	
	while(1){
		Menu();
		cout<<"请输入数字选择:";
		cin>>a;
		if(a==1){
			New_pro();
		}else if(a==2){
			Log_data();	
		}else if(a==3){
			Inquire();
		}else if(a==4){
			Insert();	
		}else if(a==5){
			Delete();	
		}else if(a==6){
			Num_of_peo();
		}else if(a==7){
			Show_all();	
		}else break;
	}
	 
	return 0;
}


void Menu(){
	printf("\t\t******************************\n");
	printf("\t\t*         1.新建顺序表       *\n");
	printf("\t\t*         2.录入学生数据     *\n");
	printf("\t\t*         3.查询学生信息     *\n");
	printf("\t\t*         4.插入学生信息     *\n");
	printf("\t\t*         5.删除学生信息     *\n");
	printf("\t\t*         6.统计学生人数     *\n");
	printf("\t\t*         7.显示所有学生信息 *\n");
	printf("\t\t*         8.退出             *\n");
	printf("\t\t******************************\n\n");
	
}

void New_pro(){
	system("cls");
	Student student[100];
	num=0;
	printf("已重新新建顺序表!\n\n");
}

void Log_data(){
	system("cls");
	int n;
	printf("\n请输入学生人数(小于100):");
	cin>>n;
	num=n;
	for(int i=0;i<n;i++){	
		printf("\n请输入第%d个学生的名字:",i+1);
		cin>>student[i].name;	
		printf("                 学号:",i+1);
		cin>>student[i].no;
		printf("                 成绩:",i+1);
		cin>>student[i].price;
		printf("\n");
	}
	system("cls");
	printf("学生信息录入完毕!\n\n");
	
}
void Inquire(){
	system("cls");
	int n,flag=0;
	printf("\t\t1.姓名\n");
	printf("\t\t2.学号\n");
	printf("\t\t3.位置\n\n");
	printf("请选择查询方式:");
	scanf("%d",&n);
	
	if(n==1){
		string st;
		system("cls");
		printf("请输入学生姓名:");
		cin>>st;
		system("cls");
		for(int i=0;i<100;i++){
			if(st==student[i].name){
				flag=1;
				cout<<endl<<st<<"的相关信息如下:\n";
				
				cout<<"学号:"<<student[i].no<<endl;
				cout<<"成绩:"<<student[i].price<<endl<<endl;
			break;
			}
		}
		if(flag==0)
			cout<<"没有找到该学生信息!"<<endl;				
	}
	else if(n==2){
		string st;
		printf("请输入学生学号:");		
		cin>>st;
		system("cls");
		for(int i=0;i<100;i++){
			if(st==student[i].no){
				flag=1;
				cout<<endl<<"学号为"<<st<<"学生的相关信息如下:\n";
				cout<<"名字:"<<student[i].name<<endl;
				cout<<"成绩:"<<student[i].price<<endl<<endl;
				break;
			}
		}
		if(flag==0)
			cout<<"没有找到该学生信息!"<<endl;
	}
	else if(n==3){		
		system("cls");
		int i;
		cout<<"请输入学生的位置:";
		cin>>i;
		if(i<=num){
			printf("已找到该位置学生信息如下:\n\n");
			cout<<"\t\t\t名字:"<<student[i-1].name<<endl;
			cout<<"\t\t\t学号"<<student[i-1].no<<endl;
			cout<<"\t\t\t成绩:"<<student[i-1].price<<endl<<endl;
		}
		else				
			cout<<"没有找到该学生信息!"<<endl;			
	}
	else printf("成功退出!\n");
}

void Insert(){
	int c;
	system("cls") ;
	printf("\n请输入插入位置:");
	cin>>c;
	for(int i=num;i>=c;i--) {
		student[i].name = student[i-1].name ;
		student[i].no = student[i-1].no ;
		student[i].price = student[i-1].price ;
	}
	printf("姓名:"); 
	cin>>student[c-1].name ;
	printf("学号"); 
	cin>>student[c-1].no ;
	printf("成绩:");
	cin>>student[c-1].price ;
	system("cls");
	printf("插入成功!\n\n"); 
	num++;
}

void Delete(){
	system("cls");
	int a;
	printf("请输入删除学生的位置:"); 
	cin>>a;
	for(int i=a-1;i<num-1;i++){
		student[i].name = student[i+1].name ;
		student[i].no = student[i+1].no ;
		student[i].price = student[i+1].price ;
	}
	num--;
}

void Num_of_peo(){
	system("cls");
	cout<<endl<<"学生总人数为:"<<num<<endl<<endl;
}

void Show_all(){
	system("cls");
	
	if(num>=0) {
		printf("共有%d位学生\n\n",num);
		for(int i=0;i<num;i++){
			cout<<"姓名:"<<student[i].name<<endl ;
			cout<<"学号:"<<student[i].no<<endl ;
			cout<<"成绩:"<<student[i].price <<endl<<endl; 
		}
		printf("全部学生信息显示完毕!\n\n");
	}
	else printf("请先录入学生信息!\n\n");
}

链表

#include<iostream>	
#include<cstdio>
#include<string>
#include<windows.h>
using namespace std;

void Menu();		//显示用户界面 
 
typedef struct Student{
	string no;
	string name;
	int score;
	struct Student* next;	//指针域 
}Student;

int n;
Student* New_pro() {
	system("cls");
	struct Student *head,*p1,*p2;
	n=0;
	p1=p2=new Student;	
	printf("已重新新建链表!\n\n请输入学生信息.\n");
	cout<<"输入学生的学号为0时,停止录入.\n"<<endl;
	cout<<"请输入学生学号:" ; 
	cin>>p1->no;
	if(p1->no != "0"){
		printf("请输入学生姓名:");
		cin>>p1->name;
		printf("请输入学生成绩:");
		cin>>p1->score ;
		cout<<endl;
	}
	while(p1->no != "0"){
		n++;
		if(n==1)
			head=p1;
		else
			p2->next = p1;
		p2 =p1;
		p1 =new Student;
		cout<<"请输入学生学号:" ; 
		cin>>p1->no;
		if(p1->no != "0"){
			printf("请输入学生姓名:");
			cin>>p1->name;
			printf("请输入学生成绩:");
			cin>>p1->score ;
			cout<<endl;
		}
	}
	if(p1->no=="0") {
		cout<<"您已退出录入模式!"<<endl;
		system("pause");
		system("cls");
	}
	p2->next =NULL;
	return head;
}

Student* Delete(Student *head,string no){
	Student *p,*q;
	if(head==NULL){
		printf("\nlist null!\n");
        return head;
	}
	p=head;
	while(no!=p->no&&(p->next !=NULL)){
		q=p ;
		p =p->next;
	}
	if(no==p->no){
		printf("\n\n你删除的学生信息为:\n");
		cout<<"\t\t学号:"<<p->no <<endl;
		cout<<"\t\t姓名:"<<p->name <<endl;
		cout<<"\t\t成绩:"<<p->score <<endl<<endl;		
		if(no==head->no ){
			p=head;
			head=head->next ;
			delete p;
		}
		else{
			q->next=p->next ;
			delete p;
		}
		n=n-1;
		cout<<"\n\n已删除学生信息!\n" <<endl; 
		system("pause");
		system("cls");		
	}
	else
		cout<<"输入有误"<<endl;
	
	return head; 
}

Student* Insert(Student* head,Student *stud){
	Student *p0,*p1,*p2;
	p1=head;
	p0=stud;
	if(head==NULL){
		head=p0;
		p0->next =NULL;
	}
	else{
		while((p0->no > p1->no)&&(p1->next != NULL)){	//寻找要插入的结点的前一个 
			p2=p1;
			p1=p1->next ;
		}
		
		if(p0->no <= p1->no){
			if(head==p1)
				head=p0;
			else
				p2->next = p0;
				p0->next=p1;
		}
		else{
			p1->next =p0;
		p0->next =NULL;
		}
	}
	n++;
	cout<<"\n\n已插入学生信息!\n" <<endl; 
	system("pause");
	system("cls");
	return head;
}

void Inquire(Student *head){
	int flag=0;
	Student *p;
	int qw;
	string Name,No;	
	printf("1.姓名.\n2.学号.\n请选择查找方式:");
	cin>>qw;
	if(head==NULL){
		printf("\n\nlist null!\n");
	}
	p=head;
	if(qw==1){
		printf("\n\n请输入要查找的姓名:");cin>>Name; 
		while(p){	
			if(p->name ==Name){			
				cout<<"\n\n已查找到该学生!\n信息如下:\n"<<endl<<"学号:"<<p->no <<endl;
				cout<<"姓名:"<<p->name <<endl;
				cout<<"成绩:"<<p->score <<endl;
				flag=1;
				break;
			}
			p=p->next ;
		} 		
	}
	else if(qw==2){
		printf("请输入要查找的学号:");cin>>No; 
		while(p){	
			if(p->no ==No){		
				cout<<"\n\n已查找到该学生!\n信息如下:\n"<<endl<<"学号:"<<p->no <<endl;	
				cout<<"学号:"<<p->no <<endl;
				cout<<"姓名:"<<p->name <<endl;
				cout<<"成绩:"<<p->score <<endl;
				flag=1;
				break;
			}
			p=p->next ;
		}
	}
	if(flag==0){
		cout<<"没有扎到该学生信息!\n\n";
	}
	system("pause") ;
	system("cls");
}

int Num_of_peo(Student *head){
	Student* p=head;
	int i=0;
	while(p){
		p->next ;
		i++;
		p=p->next ;
	}
	return i;
}

void printMark() {
    string Mark = "欢迎进入学生成绩管理系统";
    string Madeby = "作者:Pibuyi";
	cout<<"\n\n"<<Mark<<","<<Madeby<<endl<<endl<<endl; 
}

void Show_all(Student *head){
	Student* p;
	if(head==NULL){
		printf("\nlist null!\n");
	}
	else{		
		p=head;
		while(p){
			cout<<"姓名:"<<p->name<<endl ; 
			cout<<"学号:"<<p->no<<endl ; 
			cout<<"成绩:"<<p->score<<endl<<endl ; 
			p=p->next ;
		}
	}
	cout<<"全部学生信息已显示完毕!"<<endl;
	system("pause") ;
	system("cls");
}

void Menu(){
	printf("\t\t******************************\n");
	printf("\t\t*         1.新建链表         *\n");
	printf("\t\t*         2.插入学生信息     *\n");
	printf("\t\t*         3.删除学生信息     *\n");
	printf("\t\t*         4.查询学生信息     *\n");
	printf("\t\t*         5.统计学生人数     *\n");
	printf("\t\t*         6.显示所有学生信息 *\n");
	printf("\t\t*         7.退出             *\n");
	printf("\t\t******************************\n\n");
	
}

int main(){
	int choose,n;
	string num;
	Student *head,*p;
	choose=-1;
	printMark();
	Sleep(1000);
	while(1){
		Menu();
		cout<<"请输入数字选择:";
		cin>>choose;
		if(choose==1){
			head=New_pro();		//新建顺序表
		}else if(choose==2){
			system("cls");
			cout<<"请输入要学生的相关信息,输入0将结束\n\n" ;
			p=new Student;
			printf("学号:");
			cin>>p->no ;
			if(p->no !="0"){
				printf("姓名:");cin>>p->name;
				printf("成绩:");cin>>p->score;
				head=Insert(head,p);		//插入学生信息
			}
		}else if(choose==3){
			system("cls");			
			p=new Student;
			printf("\n\n请输入要删除学生学号:");
			cin>>num ;
			head=Delete(head,num);		//删除学生信息
		}else if(choose==4){
			system("cls");
			Inquire(head);		//查询学生信息
		}else if(choose==5){
			cout<<"当前共有: "<<Num_of_peo(head)<<"个学生信息已录入系统!"<<endl;	//统计学生人数
			system("pause");
			system("cls");
		}else if(choose==6){
			system("cls");
			Show_all(head);		//显示所有学生信息
		}
		else break;
	}
	return 0;
}

无文件操作,实力有限0.0

猜你喜欢

转载自blog.csdn.net/Devil_Sjd/article/details/82811591
今日推荐