#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct work//定义work结构体
{
int jobNo; //工号
char Name[20];//姓名
char sex[10];//性别
int birthday;//出生年月
int num; //子女个数
char marital[20];//婚姻状况
struct work *next;
} wo;
void luru(wo *head) {
system("cls"); //清屏!
wo *p=head;
wo *q; //设置p和p2为头指针
int a;
printf("请输入你想新增几个职员信息 :");
scanf("%d",&a); //新增成员的数量
int c=0;
for(int n=0; n<a; n++)
{
wo *p1=(wo*)malloc(sizeof(wo));
c++;
printf("请输入第%d个职员的信息\n",c);
printf("请输入职工号: ");
scanf("%d",&p1->jobNo);
while(p1->jobNo<1)
{
printf("输入的职工号不符合规定,请重新输入!!\n");
printf("请重新输入职工号: ");
scanf("%d",&p1->jobNo);
}
q=head;
while(q->next !=NULL) {
q=q->next ;
while(p1->jobNo==q->jobNo)
{
printf("该职工号已存在,请重新输入!\n");
scanf("%d",&p1->jobNo);
}
}
printf("请输入姓名: ");
scanf("%s",&p1->Name);
printf("请输入性别(W/M): ");
scanf("%s",&p1->sex);
while(strcmp(p1->sex,"W")!=0&&strcmp(p1->sex,"M")!=0)
{
printf("输入的职工性别不符合规定,请重新输入!!\n");
printf("请重新输入职工性别: ");
scanf("%s",&p1->sex);
}
printf("请输入出生年月:");
scanf("%d",&p1->birthday);
printf("请输入婚姻状况");
scanf("%s",&p1->marital);
printf("请输入子女个数");
scanf("%d",&p1->num);
q=head;
p->next=p1;
p=p->next;
p->next=NULL;
printf("添加成功!!\n");
}
p->next=NULL; //p的next指向空,结束
printf("\n创建完毕!\n");
getchar();
getchar();
system("cls");
return; //返回主函数!
}
void liulan(wo *head)
{
system("cls");
wo *p=(wo *)malloc(sizeof(wo));
wo *p1=(wo *)malloc(sizeof(wo));
p=head;
p1=p->next;
printf("职员信息总览:\n");
FILE *fp;
fp=fopen("D:\\职工管理系统.txt","r");//文件名
if(fp==NULL)
{
printf("文件不能打开!\n");
}
p=head;
p1=(work*)malloc(sizeof(work));
p->next=p1;
p=p1;
while(1)
{ //表示无限循环
fscanf(fp,"职工号:%d 姓名:%s 性别:%s 出生年月:%d 婚姻状况:%s 子女个数:%d\n",
&p->jobNo,&p->Name,&p->sex,&p->birthday,&p->marital,&p->num);
printf("职工号: %4d ",p1->jobNo);
printf("姓名: %-10s ",p1->Name);
printf("性别: %-10s ",p1->sex);
printf("出生年月: %-10s ",p1->birthday);
printf("婚姻状况: %-10s ",p1->marital);
printf("子女个数: %4d ",p1->num);
if(feof(fp))
{ //文件结束返回非0,否则返回0
p->next=NULL;
break;
}
p1=(work*)malloc(sizeof(work));
p->next=p1;
p=p1;
}
fclose(fp);
}
void chaxun(wo *head) {
wo *p=head;
char n[20];
int j,i;
system("cls");
printf("1.按婚姻状况查询\n2.按子女个数查询\n请输入想要查询的方式:");
scanf("%d",&i);
switch(i)
{ //选择查询方式
case 1:
printf("请输入婚姻状况:");
scanf("%s",&n);
while(p->next!=NULL)
{
if(strcmp(p->next->marital,n)==0)
{
printf("职工号:%d ",p->next->jobNo);
printf("姓名: %s",p->next->Name);
printf("性别:%s",p->next->sex);
printf("出生年月:%-10s",p->next->birthday);
printf("婚姻状况:%-10s",p->next->marital);
printf("子女个数:%4d",p->next->num);
return;
}
p=p->next;
if(p->next==NULL)
{//循环,如果p的next最后也未找到输入的数据,输入结果
printf("输入的职工不存在!\n");
return;
}
}
break;
case 2:
printf("请输入想要查询的子女个数:");
scanf("%d",&j);
while(p->next!=NULL)
{
if(p->next->num==j)
{
printf("职工号:%d ",p->next->jobNo);
printf("姓名: %s",p->next->Name);
printf("性别:%s",p->next->sex);
printf("出生年月:%s",p->next->birthday);
printf("婚姻状况:%s",p->next->marital);
printf("子女个数:%d",p->next->num);
return;
}
p=p->next;
if(p->next==NULL)
{
printf("输入的职工不存在!\n");
return;
}
}
break;
}
}
void shanchu(wo *head)
{
system("cls");
wo *p1,*p2;
p1=head;
p2=p1->next;
char name[100];
printf("请输入想要删除的职员姓名:");
scanf("%s",&name);
while(p2!=NULL) {
while(strcmp(name,p2->Name)==0) {
p1->next=p2->next;
free(p2); //p2节点释放
printf("删除成功!");
}
p1=p2;
p2=p2->next;
return;
}
if(p2==NULL)
printf("未存入该职员的信息,请重新输入!");
}
void xiugai(wo *head) {
system("cls");
liulan(head); //调用浏览函数,先输出所有信息
wo *p1,*p2,*q;
char na[10];
int n,i=0,j,k,xh,t;
p1=p2=head->next;
printf("1.修改职工号\n2.修改姓名\n3.修改性别\n4.全部修改\n请输入修改方式:");
scanf("%d",&j);
switch(j) {
case 1://根据原来的职工号更改职工号
printf("请输入需要修改的职工号");
scanf("%d",&xh);
while(p1!=NULL) {
if(p1->jobNo==xh) {
i++;
printf("请输入修改后的职员号: ");
scanf("%d",&p1->jobNo);
while(p1->jobNo<1) {
printf("输入的职工号不符合规定,请重新输入!!\n");
printf("请重新输入职工号: ");
scanf("%d",&p1->jobNo);
}
q=head;
while(q->next !=NULL) {
q=q->next ;
if(q==p1)continue;
while(p1->jobNo==q->jobNo) {
printf("该职工号已存在,请重新输入!\n");
scanf("%d",&p1->jobNo);
}
}
printf("职员信息修改完成!");
break;
}
p1=p1->next;
}
if(i==0) {
printf("该职员职工号不存在!\n");
}
return;
case 2://根据职工号修改姓名
printf("请输入想要修改的职工姓名的职工号(修改姓名)");
scanf("%d",&n);
while(p1!=NULL) {
if(p1->jobNo==n) {
i++;
printf("请输入修改后的职员姓名:");
scanf("%s",&p1->Name);
printf("职员信息修改完成!");
break;
}
p1=p1->next;
}
if(i==0) {
printf("该职员姓名不存在!\n");
}
return;
case 3://根据职工号修改性别
printf("请输入想要修改的职工号");
scanf("%d",&xh);
while(p1!=NULL) {
if(p1->jobNo==xh) {
i++;
printf("请输入修改后的职员性别: ");
scanf("%s",&p1->sex);
while(strcmp(p1->sex,"W")!=0&&strcmp(p1->sex,"M")!=0) {
printf("输入的职工性别不符合规定,请重新输入!!\n");
printf("请重新输入职工性别: ");
scanf("%s",&p1->sex);
}
printf("职员信息修改完成!");
break;
}
p1=p1->next;
}
if(i==0) {
printf("该职员职工号不存在!\n");
}
return;
case 4://根据职工号修改全部信息
printf("请输入想要修改职员的职工号:");
scanf("%d",&n);
while(n<1) {
printf("输入的职工号不符合规定,请重新输入!!\n");
printf("请重新输入职工号: ");
scanf("%d",&n);
}
while(p1!=NULL) {
if(p1->jobNo==n) {
i++;
printf("请输入姓名: ");
scanf("%s",&p1->Name);
printf("请输入性别(W/M):");
scanf("%s",&p1->sex);
while(strcmp(p1->sex,"W")!=0&&strcmp(p1->sex,"M")!=0) {
printf("输入的职工性别不符合规定,请重新输入!!\n");
printf("请重新输入职工性别: ");
scanf("%s",&p1->sex);
}
printf("请输入出生年月:");
scanf("%s",&p1->birthday);
printf("请输入婚姻状况:");
scanf("%s",&p1->marital);
printf("请输入子女个数:");
scanf("%d",&p1->num);
printf("职员信息修改完成!");
break;
}
p1=p1->next;
}
if(i==0) {
printf("该职员职工号不存在!\n");
}
return;
}
}
void tianjia(wo *head)
{
system("cls");
wo *p,*p1,*q;
p=(work *)malloc(sizeof(work));
p1=(work *)malloc(sizeof(work));
p=head;
printf("请输入新添加职员的信息!");
printf("请输入职工号: ");
scanf("%d",&p1->jobNo);
while(p1->jobNo<1) {
printf("输入的职工号不符合规定,请重新输入!!\n");
printf("请重新输入职工号: ");
scanf("%d",&p1->jobNo);
}
q=head;
while(q->next !=NULL) {
q=q->next ;
while(p1->jobNo==q->jobNo) {
printf("该职工号已存在,请重新输入!\n");
scanf("%d",&p1->jobNo);
}
}
printf("请输入姓名: ");
scanf("%s",&p1->Name);
printf("请输入性别(W/M):");
scanf("%s",&p1->sex);
while(strcmp(p1->sex,"W")!=0&&strcmp(p1->sex,"M")!=0)
{
printf("输入的职工性别不符合规定,请重新输入!!\n");
printf("请重新输入职工性别: ");
scanf("%s",&p1->sex);
}
printf("请输入出生年月:");
scanf("%s",&p1->birthday);
printf("请输入子女个数:");
scanf("%d",&p1->num);
printf("请输入婚姻状况:");
scanf("%s",&p1->marital);
p1->next=p->next;
p->next=p1;
p1=p1->next; //头插法
printf("添加成功!");
}
void baocun(wo *head) {
system("cls");
FILE *fp;//定义指针变量fp
fp=fopen("D:\\职工管理系统.txt","w");//文件名
wo *p=head;
p=p->next;
while(p!=NULL)
{
fprintf(fp,"职工号:%4d 姓名:%-10s 性别:%-10s 出生年月:%-10s 子女个数:%4d 婚姻状况:%-10s\n",
p->jobNo,p->Name,p->sex,p->birthday,p->num,p->marital);
p=p->next;
}
fclose(fp);
printf("保存成功!\n");
}
int main()
{
void baocun(wo *head);//保存
void luru(wo *head);//录入
void liulan(wo *head);//浏览
void chaxun(wo *head);//查询
void shanchu(wo *head);//删除
void xiugai(wo *head);//修改
void tianjia(wo *head);//添加
system("color b4");
struct work wo[100];
int s;
work *head=(work*)malloc(sizeof(work));
head->next=NULL;
system("cls");
while(1) {
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf(" \t\t***********职工管理系统*********\n");
printf(" \t\t********************************\n");
printf(" \t\t* 1.录入职工信息 *\n");
printf(" \t\t* 2.浏览职工信息 *\n");
printf(" \t\t* 3.查询职工信息 *\n");
printf(" \t\t* 4.删除职工信息 *\n");
printf(" \t\t* 5.修改职工信息 *\n");
printf(" \t\t* 6.新增职工信息 *\n");
printf(" \t\t* 7.退出职工系统 *\n");
printf(" \t\t* 8.保存职工信息 *\n");
printf(" \t\t********************************\n");
printf(" \t\t***退出系统后查询保存的信息需先浏览*******\n");
printf("请输入选择的功能:");
scanf("%d",&s);
switch(s) {
case 1: //录入职员信息
luru(head);
system("pause");
system("cls");
break;
case 2: //浏览成员信息
liulan(head);
system("pause");
system("cls");
break;
case 3: //查询职员信息
chaxun(head);
system("pause");
system("cls");
break;
case 4: //输入姓名删除
shanchu(head);
system("pause");
system("cls");
break;
case 5: //修改信息
xiugai(head);
system("pause");
system("cls");
break;
case 6: //添加职员信息
tianjia(head);
system("pause");
system("cls");
break;
case 7: //退出
exit(0);
break;
case 8: //信息保存
baocun(head);
system("pause");
system("cls");
break;
default : //乱输入的处理办法
printf("输入有误,请重新输入!!!");
system("pause");
system("cls");
break;
}
}
}
我想实现的是企业管理系统 但除了录入是正确的 自定义的其它代码都有错 可以看下吗