C语言课程设计

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define F (struct STU *)malloc(sizeof(struct STU))
int n;
struct Code
{
    char worker_number[20];//职工号
    char name[20];//姓名 
    char gender[4];//性别 
    int year,month,day;
    char record_of_formal_schooling[30];//学历
    char position[30];//职务
    int salary;//薪水
    char address[20];//地址 
    char phone[20];//电话号码 
};
struct STU//定义结构体
{
    struct Code data;
    struct STU *next;
};
struct STU *temp()//定义链表,并初始化
{
    int i;
    char xb[4]="男";
    char xb2[4]="女";
    struct STU *head;//定义头结点head 
    struct STU *p;//定义节点p 
    struct STU *q;//定义尾结点q 
    struct STU *d;
    head=F;//开辟一个新空间 
    p=head;//将head的地址赋给p,使p指向head 
    printf("请输入需要录入的人数:\12");
    scanf("%d",&n);//输入n 
    q=F; 
    for(i=0;i<n;)//用n来确定循环几次 
    {
        p->next=q;//将q的地址赋给p所指的节点中的成员next,既将新开辟的节点与上一个节点连接起来。 
        p=q;//使p指向下一个节点 
        p->next=NULL;//使尾结点的next为空,链表到此结束。 
        loop:printf("请输入职工号:\12");
        d=head->next; 
        scanf("%s",q->data.worker_number);//输入职工号 
        if(i!=0)
        {
        while(1)
        {
        if(strcmp(d->data.worker_number,q->data.worker_number)==0)
        {
        	printf("此职工号已存在,请重新输入\12");
        	goto loop;
        }
		else
		{
			d=d->next;
		}
		if(d->next==NULL)
		{
		++i;		
		break;
		}
		}
		}
		printf("请输入姓名:\12");
        scanf("%s",q->data.name);//输入姓名 
        while(1)
        {
        printf("请输入性别:\12");
        scanf("%s",q->data.gender);//输入性别 
        if(strcmp(q->data.gender,xb)==0||strcmp(q->data.gender,xb2)==0) 
        break;
        else
        printf("我不懂“%s”是什么意思,请重新输入\12",q->data.gender);
    	}
        printf("请输入出生年月日:\12");
        loop4:scanf("%d",&q->data.year);//输入出生年月日
        if(q->data.year<1920||q->data.year>2020)
        {
        	printf("输入格式错误,请重新输入\12");
        	printf("请重新输入年:\12");
        	goto loop4;
		}
		loop5:scanf("%d",&q->data.month);
		if(q->data.month<=0||q->data.month>12)
		{
			printf("输入格式错误,请重新输入\12");
			printf("请重新输入月:\12");
        	goto loop5;
		}
		loop6:scanf("%d",&q->data.day);
		if(q->data.day<=0||q->data.day>31)
		{
			printf("输入格式错误,请重新输入\12");
			printf("请重新输入日:\12");
        	goto loop6;
		}
        printf("请输入学历:\12");
        scanf("%s",q->data.record_of_formal_schooling);//输入学历
        printf("请输入职务:\12");
        scanf("%s",q->data.position);//输入职务
        loop3:printf("请输入薪水:\12");
        scanf("%d",&q->data.salary);//输入薪水
        if(q->data.salary<0)
        {
        	printf("输入格式错误,请重新输入\12");
        	goto loop3;
		}
        printf("请输入地址:\12");
        scanf("%s",q->data.address);//输入地址
        while(1)
        {
        printf("请输入电话号码:\12");
        scanf("%s",q->data.phone);//输入电话号码
        if(strlen(q->data.phone)==11)
        break;
        else
        printf("请输入11位的电话号码\12");
    	}
        system("cls");
		if(i==0)
		{
			++i;
			q=F;
		}
		else
		q=F;
    }
    return head;//返回head 
}
void Storage(struct STU *head)//存储函数
{
	int i;//定义变量i 
    struct STU *p;//定义STU类型的指针p 
    p=head->next;//将head中的next赋给p,使p指向下一个节点 
    FILE *fp=NULL;//声明fp是FILE型指针 
    fp=fopen("职工信息.txt","w");//调用fopen函数,第一个双引号里是文件名加上文件类型,后面一个双引号是w,用来写入信息 
    for(i=0;i<n;i++)//循环 
    {
   fprintf(fp,"**********欢迎进入职工信息管理系统**********\n"//存入信息 
                   "1.职工号:%s            2.姓名:%s\n"
                   "3.性别:%s              4.出生年月日:%d/%d/%d\n"
                   "5.学历:%s              6.职务:%s\n"
                   "7.薪水:%d              8.地址:%s\n"
                   "9.电话号码:%s\n"
              "*****************谢谢使用****************\n",p->data.worker_number,p->data.name,p->data.gender,p->data.year,p->data.month,p->data.day,p->data.record_of_formal_schooling,p->data.position,p->data.salary,p->data.address,p->data.phone);
    p=p->next;//p指向下一个节点,遍历链表 
	}
    fclose(fp);//关闭文件 
    fp=NULL;  
}
void Storage1(struct STU *head)//存储函数
{
	int i;//定义变量i 
    struct STU *p;//定义STU类型的指针p 
    p=head->next;//将head中的next赋给p,使p指向下一个节点 
    FILE *fp=NULL;//声明fp是FILE型指针 
    fp=fopen("职工信息1.txt","w");//调用fopen函数,第一个双引号里是文件名加上文件类型,后面一个双引号是w,用来写入信息 
    for(i=0;i<n;i++)//循环 
    {
   fprintf(fp,"%s %s %s %d %d %d %s %s %d %s %s\12",p->data.worker_number,p->data.name,p->data.gender,p->data.year,p->data.month,p->data.day,p->data.record_of_formal_schooling,p->data.position,p->data.salary,p->data.address,p->data.phone);
    p=p->next;//p指向下一个节点,遍历链表 
	}
    fclose(fp);//关闭文件 
    fp=NULL;  
}

void print(struct STU *head)//定义输出函数
{
    struct STU *p;//定义STU类型的指针p 
    p=head->next;//将head中的next赋给p,使p指向下一个节点 
        while(p!=NULL)//循环 
        {
            printf("**********欢迎进入职工信息管理系统**********\n"//引用printf输出函数 
                   "1.职工号:%s            2.姓名:%s\n"
                   "3.性别:%s              4.出生年月日:%d/%d/%d\n"
                   "5.学历:%s              6.职务:%s\n"
                   "7.薪水:%d              8.地址:%s\n"
                   "9.电话号码:%s\n"
                "*****************谢谢使用****************\n",p->data.worker_number,p->data.name,p->data.gender,p->data.year,p->data.month,p->data.day,p->data.record_of_formal_schooling,p->data.position,p->data.salary,p->data.address,p->data.phone);
            p=p->next;//p指向下一个节点,遍历链表 
        }
    printf("\12");//换行符 
} 
void Find(struct STU *p)//定义Find函数,输出p所的指节点的全部信息 
{
	printf("**********欢迎进入职工信息管理系统**********\n"
                   "1.职工号:%s            2.姓名:%s\n"
                   "3.性别:%s              4.出生年月日:%d/%d/%d\n"
                   "5.学历:%s              6.职务:%s\n"
                   "7.薪水:%d              8.地址:%s\n"
                   "9.电话号码:%s\n"
                "*****************谢谢使用****************\n",p->data.worker_number,p->data.name,p->data.gender,p->data.year,p->data.month,p->data.day,p->data.record_of_formal_schooling,p->data.position,p->data.salary,p->data.address,p->data.phone);
    printf("\12");
}

void Find3(struct STU *p)//定义Find3函数,输出p所的指节点的全部信息 
{
	printf("**********欢迎进入职工信息管理系统**********\n"
                   "1.职工号:%s            2.姓名:%s\n"
                   "3.性别:%s              4.出生年月日:%d/%d/%d\n"
                   "5.学历:%s              6.职务:%s\n"
                   "7.薪水:%d              8.地址:%s\n"
                   "9.电话号码:%s\n"
                "*****************谢谢使用****************\n",p->data.worker_number,p->data.name,p->data.gender,p->data.year,p->data.month,p->data.day,p->data.record_of_formal_schooling,p->data.position,p->data.salary,p->data.address,p->data.phone);
    printf("\12");
}

void Find2(struct STU *head)//定义根据姓名查找的函数
{
	int m=0;
    struct STU *p;//定义STU类型的指针p 
    p=head->next;//将head中的next赋给p,使p指向下一个节点 
    char sc[20];//定义字符型数组sc,长度为20 
    while(1)//死循环 
    {
        printf("请输入你要查询的姓名:\12");
        scanf("%s",sc);//输入字符串 
        while(p!=NULL)//循环 
        {
            if(strcmp(sc,p->data.name)==0)//比较sc字符串和p所指节点中的worker_number字符串作比较 
            {
                int k;
                printf("请输入需要查询的内容:\12");
                printf("1.姓名           2.性别\12"
                       "3.出生年月日     4.学历  \12"
                       "5.职务           6.薪水\12"
                       "7.地址           8.电话号码\12"
                       "0.退出           9.输出全部\12");
                scanf("%d",&k);
                while(1)
                {
				if(strcmp(sc,p->data.name)==0)
				{
                switch(k)//switch case 语句 
                {
                    case 1:printf("姓名:%s\12",p->data.name);break;
                    case 2:printf("性别:%s\12",p->data.gender);break;
                    case 3:printf("出生年月日:%d/%d/%d\12",p->data.year,p->data.month,p->data.day);break;
                    case 4:printf("学历:%s\12",p->data.record_of_formal_schooling);break;
                    case 5:printf("职务:%s\12",p->data.position);break;
                    case 6:printf("薪水:%d\12",p->data.salary);break;
                    case 7:printf("地址:%s\12",p->data.address);break;
                    case 8:printf("电话号码:%s\12",p->data.phone);break;
                    case 9:Find(p);break;
                }
            	}
                p=p->next;
                if(p==NULL)
                {
                m=3;
                break;
            	}
                if(strcmp(sc,p->data.name)==0)
                {
                	switch(k)//switch case 语句 
                {
                    case 1:printf("姓名:%s\12",p->data.name);break;
                    case 2:printf("性别:%s\12",p->data.gender);break;
                    case 3:printf("出生年月日:%d/%d/%d\12",p->data.year,p->data.month,p->data.day);break;
                    case 4:printf("学历:%s\12",p->data.record_of_formal_schooling);break;
                    case 5:printf("职务:%s\12",p->data.position);break;
                    case 6:printf("薪水:%d\12",p->data.salary);break;
                    case 7:printf("地址:%s\12",p->data.address);break;
                    case 8:printf("电话号码:%s\12",p->data.phone);break;
                    case 9:Find(p);break;
                }
				}
                p=p->next;
                if(p==NULL)
                {
                m=3;
                break;
            	}
            	}
                if(k==0)
                    break;//跳出while(p!=NULL)循环 
            }
            
            
            else
                p=p->next;
        }
        if(p==NULL&&m==3)
            break;
            else
            {
        printf("查无此人,请重新输入\12");
     		p=head->next;   
    		}
    }
}
void Find1(struct STU *head)//定义根据职工号查找的函数
{
    struct STU *p;
    p=head->next;
    char sc[20];
    while(1)
    {
        printf("请输入你要查询的职工号:\12");
        scanf("%s",sc);
        while(p!=NULL)
        {
            if(strcmp(sc,p->data.worker_number)==0)
            {
                int k;
                printf("请输入需要查询的内容:\12");
                printf("1.职工号          2.性别\12"
                       "3.出生年月日      4.学历  \12"
                       "5.职务            6.薪水\12"
                       "7.地址            8.电话号码\12"
                       "0.退出            9.输出全部\12");
                scanf("%d",&k);
                switch(k)
                {
                    case 1:printf("职工号:%s\12",p->data.worker_number);break;
                    case 2:printf("性别:%s\12",p->data.gender);break;
                    case 3:printf("出生年月日:%d/%d/%d\12",p->data.year,p->data.month,p->data.day);break;
                    case 4:printf("学历:%s\12",p->data.record_of_formal_schooling);break;
                    case 5:printf("职务:%s\12",p->data.position);break;
                    case 6:printf("薪水:%d\12",p->data.salary);break;
                    case 7:printf("地址:%s\12",p->data.address);break;
                    case 8:printf("电话号码:%s\12",p->data.phone);break;
                    case 9:Find3(p);break; 
                }
                if(k==0)
                    break;
            }
            else
                p=p->next;
        }
        if(p==NULL)
            p=head->next;
        if(strcmp(sc,p->data.worker_number)==0)
            break;
        printf("查无此人,请重新输入\12");
    }
}

void Deletenode(struct STU *head)//定义删除职工信息的函数
{
    struct STU *q;//定义STU类型的指针q 
    q=head;
    struct STU *p;//定义STU类型的指针p 
    p=head->next;//将head中的next赋给p,使p指向下一个节点
    char sd[20];//定义sd字符数组,长度为20 
	while(1)//死循环 
    {
    printf("请输入你要删除的职工号:\12");
    scanf("%s",sd);
    while(p!=NULL)
    {
        if(strcmp(sd,p->data.worker_number)==0)
        {
            break;
        }
        else
            q=p;
            p=p->next;
    }
	if(p==NULL)
	{
    printf("查无此人,请重新输入\12");
    p=head->next;
	}
    if(strcmp(sd,p->data.worker_number)==0)
    {
            q->next=p->next;//将p的下一个节点与上一个节点连接起来
            free(p);//释放p,既删除信息 
            break;
    }   
	}
}
void Add(struct STU *head)//定义增添职工信息的函数
{
	int rs;
	int i;
	printf("请输入你要增加的人数:\12");
	scanf("%d",&rs);
	for(i=0;i<rs;i++)
	{
	char xb[4]="男";
    char xb2[4]="女";
    struct STU *p;//定义STU类型的指针p
    struct STU *q;//定义STU类型的指针q
    struct STU *d;
    p=head;
    q=F;
        loop:printf("请输入职工号:\12");
        d=head->next; 
        scanf("%s",q->data.worker_number);//输入职工号 
        while(1)
        {
        if(strcmp(d->data.worker_number,q->data.worker_number)==0)
        {
        	printf("此职工号已存在,请重新输入\12");
        	goto loop;
        }
		else
		{
			d=d->next;
			if(d==NULL)
			goto loop1;		
		}
		if(d->next==NULL&&strcmp(d->data.worker_number,q->data.worker_number)!=0)
		{		
		break;
		}
		else if(d->next==NULL&&strcmp(d->data.worker_number,q->data.worker_number)==0)
		{
        	printf("此职工号已存在,请重新输入\12");
        	goto loop;
        }
		}
		loop1:printf("请输入姓名:\12");
        scanf("%s",q->data.name);//输入姓名 
        while(1)
        {
        printf("请输入性别:\12");
        scanf("%s",q->data.gender);//输入性别 
        if(strcmp(q->data.gender,xb)==0||strcmp(q->data.gender,xb2)==0) 
        break;
        else
        printf("我不懂“%s”是什么意思,请重新输入\12",q->data.gender);
    	}
        printf("请输入出生年月日:\12");
        loop4:scanf("%d",&q->data.year);//输入出生年月日
        if(q->data.year<1920||q->data.year>2020)
        {
        	printf("输入格式错误,请重新输入\12");
        	printf("请重新输入年:\12");
        	goto loop4;
		}
		loop5:scanf("%d",&q->data.month);
		if(q->data.month<=0||q->data.month>12)
		{
			printf("输入格式错误,请重新输入\12");
			printf("请重新输入月:\12");
        	goto loop5;
		}
		loop6:scanf("%d",&q->data.day);
		if(q->data.day<=0||q->data.day>31)
		{
			printf("输入格式错误,请重新输入\12");
			printf("请重新输入日:\12");
        	goto loop6;
		}
        printf("请输入学历:\12");
        scanf("%s",q->data.record_of_formal_schooling);//输入学历
        printf("请输入职务:\12");
        scanf("%s",q->data.position);//输入职务
        loop3:printf("请输入薪水:\12");
        scanf("%d",&q->data.salary);//输入薪水
        if(q->data.salary<0)
        {
        	printf("输入格式错误,请重新输入\12");
        	goto loop3;
		}
        printf("请输入地址:\12");
        scanf("%s",q->data.address);//输入地址
        while(1)
        {
        printf("请输入电话号码:\12");
        scanf("%s",q->data.phone);//输入电话号码
        if(strlen(q->data.phone)==11)
        break;
        else
        printf("请输入11位的电话号码\12");
    	}
	p=p->next;//p指向下一个节点 
    head->next=q;//连接节点 
    q->next=p;//连接节点
    system("cls");
	}
	n=n+rs;
}
void update1(struct STU *p)//定义update1函数,更改p所指的节点的全部信息 
{
	printf("请输入姓名:\12");
	scanf("%s",p->data.name);
    printf("请输入性别:\12");
	scanf("%s",p->data.gender);
    printf("请输入出生年月日:\12");
	scanf("%d %d %d",&p->data.year,&p->data.month,&p->data.day);
    printf("请输入学历:\12");
	scanf("%s",p->data.record_of_formal_schooling);
    printf("请输入职务:\12");
	scanf("%s",p->data.position);
    printf("请输入薪水:\12");
	scanf("%d",&p->data.salary);
    printf("请输入地址:\12");
	scanf("%s",p->data.address);
    printf("请输入电话号码:\12");
	scanf("%s",p->data.phone);
}

void update(struct STU *head)//定义更改职工信息的函数
{
    struct STU *p;//定义STU类型的指针p。 
    p=head->next;//将head中的next赋给p,使p指向下一个节点
    char w[100];//定义w字符数组 ,长度为100。 
    while(1)//死循环 
    {
        printf("请输入你要更改的职工号:\12");
        scanf("%s",w);
        while(p!=NULL)//循环 
        {
            if(strcmp(w,p->data.worker_number)==0)//比较w与worker_number
            {
                int k;
                loop1:printf("请输入需要修改的内容:\12");
                printf("1.姓名          2.性别\12"
                       "3.出生年月日    4.学历\12"
                       "5.职务          6.薪水\12"
                       "7.地址          8.电话号码\12"
                       "9.重新输入      0.退出\12");
                scanf("%d",&k);
                switch(k)
                {
                    case 1:printf("请输入姓名:\12");scanf("%s",p->data.name);break;
                    case 2:printf("请输入性别:\12");scanf("%s",p->data.gender);break;
                    case 3:printf("请输入出生年月日:\12");scanf("%d %d %d",&p->data.year,&p->data.month,&p->data.day);break;
                    case 4:printf("请输入学历:\12");scanf("%s",p->data.record_of_formal_schooling);break;
                    case 5:printf("请输入职务:\12");scanf("%s",p->data.position);break;
                    case 6:printf("请输入薪水:\12");scanf("%d",&p->data.salary);break;
                    case 7:printf("请输入地址:\12");scanf("%s",p->data.address);break;
                    case 8:printf("请输入电话号码:\12");scanf("%s",p->data.phone);break;
                    case 9:update1(p);break;
                    case 0:goto loop2;
                    default:printf("输入错误,请重新输入\12");goto loop1;
                }
              loop2:if(k==0)
                break;
            }
            else
                p=p->next;
        }
        if(p==NULL)
            p=head->next;
        if(strcmp(w,p->data.worker_number)==0)
            break;
        printf("查无此人,请重新输入\12");
    }
}

void sort(struct STU *head)//降序排序 
{
	int m;
	struct STU *p;
	p=head->next;
	struct STU a[n];
	int i,j;
	struct STU t;
	for(i=0;i<n;i++)
	{
	a[i]=*p;
	p=p->next;
	}
	for(j=0;j<n-1;j++)
	for(i=0;i<n-1-j;i++)
	if(strcmp(a[i].data.worker_number,a[i+1].data.worker_number)<0)
	{
		t=a[i+1];
		a[i+1]=a[i];
		a[i]=t;
	}
	for(i=0;i<n;i++)
	printf("**********欢迎进入职工信息管理系统**********\n" 
                   "1.职工号:%s            2.姓名:%s\n"
                   "3.性别:%s              4.出生年月日:%d/%d/%d\n"
                   "5.学历:%s              6.职务:%s\n"
                   "7.薪水:%d              8.地址:%s\n"
                   "9.电话号码:%s\n"
            "*****************谢谢使用****************\n",a[i].data.worker_number,a[i].data.name,a[i].data.gender,a[i].data.year,a[i].data.month,a[i].data.day,a[i].data.record_of_formal_schooling,a[i].data.position,a[i].data.salary,a[i].data.address,a[i].data.phone);
	printf("\12");
}

void sort1(struct STU *head)//升序排序 
{
	int m;
	struct STU *p;
	p=head->next;
	struct STU a[n];
	int i,j;
	struct STU t;
	for(i=0;i<n;i++)
	{
	a[i]=*p;
	p=p->next;
	}
	for(j=0;j<n-1;j++)
	for(i=0;i<n-1-j;i++)
	if(strcmp(a[i].data.worker_number,a[i+1].data.worker_number)>0)
	{
		t=a[i+1];
		a[i+1]=a[i];
		a[i]=t;
	}
	for(i=0;i<n;i++)
	printf("**********欢迎进入职工信息管理系统**********\n" 
                   "1.职工号:%s            2.姓名:%s\n"
                   "3.性别:%s              4.出生年月日:%d/%d/%d\n"
                   "5.学历:%s              6.职务:%s\n"
                   "7.薪水:%d              8.地址:%s\n"
                   "9.电话号码:%s\n"
            "*****************谢谢使用****************\n",a[i].data.worker_number,a[i].data.name,a[i].data.gender,a[i].data.year,a[i].data.month,a[i].data.day,a[i].data.record_of_formal_schooling,a[i].data.position,a[i].data.salary,a[i].data.address,a[i].data.phone);
	printf("\12");
}

void output()//定义output函数用来读取文件夹信息 
{
	FILE *fp;
            	char ch;
            	fp=fopen("职工信息.txt","r");
            	ch=fgetc(fp);
            	while(ch!=EOF)//EOF是End Of File的缩写,表示资源库无更多的资料可读取。表示文档的结束。 
            	{
            		putchar(ch);
            		ch=fgetc(fp);
				}
				fclose(fp);	
} 
struct STU *read()
{
	n=0;
	struct STU *head;
	head=F;
	struct STU *p;
	struct STU *q;
	p=head;
	char a[20],b[20],c[4],g[30],h[30],j[20],k[20];
	int d,e,f,i;
	FILE *fp=fopen("职工信息1.txt","r");
	while(fscanf(fp,"%s%s%s%d%d%d%s%s%d%s%s",a,b,c,&d,&e,&f,g,h,&i,j,k)!=EOF)
	{
		q=F;
		strcpy(q->data.worker_number,a);
		strcpy(q->data.name,b);
		strcpy(q->data.gender,c);
		q->data.year=d;
		q->data.month=e;
		q->data.day=f;
		strcpy(q->data.record_of_formal_schooling,g);
		strcpy(q->data.position,h);
		q->data.salary=i;
		strcpy(q->data.address,j);
		strcpy(q->data.phone,k);
		p->next=q;
		p=q;
		p->next=NULL;
		++n;
	}
	printf("读取成功!\12");
	return head;
}
int main()
{   
	int a;//定义变量a
	int j;//定义变量j 
	struct STU *head;//定义指针 
    head=NULL;
	system("color 0d");//颜色 
	char str[]="欢迎使用职工管理系统,制作人巩淼磊";//定义一个字符型数组,并赋值 
	int i;//定义变量i 
	for(i=0;str[i];i++)//循环,使字符逐个输出 
	{		
		printf("%c",str[i]);
		Sleep(40);//控制速度为40 
	}
	printf("\12");
	while(1)
	{
	char str1[]="请选择你要操作的步骤   1.登录 2.注册";//同上 
	int o;
	for(o=0;str1[o];o++)
	{
		printf("%c",str1[o]);
		Sleep(40);
	}
	printf("\12");
	char z[10];
    char c[20];//定义字符数组 c 
    char s[20];//定义字符数组 s
    char d[20];//定义字符数组 d
    char e[20];//定义字符数组 e
    char f[20];//定义字符数组 f
    char zz[2]="2";
    char zzz[2]="1";
    scanf("%s",z); 
    if(strcmp(zz,z)==0)
    {
    	printf("请输入你要注册的账号:\12");
        scanf("%s",c);//输入字符串c 
        while(1)//死循环 
        {
        printf("请设置密码:\12");
        scanf("%s",s);
        printf("请确认密码:\12");
        scanf("%s",d);
		FILE *fp=NULL;//声明fp是FILE型指针 
		fp=fopen("zcxx.txt","a");//调用fopen函数,第一个双引号里是文件名加上文件类型,后面一个双引号是a,用来写入信息   
		fprintf(fp,"\12");
		fprintf(fp,"%s",c);
		fprintf(fp,"\n");
		fprintf(fp,"%s",d);
		fclose(fp);//关闭文件 
		fp=NULL;   
        if(strcmp(s,d)==0)
        {
        	system("cls");
            printf("注册成功!\12");
            break;
        }
        else
        {
			system("cls");
            printf("密码不一致,请重新输入:\12");
        }
        }
	}
	if(strcmp(zzz,z)==0)
	{
    int q=4;
    while(1)//死循环 
    {
        printf("请登录\12");
        printf("请输入账号:\12");
        scanf("%s",e);
        printf("请输入密码:\12");
        scanf("%s",f);
        
	int a;
	FILE *fp=fopen("zcxx.txt","r");
	if(!fp)
	{
		printf("can't open file\12");
		return -1;
	}
	loop:fscanf(fp,"%d",&a);
		itoa(a,c,10);
		printf("\12");
		fscanf(fp,"%d",&a);
		itoa(a,s,10);
		printf("\12");
		fclose(fp);
        if(strcmp(c,e)==0&&strcmp(s,f)==0)
        {
        	system("cls");
            printf("登录成功!\12"); 
			break;
        }        
        else
        {
            --q;
            if(q!=0)
            {
            	system("cls");
                printf("你的账号或密码错误,请重新登录\12");
                printf("你还有%d次输入机会\12",q);
            }
            if(q==0)
            {
                printf("你的账号被冻结!\12");
                exit(0);//退出程序。 
            }
        }
    }
	}
		if(strcmp(c,e)==0&&strcmp(s,f)==0)
	{
		break;
	}
	if(strcmp(zzz,z)!=0&&strcmp(zz,z)!=0)
	{
	printf("错误,请重新选择:\12");
	}
	}
        while(1)//死循环 
        {
    loop5:printf("**********欢迎进入职工信息管理系统**********\n"
                 "1.录入职工信息并保存        2.显示所有职工信息\n"
                 "3.查询职工信息              4.修改职工信息并保存\n"
                 "5.删除职工信息              6.增加职工信息 \n"
                 "7.退出                      8.根据职工号排序\12"
                 "******************欢迎使用******************\n");
    printf("\12");
    printf("请选择你需要操作的步骤:\12");
    scanf("%d",&a); 
            if(a==1)//调用temp函数,并保存
            {
				system("color b");
            	system("cls");
                head=temp();
                Storage(head);//保存函数 
                Storage1(head);
                system("cls");
            }
            else if(a==2)//调用output函数,并保存
            {
            	system("cls");
				output();
				system("color a");     				                
            }
            else if(a==3)//如果是查询职工信息,让用户选择一下是用职工号查找,还是姓名查找
            {
                int w;
                printf("用职工号查找按1,用姓名查找按2\12");
                scanf("%d",&w);
                if(w==1)//调用Find1函数,用职工号查询信息
                {
					system("color c");
					head=read();
                	system("cls");
                    Find1(head);
                    
                }
                if(w==2)
                { 
					system("color d");
					head=read();
					system("cls");
                    Find2(head);//调用Find2函数,用姓名查询信息
                   
                }
            }
            else if(a==4)//调用update函数,修改职工信息,并保存
            {
            	system("color e");
            	head=read();
            	system("cls");
                update(head);
                Storage(head);
                Storage1(head);
                system("cls");
            }
            else if(a==5)//调用Deletenode函数,删除职工信息,并保存
            {
            	system("color 0");
				head=read();
            	system("cls");          	
                Deletenode(head);
                --n;
                Storage(head);
                Storage1(head);
                system("cls");
            }
            if(a==6)//调用Add函数,增加职工信息并保存
            {
            	system("color b");
            	head=read();
            	system("cls");
                Add(head);
                Storage(head);
                Storage1(head);
                system("cls");
            }
            if(a==7)//此步为结束本次程序
            {
            	system("color 7");
            	system("cls");
                printf("谢谢使用,制作人巩淼磊。\12");
                break;
            }
            if(a==8)
            {
            	loop3:printf("按职工号降序排列请按1,按职工号升序排列请按2\12");
            	scanf("%d",&j);
            	if(j==1)
            	sort(head);
            	if(j==2)
            	sort1(head);
            	if(j!=1&&j!=2)
            	{
            	printf("请重新输入\12");
            	goto loop3;
            	}          	
			}
            if(a!=1&&a!=2&&a!=3&&a!=4&&a!=5&&a!=6&&a!=7&&a!=8)//如果用户输入的内容不在系统内,系统将报错
            {
            	system("color 8");
            	system("cls");
                printf("请重新输入\12");
                goto loop5;
            }
        }
    return 0;
} 

写的不好,敬请谅解。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值