1.网上嫖了一个,但是看不懂(上课摸鱼的那种),想加一个排序,但是加不进去
2.就是吧录入进去的按年龄排序就行了 就差个排序了55
3.先谢谢大佬们55
如下
#include
#include
#include "windows.h"
using namespace std;
#include
#include
#define N 100
typedef struct phone
{
char num[30];
char name[50];
char sex[10];
char year[50];
char school[50];
char zhiwei[50];
char money[10];
char address[30];
char tel[30];
struct phone *next;
}phone,p[100];
phone *head;
void Initiate();
void Menu();
phone *Create();//创建
void Find();
void Alter();
void Delete();
void List();
phone *write_in();
phone *write_out();
void count();
void tongji();
void paixu();
phone *write_in(phone *head)
{
FILE *fp;
phone *p;
if((fp=fopen("D:职工信息.txt","w"))==NULL)
{
printf("无法打开文件!!!\n");
exit(0);
}
p=head->next;
if(head!=NULL)
while(p!=NULL)
{
fprintf(fp,"%s %s %s %s %s %s %s %s %s",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel);
fprintf(fp,"\r\n");
p=p->next;
}
fclose(fp);
return head;
}
phone *write_out()
{
FILE *fp;
phone *p,*pre,*tail;
head=(phone *)malloc(sizeof(phone));
strcpy(head->num,"\0");
strcpy(head->name,"\0");
strcpy(head->sex,"\0");
strcpy(head->year,"\0");
strcpy(head->school,"\0");
strcpy(head->zhiwei,"\0");
strcpy(head->money,"\0");
strcpy(head->address,"\0");
strcpy(head->tel,"\0");
tail = pre=head;
fp=fopen("D:职工信息.txt","r");
if(fp==NULL)
{
printf("文件打开失败!!!");
exit(0);
}
p=(phone *)malloc(sizeof(phone));
p->next=NULL;
head->next=NULL;
while(fscanf(fp,"%s %s %s %s %s %s %s %s %s",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel)!=EOF)
{
pre = tail;
tail->next=p;
tail=p;
p=(phone *)malloc(sizeof(phone));
p->next=NULL;
}
fclose(fp);
return head;
}
//初始化
void Initiate()
{
if((head=(phone *)malloc(sizeof(phone)))==NULL)
exit(1);
head->next=NULL;
}
//主体菜单
void Menu()
{
printf("*********************************************欢迎使用企业职工信息管理系统***********************************************");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@1.录入员工信息.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
printf("\n");
printf("?????????????????????????2.查询员工信息.???????????????????????????");
printf("\n");
printf("++++++++++++++++++++++++++++++++++++++++++++++++++3.修改员工信息.++++++++++++++++++++++++++++++++++++++++++++++++++++++");
printf("\n");
printf("—————————————————————————4.删除员工信息!—————————————————————————— ");
printf("\n");
printf(" ★ 5.显示所有员工信息. ");
printf(" ★ 6.统计员工信息. ");
printf(" 7.排序员工信息.");
printf(" 0.退出系统.");
printf(" 制作人 ");
system("pause");
}
//录入
phone *Create()
{
phone *p1,*p2;
int m,i;
printf("请输入创建个数:");
scanf("%d",&m);
for(i=1;i<=m;i++)
{
p1=(phone *)malloc(sizeof(phone));
printf("请输入第%d条信息!\n",i);
printf("请输入职工号:\n");
scanf("%s",p1->num);
printf("姓名:\n");
scanf("%s",p1->name);
printf("性别:\n");
scanf("%s",p1->sex);
printf("出生年月:\n");
scanf("%s",p1->year);
printf("学历:\n");
scanf("%s",p1->school);
printf("职务:\n");
scanf("%s",p1->zhiwei);
printf("工资:\n");
scanf("%s",p1->money);
printf("地址:\n");
scanf("%s",p1->address);
printf("电话:\n");
scanf("%s",p1->tel);
p1->next=NULL;
if(head->next==NULL)
head->next = p1;
else
{
for(p2=head;p2->next!=NULL;p2=p2->next); //找到结点尾
p2->next = p1;
}
}
printf("信息已添加!\n");
head=write_in(head);
return head;
//保存到链表
}
//查找员工信息
void Find()
{
phone *p;
char name[50];
if(head->next==NULL)
{
printf("此系统为空!\n");
return;
}
printf("请输入要查找的姓名:\n");
scanf("%s",&name);
for(p=head->next;p!=NULL;p=p->next)
{
if(strcmp(p->name,name)==0)
{
printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\t地址\t电话\n");
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel);
}
else if(p->next==NULL)
printf("无此信息!\n");
}
head=write_in(head);
}
//修改员工信息
void Alter()
{
head=write_out();
char name[50]; //先查找 后删除
phone *p=head->next;
if (p == NULL)
{
printf("此系统为空!\n");
return;
}
printf("请输入要修改的姓名:\n");
scanf("%s",name);
while(p!=NULL)
{
if(strcmp(p->name,name)==0)
{
printf("请输入需要插入的信息");
printf("姓名:\n");
scanf("%s",p->name);
printf("性别:\n");
scanf("%s",p->sex);
printf("出生年月:\n");
scanf("%s",p->year);
printf("学历:\n");
scanf("%s",p->school);
printf("职务:\n");
scanf("%s",p->zhiwei);
printf("工资:\n");
scanf("%s",p->money);
printf("地址:\n");
scanf("%s",p->address);
printf("电话:\n");
scanf("%s",p->tel);
break;
}
}
printf("修改成功");
head=write_in(head);
}
//删除员工信息
void Delete()
{
head=write_out();
char name[50]; //先查找 后删除
phone *p = head->next, *p1 =head->next,*p2;
if (head->next == NULL)
{
printf("此通讯录为空!\n");
return;
}
printf("请输入要删除的姓名:\n");
scanf(" %s",name);
while ((strcmp(p->name,name)!=0 )&& p->next != NULL)
{
p1=p;
p =p->next;
}
if (strcmp(name, p->name)==0) //输出删除信息
{
if (p == head->next&&p->next!=NULL)
head->next = p->next;
else if(p==head->next&&p->next==NULL)
{
head->next=p->next;
printf("信息已删除,先此通讯录为空!!\n");
return;
}
else
p1->next = p->next;
}
else
{
printf("此信息不存在!!!\n");
return;
}
printf("此信息已删除!");
printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\t地址\t电话\n");
for(p2=head->next;p2!=NULL;p2=p2->next)
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel);
head=write_in(head);
}
//显示所有员工记录
void List()
{
head=write_out();
phone *p;
if(head->next==NULL)
{
printf("此系统中无记录!\n");
return;
}
printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\t地址\t电话\n");
for(p=head->next;p!=NULL;p=p->next)
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel);
}
int main()
{
int choice;
char yes_no;
Initiate();
do
{
Menu();
printf("请选择0-5的数字\n");
scanf("%d",&choice);
printf("\n");
switch(choice)
{
case 1:Create();
break;
case 2:Find();
break;
case 3:Alter();
break;
case 4:Delete();
break;
case 5:List();
break;
case 6:tongji();
break;
case 7:paixu();
break;
case 0:
printf("************感谢您的使用************\n");
exit(0);
break;
default:
printf("输入有误!请重新输入\n");
break;
}
printf("是否继续 Y or N? \n");
do
{
scanf("%c",&yes_no);
}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}while(yes_no=='Y'||yes_no=='y');
}
enum Color
{
black, blue, green, lakeBlue, red, purple, yellow, white, gray,
lightBlue, lightGreen, lightSimpleGreen, lightRed, lightPurple, lightYellow, brightWhite
};
void setColor(unsigned short backColor=0, unsigned short textColor=7){
char command[9]="color 07"; //默认颜色
command[6]='0'+backColor; //将backColor变量改为字符型
command[7]='0'+textColor; //将textColor变量改为字符型
system(command); //调用系统函数
}
void tongji()
{
int n=0;
phone *p;
char school[50];
if(head->next==NULL)
{
printf("此系统为空!\n");
return;
}
printf("请输入要查找的学历:\n");
scanf("%s",&school);
for(p=head->next;p!=NULL;p=p->next)
{
if(strcmp(p->school,school)==0)
{
printf("职工号\t姓名\t性别\t出生年月\t学历\t职务\t工资\t地址\t电话\n");
printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",p->num,p->name,p->sex,p->year,p->school,p->zhiwei,p->money,p->address,p->tel);
n++;
}
else if(p->next==NULL)
printf("无此信息!\n");
}
printf("该学历人数有%d",n);
printf("\n");
head=write_in(head);
}