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


    #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<<"
    
    
    
    
    
    
    "; 
    	cout<<"					**********学生信息管理系统********"<<endl;
    	cout<<"						1.追加学生信息"<<endl;
    	cout<<"						2.删除最后一个学生的信息"<<endl;
    	cout<<"						3.显示学生信息"<<endl;
    	cout<<"						4.删除所有学生信息"<<endl;
    	cout<<"						5.统计学生个数"<<endl;
    	cout<<"						6.将学生信息保存到文件中"<<endl;
    	cout<<"						0.退出"<<endl;
    	cout<<"					请输入操作序号:";
    } 
    void fun1(list<Student> &L){
    	system("cls");
    	cout<<"					************追加学生信息的界面************"<<endl;
    	Student s;
    	int n;
    	cout<<"						请输入要追加的学生个数:";
    	cin>>n;
    	if(n>0){
    		cout<<"					学号,学生姓名,学生性别,学生年龄:
    ";
    	}
    	for(int i=0;i<n;i++){	
    		cout<<"					";
    		cin>>s.num>>s.name>>s.sex>>s.age; 
    		L.push_back(s);
    	}
    	cout<<"					";
    	system("pause");
    	system("cls");
    }
    void fun2(list<Student> &L){
    	system("cls");
    	cout<<"				*********删除最后一个学生的信息界面************"<<endl;
    	if(!L.empty()){
    		L.pop_back();
    		cout<<"					删除成功!"<<endl;
    	}else{
    		cout<<"					数据库为空!"<<endl; 
    	}
    	cout<<"				";
    	system("pause");
    	system("cls");
    }
    void fun3(list<Student> &L){
    	system("cls");
    	cout<<"					*********显示学生信息的界面*********"<<endl;
    	if(L.empty()){
    		cout<<"			数据库为空,无法显示!"<<endl;
    	}else{
    		int i=1;
    		for(list<Student>::iterator it=L.begin();it!=L.end();it++,i++){
    			cout<<"			"<<i<<". 学号:"<<(*it).num<<"	"<<"学生姓名:"<<(*it).name<<"		"<<"学生性别:"<<(*it).sex<<"		"<<"学生年龄:"<<(*it).age<<endl;
    		}
    	} 
    	cout<<"			";
    	system("pause");
    	system("cls");
    }
    void fun4(list<Student> &L){
    	system("cls");
    	cout<<"				*********删除所有学生信息的界面*********"<<endl;
    	if(L.empty()){
    		cout<<"					数据库为空!"<<endl;
    	} else{
    		L.clear();
    		cout<<"					删除成功!"<<endl; 
    	}
    	cout<<"				";
    	system("pause");
    	system("cls");
    }
    void fun5(list<Student> &L){
    	system("cls");
    	cout<<"				*********统计学生人数界面********"<<endl;
    	cout<<"					学生总人数为:"<<L.size()<<endl;
    	cout<<"				";
    	system("pause");
    	system("cls");
    }
    void fun6(list<Student> &L,FILE *fp){
    	system("cls");
    	cout<<"					*********保存界面********"<<endl;
    	fp=fopen("E:\桌面存储位置\a.txt","wb+");
    	if(L.empty()){
    		cout<<"				数据库为空,保存无效!"<<endl;
    	}else{
    		for(list<Student>::iterator it=L.begin();it!=L.end();it++){
    			fprintf(fp,"%s %s %s %d
    ",(*it).num,(*it).name,(*it).sex,(*it).age);
    		}
    		cout<<"				保存成功!"<<endl;
    	} 
    	fclose(fp);
    	cout<<"				"; 
    	system("pause");
    	system("cls");
    } 
    void fun0(){
    	cout<<"					是否退出?(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;
    } 
    

      

  • 相关阅读:
    杭电1212--Big Number
    杭电1407--Integer Inquiry
    杭电1201--18岁生日
    刚刚创建了这个分组, 也想说叨说叨 。
    南阳325--zb的生日
    杭电1239--Calling Extraterrestrial Intelligence Again
    南阳891--找点(区间覆盖)
    杭电1234--开门人和关门人
    杭电1862--EXCEL排序
    模拟:HDU1034-Candy Sharing Game
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/14408739.html
Copyright © 2020-2023  润新知