#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<iostream.h>
#include<fstream.h>
class MAN
{
private:
char number[10]; //编号
char name[20]; //姓名
char sex[10]; //性别
int age; //年龄
char post[20]; //职务
char postname[20]; //职称
char party[20]; //党派
char study[20]; //最高学历
char posttime[10]; //任职时间
float cometime; //来院时间
char stafftype[20]; //人员类别
MAN *next;
public:
/************函数申明************/
void QuitAndSave();
//--------------------------------------
void Maintain();//系统维护菜单
void Menu();//管理员身份菜单
//--------------------------------------
void Increase(); //增加学生信息
//--------------------------------------
void Modify(); //修改信息菜单
void ModbyNo();
void ModbyName();
//--------------------------------------
void Delete(); //删除信息菜单
void DelbyNo();
void DelbyName();
void DelbyAll();
//--------------------------------------
void Search(); //查询信息菜单
void SesrchbyNo();
void SesrchbyName();
void Statistics();
void SesrchAll();
MAN *FindbyNo();
MAN *FindbyName();
//MAN *FindbyKey();
//--------------------------------------
void StabyClass();
void Secore1();
void Secore2();
void Secore3();
void FailStudent();
void StabyFraction();
//--------------------------------------
void Sort(); //排序菜单
void SortbyAge();
void SortbyCometime();
void PrintAll();
void CharSwap(char *pt1, char *pt2);
void FloatSwap(float *pt1, float *pt2);
void IntSwap(int *pt1, int *pt2);
//--------------------------------------
void SaveAndFree();
void Openfile();
};
MAN *head=NULL; //定义全局变量,便于有些操作
/**********主菜单**********/
void MAN::Menu()
{
int x;
while(1)
{ system("cls");
printf("\t\t---------------------------------\n");
printf("\t\t| \t \3 欢迎使用本程序 \3 \t|\n");
printf("\t\t|-------------------------------|\n");
printf("\t\t| \t \5 1->增加人员信息 \t|\n");
printf("\t\t| \t \5 2->修改人员信息 \t|\n");
printf("\t\t| \t \5 3->删除人员信息 \t|\n");
printf("\t\t| \t \5 4->查询统计信息 \t|\n");
printf("\t\t| \t \5 5->人员信息排序 \t|\n");
printf("\t\t| \t \5 0->退出 程序 \t|\n");
printf("\t\t---------------------------------\n");
printf("请选择相应的操作......");
fflush(stdin);
scanf("%d",&x);
switch(x)
{
case 1:Increase();break; //增加函数
case 2:Modify();break; //修改函数
case 3:Delete();break; //删除函数
case 4:Search();break; //信息查询的菜单
case 5:Sort();break; //对学生信息排序函数
case 0:QuitAndSave();break; //退出程序
default:printf("输入数字错误,请重新选择\n"); //解决用户可能的输入错误
}
}
}
/**********创建人员列表**********/
void MAN::Increase()
{
char ch; //判断是否增加人员信息
do
{
printf("\n");
system("cls");
{
MAN *news=NULL,*p=NULL;
news=(MAN*)malloc(sizeof(MAN));
printf("输入编号:");
fflush(stdin);
scanf("%s",news->number);
printf("输入姓名:");
fflush(stdin);
scanf("%s",news->name);
printf("输入性别:");
scanf("%s",news->sex);
printf("输入年龄:");
fflush(stdin);
scanf("%d",&news->age);
fflush(stdin);
printf("输入职务[无,科级,处级,地级]:");
fflush(stdin);
scanf("%s",news->post);
printf("输入职称[无,初级,中级,高级]:");
fflush(stdin);
scanf("%s",news->postname);
printf("输入政治面貌[群众,中共团员,中共党员,民主党派]:");
fflush(stdin);
scanf("%s",news->party);
printf("输入最高学历[小学,初中,高中,大专,大学,硕士,博士]:");
fflush(stdin);
scanf("%s",news->study);
printf("输入任职时间[在校任职时间]:");
fflush(stdin);
scanf("%s",news->posttime);
printf("输入来院时间[格式:如1990.1210表示1990年12月10日]:");
fflush(stdin);
scanf("%f",&news->cometime);
printf("输入人员类别[行政人员,教师,一般员工,退休人员,返聘人员,临时工]:");
fflush(stdin);
scanf("%s",news->stafftype);
news->next=NULL;
if(head==NULL)
{
head=(MAN*)malloc(sizeof(MAN));
head->next=news;
}else
{
for(p=head;p->next!=NULL;p=p->next);
p->next=news;
}
}
printf("键入'*'结束添加信息!按任意键继续添加!\n");
fflush(stdin);
}while((ch=getchar())!='*');
fflush(stdin);
}
/**********修改菜单**********/
void MAN::Modify()
{
int x;
while(1)
{
system("cls");
printf("\t\t-----------------------------------------\n");
printf("\t\t| \t \3 欢迎使用信息修改功能 \3 \t|\n");
printf("\t\t-----------------------------------------\n");
printf("\t\t| \t \4 1--->按编号修改信息 \t|\n");
printf("\t\t| \t \4 2--->按姓名修改信息 \t|\n");
printf("\t\t| \t \4 0--->返 回 主 菜 单 \t|\n");
printf("\t\t-----------------------------------------\n");
printf("请选择相应的操作......");
fflush(stdin);
scanf(" %d",&x);
switch(x)
{
case 1:ModbyNo();break;
case 2:ModbyName();break;
case 0:Menu();break;
default:printf("输入有误,请重新输入!\n");
}
}
}
/**********按编号修改***********/
void MAN::ModbyNo()
{
MAN *p=FindbyNo();
if(p==NULL)
printf("对不起,没有找到该人员!\n");
else
{
printf("将要修改的人员信息为:\n");
printf("*********************************************************\n");
printf("编 号\t\t姓 名\t\t性 别\t\t年 龄\n");
printf("%s\t\t%s\t\t%s\t\t%d\n",p->next->number,p->next->name,p->next->sex,p->next->age);
printf("-----------------------------------------\n");
printf("职 务\t\t职 称\t\t政 貌\t\t学 历\n");
printf("%s\t\t%s\t\t%s\t\t%s\n",p->next->post,p->next->postname,p->next->party,p->next->study);
printf("---------------------------------------------------------\n");
printf("任职时间\t\t来院时间\t\t人员类别\n");
printf("%s\t\t%.4f\t\t%s\n",p->next->posttime,p->next->cometime,p->next->stafftype);
printf("---------------------------------------------------------\n");
printf("*********************************************************\n");
printf("输入编号:");/*输入数据*/
fflush(stdin);
scanf("%s",p->next->number);
printf("输入姓名:");
fflush(stdin);
scanf("%s",p->next->name);
printf("输入性别:");
scanf("%s",p->next->sex);
printf("输入年龄:");
fflush(stdin);
scanf("%d",&p->next->age);
fflush(stdin);
printf("输入职务:");
fflush(stdin);
scanf("%s",p->next->post);
printf("输入职称:");
fflush(stdin);
scanf("%s",p->next->postname);
printf("输入政治面貌:");
fflush(stdin);
scanf("%s",p->next->party);
printf("输入最高学历:");
fflush(stdin);
scanf("%s",p->next->study);
printf("输入任职时间:");
fflush(stdin);
scanf("%s",p->next->posttime);
printf("输入来院时间:");
fflush(stdin);
scanf("%f",&p->next->cometime);
printf("输入人员类别:");
fflush(stdin);
scanf("%s",p->next->stafftype);
printf("\n======提示:资料修改成功!======\n");
}
system("pause");
}
/**********按人员姓名修改***********/
void MAN::ModbyName()
{
MAN *p=FindbyName();
if(p==NULL)
printf("对不起,没有找到该人员!\n");
else
{
printf("将要修改的人员信息为:\n");
printf("*********************************************************\n");
printf("编 号\t\t姓 名\t\t性 别\t\t年 龄\n");
printf("%s\t\t%s\t\t%s\t\t%d\n",p->next->number,p->next->name,p->next->sex,p->next->age);
printf("-----------------------------------------\n");
printf("职 务\t\t职 称\t\t政 貌\t\t学 历\n");
printf("%s\t\t%s\t\t%s\t\t%s\n",p->next->post,p->next->postname,p->next->party,p->next->study);
printf("---------------------------------------------------------\n");
printf("任职时间\t\t来院时间\t\t人员类别\n");
printf("%s\t\t%.4f\t\t%s\n"