qq2336488942 2019-06-12 13:07 采纳率: 0%
浏览 1049

大一c语言企业员工管理系统(救救孩子吧)

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);
}

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 16:19
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100