码迷,mamicode.com
首页 > 其他好文 > 详细

list容器实现简易的学生管理系统

时间:2021-02-19 13:03:05      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:public   clu   can   信息   char   文件   管理   def   clear   

#include<iostream>
#include<list>
#include<string> 
#include<cstdio>
using namespace std;
//使用list(双向链表)容器对象实现简单的学生管理系统 
//list简单使用 

class Student{    //学生基本信息结构 
	public:
		char num[20]; //学号 
		char name[20];  //姓名 
		char sex[10];  //性别 
		int age; 	//年龄 
		
};
void menu(){
	cout<<"\n\n\n\n\n\n\n"; 
	cout<<"\t\t\t\t\t**********学生信息管理系统********"<<endl;
	cout<<"\t\t\t\t\t\t1.追加学生信息"<<endl;
	cout<<"\t\t\t\t\t\t2.删除最后一个学生的信息"<<endl;
	cout<<"\t\t\t\t\t\t3.显示学生信息"<<endl;
	cout<<"\t\t\t\t\t\t4.删除所有学生信息"<<endl;
	cout<<"\t\t\t\t\t\t5.统计学生个数"<<endl;
	cout<<"\t\t\t\t\t\t6.将学生信息保存到文件中"<<endl;
	cout<<"\t\t\t\t\t\t0.退出"<<endl;
	cout<<"\t\t\t\t\t请输入操作序号:";
} 
void fun1(list<Student> &L){
	system("cls");
	cout<<"\t\t\t\t\t************追加学生信息的界面************"<<endl;
	Student s;
	int n;
	cout<<"\t\t\t\t\t\t请输入要追加的学生个数:";
	cin>>n;
	if(n>0){
		cout<<"\t\t\t\t\t学号,学生姓名,学生性别,学生年龄:\n";
	}
	for(int i=0;i<n;i++){	
		cout<<"\t\t\t\t\t";
		cin>>s.num>>s.name>>s.sex>>s.age; 
		L.push_back(s);
	}
	cout<<"\t\t\t\t\t";
	system("pause");
	system("cls");
}
void fun2(list<Student> &L){
	system("cls");
	cout<<"\t\t\t\t*********删除最后一个学生的信息界面************"<<endl;
	if(!L.empty()){
		L.pop_back();
		cout<<"\t\t\t\t\t删除成功!"<<endl;
	}else{
		cout<<"\t\t\t\t\t数据库为空!"<<endl; 
	}
	cout<<"\t\t\t\t";
	system("pause");
	system("cls");
}
void fun3(list<Student> &L){
	system("cls");
	cout<<"\t\t\t\t\t*********显示学生信息的界面*********"<<endl;
	if(L.empty()){
		cout<<"\t\t\t数据库为空,无法显示!"<<endl;
	}else{
		int i=1;
		for(list<Student>::iterator it=L.begin();it!=L.end();it++,i++){
			cout<<"\t\t\t"<<i<<". 学号:"<<(*it).num<<"\t"<<"学生姓名:"<<(*it).name<<"\t\t"<<"学生性别:"<<(*it).sex<<"\t\t"<<"学生年龄:"<<(*it).age<<endl;
		}
	} 
	cout<<"\t\t\t";
	system("pause");
	system("cls");
}
void fun4(list<Student> &L){
	system("cls");
	cout<<"\t\t\t\t*********删除所有学生信息的界面*********"<<endl;
	if(L.empty()){
		cout<<"\t\t\t\t\t数据库为空!"<<endl;
	} else{
		L.clear();
		cout<<"\t\t\t\t\t删除成功!"<<endl; 
	}
	cout<<"\t\t\t\t";
	system("pause");
	system("cls");
}
void fun5(list<Student> &L){
	system("cls");
	cout<<"\t\t\t\t*********统计学生人数界面********"<<endl;
	cout<<"\t\t\t\t\t学生总人数为:"<<L.size()<<endl;
	cout<<"\t\t\t\t";
	system("pause");
	system("cls");
}
void fun6(list<Student> &L,FILE *fp){
	system("cls");
	cout<<"\t\t\t\t\t*********保存界面********"<<endl;
	fp=fopen("E:\\桌面存储位置\\a.txt","wb+");
	if(L.empty()){
		cout<<"\t\t\t\t数据库为空,保存无效!"<<endl;
	}else{
		for(list<Student>::iterator it=L.begin();it!=L.end();it++){
			fprintf(fp,"%s %s %s %d\n",(*it).num,(*it).name,(*it).sex,(*it).age);
		}
		cout<<"\t\t\t\t保存成功!"<<endl;
	} 
	fclose(fp);
	cout<<"\t\t\t\t"; 
	system("pause");
	system("cls");
} 
void fun0(){
	cout<<"\t\t\t\t\t是否退出?(y是,n不是):";
	char ch;
	cin>>ch;
	switch(ch){
		case ‘y‘:{
			exit(0);
			break;
		}
		case ‘n‘:{
			system("cls");
			break;
		}
	} 
}

int main()
{
	FILE *fp;	//定义一个文件结构体的指针 
	Student stu;
	list<Student> L;
	list<Student>::iterator pos;
	char ch;
	if((fp=fopen("E:\\桌面存储位置\\a.txt","r+"))==NULL){
		
	} 
	else{
		fscanf(fp,"%s%s%s%d",stu.num,stu.name,stu.sex,&stu.age);
		while(!feof(fp)){ //feof(fp)用于判断文件是否到结尾,是返回0 
		//使用feof一定要先读一次 
			L.push_back(stu);
			fscanf(fp,"%s%s%s%d",stu.num,stu.name,stu.sex,&stu.age);
		}
		fclose(fp);
	}
	while(1){
		menu();
		cin>>ch;
		switch(ch){
			case ‘1‘:{
				fun1(L);
				break;
			}
			case ‘2‘:{
				fun2(L);
				break;
			}
			case ‘3‘:{
				fun3(L);
				break;
			}
			case ‘4‘:{
				fun4(L);
				break;
			}
			case ‘5‘:{
				fun5(L);
				break;
			}
			case ‘6‘:{
				fun6(L,fp);
				break;
			}
			case ‘0‘:{ 
				fun0();
				break;
			}
			default:{
				system("cls");
				break;
			}
		} 
	}
	return 0;
} 

  

list容器实现简易的学生管理系统

标签:public   clu   can   信息   char   文件   管理   def   clear   

原文地址:https://www.cnblogs.com/nanfengnan/p/14408739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!