c语言作业停止exe已经停止工作,大晚上写老师布置用C语言的作业出现了错误,一运行整个程序就停止了...

[C++] 纯文本查看 复制代码#include

#include

#include

struct wokers

{

char num[25];//职工号

char name[25];//职工姓名

char sex[25];//职工性别

char addr[20];//职工地址

char degree[25];//职工学历

int age; //职工年龄

char tel[25]; //职工电话

char salary[25];//职工工资

};

typedef struct node

{

struct wokers data;

struct node*next;

}Node;

void add(Node*woker)

{

Node*p,*r,*s;

char n[10];//先用于输入职工号,也用于判断是否跳出循环

r=woker;

s=woker->next;

while(r->next!=NULL)

r=r->next;

while(1)

{

printf("......提示:输入0则返回主菜单!\n......");

printf("......请输入职工号;......");

scanf("%s",&n);

if(strcmp(n,"0")==0)

break;

p=(Node*)malloc(sizeof(Node));//申请空间

strcpy(p->data.num,n);

printf("请输入姓名");

scanf("%s",p->data.name);

printf("请输入性别");

scanf("%s",p->data.sex);

printf("请输入地址");

scanf("%s",p->data.addr);

printf("请输入学历");

scanf("%s",p->data.degree);

printf("请输入年龄");

scanf("%d",&p->data.age);

printf("请输入电话");

scanf("%s",p->data.tel);

printf("请输入工资");

scanf("%s",p->data.salary);

printf("提示:完成一条信息添加\n");

p->next=NULL;

r->next=p;

r=p;

}

}

void change(Node*woker)

{

Node*p;

char find[25];

if(!woker->next)

{

printf("\n......提示:没有资料可修改\n......");

return;

}

printf("请输入要修改的职工号");

scanf("%s",find);

p=woker->next;

while(p!=NULL)

{

if(strcmp(p->data.num,find)==0)

break;

p=p->next;

}

if(p)

{

int x;

while(1)

{

printf("完成修改输入0否侧输入任意数字进行修改");

scanf("%d",&x);

if(x==0)

{

break;

}

printf("请输入新职工号");

scanf("%s",p->data.num);

printf("请输入新职工姓名");

scanf("%s",p->data.name);

printf("请输入新职工性别");

scanf("%s",p->data.sex);

printf("请输入新职工地址");

scanf("%s",p->data.addr);

printf("请输入新职工学历");

scanf("%s",&p->data.degree);

printf("请输入新职工年龄");

scanf("%d",&p->data.age);

printf("请输入新职工电话");

scanf("%s",p->data.tel);

printf("请输入新职工工资");

scanf("%s",p->data.salary);

printf("提示:该项信息资料已经修改成功\n");

}

}

else

printf("提示;你要修改的信息不存在\n");

}

void show(Node*woker)

{

Node*p;

p=woker->next;

if(!p)

{

printf("提示:没有信息可以显示\n");

return;

}

printf("\t\t\t\t显示结果\n");

printf("职工号 职工姓名 职工性别 职工地址 职工学历 职工年龄 职工电话 职工工资\n");

while(p)

{

printf("13s%-11s%-7s%-10s%-13s%-10s%-5s-7%s\n",p->data.num,p->data.name,p->data.sex,p->data.addr,p->data.degree,p->data.age,p->data.tel,p->data.salary);

p=p->next;

}

}

void tongji(Node*woker)

{

Node*p;

int sel;

int flag2=0,a=0;

char find[25];

p=woker->next;

if(!woker->next)

{

printf("提示没有信息可以分类\n");

return;

}

printf("提示:n====>0退出\n====>1按职工号统计\n====>2按职工姓名统计\n");

scanf("%d",sel);

if(sel==1)

{

printf("请输入统计分类的职工号");

scanf("%s",find);

while(p)

{

if(strcmp(p->data.num,find)==0)

{

flag2++;

}

if(flag2==1&&a!=flag2)

{

printf("职工号 职工姓名 职工性别 职工地址 职工学历 职工年龄 职工电话 职工工资\n");

printf("13s%-11s%-7s%-10s%-13s%-10s%-5s%-7s%\n",p->data.num,p->data.name,p->data.sex,p->data.addr,p->data.degree,p->data.age,p->data.tel,p->data.salary);

a=flag2;

}

else if(flag2>a)

{

printf("13s%-11s%-7s%-10s%-13s%-10s%-5s-7s%\n",p->data.num,p->data.name,p->data.sex,p->data.addr,p->data.degree,p->data.age,p->data.tel,p->data.salary);

a=flag2;

}

p=p->next;

}

if(flag2)

{

printf("按设备号%s统计分类有%d条信息");

}

else

{

printf("按职工号%s统计结果为0个");

}

}

else if(sel==2)

{

printf("请输入统计分类职工姓名");

scanf("%s",find);

while(p)

{

if(strcmp(p->data.name,find)==0)

{

flag2++;

}

if(flag2==1&&a!=flag2)

{

printf("职工号 职工姓名 职工性别 职工地址 职工学历 职工年龄 职工电话 职工工资\n");

printf("13s%-11s%-7s%-10s%-13s%-10s%-5s%-7s%\n",p->data.num,p->data.name,p->data.sex,p->data.addr,p->data.degree,p->data.age,p->data.tel,p->data.salary);

a=flag2;

}

else if(flag2>a)

{

printf("13s%-11s%-7s%-10s%-13s%-10s%-5s-7s%\n",p->data.num,p->data.name,p->data.sex,p->data.addr,p->data.degree,p->data.age,p->data.tel,p->data.salary);

a=flag2;

}

p=p->next;

}

if(flag2)

{

printf("共查到%d条信息");

}

else

{

printf("按职工新名%s统计结果为0个");

}

}

else if(flag2==0)

return;

}

void load(Node*woker)

{

Node*p,*q;

FILE*fp;

int recordnum;

if((fp=fopen("zg.data","rb"))==NULL)

{

printf("can not open file\n");

}

p=woker;

recordnum=0;

while(!(feof(fp)))

{

q=(Node*)malloc(sizeof(Node));

fscanf(fp,"%s %s %s %s %s %s %s %s",p->data.num,p->data.name,p->data.sex,p->data.addr,p->data.degree,p->data.age,p->data.tel,p->data.salary);

p->next=q;

q->next=NULL;

p=q;

recordnum++;

}

fclose(fp);

printf("文件共有%d条信息");

}

void save(Node*woker)

{

int n;

Node*p;

FILE*fp;

printf("需要保存文件吗?(0--不保存,1--保存)");

scanf("%d",&n);

if(n==1)

{

if(woker->next==NULL)

printf("无记录");

else

p=woker->next;

if((fp=fopen("zg.data","wb"))==NULL)

printf("can not open file\n");

while(p!=NULL)

{

fprintf(fp,"%s %s %s %s %s %s %s %s",p->data.num,p->data.name,p->data.sex,p->data.addr,p->data.degree,p->data.age,p->data.tel,p->data.salary);

p=p->next;

}

fclose(fp);

}

}

void del(Node*woker)

{

Node*p,*r,*s;

char find[25];

if(!woker->next)

{

printf("提示:没有信息可以删除");

return;

}

printf("提示:请输入要删除的职工号");

scanf("%s",find);

p=woker->next;

while(p!=NULL)

{

if(strcmp(p->data.num,find)==0)

break;

p=p->next;

}

if(!p)

printf("提示:找不到想要删除的职工号");

else

{

r=woker;

while(r->next!=p)

r=r->next;

s=r->next;

r->next=r->next->next;

}

}

int main()

{

Node*woker;

FILE*fp;

int flag;

Node*p,*q;

woker->next=NULL;

p=woker;

while(1)

{

printf("\t\t\t\t职工管理系统\n");

printf(".............选单............");

printf("1--添加信息\n");

printf("2--修改信息\n");

printf("3--显示信息\n");

printf("4--分类查找信息\n");

printf("5--删除信息\n");

printf("6--读取信息\n");

printf("0--退出系统\n");

printf("输入选择");

scanf("%d",&flag);

switch(flag)

{

case 0:exit(0);

case 1:add(woker);save(woker);break;

case 2:change(woker);break;

case 3:show(woker);break;

case 4:tongji(woker);break;

case 5:del(woker);break;

case 6:load(woker);break;

default: printf("提示:输入错误");break;

}

system("cls");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值