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

📄 学生信息管理系统.cpp

📁 实现一个学生信息管理系统
💻 CPP
字号:
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/*学生信息管理系统 */
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include<iostream>
#include<fstream>
#include<string>
#include<cstdlib>
using namespace std;
//++++++++++++++++student 类++++++++++++++++++++++++++++++++++++
class Student
{
public:
	Studengt();
	void function()    //功能函数
	{
		int i;
		cout<<"----学生信息管理系统----"<<endl;  //系统功能如下
		cout<<"该系统功能如下:"<<endl;
		cout<<"输入信息按1"<<endl;
		cout<<"显示所有信息按2"<<endl;
		cout<<"查找信息按3"<<endl;
		cout<<"修改信息按4"<<endl;
		cout<<"删除信息按5"<<endl;
		cout<<"请选择你所需要的的服务:";
		cin>>i;
		switch(i)               //功能选择
		{
		case 1:input();break;      //输入函数
		case 2:output();break;     //输出函数 
		case 3:search();break;     //查询函数
		case 4:modify();break;     //修改函数
		case 5:delete1();break;    //删除函数
		}
	}
//*************输入函数的实现*********************************//
	void input()                 //输入功能的函数
	{
		cout<<endl<<"----输入学生的信息----"<<endl;
		cout<<"姓名:";
		cin>>name;
		cout<<"性别:";
		cin>>sex;
		cout<<"出生日期:"<<endl;
		cout<<"年:";
		cin>>year;
        cout<<"月:";
		cin>>month;
		cout<<"日:";
		cin>>day;
		cout<<"民族:";
		cin>>nation;
		cout<<"籍贯:";
		cin>>origin;
		cout<<"学院:";
		cin>>institute;
		cout<<"专业:";
		cin>>profession;
		cout<<"班级:";
		cin>>class1;
		cout<<"学号:";
		cin>>stunumber;
		cout<<"身份证:";
		cin>>ID;
		cout<<"家庭地址:";
		cin>>homeaddress;
		cout<<"联系方式:";
		cin>>telephone;
		cout<<"备注:";
		cin>>addition;
		fstream inout;
		inout.open("file.txt",ios::binary | ios::out | ios::app);
		if(inout.fail())
		{
			cout<<"文件打开错误!"<<endl;
            exit(1);     
		}
		inout.write(name,20);     //用二进制把信息写入
		inout.write(sex,2);
		inout.write((char*)(&year),sizeof(int));
		inout.write((char*)(&month),sizeof(int));
		inout.write((char*)(&day),sizeof(int));
		inout.write(nation,4);
		inout.write(origin,20);
		inout.write(institute,30);
		inout.write(profession,30);
		inout.write((char*)(&class1),sizeof(int));
		inout.write((char*)(&stunumber),sizeof(int));
		inout.write(ID,20);
		inout.write(homeaddress,50);
		inout.write(telephone,15);
		inout.write(addition,100);
		inout.close();
		cout<<"返回上级目录请按1,结束请按2:";   //返回作用,一次操作能实现几个功能
		int i;
		cin>>i;
		cout<<endl;
		switch(i)
		{
		case 1:function();break;
		case 2:;break;
		}
		
	}

//*************输出函数的实现*********************************//
	void output()           //全部输出的函数
	{
		fstream inout;
		inout.open("file.txt",ios::binary | ios::in | ios::beg);
		if(inout.fail())
		{
			cout<<endl<<"该文件还没建立,请先输入信息建立该文件。"<<endl<<endl;
            function();     
		}
		int a=0;    
		int b[1000];          
		cout<<endl<<"----管理系统中的全部学生信息----"<<endl;
		while(!inout.eof())
		{
			static char read_name[20];
		    static char read_sex[2];
		    static int read_year;
		    static int read_month;
			static int read_day;
		    static char read_nation[4];
		    static char read_origin[20];
		    static char read_institute[30];
	 	    static char read_profession[30];
	     	static int read_class1;
	    	static int read_stunumber;
	    	static char read_ID[20];
	    	static char read_homeaddress[50];
	    	static char read_telephone[15];
	    	static char read_addition[100];	
			inout.read(read_name,20);
	    	inout.read(read_sex,2);
	    	inout.read((char*)(&read_year),sizeof(int));
	    	inout.read((char*)(&read_month),sizeof(int));
	    	inout.read((char*)(&read_day),sizeof(int));
	    	inout.read(read_nation,4);
	    	inout.read(read_origin,20);
	    	inout.read(read_institute,30);
	    	inout.read(read_profession,30);
	    	inout.read((char*)(&read_class1),sizeof(int));
	    	inout.read((char*)(&read_stunumber),sizeof(int));
            inout.read(read_ID,20);
	    	inout.read(read_homeaddress,50);
	    	inout.read(read_telephone,15);
	    	inout.read(read_addition,100);
			a++;     //用来提示是第几个学生
		    if(read_year==0&&read_month==0&&read_day==0)    //在删除后因为已经设定空间,为了阻止删除后的信息再显示
			{
				cout<<"第"<<a<<"个学生的信息已经被删除!"<<endl<<endl;
				continue;
			}
			b[a]=read_stunumber;   //定义这个是因为while(!inout.eof())会多执行一次,在这里判断前一次学号和后一次学号是否相同,相同跳出循环
			if(b[a]==b[a-1])
				break;	
			cout<<"第"<<a<<"位学生:"<<endl;
			cout<<"姓名:"<<read_name<<endl;
			cout<<"性别:"<<read_sex<<endl;
			cout<<"出生日期:"<<read_year<<"年"<<read_month<<"月"<<read_day<<"日"<<endl;
			cout<<"民族:"<<read_nation<<endl;
			cout<<"籍贯:"<<read_origin<<endl;
			cout<<"学院:"<<read_institute<<endl;
			cout<<"专业:"<<read_profession<<endl;
			cout<<"班级:"<<read_class1<<endl;
			cout<<"学号:"<<read_stunumber<<endl;
			cout<<"身份证:"<<read_ID<<endl;
			cout<<"家庭地址:"<<read_homeaddress<<endl;
			cout<<"联系方式:"<<read_telephone<<endl;
			cout<<"备注:"<<read_addition<<endl;
			cout<<endl;
			}
		cout<<"返回上级目录请按1,结束请按2:";
	    int i;
	    cin>>i;
		cout<<endl;
	    switch(i)
		{
		case 1:function();break;    //继续后续功能
		case 2:;break;      //跳出
		} 
	}

//*************查询函数的实现*********************************//
	void search()    //查找函数
	{
        static char read_name[20];
	    static char read_sex[2];
	    static int read_year;
	    static int read_month;
		static int read_day;
	    static char read_nation[4];
	    static char read_origin[20];
		static char read_institute[30];
 	    static char read_profession[30];
     	static int read_class1;
		static int read_stunumber;
	   	static char read_ID[20];
	   	static char read_homeaddress[50];
    	static char read_telephone[15];
    	static char read_addition[100];
		int n;
		int recsize=sizeof(read_name)+sizeof(read_sex)+sizeof(int)+sizeof(int)+sizeof(int)+sizeof(read_nation)+sizeof(read_origin)+sizeof(read_institute)+sizeof(read_profession)+sizeof(int)+sizeof(int)+sizeof(read_ID)+sizeof(read_homeaddress)+sizeof(read_telephone)+sizeof(read_addition);  //统计一个学生信息的长度
		fstream inout;
		inout.open("file.txt",ios::binary | ios::in | ios::out);
		if(inout.fail())
		{
			cout<<endl<<"该文件还没建立,请先输入信息建立该文件。"<<endl<<endl;
            function();     
		}
		cout<<endl<<"请输入你要查找第几位学生的信息:";
		cin>>n;
		inout.seekp((n-1)*recsize,ios::beg);	//指针定位这里用n-1是因为方便输入
		inout.read(read_name,20);
		inout.read(read_sex,2);
	   	inout.read((char*)(&read_year),sizeof(int));   //读文件中的信息
	   	inout.read((char*)(&read_month),sizeof(int));
    	inout.read((char*)(&read_day),sizeof(int));
    	inout.read(read_nation,4);
    	inout.read(read_origin,20);
		inout.read(read_institute,30);
	   	inout.read(read_profession,30);
    	inout.read((char*)(&read_class1),sizeof(int));
	   	inout.read((char*)(&read_stunumber),sizeof(int));
        inout.read(read_ID,20);
    	inout.read(read_homeaddress,50);
    	inout.read(read_telephone,15);
		inout.read(read_addition,100);
		if(read_year==0&&read_month==0&&read_day==0)    //在删除后因为已经设定空间,为了阻止删除后的信息再显示
			{
				cout<<"该生信息已经被删除!"<<endl;
			}
		else{
		cout<<endl<<"----该学生的信息----"<<endl;  //输出
		cout<<"姓名:"<<read_name<<endl;
		cout<<"性别:"<<read_sex<<endl;
		cout<<"出生日期:"<<read_year<<"年"<<read_month<<"月"<<read_day<<"日"<<endl;
		cout<<"民族:"<<read_nation<<endl;
		cout<<"籍贯:"<<read_origin<<endl;
		cout<<"学院:"<<read_institute<<endl;
		cout<<"专业:"<<read_profession<<endl;
		cout<<"班级:"<<read_class1<<endl;
		cout<<"学号:"<<read_stunumber<<endl;
		cout<<"身份证:"<<read_ID<<endl;
		cout<<"家庭地址:"<<read_homeaddress<<endl;
		cout<<"联系方式:"<<read_telephone<<endl;
		cout<<"备注:"<<read_addition<<endl;
		cout<<endl;
		}
		cout<<"返回上级目录请按1,结束请按2:";
		int i;
		cin>>i;
		cout<<endl;
		switch(i)
		{
		case 1:function();break;
		case 2:;break;
		}
	}

//*************修改函数的实现*********************************//
	void modify()   //修改函数
	{
		static char read_name[20];
	    static char read_sex[2];
	    static int read_year;
	    static int read_month;
		static int read_day;
	    static char read_nation[4];
	    static char read_origin[20];
		static char read_institute[30];
 	    static char read_profession[30];
     	static int read_class1;
		static int read_stunumber;
	   	static char read_ID[20];
	   	static char read_homeaddress[50];
    	static char read_telephone[15];
    	static char read_addition[100];
		int n;
		int recsize=sizeof(read_name)+sizeof(read_sex)+sizeof(int)+sizeof(int)+sizeof(int)+sizeof(read_nation)+sizeof(read_origin)+sizeof(read_institute)+sizeof(read_profession)+sizeof(int)+sizeof(int)+sizeof(read_ID)+sizeof(read_homeaddress)+sizeof(read_telephone)+sizeof(read_addition);
		fstream inout;
		inout.open("file.txt",ios::binary | ios::in | ios::out);
		if(inout.fail())
		{
			cout<<endl<<"该文件还没建立,请先输入信息建立该文件。"<<endl<<endl;
            function();     
		}
		cout<<endl<<"请输入你要修改第几位学生的信息:";   //定位的位置
		cin>>n;
		cout<<"输入你要修改的信息:"<<endl;
		cout<<"姓名:";
		cin>>name;
		cout<<"性别:";
		cin>>sex;
		cout<<"出生日期:"<<endl;
		cout<<"年:";
		cin>>year;
        cout<<"月:";
		cin>>month;
		cout<<"日:";
		cin>>day;
		cout<<"民族:";
		cin>>nation;
		cout<<"籍贯:";
		cin>>origin;
		cout<<"学院:";
		cin>>institute;
		cout<<"专业:";
		cin>>profession;
		cout<<"班级:";
		cin>>class1;
		cout<<"学号:";
		cin>>stunumber;
		cout<<"身份证:";
		cin>>ID;
		cout<<"家庭地址:";
		cin>>homeaddress;
		cout<<"联系方式:";
		cin>>telephone;
		cout<<"备注:";
		cin>>addition;
		inout.seekp((n-1)*recsize,ios::beg);
		inout.write(name,20);
		inout.write(sex,2);
		inout.write((char*)(&year),sizeof(int));
		inout.write((char*)(&month),sizeof(int));
		inout.write((char*)(&day),sizeof(int));
		inout.write(nation,4);
		inout.write(origin,20);
		inout.write(institute,30);
		inout.write(profession,30);
		inout.write((char*)(&class1),sizeof(int));
		inout.write((char*)(&stunumber),sizeof(int));
		inout.write(ID,20);
		inout.write(homeaddress,50);
		inout.write(telephone,15);
		inout.write(addition,100);
		inout.close();
		cout<<"返回上级目录请按1,结束请按2:";
		int i;
		cin>>i;
		cout<<endl;
		switch(i)
		{
		case 1:function();break;
		case 2:;break;
		}
	}
//*************删除函数的实现*********************************//
	void delete1()
	{
		
		static char read_name[20];
	    static char read_sex[2];
	    static int read_year;
	    static int read_month;
		static int read_day;
	    static char read_nation[4];
	    static char read_origin[20];
		static char read_institute[30];
 	    static char read_profession[30];
     	static int read_class1;
		static int read_stunumber;
	   	static char read_ID[20];
	   	static char read_homeaddress[50];
    	static char read_telephone[15];
    	static char read_addition[100];
		int n;
		int recsize=sizeof(read_name)+sizeof(read_sex)+sizeof(int)+sizeof(int)+sizeof(int)+sizeof(read_nation)+sizeof(read_origin)+sizeof(read_institute)+sizeof(read_profession)+sizeof(int)+sizeof(int)+sizeof(read_ID)+sizeof(read_homeaddress)+sizeof(read_telephone)+sizeof(read_addition);
		strcpy(name,"");    //删除我是用空字符和0来代表的,在显示的时候有个判断碰到year==0跳出
		strcpy(sex,"");
		year=0;
		month=0;
		day=0;
		strcpy(nation,"");
		strcpy(origin,"");
        strcpy(institute,"");
		strcpy(profession,"");
		class1=0;
		stunumber=0;
		strcpy(ID,"");
		strcpy(homeaddress,"");
		strcpy(telephone,"");
	    strcpy(addition,"");
		fstream inout;
		inout.open("file.txt",ios::binary | ios::in | ios::out);
		if(inout.fail())
		{
			cout<<endl<<"该文件还没建立,请先输入信息建立该文件。"<<endl<<endl;
            function();     
		}
		cout<<endl<<"请输入你要删除第几位学生的信息:";
		cin>>n;
		inout.seekp((n-1)*recsize,ios::beg);
		inout.write(name,20);
		inout.write(sex,2);
		inout.write((char*)(&year),sizeof(int));
		inout.write((char*)(&month),sizeof(int));
		inout.write((char*)(&day),sizeof(int));
		inout.write(nation,4);
		inout.write(origin,20);
		inout.write(institute,30);
		inout.write(profession,30);
		inout.write((char*)(&class1),sizeof(int));
		inout.write((char*)(&stunumber),sizeof(int));
		inout.write(ID,20);
		inout.write(homeaddress,50);
		inout.write(telephone,15);
		inout.write(addition,100);
		inout.close();
		cout<<endl<<"该学生删除成功"<<endl<<endl;
		cout<<"返回上级目录请按1,结束请按2:";
		int i;
		cin>>i;
		cout<<endl;
		switch(i)
		{
		case 1:function();break;
		case 2:;break;
		}

	}
	
private:
	char name[20];           //私有变量
	char sex[2];
	char nation[4];
	char origin[20];
	char institute[30];
	char profession[30];
	char ID[20];
	char homeaddress[50];
	char telephone[15];
	char addition[100];
	int year,month,day,class1,stunumber;
};
//*************main函数的实现*********************************//
void main()
{
	Student a;    //定义对象
	a.function();    //执行功能函数
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

⌨️ 快捷键说明

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