程序没有报错却运行不了 求大神修改
头文件我知道
#define LEN sizeof(struct emp)
#define DATA "employee.txt"
struct emp
{
long int num; //编号
long int chuqin; // 出勤
int pos; //职位
char name[20]; //姓名
int age; //年龄
long int salary; //工资
char sex[4]; //性别
char birthday[10]; //生日
char tel[15]; //电话
char edu[8]; //学历
char add[30]; //住址
struct emp *next;
};
struct emp *head=NULL;
int t=0;
void menu();
void gengxin();
void zengjia();
void insert(struct emp *em);
void display(struct emp *p);
void liebiao();
void chaxun();
void bianhao();
void shengri();
void xingming();
void readData();
void writeData();
void freeAll();
void shanchu();
void change();
void devise(struct emp *p);
void main()
{
struct emp *head=NULL;
head=(struct emp *)malloc(LEN);
head->next=NULL;
system("mode con: cols=150 lines=500");
readData();menu(); system("cls");
printf("\n\n\n\n");
printf(" 谢谢使用,再见\n");
}
void menu(void)
{
char i,j[100]; int flog;time_t T;
struct tm * timenow;
time ( &T );timenow = localtime ( &T );
flog=0;
while(1)
{
system("cls"); printf("\n\n\n\n\n");
printf(" 员工信息管理系统\n");
printf(" 1.员工信息查询 \n");
printf(" 2.员工信息更新 \n");
printf(" 3.员工信息列表 \n");
printf(" 0.退出管理系统 \n");
printf(" %s", asctime (timenow) );
printf("请输入您的选择(数字0-3):\n");
scanf("%c",&i);gets(j); if(j[0])i='a';
switch(i)
{
case '1':chaxun();break;
case '2':gengxin();break;
case '3':liebiao();break;
case '0':flog=1;break;
default:printf("输入有误,请按回车键重新输入\n");gets(j);break;
}if(flog)break; }}
void zengjia()
{
struct emp *p,*p1; char j[100];
p=NULL;p1=head;
printf("请输入第%d个员工的信息.\n",t+1);
p=(struct emp *)malloc(LEN);
if(p==NULL)
{printf("分配空间失败"); exit(0);}
printf("请输入员工的编号:\n");
scanf("%ld",&p->num);
while((p1!=NULL)&&(p->num!=p1->num))p1=p1->next;
if(p1!=NULL)
{if(p->num==p1->num) {
printf("编号已经存在,请重新输入,按回车键继续:\n");
free(p);gets(j);getchar(); }}
printf("请输入员工的姓名:\n"); scanf("%s",p->name);
printf("请输入员工的年龄:\n"); scanf("%d",&p->age);
printf("请输入员工的出勤天数:\n");scanf("%s",&p->chuqin);
printf("请输入员工的性别:\n"); scanf("%s",p->sex);
printf("请输入员工的出生年月:\n"); scanf("%s",p->birthday);
printf("请输入员工的电话:\n"); scanf("%s",p->tel);
printf("请输入员工的学历:\n"); scanf("%s",p->edu);
printf("请输入员工的职务:\n"); scanf("%s",&p->pos);
printf("请输入员工的住址:\n"); scanf("%s",p->add);
printf("请输入员工的工资:\n");scanf("%s",&p->salary);
p->salary=p->chuqin*300/p->pos;
insert(p); printf("输入的员工信息为:\n");
printf("------------------------------------------------------------------------:\n");
printf("编号%4d姓名%4d年龄%4d出勤天数%4d性别%4d出生年月%4d电话%4d学历%4d职务%4d住址%4工资:\n");
display(p);printf("按回车键继续\n");writeData(); gets(j);getchar();}
void insert(struct emp *em)
{
struct emp *p0,*p1,*p2; p1=head; p0=em;
if(head==NULL)
{head=p0;p0->next=NULL;}
else
{
while((p0->num > p1->num)&&(p1->next!=NULL))
{p2=p1; p1=p1->next;} if(p0->num<=p1->num)
{
if(head==p1)head=p0;
else
p2->next=p0;p0->next=p1; }
else
{p1->next=p0; p0->next=NULL; }}t++;}
void display(struct emp *p)
{printf("%ld%4d%s%4d%d%4d%s%4d%s%4d%s%4d%s%4d%s%4d%s%4d\n",p->num,p->name,p->age,p->sex,p->birthday,p->tel,p->edu,p->pos,p->add,p->salary);}
void liebiao()
{
char j[100]; struct emp *p; p=head; system("cls");
if(head==NULL){printf("查找不到信息\n");menu();}
printf("━━员工信息列表━━\n");
printf("编号%4d姓名%4d年龄%4d出勤天数%d性别%4d出生年月%4d电话%4d学历%4d职务%4d住址 :\n");
if(head!=NULL)
{while(p!=NULL) {display(p);p=p->next;} }
printf("\n按回车键返回主菜单\n");gets(j);}
void chaxun()
{
char i,j[100]; int flog; time_t T; struct tm * timenow;
time ( &T );timenow = localtime ( &T ); flog=0;
while(1)
{
system("cls"); printf("\n\n\n\n\n");
printf(" 员工信息查询系统\n");
printf(" 1.按照编号查询 \n");
printf(" 2.按照姓名查询 \n");
printf(" 3.按照生日查询 \n");
printf(" 0.退出管理系统 \n");
printf(" %s", asctime (timenow) );
printf("请输入您的选择(数字0-3):\n");
scanf("%c",&i);gets(j); if(j[0])i='a';
switch(i)
{
case '1':bianhao();break;
case '2':xingming();break;
case '3':shengri();break;
case '0':flog=1;break;
default:printf("输入有误,请重新输入\n");gets(j);break;
}if(flog)break;}}
void bianhao()
{
int number;char j[100];
struct emp *p1;p1=head;
printf("请输入要查询员工的编号:\n");
scanf("%d",&number);
while((number!=p1->num)&&(p1->next!=NULL))
{p1=p1->next; }
if(number==p1->num)
{
printf("━━━员工信息查询━━━\n");
printf("要查询的员工信息:\n");
printf("编号%4d姓名%4d年龄%4d出勤天数%4d性别%4d出生年月%4d电话%4d学历%4d职务%4d住址%4d工资:\n"); printf("%ld%4d%s%4d%d%4d%s%4d%s%4d%s%4d%s%4d%s%4d%s%4d\n",p1->num,p1->name,p1->age,p1->sex,p1->birthday,p1->tel,p1->edu,p1->pos,p1->add,p1->salary);
printf("按回车键继续\n");gets(j); getchar(); }
else if(p1->next==NULL)
{ printf("要查询的员工信息不存在,按回车键返回:\n");
gets(j);
getchar();
}
}
void xingming()
{
char ch[10];struct emp *p;char j[100];p=head;
printf("请输入要查询的员工的名字:\n");
scanf("%s",ch);if(p==NULL)
{
printf("不存在员工记录,按回车键返回.\n");
gets(j);
getchar();
return ;
}
while(strcmp(ch,p->name)&&p->next!=NULL)
{p=p->next;}
if(!strcmp(ch,p->name))
{ printf("━━━━员工信息查询━━━━\n");
printf("编号%4d姓名%4d年龄%4d出勤天数%4d性别%4d出生年月%4d电话%4d学历%4d职务%4d住址:\n"); display(p);printf("按回车键继续\n");
gets(j);
getchar();
}
else if(p->next==NULL)
{
printf("不存在员工记录.\n");
gets(j);
getchar();
return;
}
}
以后的部分在另一个帖子里,题目是一样的
哪位大神给改一下