学生信息管理系统 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生
发布网友
发布时间:2022-04-29 19:02
我来回答
共1个回答
热心网友
时间:2023-10-30 22:02
// 信息管理系统.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "iostream"
#include "string"
#include "fstream"
#include "conio.h"
using namespace std;
class Student // 定义了一个学生的类
{
public:
char Num[20]; //学生信息所包含的信息
char Name[20];
char Sex[20];
char Born[20];
char Col[20];
Student *Next;
void Input();
void Display();
void Read(istream &in);
};
void Student::Display() // 输出学生信息
{
//cout<<"**学号** "<<"**姓名** "<<"**性别** "<<"**出生年月** "<<"**学院** "<<"\n";
cout << Num << "\n"<<Name << "\n"<<Sex<<"\n"<<Born <<"\n"<<Col<<"\n"<<endl;
}
void Student::Input() // 输入学生信息
{
cout<<"输入学生的学号: ";
cin >>Num;
cout<<"输入学生的姓名: ";
cin >>Name;
cout<<"输入学生的性别: ";
cin >>Sex;
cout<<"输入学生的出生年月: ";
cin >>Born;
cout<<"输入学生的学院: ";
cin >>Col;
}
void Student::Read(istream &in)// 从文件中读取信息
{
in>>Num>>Name>>Sex>>Born>>Col;
}
// *******建立学生信息的类
class Studentinformation
{
public:
Studentinformation();
~Studentinformation();
Student *Head,*End;
void Menu();
void Find();
void Save();
void Modify();
void Delect();
void Swap(Student *,Student *);
void Sort();
void Displaym();
/*{
ifstream infile("student.txt");
//Student *p=Head->Next;p!=End;p=p->Next
for(Student *p=Head->Next;p!=End;p=p->Next)
{
//infile.read((char *)p,sizeof(p));
p->Display();
}
infile.close();
cout <<"输入任意字符以继续";
getch();
}*/
void Add();
/*{
//End->Next=new Student;
//End=End->Next;
Student *p;
p=End;
ofstream outfile("student.txt");
End->Input();
outfile<<"学号:"<<End->Num<<"\n"<<"姓名:"<<End->Name<<"\n"<<"性别:"<<End->Sex<<"\n"<<"出生日期:"<<End->Born<<"\n"<<"学院:"<<End->Col<<endl;
outfile<<"-------------------------------------------------------------------"<<endl;
outfile.close();
End->Next=new Student;
End=End->Next;
cout<<"添加成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}*/
private:
ifstream in;
ofstream out;
Student *FindName(char *Name)
{
for(Student *p=Head;p->Next!=End;p=p->Next)
if(!strcmp(p->Next->Name,Name))
{
return p;
}
return NULL;
}
Student *FindNum(char *Num)
{
for(Student * p=Head;p->Next!=End;p=p->Next)
if(!strcmp(p->Next->Num,Num))
{
return p;
}
return NULL;
}
};
// ********构造函数
Studentinformation::Studentinformation()
{
Head=new Student;
Head->Next=new Student;
End=Head->Next;
in.open("student.txt");
if(!in)
cout<<"这是一个新系统,无学生信息。请先输入。"<<endl;
else
{
while(!in.eof())
{
End->Read(in);
if(End->Name[0]=='\0')
break;
End->Next=new Student;
End=End->Next;
}
in.close();
cout<<"\t\t读取学生信息成功!"<<endl;
}
}
// ********析构函数
Studentinformation::~Studentinformation()
{
void Save();
for(Student * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}
// *******菜单显示
void Studentinformation::Menu()
{
cout<<"〓〓〓〓〓〓〓〓〓〓 ☆ 学 生 成 绩 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加学生信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.显示学生信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.排序统计信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.查找学生信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 5.删除学生信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 6.修改学生信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系统 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"\n\t\t\n\t\t请选择:";
}
void Studentinformation::Add()
{
//End->Next=new Student;
//End=End->Next;
ofstream outfile("student.txt");
End->Input();
outfile<<"学号:"<<End->Num<<"\n"<<"姓名:"<<End->Name<<"\n"<<"性别:"<<End->Sex<<"\n"<<"出生日期:"<<End->Born<<"\n"<<"学院:"<<End->Col<<endl;
outfile<<"-------------------------------------------------------------------"<<endl;
outfile.close();
End->Next=new Student;
End=End->Next;
cout<<"添加成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
void Studentinformation::Displaym()
{
ifstream infile("student.txt");
//Student *p=Head->Next;p!=End;p=p->Next
for(Student *p=Head->Next;p!=End;p=p->Next)
{
//infile.read((char *)p,sizeof(p));
p->Display();
}
infile.close();
cout <<"输入任意字符以继续";
getch();
}
// ********查找函数
void Studentinformation::Find()
{
char Name[20],Num[20];
int n;
Student *p;
cout<<"\n\t\t*********************************\n";
cout<<"\t\t※ 1.按学生的姓名查找\n\t\t※ 2.按学生学号查找";
cout<<"\n\t\t*********************************\n请选择:";
cin>>n;
switch(n)
{
case 1:
{
cout<<"输入要查询的学生姓名";
cin>>Name;
if(p=FindName(Name))
{
p->Next->Display();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该姓名的学生!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
break;
}
case 2:
{
cout<<"请输入要查询学生的学号";
cin>>Num;
if(p=FindNum(Num))
{
p->Next->Display();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该学号的学生!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
}
}
// *********修改函数
void Studentinformation::Modify()
{
char Name[20],Num;
Student * p;
int n;
cout<<"\n\t\t*********************************\n";
cout<<"\t\t※ 1.按学生的姓名查找修改\n\t\t※ 2.按学生学号查找修改";
cout<<"\n\t\t*********************************\n请选择:";
cin>>n;
switch(n)
{
case 1:
{
cout<<"\t\t请输入要修改的人的姓名:";cin>>Name;
if(p=FindName(Name))
{
cout<<"\t\t已找到学生的信息,请输入新的信息!"<<endl;
p->Next->Input();
cout<<"修改成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
case 2:
{
cout<<"\t\t请输入要修改的人的学号:";cin>>Num;
if(p=FindName(Name))
{
cout<<"\t\t已找到学生的信息,请输入新的信息!"<<endl;
p->Next->Input();
cout<<"修改成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
break;
}
}
}
//删除函数
void Studentinformation::Delect()
{
char Num[20];
Student *p,*temp;
int n;
cout<<"输入需要删除的学生学号";
cin>>Num;
if(p=FindNum(Num))
{
p->Next->Display();
cout<<"是否删除该学生信息?(1/0)";
cin>>n;
if(n==1)
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<<"\t\t删除成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"输入任意字符!继续……";
getch();
}
}
else
{
cout<<"\t\t无该生信息!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}
// 保存函数
void Studentinformation::Save()
{
out.open("student.txt",ios::app);
for(Student *p=Head->Next;p!=End;p=p->Next)
{
out<<p->Num<<p->Name<<p->Sex<<p->Born<<p->Col;
}
out.close();
}
// 学生信息进行排序
void Studentinformation::Sort()
{
Student *p1;
char Num[20];
for(Student * p=Head;p->Next!=End;p=p->Next)
{
if(strcmp(p->Next->Num,Num)<0)
{
p1=p->Next;
p->Next=p->Next->Next;
p->Next->Next=p1;
}
}
}
int main(int argc, char* argv[])
{
int x,i=0;
bool quit=false;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t◎★★★★【 欢迎进入学生成绩管理系统 】★★★★◎"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<<endl;
Studentinformation Stu;
cout<<"按任意键开始……";
getch();
while(!quit)
{
system("cls");
Stu.Menu();
cin>>x;
switch(x)
{
case 0:quit=true;
break;
case 1:Stu.Add();
break;
case 2:Stu.Displaym();
break;
//case 3:Stu.Sort();
//break;
case 4:Stu.Find();
break;
case 5:Stu.Delect();
break;
case 6:Stu.Modify();
break;
}
}
return 0;
}