⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 student.cpp

📁 用visual c++编程的学生管理系统,实现添加 删除......功能
💻 CPP
字号:
#include <iostream> 
#include <string> 
#include<fstream> 
#include<iomanip> 
using namespace std; 
int amount=0; //记录学生个数 
ofstream *file[50]; 
struct score 
{ 
	float czxt; 
	float sjjg; 
	float jsj; 
	float yy; 
	float gl;  
	struct score *next; 
}; 

class student 
{ 
public: 
	string num; 
	string name; 
	score sc;    //期末成绩; 
	class student *next; 
}; 
void input(student *head); //录入 
void search1(student *head); //姓名查询 
void search2(student *head); //学号查询 
void change(student *head); //修改 
void shanchu(student *head); //删除 
void get(student *head); //取数据 
void display(); //显示菜单 
void show(student *head); //显示数据 
void readin(student *head); //保存数据 
void chushihua(student *head); //初始化 
void main() //主函数 
{ 
	system("color f5"); 
	char x; 
	bool flag2=0; 
	student *head=new student; //初始化学生数据 
	head->next=NULL; 
	cout<<" ★ 欢迎使用学生信息管理系统 ★ \n "; 
	display(); //显示菜单 
	do 
	{ 
		do 
		{ 
			cin>>x; 
			if((x>='0'&&x<='8')) 
				flag2=1; 
			else 
			{ 
				cout<<"指令错误!"<<endl; 
				cout<<"请选择相应的数字进行操作: "; 
			} 
		}while(flag2==0); 
		switch(x) 
		{ 
		case '0':cout<<"******************************现在进行学生信息录入******************************\n"; 
			input(head); 
			cout<<"输入的学生信息为:\n"; 
			show(head); 
			cout<<"********************************************************************************\n"; 
			display(); break; 
		case '1': 
			{ 
				char z; 
				cout<<"******************************现在进行学生信息查询******************************\n"; 
				cout<<"请选择查询方式:"; 
				cout<<"(0).姓名查询;(1).学号查询:";
				cin>>z; 
				while(z!='0'&&z!='1') 
				{ 
					cout<<"指令错误<请选择(0)或者(1)>!"<<endl; 
					cout<<"请选择查询方式:(0).姓名查询;(1).学号查询:";
					cin>>z; 
				} 
				switch(z) 
				{ 
				case '0': search1(head);break;//按姓名查询 
				case '1': search2(head);break;//按学号查询 
				} 
				cout<<"********************************************************************************\n"; 
				display(); 
				break; 
			} 
		case '2': cout<<"***********************现在进行学生信息修改************************************\n"; 
			change(head); 
			cout<<"********************************************************************************\n"; 
			display(); break; //按姓名修改 
		case '3': cout<<"***********************现在进行学生信息删除************************************\n"; 
			shanchu(head); 
			show(head); 
			cout<<"********************************************************************************\n"; 
			display(); 
			break; //删除 
		case '4': cout<<"***********************现在进行显示学生信息***********************************\n"; 
			show(head); 
			cout<<"********************************************************************************\n"; 
			display(); 
			break; //显示数据 
		case '5':cout<<"************************现在进行初始化学生信息****************************\n"; 
			chushihua(head); 
			cout<<"********************************************************************************\n"; 
			display() ; 
			break; 
		case '6':cout<<"***********************现在进行保存学生信息******************************\n"; 
			readin(head); 
			cout<<"********************************************************************************\n"; 
			display(); 
			break; 
		case '7': 
			cout<<"********************************************************************************\n"; 
			cout<<" ¤ 您已退出学生信息管理系统, 谢谢您的使用! ¤ \n"; 
			cout<<"********************************************************************************\n"; 
			cout<<endl; 
			exit(0); 
			break; 
		} 
	}while(flag2==1); 
} 

void display() 
{ 
	cout<<" ++++++++++**********++++++++++**********++++++++++\n"; 
	cout<<" $ 菜 单 $\n"; 
	cout<<" $ ^^^^^^^^^^ $\n"; 
	cout<<" $ 请选择: $\n"; 
	cout<<" $ [0]-录入; [1]-查询; [2]-修改; $\n"; 
	cout<<" $ [3]-删除; [4]-显示; [5]-初始化; $\n"; 
	cout<<" $ [6]-保存; [7]-退出; $\n"; 
	cout<<" **********++++++++++**********++++++++++**********\n"; 
	cout<<" 请选择相应的数字进行操作: "; 
} 
/////////////////////////////////*初始化学生数据*//////////////////////////////////////// 
void chushihua(student *head) 
{ 
	int j=0;char c; 
	cout<<"注意:初始化操作将删除<总评成绩.txt>文件中的所有信息!!!!!!\n"; 
	cout<<"是否继续操作?(y/n):";cin>>c; 
	if (c='y') 
	{ 
		amount=1; 
		file[j]=new ofstream("F:\\课设\\总评成绩.txt",ios::out); 
	} 
	cout<<"......成功清除<总评成绩.txt>的信息\n "; 
} 
/////////////////////////////////*显示学生数据*//////////////////////////////////////// 
void show(student *head) 
{ 
	student *stu=head; 
	cout<<"|  学号  | 姓名 | 操作系统 | 数据结构 | 计算机| 英语 | 概率论 |"<<endl; 
	while(stu->next!=NULL) 
	{ 
		stu=stu->next; 
		cout<<"| "<<setw(6)<<(*stu).num; 
		cout<<" | "<<setw(4)<<(*stu).name; 
		cout<<" | "<<setw(6)<<(*stu).sc.czxt; 
		cout<<" | "<<setw(6)<<(*stu).sc.sjjg; 
		cout<<" | "<<setw(5)<<(*stu).sc.jsj; 
		cout<<" | "<<setw(4)<<(*stu).sc.yy; 
		cout<<" | "<<setw(5)<<(*stu).sc.gl;  
		cout<<" | "<<endl; 
	} 
} 
/////////////////////////////////*保存学生数据*//////////////////////////////////////// 
void readin(student *head) 
{ 
	char a; 
	student *stu=head->next; 
	cout<<"现在保存输入学生数据,是否继续操作?(y/n)"; 
	cin>>a; 
	ofstream outfile("F:\\课设\\总评成绩.txt",ios::out); 
	if(! outfile) 
	{ 
		cout<<"打开文件错误!!!!!!!\n"; 
		exit(0); 
	} 
	while(a!='n') 
	{ 
		while(stu!=NULL) 
		{ outfile<<"************************第"<<amount<<"个学生的数据:*************************\n"; 
		outfile<<"|  学号  | 姓名 | 操作系统 | 数据结构 | 计算机| 英语 | 概率论 |"<<endl; 
		outfile<<" 期末成绩: \n" 
			<<"| "<<setw(6)<<(*stu).num<<" | "<<setw(4)<<(*stu).name<<" | "<<setw(6)<<(*stu).sc.czxt<< 
			" | "<<setw(6)<<(*stu).sc.sjjg<<" | "<<setw(5)<<(*stu).sc.jsj<<" | "<<setw(4)<<(*stu).sc.yy 
			<<" | "<<setw(5)<<(*stu).sc.gl<<endl;  
		amount++; 
		stu=stu->next; 
		} 
		break; 
	} 
	cout<<"......成功将学生数据保存到<总评成绩.txt>中! "; 
	outfile.close(); 
} 
/////////////////////////////////*录入学生数据*//////////////////////////////////////// 
void input(student *head) 
{ 
	char c; 
	int j=0; 
	student *p=head; 
	file[j]=new ofstream("F:\\课设\\总评成绩.txt",ios::app); 
	do 
	{ 
		student *stu=new student; 
		cout<<"请输入学号:"<<setw(9);
		cin>>(*stu).num; 
		cout<<"请输入姓名:"<<setw(20);
		cin>>(*stu).name; 
		cout<<"请输入操作系统成绩:"<<setw(2); 
		cin>>(*stu).sc.czxt; 
		cout<<"请输入数据结构成绩:"<<setw(2); 
		cin>>(*stu).sc.sjjg; 
		cout<<"请输入计算机成绩:"<<setw(2); 
		cin>>(*stu).sc.jsj; 
		cout<<"请输入英语成绩:"<<setw(2); 
		cin>>(*stu).sc.yy; 
		cout<<"请输入概率论成绩:"<<setw(2); 
		cin>>(*stu).sc.gl; 
		stu->next=p->next; 
		p->next=stu; 
		amount++; 
		cout<<"数据录入成功,想继续录入吗(y/n)"; cin>>c; 
		p=p->next; 
		while(c!='y'&&c!='n') 
		{ 
			cout<<"指令错误<请输入y/n!>!!!!!!"<<endl; 
			cout<<"数据录入成功,想继续录入吗(y/n)"; 
			cin>>c; 
		} 
	}while(c=='y'); 
	j++; 
	cout<<"输入了 "<<amount<<"个学生的信息."<<endl; 
} 
/////////////////////////////////*使用姓名查询学生数据*//////////////////////////////////////// 
void search1(student *head)//姓名查询 
{ 
	char c; 
	string name; 
	do 
	{ 
		student *stu=head->next; 
		bool flag=0; 
		cout<<"请输入你要查询的学生姓名:"; 
		cin>>name; 
		do{ 
			if(stu!=NULL&&name==(*stu).name) //输出总成绩 
			{ 
				flag=1; 
				cout<<"您要查询的学生是:"<<stu->name<<endl; 
				cout<<"|  学号  | 姓名 | 操作系统 | 数据结构 | 计算机| 英语 | 概率论 |"<<endl; 
						cout<<"| "<<setw(4)<<(*stu).num; 
		cout<<" | "<<setw(6)<<(*stu).name; 
		cout<<" | "<<setw(6)<<(*stu).sc.czxt; 
		cout<<" | "<<setw(6)<<(*stu).sc.sjjg; 
		cout<<" | "<<setw(5)<<(*stu).sc.jsj; 
		cout<<" | "<<setw(4)<<(*stu).sc.yy; 
		cout<<" | "<<setw(5)<<(*stu).sc.gl;  
		cout<<" | "<<endl;  
			} 
			stu=stu->next; 
		}while(stu!=NULL); 
		if(flag==0) 
			cout<<"对不起!您要查询的学生不存在!"<<endl; 
		cout<<"您想继续查询吗?(y/n)"; cin>>c; 
		while(c!='y'&&c!='n') 
		{ 
			cout<<"指令错误<请输入y/n>!"<<endl; 
			cout<<"您想继续查询吗?(y/n)"; 
			cin>>c; 
		} 
	} while(c=='y'); 
} 
/////////////////////////////////*用学号查询学生数据*//////////////////////////////////////// 
void search2(student *head)//学号查询 
{ 
	char c;
	string no; 
	do 
	{ 
		student *stu=head->next; 
		int flag=0; 
		cout<<"请输入你要查询的学生学号:"; 
		cin>>no; 
		do 
		{ 
			if(stu!=NULL&&no==(*stu).num) 
			{ 
				flag=1; 
				cout<<"您要查询的学生是:"<<stu->name<<endl; 
				cout<<"|  学号  | 姓名 | 操作系统 | 数据结构 | 计算机| 英语 | 概率论 |"<<endl; 
						cout<<"| "<<setw(4)<<(*stu).num; 
		cout<<" | "<<setw(6)<<(*stu).name; 
		cout<<" | "<<setw(6)<<(*stu).sc.czxt; 
		cout<<" | "<<setw(6)<<(*stu).sc.sjjg; 
		cout<<" | "<<setw(5)<<(*stu).sc.jsj; 
		cout<<" | "<<setw(4)<<(*stu).sc.yy; 
		cout<<" | "<<setw(5)<<(*stu).sc.gl;  
		cout<<" | "<<endl; 
			} 
			stu=stu->next; 
		}while(stu!=NULL); 
		if(flag==0) 
			cout<<"对不起!您要查询的学生不存在!!!!!!!"<<endl; 
		cout<<"您想继续查询吗?(y/n)"; 
		cin>>c; 
		while(c!='y'&&c!='n') 
		{ 
			cout<<"指令错误<请输入y/n>!"<<endl; 
			cout<<"您想继续查询吗?(y/n)"<<endl; 
			cin>>c; 
		} 
	}while(c=='y'); 
} 
/////////////////////////////////*修改学生数据*//////////////////////////////////////// 
void change(student *head) 
{ 
	string name; 
	char c; 
	do 
	{ 
		bool flag2=0; 
		student *stu=head ; 
		score sc; 
		cout<<"请输入您要修改的学生的姓名:"; 
		cin>>name; 
		do 
		{ 
			if(name==(*stu).name) 
			{ 
				flag2=1; 
				cout<<"请输入新的操作系统成绩):"; 
				cin>>sc.czxt; 
				cout<<"请输入新的数据结构成绩:"; 
				cin>>sc.sjjg; 
				cout<<"请输入新的计算机成绩:"; 
				cin>>sc.jsj; 
				cout<<"请输入新的英语成绩:"; 
				cin>>sc.yy; 
				cout<<"请输入新的概率论成绩:"; 
				cin>>sc.gl; 
				cout<<"|  学号  | 姓名 | 操作系统 | 数据结构 | 计算机| 英语 | 概率论 |"<<endl; 
						cout<<"| "<<setw(4)<<(*stu).num; 
		cout<<" | "<<setw(6)<<(*stu).name; 
		cout<<" | "<<setw(6)<<(*stu).sc.czxt; 
		cout<<" | "<<setw(6)<<(*stu).sc.sjjg; 
		cout<<" | "<<setw(5)<<(*stu).sc.jsj; 
		cout<<" | "<<setw(4)<<(*stu).sc.yy; 
		cout<<" | "<<setw(5)<<(*stu).sc.gl;  
		cout<<" | "<<endl; 
				cout<<".......数据修改成功!\n"; 
				break; 
			} 
			stu=stu->next; 
		}while(stu!=NULL); 
		if(flag2==0) 
		{ 
			cout<<"对不起!您要修改的学生不存在!请检查重新输入!"<<endl; 
		} 
		cout<<"想继续修改吗?(y/n)"; 
		cin>>c; 
		if(c!='y'&&c!='n') 
		{ 
			cout<<"指令错误!请重新输入<y/n>!"; 
			cin>>c; 
		} 
	}while(c=='y'); 
	
} 
/////////////////////////////////*删除学生数据*//////////////////////////////////////// 
void shanchu(student *head)//学号 
{ 
	char c;
	string no; 
	do 
	{ 
		int flag=0; 
		cout<<"请输入你要删除的学生学号:"; 
		cin>>no; 
		student *q,*p; 
		q=head; 
		while(q->next!=NULL&&q->next->num!=no) 
			q=q->next; 
		if(q->next!=NULL) 
		{ 
			flag=1; 
			p=q->next; 
			q->next=q->next->next; 
			amount--; 
			free(p); 
			cout<<"......成功删除! "; 
		} 
		if(flag==0) 
			cout<<"对不起!您要删除的学生不存在!"<<endl; 
		cout<<"您想继续删除吗?(y/n)"; 
		cin>>c; 
		while(c!='y'&&c!='n') 
		{ 
			cout<<"指令错误<请输入y/n>!"<<endl; 
			cout<<"您想继续删除吗?(y/n)"; 
			cin>>c; 
		} 
	}while(c=='y'); 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -