行家们帮帮我行不,这串代码我搞了好久真的到现在还没有搞完,今天测试的时候一直在闪退我试了什么都不行我绝望了。
求求行家帮帮我吧。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#define Year 2022
#define Basic_Money 6000
#define Hot 500
#define Spring_festival 12
struct staff {
int number1;
int age;
char name[20];
int mouth_money[14];
int day[14];
struct staff* next1;
};
typedef struct staff STU;
struct car {
int number;
int many;
char huo[50][50];
char mdd[50];
char cfd[50];
struct car* next2;
};typedef struct car CAR;
STU* Append(STU* head);
STU* Appence(STU* head);
STU* Appance(STU* head);
STU* Appchange(STU* change);
STU* Sppund(STU* list);
STU* Appdepncs(STU* head);
STU* Sppond(STU* list);
int Money(STU* list, int i);
STU* Sppend(STU* list);
int Mouth(int i);
STU* Append(STU* head) {
int i;
STU* p = NULL;
STU* ptr = head;
p = (STU*)malloc(sizeof(STU));
if (p == NULL) {
printf("程序出错");
exit(0);
}
else {
if (head == NULL) {
head = p;
}
else {
while (ptr->next1) {
ptr = ptr->next1;
}
ptr->next1 = p;
}
ptr = p;
printf("请输入入职年份\n");
scanf_s("%d", &i);
p->age = Year - i;
printf("请输入姓名\n");
scanf_s("%s", p->name,20);
printf("请输入编号\n");
scanf_s("%d", &p->number1);
}
return head;}
STU Appence(STU head){
int number;
char c;
STU abs = head;
printf("请输入编号\n");
scanf_s("%d", &number);
while (abs != NULL&&abs->number1 != number) {
abs = abs->next1;
}
if (abs == NULL)
{
printf("查找失败\n");
} else {
printf("%d.工龄:%d\n姓名:%s\n", abs->number1, abs->age, abs->name,20);
printf("是否修改该员工信息(y/n)\n");
scanf_s("%c", &c);
while (c == 'y' || c == 'Y') {
abs = Appchange(abs);
}
getchar();
}
return head;}
STU Appance(STU* head)
{ char namege[20];
STU plc=head;
char c;
printf("请输入姓名\n");
scanf_s("%s", namege,20);
while (strcmp(plc->name, namege) != 0 && plc != NULL) {
plc = plc->next1;
}
if (plc != NULL) {
printf("查找失败");
}
else {
printf("%d.编号:%d\n姓名:%s\n",plc->number1,plc->age, plc->name);
printf("是否修改该员工信息(y/n)");
scanf_s("%c", &c);
while (c == 'y' || c == 'Y') {
plc = Appchange(plc);
}
}
return head;}
STU Appchange(STU change){
int i;
printf("请输入修改后的名字");
scanf_s("%s", change->name,20);
printf("请输入入职年份");
scanf_s("%d", &i);
change->age = Year - i;
return change;}
STU Sppund(STU list) {
int i; char xum[20];
STU p = list; printf("请输入姓名");
scanf_s("%s", &xum,20);
printf("请输入查询月份");
scanf_s("%d", &i);
while (p->name != xum && p->next1 != NULL) { p = p->next1; }
if (p->next1 == NULL) {
printf("查无此人,请确认信息'n"); }
else {
p->mouth_money[i] = Money(p, i);
p->day[i] = Mouth(i);
printf("当月工资为%d",p->mouth_money[i] ); printf("当月休假为%d", p->day[i]);
}
return list;}
STU* Sppond(STU list){
int i,number; STU p=list;
printf("请输入编号\n");
scanf_s("%d", &number);
printf("请输入查询月份\n");
scanf_s("%d", &i);
while (p->number1 != number && p->next1 != NULL) {
p = p->next1; }
if (p->next1 == NULL) {
printf("查无此人,请确认信息\n");}
else {
p->mouth_money[i] = Money(p, i);
p->day[i] = Mouth(i);}return list;}
STU* Sppand(STU* list) {
int i, year_money = 0, day = 0;
char xum[20];
STU* p = list;
printf("请输入姓名\n");
scanf_s("%s", &xum);
while (p->name != xum && p->next1 != NULL) { p = p->next1; }
if (p->next1 == NULL) {
printf("查无此人,请确认信息\n");
} else {
for (i = 1; i <= 12; i++) {
p->mouth_money[i] = Money(p, i); p->day[i] = Mouth(i);
year_money = year_money + p->mouth_money[i];
day = day + p->day[i]; }
printf("当月工资为%d", year_money);
printf("当月休假为%d", day); }
return list;}
STU* Sppend(STU* list) {
int i, number, year_money=0, day=0;
STU* p = list; printf("请输入编号");
scanf_s("%d", &number);
while (p->number1 != number && p->next1 != NULL) {
p = p->next1; }
if (p->next1 == NULL) {
printf("查无此人,请确认信息");
}
else {
for (i = 1; i <= 12; i++) {
p->mouth_money[i] = Money(p, i);
p->day[i] = Mouth(i);
year_money = year_money + p->mouth_money[i];
day = day + p->day[i];
}
printf("当年工资为%d", year_money);
printf("当年休假为%d", day); }
return list;}int Money(STU* list, int i) {
int money = 0;
if (list->age <= 5) {
money = Basic_Money + list->age * 600; }
else if (list->age <= 8) {
money = Basic_Money + list->age * 520; }
else {
money = Basic_Money + 4500; }
if (i >= 5 && i <= 9) {
money = Basic_Money + Hot; }
return money;}int Mouth(int i) { if (i >= 5 && i <= 10) {
return 2; }
else if (i >= 11 && i <= 12) {
return 4; }
else if (i >= 2 && i <= 4)
{ return 3; }
else {
return Spring_festival;
}}STU* Appjun(STU* head)
{
int count = 0, all = 0;
STU* p = head;
while (p != NULL)
{
all = all + p->age;
p = p->next1;
count++;
}
all = all / (float)count; printf("公司员工的平均年龄为%d", all);
return(head);}
STU* Appdepncs(STU* head) {
STU* p = head;
int i,all=0,count=0;
while(p != NULL){
for (i = 1; i <= 12; i++) {
p->mouth_money[i] = Money(p, i); all = all + p->mouth_money[i];
count++;
} p = p->next1;}
all = all / (float)count;
printf("平均月薪为%d", all);
return head;}char Menu(void) {
system("cls");
printf("\n------------------------------------------------------------------------------------------------------------------------\n");
printf("\n------------------------------------------------------------------------------------------------------------------------\n");
printf("\n------------------------------------------------------------------------------------------------------------------------\n");
printf("\t\t欢迎使用HXS,请输入相应字母,我们将为你提供以下服务\n\n\n\n");
printf("\t\t<一>关于福州恒兴盛。\n\n");
printf("\t\ta,公司成员信息统计和输入。\n\n"); printf("\t\tb.成员信息编号查询。\n\n");
printf("\t\tc.成员信息姓名查询。\n\n");
printf("\t\td.成员月薪编号查询。\n\n");
printf("\t\te.成员月薪姓名查询。\n\n");
printf("\t\tf.成员年薪编号查询。\n\n");
printf("\t\tg.成员年薪姓名查询。\n\n");
printf("\t\th.公司成员的平均月薪。\n\n");
printf("\t\ti.公司成员的平均工龄。\n\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\t\t\n");
printf("\n------------------------------------------------------------------------------------------------------------------------\n");
printf("\n------------------------------------------------------------------------------------------------------------------------\n");
printf("\n------------------------------------------------------------------------------------------------------------------------\n");
char ch ;
scanf_s("%c", &ch);
return ch;}
int main(void){
char ch;
STU* head1 = NULL;
CAR* head2 = NULL;
while (1) {
ch = Menu();
switch (ch) {
case 'a':head1=Append(head1);//创建链表 break;
case 'b':head1=Appence(head1);//编号查找 break;
case 'c':head1=Appance(head1);//姓名查找 break;
case 'd':head1=Sppund(head1);//编号查找工资 break;
case 'e':head1=Sppond(head1);//姓名查找工资 break;
case 'f': head1=Sppend(head1);//编号查找年薪 break;
case 'g': head1=Sppand(head1);//姓名查找年薪 break;
case 'h':head1=Appdepncs(head1);//平均工资 break;
case 'i':head1=Appjun(head1);//平均年龄
break;
default:printf("无效输入");
break;
}
}
return 0;
}