栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言课设-试设计一个职工信息管理系统

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言课设-试设计一个职工信息管理系统

1.要求:

2.代码:

#include
#include
#include 
//结点类型定义
typedef struct{
int id;//职工号 
char name[00];//名字 
char sex[10];//性别 
char birthday[15];//出生年月 
char wages[15];//工资
char address[60];//住址 
char education[10];//学历
char positions[10];//职务
} ElemType;
typedef struct node{
ElemType data;
struct node* next;
}LNode,* LinkList;

//函数声明 
void ListCreate(LinkList &L,int n);  //创建员工基本信息链表 
void ListPrint(LinkList L); //浏览员工基本信息 
void LocateElem(LinkList L,char *x); //查找 某个员工基本信息 
void ListInsert(LinkList &L,ElemType e); //添加员工信息到单链表 
void ListDelete(LinkList &L,int x); //删除一个员工信息 
void welcome();
//主函数 
int main()
{system("color 3f");
int control;           // 循环中控制操作 
int x;                 //查找的员工职工号 
int n;                 //欲创建的员工个数 
char w[20]; 
ElemType e={0};            //员工信息
LinkList p=NULL;            //工作指针 
LinkList L=NULL;            //链表头指针
while(1){
welcome();
//主循环
scanf("%d", &control);
while(control)
{
switch(control)
{ 
case 1:
{printf("请输入要创建的员工个数n=");
scanf("%d", &n);
printf("请依次输入员工职工号,姓名,出生年月日,性别,住址,学历,工资。n数据中间请用空格连接n");
ListCreate(L,n); 
};
break;
case 2:
ListPrint(L);
break;//输出链表内容 

case 3:
{
printf("请输入要查找的员工工资n");
scanf("%s",&w);
LocateElem(L,w);
};
break;
case 4:
{
printf("请输入欲插入的员工信息n");
 scanf("%d%s%s%s%s%s%s",&p->data.id,p->data.name,&p->data.birthday,p->data.sex,p->data.address,p->data.education,p->data.wages); //输入元素值 ,职工号,姓名,出生年月日,性别,住址,学历,工资 
ListInsert(L,e);
};
break;
case 5:
{
printf("请输入欲删除员工的职工号n");
scanf("%d",&x);
ListDelete(L,x);
};
break;
default:
{
printf("程序结束n");
exit(0);
}
break;//结束程序 
}
printf("0结束程序 1创造链表 2输出链表 3查找 4插入 5删除n");
scanf("%d",&control);
}
}
return 0;
}
void welcome()//菜单 
{
    printf("ttt=====================================================n");
    printf("ttt*****************************************************n");
    printf("ttt                                                     n");
    printf("ttt                                                     n");
    printf("ttt************                             ************n");
    printf("ttt******     欢迎使用(﹡^o^﹡ )(﹡^o^﹡ )        ******n");
    printf("ttt************                             ************n");
    printf("ttt                                                     n");
    printf("ttt                                                     n");
    printf("ttt*****************************************************n");
    printf("nnn");
    printf("ttt正在为您跳转到主菜单,请耐心稍等  ( ̄_ ̄ ) ( ̄_ ̄ ).......nnn");
    Sleep(1000);//1000毫秒;头文件#include  
    while(1) {
        system("color 3f");
        system("date/t");
        system("time/t");
        printf(" tt=============================================================================n");
        printf("tt||            ( ̄▽ ̄) ( ̄▽ ̄)(*选择功能*)( ̄▽ ̄)( ̄▽ ̄)                ||n");
        printf("tt||============================================================================||n");
        printf("tt||============================================================================||n");
        printf("tt||                     【1】--- 录入员工信息                                  ||n");
        printf("tt||                     【2】--- 输出员工信息                                  ||n");
        printf("tt||                     【3】--- 进行查找                                      ||n");
        printf("tt||                     【4】--- 插入信息                                      ||n");
        printf("tt||                     【5】--- 删除信息                                      ||n");
        printf("tt||                     【6】--- 退出                                          ||n");
        printf("tt ==============================================================================n");
        printf("nnn");
        printf("请输入对应数字选择功能:");
        break; 
}
}
//录入信息 
void ListCreate(LinkList &L,int n){ 
      //正位序输入n个元素的值,建立带表头结点的单链表L 
     LinkList p,r;
     int i; 
FILE *fp;//文件 
fp=fopen("employee.txt","a+"); 
    if (fp == NULL)                    //判断文件是否成功打开
    {
        printf("File open failed!n");
        exit(0);
    }  
  L = (LinkList) malloc (sizeof(LNode));
      L->next=NULL;  
      r=L;                                  //尾指针r指向头结点 
      for(i=0;i          p = (LinkList) malloc (sizeof(LNode));      //生成新结点 
            scanf("%d %s %s %s %s %s %s", &p->data.id, p->data.name, p->data.birthday, p->data.sex,p->data.address, p->data.education, p->data.wages); 
        //输入元素值 ,职工号,姓名,出生年月日,性别,住址,学历,工资
            p->next=NULL; r->next=p;       //插入到表尾 
            r=p;                        //r指向新的尾结点 
      } 
    for (p = L->next; p; p = p->next) {
        fprintf(fp, "姓名:%sn性别:%sn职工号:%dn", p->data.name, p->data.sex, p->data.id);
        fprintf(fp, "出生年月日:%sn", p->data.birthday);
        fprintf(fp, "工资:%sn住址:%sn学历:%sn职务:%snn", p->data.wages, p->data.address,p->data.education, p->data.positions);
    }
    fclose(fp);
}

//输出链表的值
void ListPrint(LinkList L)
{
if (!L || !L->next)  return;
LinkList p=L->next;
if(!p)
printf("没有元素输出n"); 
while (p)
{
printf("%d%s%s%s%s%s%sn",&p->data.id,p->data.name,&p->data.birthday,p->data.sex,p->data.address,p->data.education,p->data.wages); //输chu元素值 ,职工号,姓名,出生年月日,性别,住址,学历,工资 
p=p->next;
}
}


//工资定位 
void LocateElem(LinkList L,char *x)
{   int buff[255];
    char c;
    int i=0;
if (!L || !L->next)  return;
LinkList p=L->next;
int j=0;
FILE*fp=NULL;
fp=fopen("employee.txt","r");
fscanf(fp,"%d", &buff[i]);
while ((p)&&strcmp(p->data.wages,x)!=0)
{p=p->next; j++;}
if(!p)
printf("没有该信息n");  
else
printf("%d %s %s %s %s %s %sn",&p->data.id,p->data.name,&p->data.birthday,p->data.sex,p->data.address,p->data.education,p->data.wages); //输chu元素值 ,职工号,姓名,出生年月日,性别,住址,学历,工资 

}

//插入
void ListInsert(LinkList &L,ElemType e)
{
// 在带头结点的单链线性表L表尾插入元素e
LinkList q,p=L;
while (p->next)
{p=p->next;} 
q=(LinkList)malloc(sizeof(LNode));
p->next=q;
q->data=e;
q->next=NULL;
}
//删除 
void ListDelete(LinkList &L,int x)
{
LinkList q,p=L;
while ((p->next)&& (p->next->data.id != x))
p=p->next;
if(!p->next)
printf("没有找到学号为%d的学生信息n",x);
else
{
q=p->next;
p->next=p->next->next;
free(q);
}
}
3.需要改进的地方,不能第二次在文件中直接搜索。

或者用面向对象的写法。新手初试,期间问题感谢

qzjhjxj ,浪客 ,快乐鹦鹉 大佬们的帮助。代码仍有很多不足,望指正。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1010248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号