虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > C/C++编程 > C语言职工管理系统设计

C语言职工管理系统设计
类别:C/C++编程   作者:码皇   来源:互联网   点击:

这篇文章主要为大家分享了一份C语言职工管理系统设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言职工管理系统设计代码,供大家参考,具体内容如下

代码如下:

    #include<stdio.h>#include<stdlib.h>#include <string.h>struct Worker{
    int id;
    //工号 char name[16];
    //姓名 char sex[8];
    //性别 int age;
    //年龄 char edu_exp[32];
    //学历 int wage;
    //工资 char adress[32];
    //地址 char phong[16];
    //电话 Worker* next;
    }
    ;
    //创建表头Worker m_head = {
    0 }
    ;
    //用户输入信息int user_input(Worker* w){
    printf("ID:");
    scanf("%d", &w->id);
    getchar();
    //吸收回车字符 printf("name:");
    gets_s(w->name);
    printf("sex:");
    gets_s(w->sex);
    printf("age:");
    scanf("%d", &w->age);
    getchar();
    //吸收回车字符 printf("edu_exp:");
    gets_s(w->edu_exp);
    printf("wage:");
    scanf("%d", &w->wage);
    getchar();
    //吸收回车字符 printf("adress:");
    gets_s(w->adress);
    printf("phone:");
    gets_s(w->phong);
    return 0;
    }
    //添加对象void add(Worker* w){
    w->next = m_head.next;
    m_head.next = w;
    }
    //按插入对象int insert(Worker* w){
    Worker* cur = m_head.next;
    // 当前节点current Worker* pre = &m_head;
    // 上一个节点previous while (cur) {
    if (w->id < cur->id) // 找到这个位置 break;
    pre = cur;
    cur = cur->next;
    // 找到最后一个对象 }
    // 插入到pre节点的后面 w->next = pre->next;
    pre->next = w;
    return 0;
    }
    //删除对象int remove(int id){
    Worker* cur = m_head.next;
    //当前节点为第一个对象 Worker* pre = &m_head;
    //当前节点的前一个节点,为头节点,指向第一个对象 while (cur) {
    if (id == cur->id)//找到要删除的节点 {
    pre->next = cur->next;
    free(cur);
    //删除该节点 return 1;
    //成功删除返回1 }
    pre = cur;
    cur = cur->next;
    }
    return 0;
    }
    //查找对象int find(int id){
    Worker* p = m_head.next;
    while (p) {
    if (id == p->id) {
    printf("ID:%dnName:%snSex:%snAge:%dnEdu-exp:%snWage:%dnAdress:%snPhone:%sn", p->id, p->name, p->sex, p->age, p->edu_exp, p->wage, p->adress, p->phong);
    return 1;
    //找到目标返回1 }
    p = p->next;
    }
    return 0;
    }
    //遍历void show_all(){
    Worker* p = m_head.next;
    if (!p) {
    printf("暂无员工信息!n");
    return;
    }
    printf("工 号 姓 名 性 别 年 龄 学 历 工 资 住 址 电 话n");
    printf("----------------------------------------------------------------n");
    while (p) {
    printf("%d %s %s %d %s %d %s %sn", p->id, p->name, p->sex, p->age, p->edu_exp, p->wage, p->adress, p->phong);
    p = p->next;
    }
    }
    //向文件存入数据int save(){
    const char* filename = "F:\data.txt";
    FILE* fp = fopen(filename, "a");
    if (fp == NULL) {
    printf("can not open the file....");
    exit(0);
    }
    Worker* p = m_head.next;
    while (p) {
    fprintf(fp, "r");
    fprintf(fp, "%d ", p->id);
    fprintf(fp, "%s ", p->name);
    fprintf(fp, "%s ", p->sex);
    fprintf(fp, "%d ", p->age);
    fprintf(fp, "%s ", p->edu_exp);
    fprintf(fp, "%d ", p->wage);
    fprintf(fp, "%s ", p->adress);
    fprintf(fp, "%s ", p->phong);
    fprintf(fp, "trn");
    p = p->next;
    }
    fclose(fp);
    return 0;
    }
    //修改对象void rewrite(int id){
    Worker* p = m_head.next;
    while (p) {
    if (id == p->id) {
    user_input(p);
    }
    p = p->next;
    }
    }
    //主菜单void List(){
    Worker* w = NULL;
    char key;
    while (1) {
    do {
    system("cls");
    printf("*******************************************************n");
    printf("* 主菜单操作界面 *n");
    printf("* *n");
    printf("* 1.录入职工信息 *n");
    printf("* 2.浏览职工信息 *n");
    printf("* 3.查询职工信息 *n");
    printf("* 4.删除职工信息 *n");
    printf("* 5.修改职工信息 *n");
    printf("* 6.使用说明 *n");
    printf("* 7.退出 *n");
    printf("* *n");
    printf("*******************************************************n");
    key = getchar();
    }
    while (key != '1'&&key != '2'&&key != '3'&&key != '4' &&key != '5'&&key != '6'&&key != '7');
    switch (key) {
    case '1':system("cls");
    while (1) {
    Worker* w = (Worker*)malloc(sizeof(Worker));
    user_input(w);
    insert(w);
    if (getchar() == 'N') {
    break;
    }
    }
    save();
    free(w);
    break;
    case '2':system("cls");
    show_all();
    system("pause");
    break;
    case '3':system("cls");
    if (!m_head.next) {
    printf("暂无员工信息!n");
    system("pause");
    break;
    }
    while (1) {
    int n;
    printf("---------------------------------n");
    printf("请输入要查找的ID号:");
    scanf("%d", &n);
    if (!find(n)) {
    printf("找不到ID号为%d 的职工信息...n", n);
    }
    char ch = getchar();
    if (ch == 'N') {
    break;
    }
    }
    break;
    case '4':system("cls");
    if (!m_head.next) {
    printf("暂无员工信息!n");
    system("pause");
    break;
    }
    while (1) {
    int n;
    printf("---------------------------------n");
    printf("请输入要删除的ID号:");
    scanf("%d", &n);
    if (remove(n)) {
    printf("成功删除ID号为%d的职工信息.n", n);
    }
    else printf("无法删除ID号为%d的职工信息.n", n);
    char ch = getchar();
    if (ch == 'N')//摁N退出 {
    break;
    }
    }
    break;
    case '5':system("cls");
    // if (!m_head.next) {
    printf("暂无员工信息!n");
    system("pause");
    break;
    }
    while (1) {
    int n;
    printf("请输入要修改的ID号:n");
    scanf("%d", &n);
    printf("请修改:n");
    rewrite(n);
    if (getchar() == 'N') {
    break;
    }
    }
    break;
    case '6':system("cls");
    printf("职工系统使用说明:摁相应数字进入相应的子菜单,若想退出则摁Nn开始无数据,需要先进行录入.n");
    system("pause");
    break;
    case '7':system("cls");
    // return;
    break;
    }
    }
    }
    int main(){
    List();
    return 0;
    }

这是一个简单的小例子,主要是给大家一些思路,我这里只是简单的写了保存输入的数据到文件中,你也可用写一个从文件中读取数据到控制台,并且可以通过链表进行修改.这就麻烦一点,但是思路很简单.有兴趣的同学可以do better.

推荐几篇文章:

C++实现简单的图书管理系统

C++实现简单的职工信息管理系统

C++基础学生管理系统

相关热词搜索: C语言职工管理系统 职工管理系统 C语言管理