first commit

master
p85324670 6 years ago
commit 1eab0a4156

@ -0,0 +1,469 @@
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<windows.h>
FILE *fp;//文件指针
int i_entry=0;//职工的人数统计
#define MIN_C 100//每个数据对应字符串类型占据的大小
#define MAX_G 1000//职工信息量大小
struct student {
char ID[MIN_C];//职工学号
char name[MIN_C];//职工姓名
char basesalary[MIN_C];//职工基本工资
char dutywage[MIN_C];//职工职务工资
char postallowance[MIN_C];//职工津贴
char accumulationfund[MIN_C];//公积金
char medicalinsurance[MIN_C];//职工医疗保险
int totalwage;//总工资
}DATA[MAX_G];
struct student temp[1000];//用于排序的中间变量
struct student are;
//被调函数
void init();//文件的初始化读入
void GREEN();//控制台颜色为绿色
void RED();//控制台调整前景色为红色
void LIGHT();//控制台调整前景色为强光
void deal();//处理数据
//dell()函数包含的自定义函数
void notice();//提示信息
void case1();//职工综合信息录入
void entry();
void file_save();
void case2();//职工综合信息浏览
void i_printf();
void case3();//综合信息排序浏览
void ID_sort(int I,int L);
void name_sort(int I,int L);
void case4();//职工个人信息查询
void ID_find();
void name_find();
void case5();//职工综合信息修改
void Change(int x);
void case6();//职工信息的删除
int main()
{ GREEN();
printf(">********* 您好 ><欢迎使用职工信息管理系统 *********<\n");
printf(">******尊敬的用户请输入正确的密码超过4次错误将退出系统哦\n");
int u=3;
char s[15];
while(u--)
{if(u==2)
printf("您好,请输入正确密码 ") ;
else
printf("您好,您的密码有误,请重新输入");
scanf("%s",s);
if(strcmp("123456789",s)==0)
{
break;
}
else
continue;
}
if(u==0)
{ GREEN();
printf(" 》****** 您好您的密码输入有误sorry\n");
return 0;
}
else
{
if((fp=fopen("student_data.txt","r+"))==NULL)
{
printf("FILE\n");
fp=fopen("student_data.txt","w+");
}
init();//文件的初始化读入
LIGHT();
printf("当前总人数:%d\n",i_entry);
GREEN();//控制台颜色为绿色
printf(">********** 欢迎您使用职工信息管理系统1.1 **********<\n");
printf(">********** 请输入以下命令行所对应的数字进行操作: **********<\n");
printf(">**********请确定正确退出程序,否则文件将不能被正常保存。**********<\n");
deal();//处理数据
fclose(fp);//文件正常关闭
return 0;
}}
void init() //文件的初始化读取
{
while (!feof(fp))
{
fscanf(fp, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",DATA[i_entry].ID, DATA[i_entry].name,DATA[i_entry].basesalary,
DATA[i_entry].dutywage, DATA[i_entry].postallowance, DATA[i_entry].medicalinsurance, DATA[i_entry].accumulationfund, DATA[i_entry].totalwage);
i_entry++;
}
}
void RED() {//控制台调整前景色为红色
HANDLE kai_1 = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(kai_1, FOREGROUND_INTENSITY | FOREGROUND_RED); // 为红色
}
void GREEN() {//控制台调整前景色为绿色
HANDLE kai_2 = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(kai_2, FOREGROUND_INTENSITY | FOREGROUND_GREEN);// 为绿色
}
void LIGHT(){
HANDLE kai_2 = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(kai_2, FOREGROUND_INTENSITY | FOREGROUND_INTENSITY);// 为强光
}
void deal() {//主要处理函数
int k,flag,p;
p=1;
notice();
flag=1;
while(flag) {
if(p>1)
{
system("cls");
notice();
}
scanf("%d",&k);
system("cls");
switch(k) {
case 0: {
puts("温馨提醒:");
puts("\t ^…………^……^^谢谢您的支持,欢迎再次使用!^^……^…………^ ");
puts("\t*******职工基本信息已保存在当前目录文件 student_data.txt 下********");
flag=0;
LIGHT();
break;
}
case 1: {
case1();
break;
}
case 2: {
case2();
break;
}
case 3: {
case3();
break;
}
case 4: {
case4();
break;
}
case 5: {
case5();
break;
}
default: {
RED();
printf("请正确键入命令前数字!\n");
GREEN();
break;
}
}
p=1103;
puts("\n");
}
}
void notice() {//提示信息
RED();
puts("\t\t\t1.职工综合信息输入");
puts("\t\t\t2.职工综合信息显示");
puts("\t\t\t3.职工综合信息统计");
puts("\t\t\t4.职工个人信息查询");
puts("\t\t\t5.职工综合信息修改");
printf("\t\t\t0. 退 出 系 统\n");
GREEN();
printf("请键入:");
}
//11111111111
void case1() {//学生综合信息录入
int flag;
flag=1;
while(flag) {
entry();
LIGHT();
printf("提示1,继续录入0,录入完成.是否继续录入:");
GREEN();
scanf("%d",&flag);
i_entry++;
}
}
void entry() {//职工信息的录入
int flag,i;
system("cls");
init();
flag=1;
puts("***************>>>>>>当前模式为职工信息录入状态<<<<<<*************");
printf("请输入职工ID号");
flag=1;//标识变量,用以判断该信息是否已存在
scanf("%s",&DATA[i_entry].ID);
for(i=0; i<i_entry; i++) //判断输入数据的正误,即文件中是否已存在该信息
if(strcmp(DATA[i].ID,DATA[i_entry].ID)==0) {
flag=0;
break;
}
if(flag==1) {
printf("请输入职工姓名:");
scanf("%s",DATA[i_entry].name);
printf("请输入职工基本工资:");
scanf("%s",DATA[i_entry].basesalary);
printf("请输入职工职务工资:");
scanf("%s",DATA[i_entry].dutywage);
printf("请输入职工津贴:");
scanf("%s",DATA[i_entry].postallowance);
printf("请输入职工医疗保险:");
scanf("%s",DATA[i_entry].medicalinsurance);
printf("请输入职工公积金:");
scanf("%s",DATA[i_entry].accumulationfund);
printf("请输入职工总工资:");
scanf("%s",DATA[i_entry].totalwage);
file_save();
}
if(flag==0)
puts("该ID已经存在如需修改请转到修改命令");
}
void file_save() {//信息以文件格式录入函数
fprintf(fp, "%s\t\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",DATA[i_entry].ID, DATA[i_entry].name,DATA[i_entry].basesalary,
DATA[i_entry].dutywage, DATA[i_entry].postallowance, DATA[i_entry].medicalinsurance, DATA[i_entry].accumulationfund, DATA[i_entry].totalwage);
printf("保存成功!");
}
//2222222222222
void case2() {//职工综合信息显示
puts("***************>>>>>>当前模式为职工信息显示状态<<<<<<*************");
i_printf();
}
void i_printf() {//职工信息的输出
int i,k=1;
//printf("ID\t姓名\t基本工资\t职务工资\t津贴\t医疗保险\t公积金\t总工资");
printf("\n");
if(k)
{
for(i=0; i<i_entry; i++)
{
printf("ID%-18s\n",&DATA[i].ID);
printf("姓名:%-16s\n",DATA[i].name);
printf("基本工资:%-4s\n",&DATA[i].basesalary);
printf("职务工资:%-6s\n",DATA[i].dutywage);
printf("津贴:%-6s\n",&DATA[i].postallowance);
printf("医疗保险:%-6s\n",DATA[i].medicalinsurance);
printf("公积金:%-6s\n",DATA[i].accumulationfund);
printf("总工资:%-6s\n\n",DATA[i].totalwage);
}
LIGHT();
printf("提示退出请按0并按回车键。\n");
scanf("%d",&k);
}
}
void case3()//职工信息统计
{
int z,a=0,b=0,c=0;
//p=emp;
for(z=0;z<i_entry;z++)
{
if(DATA[z].totalwage>3000)
{
a++;
continue;
}
if(DATA[z].totalwage>=2000&&DATA[z].totalwage<=3000)
{
b++;
continue;
}
if(DATA[z].totalwage<=2000&&DATA[z].totalwage>0)
{
c++;
continue;
}
}
printf(" 总工资在3000元以上的职工人数有 %d\n\n",a);
printf(" 总工资在2000元至3000元的职工人数有%d\n\n",b);
printf(" 总工资在2000元以下的职工人数有 %d\n\n",c);
//getchar();
}
//444444444444444
void case4() {//职工个人信息查询
int v;
LIGHT();
printf("提示1,按照ID查询2,按照姓名查询.请键入:");
GREEN();
scanf("%d",&v);
if(v==1) {
ID_find();
}
if(v==2) {
name_find();
}
}
void ID_find() {//ID查找 利用strcmp()函数
int i,flag=0,k;
char wqs[MIN_C];
k=1;
system("cls");
puts("***************>>>>>>当前模式以ID查询信息状态<<<<<<*************");
while(k) {
printf("请键入职工ID ");
scanf("%s",wqs);
for(i=0; i<i_entry; i++)
if(strcmp(DATA[i].ID,wqs)==0)
{
printf("ID%-18s\n",&DATA[i].ID);
printf("姓名:%-16s\n",DATA[i].name);
printf("基本工资:%-4s\n",&DATA[i].basesalary);
printf("职务工资:%-6s\n",DATA[i].dutywage);
printf("津贴:%-12s\n",&DATA[i].postallowance);
printf("医疗保险:%-16s\n",DATA[i].medicalinsurance);
printf("公积金:%-16s\n",DATA[i].accumulationfund);
printf("总工资:%-15s\n\n",DATA[i].totalwage);
flag=1;
}
if(flag==0)
puts("未查找到该职工信息,如需录入信息请重新键入命令.");
LIGHT();
puts("请按照文字提示键入命令:");
printf("\t\t1.继续查询\n\t\t0.退出查询\n请键入命令:");
GREEN();
scanf("%d",&k);
}
}
void name_find() {//姓名查找 利用函数strcmp()==0 的特性
int i,flag=0,k;
char wqs[MIN_C];
k=1;
system("cls");
puts("***************>>>>>>当前模式以姓名查询信息状态<<<<<<*************");
while(k) {
printf("请键入职工姓名: ");
scanf("%s",wqs);
for(i=0; i<i_entry; i++)
if(strcmp(DATA[i].name,wqs)==0) {
printf("ID%-18s\n",&DATA[i].ID);
printf("姓名:%-16s\n",DATA[i].name);
printf("基本工资:%-4s\n",&DATA[i].basesalary);
printf("职务工资:%-6s\n",DATA[i].dutywage);
printf("津贴:%-12s\n",&DATA[i].postallowance);
printf("医疗保险:%-16s\n",DATA[i].medicalinsurance);
printf("公积金:%-16s\n",DATA[i].accumulationfund);
printf("总工资:%-15s\n\n",DATA[i].totalwage);
flag=1;
}
if(flag==0)
puts("未查找到该职工信息,如需录入信息请重新键入命令.");
LIGHT();
puts("请按照文字提示键入命令:");
printf("\t\t1.继续查询\n\t\t0.退出查询\n请键入命令:");
GREEN();
scanf("%d",&k);
}
}
//55555555555
void case5() {//职工综合信息修改
int flag,i,t;
system("cls");
puts("***************>>>>>>当前模式为职工信息修改状态<<<<<<*************");
LIGHT();
printf("选定检索方式1.ID检索\t2.姓名检索. 请键入:");
GREEN();
flag=0;
scanf("%d",&t);
if(t==2) {
LIGHT();
init();
printf("请输入需要修改的职工姓名:");
scanf("%s",&DATA[i_entry].name);
GREEN();
for(i=0; i<i_entry; i++) //判断输入数据的正误
if(strcmp(DATA[i].name,DATA[i_entry].name)==0) {
flag=1;
break;
}
if(flag==1) {
Change(i);
}
if(flag==0)
puts("该姓名不存在,请检查输入是否有误!");
}
if(t==1) {
LIGHT();
init();
printf("请输入需要修改的职工ID");
scanf("%s",&DATA[i_entry].ID);
GREEN();
for(i=0; i<i_entry; i++) //判断输入数据的正误
if(strcmp(DATA[i].ID,DATA[i_entry].ID)==0) {
flag=1;
break;
}
if(flag==1) {
Change(i);
}
if(flag==0)
puts("该ID不存在请检查输入是否有误");
}
}
void Change(int x) {//职工信息的更改提示内容
printf("请输入修改后的职工ID");
scanf("%s",DATA[x].ID);
printf("请输入修改后的职工姓名:");
scanf("%s",DATA[x].name);
printf("请输入修改后的职工基本工资:");
scanf("%s",DATA[x].basesalary);
printf("请输入修改后的职工职务工资:");
scanf("%s",DATA[x].dutywage);
printf("请输入修改后的职工津贴:");
scanf("%s",DATA[x].postallowance);
printf("请输入修改后的职工医疗保险:");
scanf("%s",DATA[x].medicalinsurance);
printf("请输入修改后的职工公积金:");
scanf("%s",DATA[x].accumulationfund);
printf("请输入修改后的职工总工资:");
scanf("%s",DATA[x].totalwage);
puts("数据修改完成!");
file_save();
}
Loading…
Cancel
Save