服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 使用C++实现工资管理中的随机教师信息生成功能

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

2023-05-11 16:15Luyoungs C/C++

这篇文章主要介绍了使用C++实现工资管理中的随机教师信息生成功能,想要做一个教师工资管理系统,就必须得准备好数据,但是这些数据如果用手一行一行地敲,那么工作量是非常大的,因此,我就产生了用C语言实现直接生成大

教师的基本信息

?
1
2
3
4
5
6
7
8
9
10
11
typedef struct teacher {
    int teaNo;           // 教工号
    char* teaName;       // 教师名字
    char* teaSex;        // 教师性别
    char* workUnitName;  // 工作单位
    char* address;       // 家庭住址
    char* telNo;         // 电话号码
    double basicWage;    // 基本工资
    double allowance;    // 津贴
    double tax;          // 所得税
} Teacher;

生成姓名

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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;
}

生成地址

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
}

生成电话号码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
}

代码总览

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#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元

可以看到,产生的数据完全符合预期。

到此这篇关于使用C++实现工资管理中的随机教师信息生成功能的文章就介绍到这了,更多相关C++随机教师信息生成内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_73651896/article/details/129267583

延伸 · 阅读

精彩推荐