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

基于C语言的职工信息管理系统

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

基于C语言的职工信息管理系统

基于C语言的职工信息管理系统

文章目录
  • 基于C语言的职工信息管理系统
  • 前言
  • 一、C语言是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.主体代码
  • 总结


前言

提示:C语言制作,运行前提是选择对应软件的导入:

基于C的职工信息管理系统,可用于一切类似的的信息管理系统,新手版。


一、C语言是什么?

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。 [1]
最新的C语言标准是C18 [10] 。 --来自科普中国

二、使用步骤 1.引入库

代码如下:

基于Clion

#include
#include
#include
#include
#include

基于Visual studio Professional 2022

#include
#include
#include
#include
#include
2.主体代码

代码如下:

#define N 100

struct people {
    char num[100];
    char name[15];
    char sex[20];
    char age[20];
    char education[20];
    char wage[20];
    char address[20];
    char telephone[20];
} people[N];

void input(int i);//依次存入的提示、保存和数值传输
void enter();//search功能的小组件:输入提示和值的传输
void browse(int m);//打印
void add();//添加命令
void no_input(int i, int n);

void search();//搜索和删除
void modify();//修改提示、保存和数值传输小界面
void save(int n);//保存
int load();//求有多少个数据
void del();//删除
int modify_data(int i);//真修改信息
void printf_face();//全部打印
void printf_back(int m);//所有返回提示
void printf_one(int i); //打印全部提示
void menu();//菜单
void chack_No(int i);//判断数据是否重复
void CheckMenudo(int n, int f);

void CheckMenu(int n);

void chack_No(int i) {
    if (i > 0) {
        for (int k = 0; k < i; k++) {
            if (strcmp(people[k].num, people[i].num) == 0) {
                printf("您输入的职工号已存在,请更换号码!");
                printf("职工号:");
                scanf("&d", people[i].num);
                chack_No(i);
                break;
            }
        }
    }
}

void input(int i) {
    //no_input(i,i);
    printf("职工号:");
    scanf("%s", people[i].num);
    chack_No(i);
    printf("姓名:");
    scanf("%s", people[i].name);
    printf("性别:");
    scanf("%s", people[i].sex);
    printf("年龄:");
    scanf("%s", people[i].age);
    printf("学历:");
    scanf("%s", people[i].education);
    printf("工资:");
    scanf("%s", people[i].wage);
    printf("住址:");
    scanf("%s", people[i].address);
    printf("电话:");
    scanf("%s", people[i].telephone);
}

void enter() {
    int i, n;
    printf("请输入人数(0-%d) :", N - 1);
    scanf("%d", &n);
    printf("n 录入信息n");
    for (i = 0; i < n; i++) {
        printf("n 请输入第%d个人的信息.", i + 1);
        input(i);
    }
    if (i != 0)save(n);
    printf_back(1);
}

void browse(int m) {
    int i, n;
    n = load();
    printf_face();
    for (i = 0; i < n; i++) {
        if ((i != 0) && (i % 10 == 0)) {
            printf("nn按任意键继续....");
            getch();
            puts("nn");
        }
        printf_one(i);
    }
    printf("t共有%d条记录.n", n);
//    getch();
    if (m == 1) {
        CheckMenu(3);
    } else {
    }
}

void search() {
    int i, n, k, w1 = 1, w2, w3, w4, m, a;
    struct people p;
    n = load();
    do {
        printf("n选择你要查询的方式 nt1).按学历 2).按职工号 [ ]bb");
        scanf("%d", &m);
        switch (m) {
            case 1:
                do {
                    k = -1;
                    printf("nn请输入你要查询的学历:");
                    scanf("%s", p.education);
                    printf_face();
                    for (i = 0; i < n; i++)
                        if (strcmp(p.education, people[i].education) == 0) {
                            k = i;
                            printf_one(k);
                            break;
                        }
                    if (k == -1) {
                        printf("nn你输入的学历不存在!");
                        printf("nn你想继续查询吗?nt 1).是 2).否 [ ]bb");
                        scanf("%d", &w1);
                        if (w1 == 2)
                            printf_back(4);
                    }
                } while (k == -1 && w1 == 1);
                break;

            case 2:
                do {
                    k = -1;
                    printf("nn请输入你要查询的职工号:");
                    scanf("%s", p.num);
                    printf_face();
                    for (i = 0; i < n; i++)
                        if (strcmp(p.num, people[i].num) == 0) {
                            k = i;
                            printf_one(k);
                            break;
                        }
                    if (k == -1) {
                        printf("nn你输入的职工号不存在!");
                        printf("nn你想继续查询吗?nt1).是 2).否 [ ]bb");
                        scanf("%d", &w1);
                        if (w1 == 2)
                            printf_back(4);
                    }
                } while (k == -1 && w1 == 1);
                break;
        }

        w4 = 0;
        w3 = 0;
        if (k != -1) {
            printf("nn请选择你要进行的操作:nt 1).查询 2).修改 3).删除 4).返回功能菜单 [ ]bb");
            scanf("%d", &w2);
            switch (w2) {
                case 2:
                    w3 = modify_data(k);
                    break;
                case 3:
                    printf("n你确定要删除吗?nt 1).是 2).否 [ ]bb");
                    scanf("%d", &w4);
                    if (w4 == 1)
                        for (a = k; a < n; a++) {
                            strcpy(people[a].num, people[a + 1].num);
                            strcpy(people[a].name, people[a + 1].name);
                            strcpy(people[a].sex, people[a + 1].sex);
                            strcpy(people[a].age, people[a + 1].age);
                            strcpy(people[a].education, people[a + 1].education);
                            strcpy(people[a].wage, people[a + 1].wage);
                            strcpy(people[a].address, people[a + 1].address);
                            strcpy(people[a].telephone, people[a + 1].telephone);

                        }

                    break;
            }

            if (w3 == 1 || w4 == 1) {
                save(n);
                printf("nn操作成功! ^_^ ");
                printf("nn请输入你要进行的操作: nt 1).继续查询 2).返回上一级 [ ]bb");
                scanf("%d", &w2);
            }
        }
    } while (w2 == 1);
    CheckMenu(4);;
}

void modify() {
    struct people p;
    int i, n, k, w0 = 1, w1, w2 = 0;
    n = load();
    do {
        k = -1;
        printf_face();
        for (i = 0; i < n; i++) {
            if ((i != 0) && (i % 10 == 0)) {
                printf("nn请记着你要修改的职工号。按任意键继续 ...");
                getch();
                puts("nn");
            }
            printf_one(i);
        }
        do {
            printf("nn请输入你要修改的职工信息的职工号:");
            scanf("%s", p.num);
            for (i = 0; i < n; i++)
                if (strcmp(p.num, people[i].num) == 0) {
                    k = i;
                    p = people[i];
                }
            if (k == -1)printf("nn你的输入有误,请从新输入");
        } while (k == -1);
        printf_face();
        printf_one(k);
        w1 = modify_data(k);
        if (w1 == 1) {
            printf("n操作成功! ^_^.n是否继续修改?nnt 1).是 2).否t[ ]bb");
            scanf("%d", &w0);
            w2 = 1;
        } else {
            w0 = 0;
            if (w2 == 1)
                people[k] = p;
        }
        if (w0 != 1 && w2 == 1)
            save(n);
    } while (w0 == 1);
    browse(2);
    printf_back(2);
}

void save(int n) {
    FILE *fp;
    int i;
    if ((fp = fopen("Pro.txt", "wb")) == NULL) {
        printf("n文件打开失败!n");
        //return NULL;
    }
    for (i = 0; i < n; i++)
        if (people[i].num != 0)
            if (fwrite(&people[i], sizeof(struct people), 1, fp) != 1)
                printf("文件写入失败!n");
    fclose(fp);
}

int load() {
    FILE *fp;//定义文件指针
    int i;
    if ((fp = fopen("Pro.txt", "rb")) == NULL) {
        printf("n文件打开失败!n");
        return NULL;
    }
    for (i = 0; !feof(fp); i++)
        fread(&people[i], sizeof(struct people), 1, fp);
    fclose(fp);
    return (i - 1);
}

void del() {
    int w4, a, k = -1, n, w2;
    n = load();
    do {
        int i, n;
        n = load();
        printf_face();
        for (i = 0; i < n; i++) {
            if ((i != 0) && (i % 10 == 0)) {
                printf("nn按任意键继续....");
                getch();
                puts("nn");
            }
            printf_one(i);
        }
        printf("t共有%d条记录.n", n);
        printf("n你确定要删除吗?nt 1).是 2).否 [ ]bb");
        scanf("%d", &w4);
        if (w4 == 1)
            for (a = k; a <= n; a++) {
                strcpy(people[a].num, people[a + 1].num);
                strcpy(people[a].num, people[a + 1].num);
                strcpy(people[a].name, people[a + 1].name);
                strcpy(people[a].sex, people[a + 1].sex);
                strcpy(people[a].age, people[a + 1].age);
                strcpy(people[a].education, people[a + 1].education);
                strcpy(people[a].wage, people[a + 1].wage);
                strcpy(people[a].address, people[a + 1].address);
                strcpy(people[a].telephone, people[a + 1].telephone);

            }


        if (w4 == 1) {
            n = n - 1;
            save(n);
            printf("nn操作成功! ^_^ ");
            printf("nn请输入你要进行的操作: nt 1).继续查询 2).功能菜单 [ ]bb");
            scanf("%d", &w2);
        }

    } while (w2 == 1);
    CheckMenu(5);
}

int modify_data(int i) {
    int c, w1;
    do {
        puts("n请选择你要修改的选项nn 1).职工号 2).姓名 3).性别 4).年龄 5).学历 6)工资 7)住址 8)电话 ");
        printf("您的选择是:[ ]bb");
        scanf("%d", &c);
        if (c > 8 || c < 1) {
            puts("n输入错误,请重新输入!");
            getchar();
        }
    } while (c > 8 || c < 1);

    do {
        switch (c) {
            case 1:
                printf("职工号:");
                scanf("%s", people[i].num);
                break;
            case 2:
                printf("姓名:");
                scanf("%s", people[i].name);
                break;
            case 3:
                printf("性别:");
                scanf("%s", people[i].sex);
                break;
            case 4:
                printf("年龄:");
                scanf("%s", people[i].age);
                break;
            case 5:
                printf("学历:");
                scanf("%s", people[i].education);
                break;
            case 6:
                printf("工资:");
                scanf("%s", people[i].wage);
                break;
            case 7:
                printf("住址:");
                scanf("%s", people[i].address);
                break;
            case 8:
                printf("电话:");
                scanf("%s", people[i].telephone);
                break;
        }
        puts("n现在信息:n");
        printf_face();
        printf_one(i);
        printf("n你确定吗nnt 1).是 2).否 3).返回且不保存 [ ]bb");
        scanf("%d", &w1);
    } while (w1 == 2);

    return w1;
}

void printf_face() {
    printf(" 职工号 姓名 性别 年龄 学历 工资 住址 电话 n");
}

void printf_one(int i) {//输出各个
    printf("%9s%9s%9s%9s%9s%9s%10s%12sn", people[i].num, people[i].name, people[i].sex, people[i].age, people
    [i].education, people[i].wage, people[i].address, people[i].telephone);
}

void printf_back(int m) {
    int w;
    printf("nt操作成功!.^_^nn");
    printf("请选择:nnt1).浏览所有信息 t2).返回 : [ ]bb");
    scanf("%d", &w);
    if (w == 1) {
        browse(2);
        CheckMenu(m);
    } else CheckMenu(m);;
}

void open() {
    system("start C:\Users\21961\Desktop\zhuti\职工\Pro.txt");
    system("pause");
    CheckMenu(6);
}

void menu() {
    system("cls");
    int n, w1;
    do {
        system("cls");//清
        printf("tttttt职 工 信 息 管 理 系 统          n");
        printf("ttttt==================菜 单==================n");
        printf("ttttt*           1.输入职工信息              *n");
        printf("ttttt*                                       *n");
        printf("ttttt*           2.修改职工信息              *n");
        printf("ttttt*                                       *n");
        printf("ttttt*           3.浏览职工信息              *n");
        printf("ttttt*                                       *n");
        printf("ttttt*           4.查询职工信息              *n");
        printf("ttttt*                                       *n");
        printf("ttttt*           5.删除职工信息              *n");
        printf("ttttt*                                       *n");
        printf("ttttt*           6.读取职工信息              *n");
        printf("ttttt*                                       *n");
        printf("ttttt*           0.    退出                  *n");
        printf("ttttt*                                       *n");
        printf("ttttt=========================================n");
        printf("ttt请选择(1-6):[ ]bb");
        scanf("%d", &n);
        if (n < 1 || n > 6)
            w1 = 1;
        else w1 = 0;
    } while (w1 == 1);
    switch (n) {
        if (n % 1 != 0) {
            printf("请重新输入");
            system("cls");
            menu();
        }
        case 1:
            enter();
            break;
        case 2:
            modify();
            break;
        case 3:
            browse(1);
            break;
        case 4:
            search();
            break;
        case 5:
            del();
            break;
        case 6:
            open();
            break;
        case 0:
            exit(0);

    }
}

void CheckMenu(int n) {
    printf("n选择菜单! ^_^.nnt 1).返回当前功能 2).返回主菜单 3)退出程序t[ ]bb");
    int f;
    scanf("%d", &f);
    CheckMenudo(n, f);
}

void CheckMenudo(int n, int f) {
    if (f == 1) {
        if (n == 1) {
            enter();
        } else if (n == 2) {
            modify();
        } else if (n == 3) {
            browse(1);
        } else if (n == 4) {
            search();
        } else if (n == 5) {
            del();
        } else if (n == 6) {
            open();
        } else {
            printf("输入有误,请重新输入!!");
            CheckMenu(n);
        }
    } else if (f == 2) {
        menu();
    } else if (f == 3) {
        exit(0);
    } else {
        printf("输入有误,请重新输入!!");
        CheckMenu(n);
    }
}

int main() {
    system("color f0");
    system("cls");
    menu();
}

总结

提示:作为参考供大家使用:

用到了比较浅薄C语言技术和知识,欢迎各位大佬经行优化和改进,不胜感激_

付源文件:
https://download.csdn.net/download/qq_30986065/85295120

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

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

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