likes
comments
collection
share

C++实现工资管理中的随机教师信息生成功能

作者站长头像
站长
· 阅读数 73

使用C++实现工资管理中的随机教师信息生成功能,想要做一个教师工资管理系统,就必须得准备好数据,但是这些数据如果用手一行一行地敲,那么工作量是非常大的,因此,我就产生了用C语言实现直接生成大量的教师基本信息的想法,需要的朋友可以参考下。

教师的基本信息

typedef struct teacher {
    int teaNo;           // 教工号
    char* teaName;       // 教师名字
    char* teaSex;        // 教师性别
    char* workUnitName;  // 工作单位
    char* address;       // 家庭住址
    char* telNo;         // 电话号码
    double basicWage;    // 基本工资
    double allowance;    // 津贴
    double tax;          // 所得税
} Teacher;

生成姓名

char* nameGen() {
    // 产生姓名
    // 21个姓
    char LastName[21][8] = {"赵", "钱", "孙", "李", "周", "吴", "郑",
                            "王", "黄", "路", "蔡", "司", "张", "高",
                            "刘", "胡", "侯", "花", "柳", "韩", "常"};
    // 16 个名
    char FirstName[16][8] = {"长", "广", "亮", "乐", "璐", "泉", "雨", "楠",
                             "同", "曈", "火", "淼", "旺", "富", "健", "康"};
    int ran_LastName = rand() % 21;
    int ran_FirstName1 = rand() % 16;
    int ran_FirstName2 = rand() % 16;
    char* fullName = (char*)malloc(sizeof(char) * 16);
    strcpy(&fullName[0], LastName[ran_LastName]);
    int len1 = strlen(fullName);
    strcpy(&fullName[len1], FirstName[ran_FirstName1]);
    int len2 = strlen(fullName);
    strcpy(&fullName[len2], FirstName[ran_FirstName2]);
    int len3 = strlen(fullName);
    fullName[len3] = '\0';
    return fullName;
}

生成地址

char* addrGen() {
    // 产生 10 个地址
    int rand0 = rand() % 5;
    int rand1 = rand() % 52;
    char City[5][40] = {"西安市雁塔区春林四路", "西安市莲湖区西北一路",
                        "西安市碑林区长安北路", "西安市经济技术尚苑路",
                        "西安市高新区高新一路"};
    char* addr = (char*)malloc(sizeof(char) * 1024);
    char *temp = City[rand0];
    int len = strlen(temp);
    strcpy(&addr[0], temp);
    char No[3] = {0};
    strcpy(&No[0],transfer(rand1));
    strcpy(&addr[len], No);
    int len1 = strlen(addr);
    strcpy(&addr[len1], "号");
    int len3 = strlen(addr);
    addr[len3] = '\0';
    return addr;
}

生成电话号码

char* TelGen() {
    // 随机产生电话号码
    // 号码头
    char num[10][4] = {"135", "136", "137", "139", "151",
                       "158", "155", "159", "173", "177"};
    // 号码尾 1
    char numbody1[10][4] = {"123", "666", "345", "176", "124",
                            "342", "342", "453", "333", "888"};
    // 号码尾 2
    char numbody2[10][6] = {"33345", "54555", "34545", "66456", "77777",
                            "11781", "08704", "57855", "37842", "56798"};
    int ran1 = rand() % 10;
    int ran2 = rand() % 10;
    int ran3 = rand() % 10;
    char* Tell = (char*)malloc(sizeof(char) * 12);
    strcpy(&Tell[0], num[ran1]);
    strcpy(&Tell[3], numbody1[ran2]);
    strcpy(&Tell[6], numbody2[ran3]);
    return Tell;
}

代码总览

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 文件路径宏
#define TEADIR "/Users/****/CProjects/****/Data/teacherinfo.txt"
#define MANDIR "/Users/****/CProjects/****/Data/maninfo.txt"
#define TEAPW "/Users/****/CProjects/****/Password/pw_tea.txt"
#define MANPW "/Users/****/CProjects/****/Password/pw_man.txt"
// 教师申诉缓冲池 以及 管理员待办缓冲池 的路径宏
#define FROMTEA "/Users/****/CProjects/****/Message/from_tea.txt"
#define TOMAN "/Users/*****/CProjects/****/Message/to_man.txt"
// 其它函数声明
char* transfer(int num);
typedef struct teacher {
    int teaNo;           // 教工号
    char* teaName;       // 教师名字
    char* teaSex;        // 教师性别
    char* workUnitName;  // 工作单位
    char* address;       // 家庭住址
    char* telNo;         // 电话号码
    double basicWage;    // 基本工资
    double allowance;    // 津贴
    double tax;          // 所得税
} Teacher;
char* nameGen() {
    // 产生姓名
    // 21个姓
    char LastName[21][8] = {"赵", "钱", "孙", "李", "周", "吴", "郑",
                            "王", "黄", "路", "蔡", "司", "张", "高",
                            "刘", "胡", "侯", "花", "柳", "韩", "常"};
    // 16 个名
    char FirstName[16][8] = {"长", "广", "亮", "乐", "璐", "泉", "雨", "楠",
                             "同", "曈", "火", "淼", "旺", "富", "健", "康"};
    int ran_LastName = rand() % 21;
    int ran_FirstName1 = rand() % 16;
    int ran_FirstName2 = rand() % 16;
    char* fullName = (char*)malloc(sizeof(char) * 16);
    strcpy(&fullName[0], LastName[ran_LastName]);
    int len1 = strlen(fullName);
    strcpy(&fullName[len1], FirstName[ran_FirstName1]);
    int len2 = strlen(fullName);
    strcpy(&fullName[len2], FirstName[ran_FirstName2]);
    int len3 = strlen(fullName);
    fullName[len3] = '\0';
    return fullName;
}
char* sexGen() {
    // 产生性别
    char* sex = (char*)malloc(sizeof(char) * 3);
    int ran = rand() % 2;
    if (ran == 1) {
        strcpy(&sex[0], "男");
    } else {
        strcpy(&sex[0], "女");
    }
    sex[3] = '\0';
    return sex;
}
char* addrGen() {
    // 产生 10 个地址
    int rand0 = rand() % 5;
    int rand1 = rand() % 52;
    char City[5][40] = {"西安市雁塔区春林四路", "西安市莲湖区西北一路",
                        "西安市碑林区长安北路", "西安市经济技术尚苑路",
                        "西安市高新区高新一路"};
    char* addr = (char*)malloc(sizeof(char) * 1024);
    char *temp = City[rand0];
    int len = strlen(temp);
    strcpy(&addr[0], temp);
    char No[3] = {0};
    strcpy(&No[0],transfer(rand1));
    strcpy(&addr[len], No);
    int len1 = strlen(addr);
    strcpy(&addr[len1], "号");
    int len3 = strlen(addr);
    addr[len3] = '\0';
    return addr;
}
char* transfer(int num){
    int a = num%10;
    int b = num/10;
    char *str = (char*)malloc(sizeof(char)*2);
    str[0] = a+'0';
    str[1] = b+'0';
    str[2] = '\0';
    return str;
}
char* TelGen() {
    // 随机产生电话号码
    // 号码头
    char num[10][4] = {"135", "136", "137", "139", "151",
                       "158", "155", "159", "173", "177"};
    // 号码尾 1
    char numbody1[10][4] = {"123", "666", "345", "176", "124",
                            "342", "342", "453", "333", "888"};
    // 号码尾 2
    char numbody2[10][6] = {"33345", "54555", "34545", "66456", "77777",
                            "11781", "08704", "57855", "37842", "56798"};
    int ran1 = rand() % 10;
    int ran2 = rand() % 10;
    int ran3 = rand() % 10;
    char* Tell = (char*)malloc(sizeof(char) * 12);
    strcpy(&Tell[0], num[ran1]);
    strcpy(&Tell[3], numbody1[ran2]);
    strcpy(&Tell[6], numbody2[ran3]);
    return Tell;
}
double basicWageGen() {
    // 随机产生基本工资
    int wage1 = (rand() % 3) * 1000 + 3000;
    double wage2 = (rand() % 30) * 1.87 + 600;
    double wageTotal = wage1 + wage2;
    return wageTotal;
}
double alloGen() {
    double allo = (rand() % 20) * 1.87 + 456;
    return allo;
}
double taxGen(int totalWage) {
    // 经过计算,税前收入最高为 5654.23 元
    // 税收将会按照 3%进行征收,且征收起点为 5000 元
    double tax = 0;
    if (totalWage <= 5000) {
        tax = 0;
    } else {
        tax = totalWage * 0.03;
    }
    return tax;
}
int main() {
    for (int i = 10000; i < 10300; i++) {
        Teacher teacher;
        teacher.teaNo = i;
        teacher.teaName = nameGen();
        teacher.teaSex = sexGen();
        teacher.workUnitName = "航天城第四小学";
        teacher.address = addrGen();
        teacher.telNo = TelGen();
        teacher.basicWage = basicWageGen();
        teacher.allowance = alloGen();
        teacher.tax = taxGen(teacher.basicWage + teacher.allowance);
        // 打开文件,进行读写
        FILE* fp = fopen(TEADIR, "a");
        if (fp == NULL) {
            printf("打开文件失败,请重新确认路径!\n");
        }
        fprintf(fp, "%d %s %s %s %s %s %.2f元 %.2f元 %.2f元\n", teacher.teaNo,
                teacher.teaName, teacher.teaSex, teacher.workUnitName,
                teacher.address, teacher.telNo, teacher.basicWage,
                teacher.allowance, teacher.tax);
    }
    return 0;
}

数据生成效果

10000 王广曈  航天城第四小学 西安市雁塔区春林四路42号 15133366456 4600.00 465.35 151.95
10001 赵亮乐  航天城第四小学 西安市碑林区长安北路54号 13534566456 4616.83 487.79 153.12
10002 钱泉淼  航天城第四小学 西安市莲湖区西北一路13号 15934234545 4637.40 480.31 153.51
10003 王富乐  航天城第四小学 西安市碑林区长安北路61号 13934211781 5614.96 476.57 182.73
10004 郑泉曈  航天城第四小学 西安市经济技术尚苑路02号 17312377777 5600.00 461.61 181.83
10005 韩火泉  航天城第四小学 西安市莲湖区西北一路14号 15933337842 4652.36 457.87 153.30
10006 韩富曈  航天城第四小学 西安市经济技术尚苑路42号 15888811781 4616.83 457.87 152.22
10007 黄乐曈  航天城第四小学 西安市莲湖区西北一路01号 17317611781 4622.44 467.22 152.67
10008 高广雨  航天城第四小学 西安市莲湖区西北一路71号 13633357855 5613.09 487.79 183.00
10009 张长曈  航天城第四小学 西安市雁塔区春林四路74号 15833334545 4614.96 478.44 152.79
10010 郑泉火  航天城第四小学 西安市雁塔区春林四路84号 13912308704 3641.14 465.35 0.00
10011 蔡旺康  航天城第四小学 西安市雁塔区春林四路84号 13666633345 3614.96 487.79 0.00
10012 蔡健同  航天城第四小学 西安市雁塔区春林四路24号 13733311781 3644.88 461.61 0.00
10013 钱同曈  航天城第四小学 西安市经济技术尚苑路22号 13912337842 4600.00 463.48 151.89
10014 钱雨火  航天城第四小学 西安市经济技术尚苑路41号 15112333345 3624.31 469.09 0.00
10015 高广同  航天城第四小学 西安市碑林区长安北路33号 15534266456 4626.18 470.96 152.91
10016 侯淼曈  航天城第四小学 西安市碑林区长安北路72号 17734577777 4614.96 485.92 153.00
10017 柳楠康  航天城第四小学 西安市高新区高新一路94号 13945311781 5603.74 476.57 182.40
10018 郑广曈  航天城第四小学 西安市雁塔区春林四路80号 15834257855 4607.48 476.57 152.52
10019 李富同  航天城第四小学 西安市高新区高新一路00号 15888857855 3624.31 472.83 0.00
10020 花康楠  航天城第四小学 西安市经济技术尚苑路43号 15533356798 3644.88 489.66 0.00
10021 赵富淼  航天城第四小学 西安市经济技术尚苑路70号 13612456798 4654.23 456.00 153.30
10022 高楠雨  航天城第四小学 西安市碑林区长安北路73号 15934233345 5626.18 487.79 183.39
10023 胡同健  航天城第四小学 西安市莲湖区西北一路44号 15145377777 5652.36 465.35 183.51
10024 黄乐广  航天城第四小学 西安市经济技术尚苑路30号 15945366456 5628.05 485.92 183.39
10025 常同雨  航天城第四小学 西安市雁塔区春林四路82号 13534208704 5628.05 480.31 183.24
10026 常长火  航天城第四小学 西安市碑林区长安北路13号 17312456798 3643.01 476.57 0.00
10027 侯火曈  航天城第四小学 西安市莲湖区西北一路04号 17717657855 4633.66 456.00 152.67
10028 高长乐  航天城第四小学 西安市雁塔区春林四路83号 15834257855 5600.00 467.22 182.01
10029 韩曈曈  航天城第四小学 西安市经济技术尚苑路23号 15133357855 3616.83 484.05 0.00
10030 常雨泉  航天城第四小学 西安市高新区高新一路30号 15988811781 3605.61 461.61 0.00
10031 郑广火  航天城第四小学 西安市莲湖区西北一路05号 15134566456 4650.49 456.00 153.18
10032 赵康长  航天城第四小学 西安市雁塔区春林四路63号 13933366456 5618.70 482.18 183.00
10033 黄楠同  航天城第四小学 西安市高新区高新一路05号 17766633345 4624.31 474.70 152.97
10034 胡乐亮  航天城第四小学 西安市高新区高新一路62号 15588833345 4648.62 463.48 153.36
10035 郑健长  航天城第四小学 西安市高新区高新一路00号 17366633345 5639.27 457.87 182.91
10036 常同亮  航天城第四小学 西安市高新区高新一路33号 13534234545 3652.36 487.79 0.00
10037 蔡健旺  航天城第四小学 西安市碑林区长安北路34号 13534233345 5605.61 465.35 182.10
10038 常雨淼  航天城第四小学 西安市碑林区长安北路54号 13512356798 3620.57 469.09 0.00
10039 黄曈广  航天城第四小学 西安市经济技术尚苑路60号 15812411781 5637.40 476.57 183.39
10040 孙健曈  航天城第四小学 西安市经济技术尚苑路50号 15534277777 5633.66 478.44 183.36
10041 胡璐旺  航天城第四小学 西安市碑林区长安北路11号 17366654555 5620.57 476.57 182.91
10042 王康富  航天城第四小学 西安市雁塔区春林四路04号 17317657855 4601.87 461.61 151.89
10043 王富康  航天城第四小学 西安市雁塔区春林四路11号 13734208704 4644.88 457.87 153.06
10044 王泉康  航天城第四小学 西安市经济技术尚苑路42号 13634233345 4609.35 480.31 152.67
10045 韩长楠  航天城第四小学 西安市雁塔区春林四路74号 15533311781 4631.79 472.83 153.12
10046 常健同  航天城第四小学 西安市碑林区长安北路82号 15166633345 5639.27 463.48 183.06
10047 侯雨健  航天城第四小学 西安市碑林区长安北路31号 17312411781 3652.36 472.83 0.00
10048 胡楠同  航天城第四小学 西安市雁塔区春林四路42号 15817637842 3601.87 478.44 0.00
10049 柳璐泉  航天城第四小学 西安市雁塔区春林四路22号 15834533345 3631.79 491.53 0.00
10050 胡乐富  航天城第四小学 西安市高新区高新一路44号 17766611781 5652.36 480.31 183.96
10051 郑广雨  航天城第四小学 西安市莲湖区西北一路24号 13933308704 4654.23 485.92 154.20
10052 常旺楠  航天城第四小学 西安市雁塔区春林四路74号 13712456798 5644.88 469.09 183.39
10053 周楠泉  航天城第四小学 西安市莲湖区西北一路31号 17766666456 4652.36 491.53 154.29
10054 吴康楠  航天城第四小学 西安市莲湖区西北一路13号 15134254555 4611.22 474.70 152.55
10055 韩长同  航天城第四小学 西安市高新区高新一路92号 15912356798 4613.09 459.74 152.16
10056 高泉旺  航天城第四小学 西安市碑林区长安北路73号 17733366456 5639.27 478.44 183.51
10057 周富富  航天城第四小学 西安市雁塔区春林四路05号 15134254555 3624.31 469.09 0.00
10058 黄璐楠  航天城第四小学 西安市碑林区长安北路00号 13517656798 5635.53 467.22 183.06
10059 黄广淼  航天城第四小学 西安市莲湖区西北一路11号 13512366456 5646.75 461.61 183.24
10060 常康同  航天城第四小学 西安市高新区高新一路34号 17712308704 5631.79 480.31 183.36
10061 高广火  航天城第四小学 西安市莲湖区西北一路92号 13612454555 4611.22 476.57 152.61
10062 李火璐  航天城第四小学 西安市高新区高新一路92号 13645356798 5631.79 474.70 183.18
10063 孙泉泉  航天城第四小学 西安市碑林区长安北路04号 15188857855 3603.74 474.70 0.00
10064 王雨广  航天城第四小学 西安市莲湖区西北一路61号 17734556798 5618.70 478.44 182.91
10065 李雨璐  航天城第四小学 西安市雁塔区春林四路90号 15866654555 5628.05 457.87 182.55
10066 张雨同  航天城第四小学 西安市经济技术尚苑路33号 17734266456 3609.35 489.66 0.00
10067 柳曈雨  航天城第四小学 西安市经济技术尚苑路51号 17712311781 3626.18 482.18 0.00
10068 赵健璐  航天城第四小学 西安市莲湖区西北一路20号 13512333345 3639.27 469.09 0.00
10069 钱乐泉  航天城第四小学 西安市经济技术尚苑路30号 17334266456 3635.53 480.31 0.00
10070 胡康璐  航天城第四小学 西安市高新区高新一路05号 13512366456 3633.66 459.74 0.00
10071 王旺曈  航天城第四小学 西安市雁塔区春林四路02号 15545333345 4624.31 480.31 153.12
10072 赵泉同  航天城第四小学 西安市雁塔区春林四路60号 15917637842 3646.75 459.74 0.00
10073 常亮广  航天城第四小学 西安市雁塔区春林四路53号 13934211781 4628.05 457.87 152.55
10074 钱火乐  航天城第四小学 西安市经济技术尚苑路05号 15988837842 5613.09 465.35 182.34
10075 孙旺雨  航天城第四小学 西安市雁塔区春林四路91号 13545308704 4641.14 461.61 153.06
10076 黄火康  航天城第四小学 西安市经济技术尚苑路50号 13512337842 3644.88 469.09 0.00
10077 郑楠火  航天城第四小学 西安市高新区高新一路32号 15512434545 4626.18 482.18 153.24
10078 侯璐康  航天城第四小学 西安市经济技术尚苑路74号 15117677777 4620.57 478.44 152.97
10079 张乐楠  航天城第四小学 西安市高新区高新一路44号 13645366456 5652.36 463.48 183.45
10080 胡亮淼  航天城第四小学 西安市莲湖区西北一路92号 15912456798 4639.27 472.83 153.36
10081 钱淼健  航天城第四小学 西安市碑林区长安北路31号 13634208704 4628.05 476.57 153.12
10082 司璐雨  航天城第四小学 西安市碑林区长安北路92号 17734233345 4641.14 461.61 153.06
10083 侯泉康  航天城第四小学 西安市莲湖区西北一路10号 17312333345 3644.88 478.44 0.00
10084 郑亮同  航天城第四小学 西安市碑林区长安北路53号 13734566456 4605.61 459.74 151.95
10085 韩璐火  航天城第四小学 西安市雁塔区春林四路02号 13512456798 3607.48 484.05 0.00
10086 蔡长楠  航天城第四小学 西安市经济技术尚苑路23号 13733333345 5637.40 472.83 183.30
10087 路楠乐  航天城第四小学 西安市经济技术尚苑路53号 13634537842 3600.00 457.87 0.00
10088 侯旺淼  航天城第四小学 西安市高新区高新一路72号 17712334545 5646.75 491.53 184.14
10089 郑楠淼  航天城第四小学 西安市高新区高新一路05号 15112334545 5644.88 457.87 183.06
10090 侯璐火  航天城第四小学 西安市雁塔区春林四路03号 17712334545 3643.01 470.96 0.00
10091 赵富健  航天城第四小学 西安市经济技术尚苑路81号 17745366456 4614.96 485.92 153.00
10092 李泉淼  航天城第四小学 西安市高新区高新一路02号 13534534545 3613.09 467.22 0.00
10093 胡长乐  航天城第四小学 西安市莲湖区西北一路50号 15917608704 3603.74 465.35 0.00
10094 韩广广  航天城第四小学 西安市雁塔区春林四路34号 13633377777 3633.66 472.83 0.00
10095 钱雨璐  航天城第四小学 西安市碑林区长安北路42号 15534266456 5626.18 478.44 183.12
10096 柳亮长  航天城第四小学 西安市碑林区长安北路52号 15545334545 3637.40 474.70 0.00
10097 吴旺曈  航天城第四小学 西安市雁塔区春林四路11号 13717666456 3601.87 472.83 0.00
10098 周雨广  航天城第四小学 西安市莲湖区西北一路12号 17734208704 4626.18 482.18 153.24
10099 孙楠曈  航天城第四小学 西安市碑林区长安北路71号 13534554555 4626.18 461.61 152.61
转载自:https://juejin.cn/post/7249650184216363066
评论
请登录