c语言课程设计+报告+源代码

西安郵電大學

C语言课程设计报告

题  目:       职工工资管理系统

院系名称:         计算机学院

    专业名称:          软件工程

班    级:

    学生姓名:          

学号(8位):  

指导教师:       

设计起止时间:20##年06月03日~20##年06月12日


一. 设计目的

1.通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固《c语言程序设计》课程学习的内容,掌握工程软件设计的基本方法.

2.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力.

3.为后续各门计算机课程的学习打下坚实基础; 为毕业设计和以后工作打下必要基础。

二. 设计内容

本设计主要包括了用户登录和主菜单,其中用户登录包括了一下几个功能1.新用户的注册 2.用户登录 3。用户密码的修改。而主菜单包括:1.职工信息的录入 2.职工信息的修改 3. 选择性排序 4.统计人数和工资 5.  输出现有的信息 6. 自定义查询信息。

三.概要设计

1.功能模块图;

 


2.各个模块详细的功能描述。

1.  修改密码的时候,需要输入原密码,并且输入两次新的密码必须相同才能完成密码的修改。

2.  用户登录:需要输入用户名和密码,如果用户名不存在或密码错误会给出相应的提醒,当输入正确的时候会进入主菜单。

3.  新用户注册:需要输入注册的用户和密码,如果用户明已被注册过会给出相应的提醒。

4.  职工信息的输入:是从无开始输入职工的信息,同样也会给出输入内容的提醒,当输入最后一次职工的信息为零时结束输入,同是会将输入的信息写入到文件里。

5.  修改职工信息其中包括a.添加职工信息和输入职工信息相同在添加完会提醒是否继续添加。b.修改员工信息:此时会出现选择性修改职工的哪项信息,先进行选择再进行修改。C.删除员工信息:需要输入所要删除员工的姓名或id进行删除!如果删除不成功或者删除者不存在会给出相应的提醒。

6.  统计信息:会自动的统计现有员工的总人数和现有员工的总工资。

7.  输出现有职工的信息:会显示现在记录的职工的各项信息。

8.  排序:有用户选择是按id还是按照工资进行排序,并且会输出排序前和排序后职工的信息,已做对比。

9.  自定义查询:让用户选择按照姓名还是id查询,查出后输出信息,如果所查信息不存在会给出相应的提醒。

四.详细设计

1.功能函数的调用关系图

  read()用户信息读函数    write()用户信息写函数

print()输出函数

xie()职工信息写入函数

du()职工信息读函数

2.各功能函数的数据流程图

3.重点设计及编码

密码的修改:

五.测试数据及运行结果

1.正常测试数据和运行结果

要求提供3组正常测试数据和运行结果

输出原有信息:

输出职工信息:**姓名            编号         部门      年龄     工资**

               haipeng           003     shengchan      21    456

               renhao            007     weijiao        24     358

              haonan            001     guanli         9       963

               lixuan            005     shengchan      21    4578

               nannan            006     shengchan      21    345

增加职工信息:

输出职工信息:**姓名         编号     部门              年龄   工资**

               haipeng           003     shengchan      21    456

               renhao            007     weijiao        24     358

               haonan            001     guanli         9      963

               lixuan            005     shengchan      21    4578

               nannan            006     shengchan      21    345

               xiaoming          002     guanli         21    5674

按照ID排序:

输出职工信息:**姓名                 编号       部门            年龄  工资**

               haonan            001     guanli         9      963

               xiaoming          002     guanli         21    5674

               haipeng           003     shengchan      21    456

               lixuan            005     shengchan      21    4578

               nannan            006     shengchan      21    345

               renhao            007     weijiao        24     358

2.异常测试数据及运行结果

要求提供2组异常测试数据和运行结果

1.  在文件中出现在的错误。

haipeng 011 jiaoyu 21 234

haonan 008 shengchan 22 5345

renhao 016 guanli 21 456

xong 010 waijiao 21 343

ren 009 shen 21 3731

           0     0

   在文件结尾曲异常出现0   0  。

2.  在排序的时候

排序前:输出职工信息:**姓名           编号   部门         年龄   工资**

                   haipeng           003     shengchan      21        456

                   haonan            001     guanli         9   963

                   lixuan            005     shengchan      21        4578

                   nannan            006     shengchan      21        345

                   renhao            007     weijiao        24        358

  排序后:输出职工信息:**姓名               编号      部门                年龄      工资**

                   haipeng           003     shengchan      21   456

                   haonan            001     guanli         9   963

                   lixuan            005     shengchan      21        4578

                   nannan            006     shengchan      21        345

                   renhao            007     weijiao        24        358

六.调试情况,设计技巧及体会

1.改进方案

 缺陷:在输入时没有考虑到不合理数据输入时做出相应的处理。添加时没有按任意位置的添加只是加在最后面。

改进:在输入数据时做出相应的判断。能满足任意位置的添加。

2.体会

  通过这次课程设计,我深刻的体会到了,当我们在调试过程中遇到了错误时,必须认真的分析,找出错误的原因,在自己实在无法解决的时候,学会向老师,向同学请教,解决我们遇到的问题。

七.参考文献

《c语言》 《c语言程序设计》 《linux指令》

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define  N  sizeof(struct zhig)   //职工结构体字符大小的常量

struct zhig

{

   char name[20];

   char id[15];   //职工编号

   char dept[15];/* 部门*/

   int  pay;     /*工资*/

   int  age;     /*年龄*/

   struct zhig *next;

};

struct str  //登录结构体

{

   char name[20]; //用户

   char key[20];  //密码

   struct str *next;

};

void print (struct zhig * p )

{   printf("输出职工信息:**姓名\t\t编号\t 部门\t\t年龄\t工资**\n");

    p=p->next;

    while(p->next!=NULL)

        {

          printf("               %-18s%-8s%-15s%d\t  %d\n",p->name,p->id,p->dept,p->age,p->pay);

          p=p->next;      

        }

}

void   *xie (struct zhig * head)     /*职工信息文件写函数*/

   struct zhig *p;

   FILE *fp;

   fp=fopen("xinxi.txt","wt");  //以写方式打开职工文件

   if(fp==NULL)

     {

       printf("打开文件失败,按任意键退出!");   //判断文件是否打开成功

       exit(1);

     }

   p=head->next;

   while(p!=NULL)

      {  

        fprintf(fp,"%s %s %s %d %d\n",p->name,p->id,p->dept,p->age,p->pay); // 将职工信息写入文件

        p=p->next;

       }

    fclose(fp);

}

struct zhig *du () /*职工文件读函数*/

    struct zhig *head,*r,*stu;

    FILE *fp;

    if((fp=fopen("xinxi.txt","rt"))==NULL)

       {

         printf("读入文件失败!");

       }

     else

     {

        head=(struct zhig *)malloc(N);  //将职工信息读入到链表中

        head->next=NULL;

        r=head;

         while(feof(fp)!=1)

        {

         stu=(struct zhig *)malloc(N);

         fscanf(fp,"%s %s %s %d %d",stu->name,stu->id,stu->dept,&stu->age,&stu->pay);

         r->next=stu;

         r=stu;

        }

        r->next=NULL;

        fclose(fp);

        return(head);

    }

}

struct zhig *shuru (void)    //输入职工信息选择 1

 { 

    int i=0;   //i用来记录输入的人数

    getchar();

    struct zhig *p,*q,*head1; //head1头节点,p新增节点,q未节点

    struct zhig *head2;     // head2 用来接受读文件函数的返回值

    head1=q=(struct zhig *)malloc(N);//开辟空间

    p=(struct zhig *)malloc(N);

    printf("输入以年龄为0结束\n");

    printf("请输入姓名:");

    gets(p->name);

    printf("\n输入编号:");

    gets(p->id);

    printf("\n输入所在部门:");

    gets(p->dept);

    printf("\n输入年龄:");

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

    printf("\n输入工资:");

    scanf("%d",&p->pay);

    i++;

    while (p->age!=0)

    {

       getchar();

       q->next=p;

       q=p;

       p=(struct zhig *)malloc(N);

       printf("请输入姓名:");

       gets(p->name);

       printf("\n输入编号:");

       gets(p->id);

       printf("\n输入所在部门:");

       gets(p->dept);

       printf("\n输入年龄:");

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

       printf("\n输入工资:");

       scanf("%d",&p->pay);

       i++;

    }

    q->next=NULL;

    printf("总共输入的人数%d\n",--i);

    free(p);

    xie(head1);

    head2=du();

    print(head2);

    return(head1);          

}

void x_g (struct zhig *p,struct zhig *head) //选择性修改函数

{   void m_ain();

    int j;

    if(p==NULL)

        printf("查找人员不存在:\n");

    else

    {printf("\t————————————————\n");

     printf("\t1:修改姓名");

     printf("\n\t2:修改id");

     printf("\n\t3:修改部门");

     printf("\n\t4:修改年龄");

     printf("\n\t5:修改工资\n");

     printf("\t__________________");

     printf("\n请你选择修改内容:");

     scanf("%d",&j);

     switch(j)

     {  case 1 :printf("\n请输入修改的姓名:");

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

       case 2: printf("\n请输入修改的id:");

               scanf("%s",p->id);    break;

       case 3: printf("\n请输入修改的部门:");

               scanf("%s",p->dept);  break;

       case 4: printf("\n请输入修改的年龄:");

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

       case 5: printf("\n请输入修改的工资:");

               scanf("%d",&p->pay);  break;

     }

       printf("\n修改成功!");

       printf("\n写入修改后的文件\n");

       xie(head);

       print(head);

       printf("返回主菜单\n");

       m_ain();

    }

}

void xg ()

   char a,b;

   char name[20];

   struct zhig *head,*q;

   struct zhig *p=NULL;  //记录查到的结点

   printf("输出现有职工信息:\n");

   head=du();

   print(head);

   q=head;

   printf("是否按照姓名查找修改的内容Y/N:");

   scanf("%c",&a);

   if(a=='Y')

     {

        printf("请输入修改者的姓名:");

        scanf("%s",name);

        getchar();

        while(q->next!=NULL)

            {  

               q=q->next;

               if(strcmp(q->name,name)==0)

                 {

                   p=q;

                   x_g(q,head);

                 }

            }

            if(p==NULL)

              {

                printf("修改者不存在,返回\n");

                xg();

              }   

     }

   else if(a=='N')

      {

       printf("是否按照id查找Y/N:");

       getchar();

       scanf("%c",&b);

       if(b=='Y')

        {

           printf("请输入修改者的ID:");

           scanf("%s",name);

           while(q->next!=NULL)

            {  

               q=q->next;

               if(strcmp(q->id,name)==0)

                 {

                   p=q;

                   x_g(q,head);

                 }

            }

           if(p==NULL)

              {

                printf("修改者不存在,返回\n");

                xg();

              }   

        }

       else if (b=='N')

               xg();

       else

           {

            printf("输入错误:\n");

            xg();

            }

      }

  else

      {

        printf("输入错误,返回\n");

        xg();

      }

}

void shanchu()

{  int i=0;

   char a,b,c,d;

   char name[20];

   void xiugai();

   struct zhig *head,*q;//q前驱

   struct zhig *p;  //记录查到的结点

   head=du();

   print(head);

   q=head;

   p=q->next;

   printf("是否按照姓名查找删除的内容Y/N:");

   scanf("%c",&a);

   if(a=='Y')

     { 

        getchar();

        printf("请输入删除者的姓名:");

        scanf("%s",name);

        while(p->next!=NULL)

            {  

               if(strcmp(p->name,name)==0)

                 {  printf("%s\n",p->name);

                    q->next=p->next;

                    free(p);

                    i=1;

                 }

               q=p;

               p=p->next;

            }

        if(i==1)

          {

           printf("删除成功,输出删除后信息  \n");

            xie(head);

            head=du();

            print(head);

           printf("选择Y继续删除 ,否则返回修改菜单\n");

           getchar();

           scanf("%c",&d);

           if(d=='Y')

              shanchu();

           else

              xiugai();

          }

        else

           {printf("删除不存在,返回修改主菜单\n");

            xiugai();}

     }

   else if(a=='N')

        {

         printf("是否按照id查找Y/N:");

         getchar();

         scanf("%c",&b);

         if(b=='Y')

         {

           printf("请输入删除者的ID:");

           scanf("%s",name);

           while(p->next!=NULL)

            {  

               if(strcmp(p->id,name)==0)

                 { 

                    q->next=p->next;

                    free(p);

                    i=1;

                 }

               q=p;

               p=p->next;

            }   

           if(i==1)

            {

              printf("删除成功,输出删除后的信息\n");

              xie(head);

              head=du();

              print(head);

              printf("选择Y继续删除 ,否则返回修改菜单\n");

              getchar();

              scanf("%c",&d);

              if(d=='Y')

                 shanchu();

              else

                 xiugai();

             }

           else

              {printf("删除不存在,返回修改主菜单\n");

               xiugai();}

        }

       else if (b=='N')

              {

                printf("返回\n");

                shanchu();

              } 

       else

          {

            printf("\n输入错误,返回:\n");

            shanchu();

          }

      }

   else

      {

         printf("\n输入错误,返回:\n");

         shanchu();

       }

}

void  tianjia ()

{  char a;

   struct zhig *head,*p1,*p2;

   struct zhig *q;//新插入的节点

   head=p2=du();

   p1=p2->next;

   q=(struct zhig *)malloc(N);

   printf("请输入添加者的姓名:");

   scanf("%s",q->name);

   printf("\n请输入添加者的id:");

   scanf("%s",q->id);

   printf("\n请输入添加者的单位:");

   scanf("%s",q->dept);

   printf("\n请输入添加者的年龄:");

   scanf("%d",&q->age);

   printf("\n请输入添加者的工资:");

   scanf("%d",&q->pay);

   while(p1->next!=NULL)

        {

          p2=p1;

          p1=p1->next;

        }

   p2->next=q;

   printf("输出添加后的信息\n");

   xie(head);

   head=du();

   print(head);

   printf("添加成功是否再添加,是Y/否则返回修改菜单");

   getchar();

   void xiugai();

   scanf("%c",&a);

   if(a=='Y')

     tianjia();

   else

     xiugai();

}

void xiugai ()

{  int k;

   printf("      1:添加员工信息\n");

   printf("      2:修改员工信息\n");

   printf("      3:删除员工信息\n");

   printf("      0:退出修改,返回主菜单。\n");

   printf("请你选择对应的操作:");

   scanf("%d",&k);

   void m_ain();

   switch(k)

   {

      case 2 : xg()       ; break;

      case 1 : tianjia()  ; break;

      case 3 : shanchu () ; break;

      case 0 : m_ain()    ; break;

      default : printf("“输入错误,返回修改”\n") ;

                xiugai();   break;

   }

}

void shuchu()

   char a;

   struct zhig * head;

   head=du();

   printf("************输出现有职工信息***************\n\n");

   print(head);

   getchar();

   printf("选择返回菜单Y,结束N\n");

   scanf("%c",&a);

   void m_ain();

   if(a=='Y')

     m_ain();

}

void i_d () //   id排序

{  char a;

   void paixu();

   void m_ain();

   struct zhig *head,*p,*q;

   char name[20],id[15],dept[15];

   int pay,age,i,j;

   head=du();

   printf("输出排序前的信息\n");

   print(head);

   printf("输入排序的总人数:");

   scanf("%d",&i);

   for(;i>1;i--)

      {

        p=head;

        q=p->next;

        while(q->next!=NULL)

           {

            if(strcmp(p->id,q->id)>0)

            {

              strcpy(name,p->name);             //交换

              strcpy(p->name,q->name);

              strcpy(q->name,name);

              strcpy(id,p->id);

              strcpy(p->id,q->id);

              strcpy(q->id,id);

              strcpy(dept,p->dept);

              strcpy(p->dept,q->dept);

              strcpy(q->dept,dept);

              pay=p->pay;

              p->pay=q->pay;

              q->pay=pay;

              age=p->age;

              p->age=q->age;

              q->age=age;

            }

            p=q;

            q=q->next;

          }

       }

   printf("输出排序后的信息\n");

   print(head);

   printf("排序成功Y返回排序菜单/否则返回主菜单\n");

   getchar();

   scanf("%c",&a);

   if(a=='Y')

      paixu();

   else

      m_ain();

}

void g_z ()   //   工资排序

{  char a;

   void paixu();

   void m_ain();

   struct zhig *head,*p,*q;

   char name[20],id[15],dept[15];

   int pay,age,i,j;

   head=du();

   printf("输出排序前的信息\n");

   print(head);

   printf("输入排序的总人数:");

   scanf("%d",&i);

   for(;i>1;i--)

     {

        p=head;

        q=p->next;

        while(q->next!=NULL)

           {

            if(p->pay > q->pay)

            {

              strcpy(name,p->name);

              strcpy(p->name,q->name);

              strcpy(q->name,name);

              strcpy(id,p->id);

              strcpy(p->id,q->id);    //交换

              strcpy(q->id,id);

              strcpy(dept,p->dept);

              strcpy(p->dept,q->dept);

              strcpy(q->dept,dept);

              pay=p->pay;

              p->pay=q->pay;

              q->pay=pay;

              age=p->age;

              p->age=q->age;

              q->age=age;

            }

            p=q;

            q=q->next;

          }

     }

   printf("输出排序后的信息\n");

   print(head);

   printf("排序成功Y返回排序菜单/否则返回主菜单\n");

   getchar();

   scanf("%c",&a);

   if(a=='Y')

      paixu();

   else

      m_ain();

}

void paixu()

{  int i;

   void m_ain();

   printf("   1.按ID排序\n");

   printf("   2.按工资排序\n");

   printf("   0.退出,返回主菜单\n");

   printf("请你选择:");

   scanf("%d",&i);

   switch(i)

   {

      case 1 : i_d() ; break ;

      case 2 : g_z() ; break ;

      case 0 : m_ain()    ; break ;

      default : printf("输入错误,返回!\n") ;

                paixu();  break;

   }

}

int  xmc ()  //姓名查找函数

   int i=0;

   int j=0;

   struct  zhig *head;

   char name[20];

   printf("请输入查找的姓名:");

   scanf("%s",name);

   head=du();

   while(head->next!=NULL)

       {

         if(strcmp(head->name,name)==0)

           {printf("%s %s %s %d %d\n",head->name,head->id,head->dept,head->age,head->pay);

            i=1;

            j++;}

         head=head->next;

       }

    if(i==0)

      printf("查询的信息不存在!\n");

    else

      printf("查到的总人数%d\n",j);

   return(j);

}

int  gzc () //工资查找函数

   int i=0;

   int j=0;

   struct  zhig *head;

   int pay;

   printf("请输入查找的工资:");

   scanf("%d",&pay);

   head=du();

   while(head->next!=NULL)

       {

         if(pay==head->pay)

           {printf("%s %s %s %d %d\n",head->name,head->id,head->dept,head->age,head->pay);

            i=1;

            j++;}

         head=head->next;

       }

   if(i==0)

      printf("查询的信息不存在!\n");

   else

      printf("查到的总人数%d\n",j);

   return(j);

}

void chaxun ()

   void m_ain();

   int i,j;

   printf("   1.按姓名查询\n");

   printf("   2.按工资查询\n");

   printf("   0.返回主菜单\n");

   printf("请你选择:");

   scanf("%d",&i);

   switch(i)

   {

      case 1 : j=xmc() ;

               printf("返回主菜单\n");

               m_ain();                break ;

      case 2 : j=gzc() ;

               printf("返回主菜单\n");

               m_ain();                break ;

      case 0 : m_ain()     ;           break ;

      default : printf("输入错误,返回!\n") ;

                chaxun();               break;

   }

}

void tongji ()

{  void m_ain();

   char a;

   int i=0; //记录总数

   long k=0; //记录总工资

   struct zhig *head;

   head=du();

  

   while(head->next!=NULL)

   {

      i++;

      k=k+head->pay;

      head=head->next;

   }

   printf("现有员工总人数:%d\n",--i);

   printf("现有员工的总工资%ld\n",k);

   printf( "选择Y返回主菜单,否则退出程序\n");

   getchar();

   scanf("%c",&a);

   if(a=='Y')

     m_ain();

}

void m_ain()

{

  int i;

  struct zhig *head;

  printf("***********************************************\n\n");

  printf("              1:职工信息输入\n\n");

  printf("              2:职工信息修改\n\n");

  printf("              3:选择性排序\n\n");

  printf("              4:统计人数和工资\n\n");

  printf("              5:输出现有的信息\n\n");

  printf("              6:自定义查询信息\n\n");

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

  printf("***********************************************\n");

  printf("请你选择:");

  scanf("%d",&i);

  switch(i)

  {

    case 1 : head=shuru()  ; break ;

    case 2 : xiugai() ; break ;

    case 3 : paixu () ; break ;

    case 4 : tongji() ; break ;

    case 5 : shuchu() ; break ;

    case 6 : chaxun() ; break ;

    case 0 :          break ;

    default : printf("“输入错误”\n") ; break;

  }

}

struct str *read () //用户信息的读入

{

    struct str *head,*r,*stu;

    FILE *fp;

    if((fp=fopen("yonghuxinxi.txt","rt"))==NULL)

       {

         printf("读入文件失败!");

       }

     else

     {

        head=(struct str*)malloc( sizeof (struct str) );

        head->next=NULL;

        r=head;

         while(feof(fp)!=1)

        {

         stu=(struct str *)malloc(N);

         fscanf(fp,"%s %s ",stu->name,stu->key);

         r->next=stu;

         r=stu;

        }

        r->next=NULL;

        fclose(fp);

        return(head);

    }

}

void write (struct str *q) //用户的写入

{  struct str *p;

   FILE *fp;

   fp=fopen("yonghuxinxi.txt","wt");

   if(fp==NULL)

     {

       printf("打开文件失败,按任意键退出!");

       exit(1);

     }

   p=q->next;

   while(p!=NULL)

      {  

        fprintf(fp,"%s %s \n",p->name,p->key);

        p=p->next;

       }

    fclose(fp);

}

void zhuche ()

{  int i=0;

   char name[20],key[20]; 

   struct str *head,*d;

   struct str *p1,*p2;

   struct str *q; //新加入的节点

   q=(struct str *)malloc(sizeof(struct str));

   printf("请输入用户名:");

   scanf("%s",q->name);

   d=head=read();

   while(d!=NULL)

   {  if(strcmp(d->name,q->name)==0) //判断是否已有用户用过该名字

        {

           i=1;

           break;

        }

       d=d->next;

   }

   if(i!=0)

     {

      printf("该用户已被注册过,返回\n");

      zhuche();

     }

   else

   {  printf("密码不能超过20个字符\n");

      printf("请输入密码:");

      scanf("%s",q->key);

      p2=head;

      p1=p2->next;

      while(p1->next!=NULL)

        {

          p2=p1;

          p1=p1->next;

        }

     p1->next=q;

     write(head); 

   }

}

void denglu ()

{  int i=0;

   char name[20],key[20],a;

   struct str *head;

   head=read();

   printf("请输入用户名:");

   scanf("%s",name);

   while(head!=NULL)

   {

      if(strcmp(head->name,name)==0)

        { i=1;

          printf("\n请输入密码:");

          scanf("%s",key);

          if(strcmp(head->key,key)==0)

            m_ain();

          else

            {

             printf("密码输入错误!\n");

             printf("是否重新登录Y,否则退出!\n");

             getchar();

             scanf("%c",&a);

             if(a=='Y')

                denglu();

            }

        }

      head=head->next;

   }

   if(i==0)

     printf("该用户不存在\n");

}

void xgmi ()

{  int i=0;

   char name[20],key1[20],key2[20],key3[20];

   struct str *head,*p;

   p=head=read();

   printf("请输入用户名:");

   scanf("%s",name);

   while(head!=NULL)

   {

      if(strcmp(head->name,name)==0)

        { i=1;

          printf("\n请输入原密码:");

          scanf("%s",key1);

          if(strcmp(head->key,key1)==0)

            {

               printf("\n请输入新密码:");

               scanf("%s",key2);

               printf("\n请再次输入新密码:");

               scanf("%s",key3);

               if(strcmp(key2,key3)==0)

                 { 

                    strcpy(head->key,key2);

                    printf("密码修改成功!“请你记住”\n");

                    write(p);

                 }

               else

                  printf("两次输入的密码不同,不能修改!\n");

            }

          else

            printf("密码输入错误!\n");

        }

      head=head->next;

   }

   if(i==0)

     printf("该用户不存在\n");

}

main()

{

  int i;

  printf("\t\t-----------------------------------------------\n\n");

  printf("\t\t************************************************\n\n");

  printf("\t\t**********欢迎进入职工工资管理系统**************\n\n");

  printf("\t\t************************************************\n\n");

  printf("\t\t            1:新有用户注册\n\n");

  printf("\t\t            2:登录系统\n\n");

  printf("\t\t            3:修改密码 \n\n");

  printf("\t\t            0:退出程序 \n\n");

  printf("        请你选择操作:");

  scanf("%d",&i);

  switch(i)

  {

    case 1 : zhuche() ;  break;

    case 2 : denglu() ;  break;

    case 3 : xgmi()   ;  break;

    case 0 :          ;  break;

   default : printf("“输入错误”\n") ; break; 

  }

}

相关推荐