展开全部
// 信息32313133353236313431303231363533e78988e69d8331333264643235管理系统.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<
cout << Num << "\n"<
}
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<Num<Name<Sex<Born<Col<
outfile<
outfile.close();
End->Next=new Student;
End=End->Next;
cout<
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<
else
{
while(!in.eof())
{
End->Read(in);
if(End->Name[0]=='\0')
break;
End->Next=new Student;
End=End->Next;
}
in.close();
cout<
}
}
// ********析构函数
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<
cout<
cout<
cout<
cout<
cout<
cout<
cout<
cout<
cout<
}
void Studentinformation::Add()
{
//End->Next=new Student;
//End=End->Next;
ofstream outfile("student.txt");
End->Input();
outfile<Num<Name<Sex<Born<Col<
outfile<
outfile.close();
End->Next=new Student;
End=End->Next;
cout<
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<
cout<
cout<
cin>>n;
switch(n)
{
case 1:
{
cout<
cin>>Name;
if(p=FindName(Name))
{
p->Next->Display();
cout<
getch();
}
else
{
cout<
cout<
getch();
}
break;
}
case 2:
{
cout<
cin>>Num;
if(p=FindNum(Num))
{
p->Next->Display();
cout<
getch();
}
else
{
cout<
cout<
getch();
}
}break;
}
}
// *********修改函数
void Studentinformation::Modify()
{
char Name[20],Num;
Student * p;
int n;
cout<
cout<
cout<
cin>>n;
switch(n)
{
case 1:
{
cout<>Name;
if(p=FindName(Name))
{
cout<
p->Next->Input();
cout<
cout<
getch();
}
else
{
cout<
cout<
getch();
}
}break;
case 2:
{
cout<>Num;
if(p=FindName(Name))
{
cout<
p->Next->Input();
cout<
cout<
getch();
}
else
{
cout<
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<
cin>>n;
if(n==1)
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<
cout<
getch();
}
else
{
cout<
getch();
}
}
else
{
cout<
cout<
getch();
}
}
// 保存函数
void Studentinformation::Save()
{
out.open("student.txt",ios::app);
for(Student *p=Head->Next;p!=End;p=p->Next)
{
out<Num<Name<Sex<Born<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<
for(i=0;i<3;i++)
cout<
cout<
for(i=0;i<3;i++)
cout<
cout<
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;
}
已赞过
已踩过<
你对这个回答的评价是?
评论
收起