问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言课程设计之公司员工信息管理系统怎么做?

发布网友 发布时间:2022-04-24 07:25

我来回答

2个回答

热心网友 时间:2022-06-17 14:21

1、员工信息管理系统是事业单位科学、全面、高效进行人事管理的系统,参考大量中国人力资源管理理论,根植于国内管理的实际情况,实用而科学。内容包括机构的建立和维护,人员信息的录入和输出,工资的调整和发放以及各类报表的绘制和输出等功能。在操作上集输入、维护、查询、统计、打印、输出等处理为一体,简便灵活,自动化功能强大。


2、例程:

#include <stdio.h>
#include <windows.h>
#include <time.h>
#include <string.h>
#define N 100
struct employee
{
    int num;
 char name[10];
 char sex;  
 int age;
 char xueli[30];
    int wage;
   char addr[30];
   long int tel;
}em[100];        /*定义一个结构体*/
void menu();
void input();
void save(int);
void display();
void del();
void add();
void search();
void search_num();
void search_xueli();
void search_tel();
void modify();  /*定义各函数*/
void menu()   /*菜单函数*/
{
 printf("              ☆☆☆计算机科学与技术学系☆☆☆\n");
    printf("\n");
    printf("                                   ∮08802班 关丽霞∮\n");
    printf("\n");
 printf("        ******************职工信息管理****************\n");
 printf("           1.录入职工信息");
 printf("           2.浏览职工信息\n");
 printf("           3.查询职工信息");
 printf("           4.删除职工信息\n");
    printf("           5.添加职工信息");
 printf("           6.修改职工信息\n");
 printf("           7.退出\n");
 printf("        ********************谢谢使用******************\n");
    printf("\n");
    printf("\n");
    
}
void main()
{   
 menu();  /*调用菜单函数*/
 int n,flag;
 char a;
 do
 {
    printf("请选择你需要操作的步骤(1--7):\n");
    scanf("%d",&n);
    if(n>=1&&n<=7)
    {
    flag=1;
    break;
    }
    else
    {
   flag=0;
   printf("您输入有误,请重新选择!");
    }
 }
    while(flag==0);
    while(flag==1)
  {
  switch(n)
  {
          case 1:printf("               ◆◆◆输入职工信息◆◆◆\n");printf("\n");input();break;
       case 2:printf("              ◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break;
       case 3:printf("              ◆◆◆按职工号查询职工信息◆◆◆\n");printf("\n");search();break; 
       case 4:printf("              ◆◆◆删除职工信息◆◆◆\n");printf("\n");del();break;
    case 5:printf("              ◆◆◆添加职工信息◆◆◆\n");printf("\n");add();break;
       case 6:printf("               ◆◆◆修改职工信息◆◆◆\n");printf("\n");modify();break;
       case 7:exit(0);break;
    default :break;
  }
  getchar();
  printf("\n");
     printf("是否继续进行(y or n):\n");
     scanf("%c",&a);
  if(a=='y')
  {
     flag=1;
           system("cls");  /*清屏*/
           menu(); /*调用菜单函数*/
     printf("请再次选择你需要操作的步骤(1--6):\n");
        scanf("%d",&n);
     printf("\n");
  }
  
  else 
  exit(0);
 }
 
}
void input()   /*录入函数*/
{
   int i,m;
      printf("请输入需要创建信息的职工人数(1--100):\n");
   scanf("%d",&m);
   for (i=0;i<m;i++)
   {
  printf("职工号: ");
  srand((int)time(0));
  em[i].num=rand()%10000+20000000;
  if(em[i].num!=em[i-1].num)
       printf("%8d ",em[i].num);
  printf("\n");
     printf("请输入姓名:  ");
  scanf("%s",em[i].name);
  getchar();
  printf("请输入性别(f--女  m--男):  ");
  scanf("%c",&em[i].sex);
  printf("请输入年龄:  ");
  scanf("%d",&em[i].age);
  printf("请输入学历:  ");
  scanf("%s",em[i].xueli);
  printf("请输入工资:  ");
  scanf("%d",&em[i].wage);
  printf("请输入住址:  ");
  scanf("%s",em[i].addr);
        printf("请输入电话:  ");
     scanf("%d",&em[i].tel);
     printf("\n");
    
   }
   printf("\n创建完毕!\n");
      save(m);
}
void save(int m)  /*保存文件函数*/
{
 int i;
 FILE*fp;
 if ((fp=fopen("employee_list","wb"))==NULL)  /*创建文件并判断是否能打开*/
 {
  printf ("cannot open file\n");
     exit(0);
 }
 for (i=0;i<m;i++) /*将内存中职工的信息输出到磁盘文件中去*/
   if (fwrite(&em[i],sizeof(struct employee),1,fp)!=1)
   printf("file write error\n");
   fclose(fp);
}
int load()  /*导入函数*/
{
     FILE*fp;
 int i=0;
   if((fp=fopen("employee_list","rb"))==NULL)
 {
  printf ("cannot open file\n");
     exit(0);
 }
 else 
 {
  do 
  {
        fread(&em[i],sizeof(struct employee),1,fp);
     i++;
  }
  while(feof(fp)==0);
 }
 fclose(fp);
 return(i-1);
}
void display()  /*浏览函数*/
{
 int i;
 int m=load();
 printf("\n  职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话   \n");
 for(i=0;i<m;i++) /*m为输入部分的职工人数*/
     printf("\n  %d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
}
void del()   /*删除函数*/
{
  
    int m=load();
 int i,j,n,t,flag;
 char name[20];
 printf("\n 原来的职工信息:\n");
    display();   /* 调用浏览函数*/
    printf("\n");
 printf("请输入要删除的职工的姓名:\n");
 scanf("%s",name);
 for(flag=1,i=0;flag&&i<m;i++)
 {
  if(strcmp(em[i].name,name)==0)
  {
   printf("\n已找到此人,原始记录为:\n");
            printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话   \n");
   printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
            printf("\n确实要删除此人信息请按1,不删除请按0\n");
   scanf("%d",&n);
            if(n==1)   /*如果删除,则其他的信息都往上移一行*/
   {
     for(j=i;j<m-1;j++)
     {
    strcpy(em[j].name,em[j+1].name);
                em[j].num=em[j+1].num;
                em[j].sex=em[j+1].sex;
                em[j].age=em[j+1].age;
                strcpy(em[j].xueli,em[j+1].xueli);
    em[j].wage=em[j+1].wage;  
                strcpy(em[j].addr,em[j+1].addr);
                em[j].tel=em[j+1].tel;
     }
    flag=0;
   }
  }
 }
 if(!flag)
    m=m-1;
 else
    printf("\n对不起,查无此人!\n");
    printf("\n 浏览删除后的所有职工信息:\n");
    save(m);     /*调用保存函数*/
    display();  /*调用浏览函数*/
 printf("\n继续删除请按1,不再删除请按0\n");
 scanf("%d",&t);
 switch(t)
 {
    case 1:del();break;
    case 0:break;
    default :break;
 }
}
void add()/*添加函数*/
{
 FILE*fp;
 int n;
    int count=0;
    int i;
    int m=load();
    printf("\n 原来的职工信息:\n");
    display();   /* 调用浏览函数*/
    printf("\n");
    fp=fopen("emploee_list","a");
    printf("请输入想增加的职工数:\n");
 scanf("%d",&n);
    for (i=m;i<(m+n);i++)
  {
  printf("\n 请输入新增加职工的信息:\n");
  printf("请输入职工号:  ");
  srand((int)time(0));
  em[i].num=rand()%10000+20000000;
  if(em[i].num!=em[i-1].num)
       printf("%8d ",em[i].num);
  printf("\n");
        printf("请输入姓名:  ");
     scanf("%s",em[i].name);
        getchar();
        printf("请输入性别(f--女  m--男):  ");
     scanf("%c",&em[i].sex);
        printf("请输入年龄:  ");
     scanf("%d",&em[i].age);
     printf("请输入学历:  ");
     scanf("%s",em[i].xueli);
     printf("请输入工资:  ");
     scanf("%d",&em[i].wage);
      printf("请输入住址:  ");
     scanf("%s",em[i].addr);
        printf("请输入电话:  ");
     scanf("%d",&em[i].tel);
        printf("\n");
     count=count+1;
  printf("已增加的人数:\n");
     printf("%d\n",count);
 }
    printf("\n添加完毕!\n"); 
    m=m+count;
 printf("\n浏览增加后的所有职工信息:\n");
 printf("\n");
 save(m);
    display();
   fclose(fp);
}
void search()/*查询函数*/
{
    int t,flag;
 do
 {
    printf("\n按职工号查询请按1 ; 按学历查询请按2 ; 按电话号码查询请按3,进入主函数按4\n");
    scanf("%d",&t);
    if(t>=1&&t<=4)
    {
    flag=1;
    break;
    }
    else
    {
   flag=0;
   printf("您输入有误,请重新选择!");
    }
 }
    while(flag==0);
    while(flag==1)
 {
    switch(t)
    { 
     case 1:printf("按职工号查询\n");search_num();break;
     case 2:printf("按学历查询\n");search_xueli();break;
     case 3:printf("按电话号码查询\n");search_tel();break;
  case 4:main();break;
     default:break;
    }
    
 }
}
void search_num()
{
  int num;
  int i,t;
  int m=load();
  printf("请输入要查找的职工号(20001111---20009999):\n");
  scanf("%d",&num);
  for(i=0;i<m;i++)
    if(num==em[i].num)
 {  
    printf("\n已找到此人,其记录为:\n");
       printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话   \n");
    printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
    break;
 }
   if(i==m)  
    printf("\n对不起,查无此人\n");
   printf("\n");
   printf("返回查询函数请按1,继续查询职工号请按2\n");
   scanf("%d",&t);
   switch(t)
   { 
   case 1:search();break;
      case 2: break;
   default:break;
   }
}
void search_xueli()
{
  char xueli[30];
  int i,t;
  int m=load();
  printf("请输入要查找的学历:\n");
  scanf("%s",xueli);
  for(i=0;i<m;i++)
   if(strcmp(em[i].xueli,xueli)==0)
 {
    printf("\n已找到,其记录为:\n");
    printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话   \n");
    printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
    
 }
  if(i==m) 
    printf("\n对不起,查无此人\n");
   printf("\n");
   printf("返回查询函数请按1,继续查询学历请按2\n");
   scanf("%d",&t);
  switch(t)
  { 
   case 1:search();break;
      case 2:break;
   default :break;
  }
 
}
void search_tel()
{
   long int tel;
  int i, t;
  int m=load();
  printf("请输入要查找的电话号码:\n");
  scanf("%ld",&tel);
  for(i=0;i<m;i++)
    if(tel==em[i].tel)
 {  
    printf("\n已找到此人,其记录为:\n");
       printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话   \n");
    printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);  
    break;
 }
    if(i==m)  
    printf("\n对不起,查无此人\n");
   printf("\n");
   printf("返回查询函数请按1,继续查询电话号码请按2\n");
   scanf("%d",&t);
  switch(t)
  { 
   case 1:search();break;
      case 2:break;
   default :break;
  }
  
}

热心网友 时间:2022-06-17 14:21

c语言编的学生信息管理系统小程序 参考吧
<stdio.h>
#include <stdlib.h>
#include <string.h>
struct st
{
char name[20];
int english;
int math;
int chinese;
int average;
st *next;

};
struct st *pend=NULL;//初始链表的尾指针
struct st *pendorder=NULL;//顺序链表的尾指针
struct st *pheadorder=NULL;//顺序链表的头指针
struct st *makeorder(struct st *phead);//按分数从大到小排序 生产链表
struct st *addtolist(struct st *add);// 将平均分最大的添到另一个链表
struct st *createlist();//输入学生信息时生成的初始链表
struct st * deletestu(char *name,st *phead);//删除一个学员的信息
struct st *addstu(st *name,st *phead);//向顺序链表添加一个元素,插入的地方按平均成绩
void printinfo(st *phead);//按平均成绩打印出每个学员的名字

int main()
{
int select;
char deletename[20];
struct st *addstud=NULL;
struct st *phead=NULL;
phead=createlist();//输入时创建链表
pheadorder=makeorder(phead);//将链表排序
printf("input operation:1----deletestudent,2-----addstudent,3----output all student\n");
scanf("%d",&select);
while(select>0)//选择操作1为删除2为添加3为打印,其他的输入会跳出循环
{
switch(select)
{

case 1:
printf("please input the of the student to be deleted:\n");
scanf("%s",deletename);
pheadorder=deletestu(deletename,pheadorder);
printf("input operation:1----deletestudent,2-----addstudent,3----output all student\n");
scanf("%d",&select);
break;
case 2:
printf("please input the information of the student to be added:\n");
addstud=new st;
scanf("%s%d%d%d",addstud->name,&(addstud->english),&(addstud->math),&(addstud->chinese));
addstud->average=((addstud->english)+(addstud->math)+(addstud->chinese))/3;
while((addstud->english)<=0)
{
delete addstud;
printf("please input the information of the student to be added:\n");
addstud=new st;
scanf("%s%d%d%d",addstud->name,&(addstud->english),&(addstud->math),&(addstud->chinese));
addstud->average=((addstud->english)+(addstud->math)+(addstud->chinese))/3;
}
pheadorder=addstu(addstud,pheadorder);
printf("input operation:1----deletestudent,2-----addstudent,3----output all student\n");
scanf("%d",&select);
break;
case 3:
printinfo(pheadorder);
printf("input operation:1----deletestudent,2-----addstudent,3----output all student\n");
scanf("%d",&select);
break;
default:
goto laber;

}
}
laber:system("pause");
return 1;

}
struct st *createlist()//输入时创建初始链表
{
struct st *pfirst=NULL;
struct st *plast=NULL;
struct st *p=new st;
printf("please input the information of the students:\n");
scanf("%s%d%d%d",p->name,&(p->english),&(p->math),&(p->chinese));
p->average=((p->english)+(p->math)+(p->chinese))/3;
while((p->english)>0)
{
if(pfirst==NULL)
pfirst=plast=p;
else
plast->next=p;
plast=p;
printf("please input again:\n");
p=new st;
scanf("%s%d%d%d",p->name,&(p->english),&(p->math),&(p->chinese));
p->average=((p->english)+(p->math)+(p->chinese))/3;

}
plast->next=NULL;
printf("list create successful\n");
delete p;
return pfirst;
}
struct st *deletestu(char *name,st *phead)//删除一个学员
{
int flag=0;
st *p=NULL;
if(strcmp(phead->name,name)==0)
{
phead=phead->next;
flag=1;
}
else
for(p=phead;p;p=p->next)
{
if(strcmp(p->next->name,name)==0)
{
p->next=p->next->next;
flag=1;
break;
}
}
if(!flag)
printf("the student you delete is not in the list\n");
else printf("delete successful\n");
return phead;
}
struct st *addstu(st *name,st *phead)//按平均分增加一个学员
{
name->next=NULL;
struct st *p=NULL;
if((name->average)>(phead->average))
{
name->next=phead;
phead=name;
return phead;
}
else
{
for(p=phead;p->next;p=p->next)
{
if((name->average)>(p->next->average))
{
name->next=p->next;
p->next=name;
return phead;
}

}
}
p=p->next;
p->next=name;
return phead;

}
void printinfo(st *phead)//打印信息
{
st *p;
for(p=phead;p;p=p->next)
printf("%s\n",p->name);
}

struct st *addtolist(struct st *phead,struct st *add)//生成顺序链表时每回都添加一个平均成绩最高的学员信息
{
add->next=NULL;
if(phead==NULL)
pendorder=phead=add;
else
pendorder->next=add;
pendorder=add;
return phead;

}

struct st *makeorder(struct st *phead)//将初始链表变成顺序链表
{
if(phead!=NULL)
{
int max;
struct st *p=NULL;
struct st *index=NULL;
while(phead)
{
max=0;
for(p=phead;p;p=p->next)
{
if(p->average>max)
{
max=p->average;
index=p;
}
}
phead=deletestu(index->name,phead);
pheadorder=addtolist(pheadorder,index);
}
return pheadorder;
}
else printf("there is no list members to be ordered\n");
return pheadorder;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 有色体和叶绿体的区别 你好,为什么要睡觉? 网带哪家好?我是开工厂的想要问问输送机网带怎么选择啊? MorseN是什么意思 morse的含义: 芈月铭文是什么? 《王者荣耀》体验服芈月出装铭文怎么选 芈月重 王者荣耀芈月怎么玩?芈月高端局出装铭文团战技巧推荐。 美的电磁炉2021配的炒锅锅底不平能用吗 ad芈月打法铭文出装和ap芈月有什么改变 索尼U9平板电视如何连接手机,安装外部应用呢? 《王者荣耀》芈月厉害吗 芈月重做最强出装铭文推荐 当贝合子中的NewTv怎么安装在索尼电视机上? 芈月铭文通用哪些英雄 索尼电视怎么和安卓手机互联? 锅不平对电磁炉有影响吗? 是不是每台电脑都有一个MAC网卡地址?MAC的作用?XP怎么修改MAC地址 什么是网卡mac地址 什么是网卡mac地址? 路由器的作用,网卡的作用 c语言编写学生选课系统 C语言的编程问题 求一个字符串中相同的连续中最长的部分,用c语言 徐僖的主要成就 请问如何隐藏指定的进程? 打印杨辉三角的前十行 求一个通讯录管理系统 C语言编写的 用magichide隐藏进程,怎么把恢复显示进程啊? 高手指点下链表的问题 怎么让windows搜索搜不到电脑里的东西?? C语言问题求助 在手机上怎么交医保? 凉瓜是什么瓜? 苦瓜这个物种为什么没有被大自然淘汰? 凉瓜是什么瓜呀., 癞瓜是什么瓜,怎么吃? 苦瓜做菜时需不需要切皮 狮山大顶苦瓜的由来 苦瓜不用水焯一下能吃吗 苦瓜的植物文化