c++学生信息管理系统源码

//采用分文件编写
//学生信息管理系统主函数
//******************
#include <iostream>
#include "Admin.h"
int main()
{
	Admin a;
	a.load();
	a.start();
	return 0;
 }

//******************
//Admin.h
//******************

#include "Student.h"
class Admin
{
	private:
		
	public:
		Admin();
		Student *s[100];
		void load();
		void start(); 
		void add();
		void save();
		void showAll(); //所有学生信息 
		void Del();//删除学生信息 
		void change();
		void search();
		void searchByNum();
		void searchByName();
		void Avgscore(); 
};

//******************
//Admin.cpp
//******************

#include"Admin.h" 
void Admin::load() 
{
	ifstream fin("d:/1.txt",ios::in);
	if(!fin)
	{
		cerr<<"读取文档失败"<<endl;
		return;
	}
	int num;
	string name;
	char sex;
	float score;
	int i=0;
	while(i<100)
	{
		fin>>name;
		fin>>num;//fin对文件的内容进行读操作 头文件<ifstream> 
		fin>>sex;
		fin>>score;
		if(fin.eof())//eof表示文件或标准输入的结尾 
		{
			break;
		}
		s[i] = new Student(name,num,sex,score);
		i++;
	}
	cout<<"读档完成"<<endl;
	fin.close();
}
Admin::Admin()
{
	for(int i=0;i<100;i++)
	{
		s[i] = NULL;//初始化数组为空 
	}
}
void Admin::add()//增加 
{
	int num;
	string name;
	float score;
	char sex;
	cout<<"请输入姓名:"<<endl;
	cin>>name;
	cout<<"请输入学号:"<<endl;
	cin>>num; 
	cout<<"请输入性别(b/g):"<<endl;
	cin>>sex;
	cout<<"请输入成绩:"<<endl;
	cin>>score;
	for(int i=0;i<100;i++)
	{
		if(s[i]==NULL)
		{
			s[i] = new Student(name,num,sex,score);
			break;
		}
	}
	cout<<"添加完成!"<<endl;
}
void Admin::save()
{
	ofstream fout("d:/1.txt",ios::out);
	if(!fout)
	{
		cerr<<"无法打开文件 存档失败!"<<endl;
	}
	for(int i=0;i<100;i++)
	{
		if(s[i]==NULL)
		{
			break;
		}
		s[i]->saveToFile(fout);//只能用指向不能用点,因为指向对象为指针 
	}
	cout<<"存档成功!"<<endl;
	fout.close();
}
void Admin::showAll()//输出信息 
{
	cout<<"**全部学生信息**"<<endl;
	cout<<"****姓名**"<<"**学号**"<<"**性别**"<<"**成绩****"<<endl; 
	for(int i=0;i<100;i++)
	{
		if(s[i]==NULL)
		{
			break;
		}
		s[i]->display();
	}
	cout<<endl;
}
void Admin::Del()//删除信息 
{
	string name;
	cout<<"请输入要删除的学生姓名"<<endl;
	cin>>name;
	string input;
	int i;
	for(int i=0;i<100;i++)
	{
		if(s[i]==NULL)
		{
			cout<<"查无此人!"<<endl;
			return; 
		}
	    if(s[i]->isEqual1(name))
	    {
	 	     s[i]->display();
	 	     cout<<"确认删除吗?y/n"<<endl;
		     cin>>input;
		     if(input=="y")
		     {
		   	     delete s[i];
		   	     for(int j=i+1;j<100;j++)
		   	     {
		   		    if(s[j]==NULL)
		   		    {
		   			   s[j-1] = NULL;
		   			   break;
				    }
				    s[j-1] = s[j];
		        }
		        cout<<"删除成功"<<endl;
				return; 
		     }
			 else
			 {
			    cout<<"取消删除操作"<<endl; 
			 }
			 break; 
	    }
		
    }
}
void Admin::change()//更改信息 
{
	string name;
	float score;
	int num;
	char sex;
	cout<<"请输入修改学生的姓名"<<endl;
	cin>>name;
	for(int i=0;i<100;i++)
	{
		if(s[i] == NULL)
		{
			cout<<"查无此人"<<endl;
			return;
		}
		if(s[i]->isEqual1(name))
		{
			s[i]->display();
			cout<<"请选择您想更改的信息"<<endl;
			cout<<"1.学号   2.性别   3.成绩   4.退出程序"<<endl;
			int a;
			while(cin>>a)
			{
			  if(a==1)
			  {
		        cout<<"请更改学生的学号:"<<endl;
			    cin>>num;
			    s[i]->set1(num);
		      }
		       if(a==2)
		      {
			    cout<<"请更改学生的性别:"<<endl;
			    cin>>sex;
			    s[i]->set2(sex);
		      } 
		      if(a==3)
		      {
			    cout<<"请更改学生的成绩:"<<endl;
			    cin>>score;
			    s[i]->set3(score);
		      }
		      if(a==4)
			  {
				 break;
			  }
		    }
			cout<<"修改完成,以下为修改后的数据"<<endl;
			s[i]->display();
			break;
		}
	}
}
void Admin::searchByNum()//按学号查询 
{
	cout<<"请输入所查学生学号"<<endl; 
	int num;
	int i;
	cin>>num;
	for(int i=0;i<100;i++)
	{
	if(s[i] == NULL )
	{
		cout<<"查无此人"<<endl;
		return;
	}
	if(s[i]->isEqual(num)) 
	{
		s[i]->display();
		break;
	 } 
    }
 } 
void Admin::searchByName() //按姓名查询 
{
	int n=0;
	string name;
	cout<<"请输入查询姓名:"<<endl;
	cin>>name;
	for(int i=0;i<100;i++)
	{
		if(s[i]==NULL)
		{
			break;
		}
		if(s[i]->isEqual1(name))
		{
			s[i]->display();
			n++;
		}
   }
	if(n==0)
	{
		cout<<"未找到所查询学生"<<endl;
	}
	else
	{
		cout<<endl;
		cout<<"共找到"<<n<<"条记录"<<endl;
	}
}
void Admin::search()//查询 
{
	cout<<"请输入查询方式"<<endl;
	cout<<"1.按学号查询 2.按姓名查询 "<<endl;
	int input;
	cin>>input;
	switch(input)
	{
		case 1:
			searchByNum();
			break;
			case 2:
				searchByName();
				break;
				case 3:
					return;
					break;
	} 
}
void Admin::Avgscore()// 求平均成绩 
{   
    double sum = 0;
    double ave = 0;
    int j = 0;
	for(int i=0;i<100;i++)
	{
		if(s[i]==NULL)
		{    
			break;
		}
		sum+=s[i]->score;
		j++;
		
	}
	ave = sum/j;
	cout<<"平均分为:"<<ave<<endl;
}
void Admin::start() //输出界面 
{
	int inputNum;
	cout<<"*************************"<<endl;
	cout<<"欢迎使用学生信息管理系统"<<endl;
	while(1)
	{
	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;
	cin>>inputNum;
        switch(inputNum)
	    {
	     	case 1:
	     		add();
	     		save();
		    	break;
		    case 2:
		    	Del();
		    	save();
		    	break;
		    case 3:
		    	change();
		    	save();
		    	break;
		    case 4:
		         search();  
		    	break;
		    case 5:
		    	showAll();
		    	break;
		    case 6:
		    	Avgscore();
		    	break;
		    case 7:
		    	cout<<"退出成功"<<endl;
		    	return;
		    	break;
	    }
    }
}

//******************
//student.h
//******************

#include<iostream>
#include<string.h>
#include<fstream> 
using namespace std;
class Student
{
	public:
		Student();
		Student(string name,int num,char sex,float score);
		void saveToFile(ofstream &);
		void display();
		bool isEqual(int);
		bool isEqual1(string);
		void set(string ,int ,char ,float ); 
		void set1(int );
		void set2(char );
		void set3(float );
		float score;
	private: 
		string name;
		int num;
		char sex; 
};

//******************
//student.cpp
//******************

#include "Student.h" 
Student::Student()
{
	
}
Student::Student(string n,int n1,char s,float s1)
{
	name = n;
	num = n1;
	sex = s;
	score = s1;
}
bool Student::isEqual(int n)
{
	if(num==n)
	{
		return true;
	}
	else
	return false;
}
bool Student::isEqual1(string n)
{
	if(name==n)
	{
		return true;
	}
	else
	return false;
}
void Student::set(string n,int n1,char s,float s1)
{
	name = n;
	num = n1;
	sex = s;
	score = s1;
}
void Student::set1(int n1)
{
	num = n1;
}
void Student::set2(char s)
{
	sex = s;
}
void Student::set3(float s1)
{
	score = s1;
}
void Student::saveToFile(ofstream &fout)
{
	fout<<name<<" "<<num<<" "<<sex<<" "<<score;
}
void Student::display()
{
	cout<<"    "<<name<<"      "<<num<<"       "<<sex<<"       "<<score;
	cout<<endl;
} 

希望大佬指点!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值