📄 学生信息管理系统.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 + -