C语言工资管理系统源代码-andy

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 100
struct Salary_Info
{  
    int Card_No;            //工资卡号
    char name[20];          //姓名
    int month;              //月份
    float Init_Salary;       //应发工资
    float Water_Rate;       //水费
    float Electric_Rate;    //电费
    float tax;              //税金
    float Final_Salary;     //实发工资
    float Final_Salary_sum; //实发总工资
}; 
/*声明函数和定义全局变量*/
struct Salary_Info SI[N];
int  count=0; //计数有多少条记录,赋初值为0条     
void Menu();                  //0
void input();                 //1
void sort_Menu();             //4
void sort_Card_No();          //5
void sort_Final_Salary();     //6
void sort_name();             //8
void display();               //9
void save();                  //10
void load();                  //11
void search_Menu();           //12
void search_Card_No();        //13
void search_name();           //14
void statistics();            //15
void del();                   //18
void add();                   //19
void modify();                //20   /*定义各函数*/
void main();

void Menu()
{  
    printf("                              欢迎登陆工资管理系统                              \n\n");
    printf(" ************************************菜单**************************************\n"); 
    printf(" *           1.信息录入                            2.排序                     *\n"); 
    printf(" *           3.显示                                4.数据保存                 *\n"); 
    printf(" *           5.数据调入                            6.查询                     *\n");
    printf(" *           7.统计                                8.删除职工                 *\n");
    printf(" *           9.添加职工                            10.修改职工信息            *\n");
    printf(" *           0.退出                                                           *\n");
    printf(" ******************************************************************************\n"); 
}

void input()  /*输入函数*/
{
    system("color f5");
    int i,m;
    float sum;
    printf("********************************录入初始职工信息*******************************\n\n");
    printf("请输入需要创建信息的职工人数(1--100): ");
    scanf("%d",&m);
    count=m;
        for(i=0;i<m;i++)
        {
            printf("请输入职工工资卡号:");
            scanf("%d",&SI[i].Card_No);
            printf("请输入姓名:");
            scanf("%s",&SI[i].name);
            printf("请输入月份:");
            scanf("%d",&SI[i].month);
            printf("请输入应发工资:");
            scanf("%f",&SI[i].Init_Salary);
            printf("请输入水费:");
            scanf("%f",&SI[i].Water_Rate);
            printf("请输入电费:");
            scanf("%f",&SI[i].Electric_Rate);
            if(SI[i].Init_Salary <= 800) sum=0; /*计算税金*/
            else if(SI[i].Init_Salary > 800 && SI[i].Init_Salary <= 1400) sum=(float)(SI[i].Init_Salary-800)*0.05;
            else  sum=(SI[i].Init_Salary-800)*0.1;
              SI[i].tax=sum;
            SI[i].Final_Salary=(SI[i].Init_Salary-SI[i].Water_Rate-SI[i].Electric_Rate-SI[i].tax);  /*计算实发工资*/
        }
    printf("\n创建完毕!\n");
    save();
}

void sort_Menu()   /*排序主函数*/
{
    system("color f5");
    int t,flag;
    do
    {
        printf(" *********************************选择排序方式*********************************\n");
        printf(" *                                                                            *\n");
        printf(" *      1.按职工卡号排序  2.按实发工资排序  3.按姓名排序  4.返回主菜单        *\n");
        printf(" *                                                                            *\n");
        printf(" ******************************************************************************\n");
        printf(" 请输入[1-4]: ");
        scanf("%d",&t);
        printf("\n");
        if(t>=1&&t<=4)
        {
          flag=1;
          break;
        }
        else
        {
          flag=0;
          system("cls");
          printf("\n您输入有误!!! 请重新选择。\n\n");
        }
    }
    while(flag==0);
        switch(t)
        {
            case 1:system("cls");sort_Card_No();break;          /*调用按卡号排序函数*/
            case 2:sort_Final_Salary();break;     /*调用按实发工资排序函数*/
            case 3:sort_name();break;             /*调用按姓名排序函数*/
            case 4:system("cls");main();break;                /*调用主函数*/
            default:break;
        }
}

void sort_Card_No()   /*按卡号升序排序函数*/
{
    system("color f4");
    int i,j,k;
    float temp;
    char t[20];
    for(i=0;i<count-1;i++)
        for(j=0;j<count-1;j++)
            if(SI[j].Card_No<SI[j+1].Card_No)
            {
                k=SI[j].Card_No; SI[j].Card_No=SI[j+1].Card_No; SI[j+1].Card_No=k;
                strcpy(t,SI[j].name); strcpy(SI[j].name,SI[j+1].name); strcpy(SI[j+1].name,t);
                temp=SI[j].month;SI[j].month=SI[j+1].month;SI[j+1].month=temp;
                temp=SI[j].Init_Salary;SI[j].Init_Salary=SI[j+1].Init_Salary;SI[j+1].Init_Salary=temp;
                temp=SI[j].Water_Rate;SI[j].Water_Rate=SI[j+1].Water_Rate;SI[j+1].Water_Rate=temp;
                temp=SI[j].Electric_Rate;SI[j].Electric_Rate=SI[j+1].Electric_Rate;SI[j+1].Electric_Rate=temp;
                temp=SI[j].tax;SI[j].tax=SI[j+1].tax;SI[j+1].tax=temp;
                temp=SI[j].Final_Salary;SI[j].Final_Salary=SI[j+1].Final_Salary;SI[j+1].Final_Salary=temp;
            }
            printf("******************************按职工卡号排序浏览******************************\n");
            printf("*\n");
            printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
            for(i=0;i<count;i++)
            {
                printf("* %d\t%s\t %d\t%.2f\t        %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
                if((i+1)%10==0) system("pause");
            }
            printf("******************************************************************************\n");
}

void sort_Final_Salary()   /*实发工资排序函数*/
{
    int i,j,k;
    float temp;
    char t[10];
    printf("******************************按实发工资排序浏览******************************\n");
    printf("*\n");
    printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
    for(i=0;i<count-1;i++)
        for(j=0;j<count-1;j++)
            if(SI[j].Final_Salary<SI[j+1].Final_Salary)
            {
                k=SI[j].Final_Salary;SI[j].Final_Salary=SI[j+1].Final_Salary;SI[j+1].Final_Salary=k;
                strcpy(t,SI[j].name);strcpy(SI[j].name,SI[j+1].name);strcpy(SI[j+1].name,t);
                temp=SI[j].month;SI[j].month=SI[j+1].month;SI[j+1].month=temp;
                temp=SI[j].Init_Salary;SI[j].Init_Salary=SI[j+1].Init_Salary;SI[j+1].Init_Salary=temp;
                temp=SI[j].Water_Rate;SI[j].Water_Rate=SI[j+1].Water_Rate;SI[j+1].Water_Rate=temp;
                temp=SI[j].Electric_Rate;SI[j].Electric_Rate=SI[j+1].Electric_Rate;SI[j+1].Electric_Rate=temp;
                temp=SI[j].tax;SI[j].tax=SI[j+1].tax;SI[j+1].tax=temp;
                temp=SI[j].Card_No;SI[j].Card_No=SI[j+1].Card_No;SI[j+1].Card_No=temp;
            }
            for(i=0;i<count;i++) /*count为职工人数*/
            {
                printf("* %d\t%s\t %d\t%.2f\t        %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
                if((i+1)%10==0) system("pause");
            }
            printf("******************************************************************************\n");
}

void sort_name()      /*姓名排序函数*/
{
    char t[20];
    int i,j,k;
    float temp;
    {for(i=0; i<count-1; i++)
        for(j=0; j<count-i-1; j++)
        {
            if(strcmp(SI[j].name,SI[j+1].name)>0)
            {
                k=SI[j].Card_No; SI[j].Card_No=SI[j+1].Card_No; SI[j+1].Card_No=k;
                strcpy(t,SI[j].name); strcpy(SI[j].name,SI[j+1].name); strcpy(SI[j+1].name,t);
                temp=SI[j].month;SI[j].month=SI[j+1].month;SI[j+1].month=temp;
                temp=SI[j].Init_Salary;SI[j].Init_Salary=SI[j+1].Init_Salary;SI[j+1].Init_Salary=temp;
                temp=SI[j].Water_Rate;SI[j].Water_Rate=SI[j+1].Water_Rate;SI[j+1].Water_Rate=temp;
                temp=SI[j].Electric_Rate;SI[j].Electric_Rate=SI[j+1].Electric_Rate;SI[j+1].Electric_Rate=temp;
                temp=SI[j].tax;SI[j].tax=SI[j+1].tax;SI[j+1].tax=temp;
                temp=SI[j].Final_Salary;SI[j].Final_Salary=SI[j+1].Final_Salary;SI[j+1].Final_Salary=temp;  
            }
        }
    }
    printf("******************************按职工姓名排序浏览******************************\n");
    printf("*\n");
    printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
    for(i=0;i<count;i++)
    {
        printf("* %d\t%s\t %d\t%.2f\t        %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
        if((i+1)%10==0) system("pause");
    }
    printf("******************************************************************************\n");
}

void display()  /*浏览函数*/
{
    int i;
    printf("*********************************浏览职工信息*********************************\n");
    printf("*\n");
    printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
    for(i=0;i<count;i++)
    {
        printf("* %d\t%s\t %d\t%.2f\t        %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
        if((i+1)%10==0) system("pause");
    }
    printf("******************************************************************************\n");
}

void search_Menu()/*查询函数*/
{
   int t,flag;
   do
   {
       printf(" *********************************选择查询方式*********************************\n");
       printf(" *                                                                            *\n");
       printf(" *      1.按卡号查询  2.按姓名查询  3.返回主菜单                              *\n");
       printf(" *                                                                            *\n");
       printf(" ******************************************************************************\n");
       printf(" 请输入操作[1-3]: ");
       scanf("%d",&t);
       if(t>=1&&t<=3)
       {
          flag=1;
          break;
       }
      else
      {
          flag=0;
          system("cls");
          printf("\n您输入有误!!! 请重新选择。\n\n");
      }
   }
    while(flag==0);
    switch(t)
       {
            case 1:search_Card_No();break;
            case 2:search_name();break;
            case 3:system("cls");main();break;
            default:break;
       }
}

void search_Card_No()
{
    int Card_No,flag;
    int i,t;
    printf("\n请输入要查找的职工卡号: ");
    fflush(stdin);
    scanf("%d",&Card_No);
    for(i=0;i<count;i++)
    {
        if(Card_No==SI[i].Card_No)
        {
            flag=1;
            printf("\n已找到此人,其记录为:\n");
            printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
            printf("* %d\t%s\t %d\t%.2f\t        %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
            printf("*******************************************************************************\n");break;
        }
    }
    if(flag!=1)
    {
        printf("\n  ---对不起,查无此人---  \n");
    }
    printf("    返回查询函数请按1  继续查询请按2 \n");
    scanf("%d",&t);
    switch(t)
    {
    case 1:system("cls");search_Menu();break;
    case 2:search_Card_No();break;
    default:break;
    }
}

void search_name()
{
    char name[30];
    int i,t,flag;
    printf("\n请输入要查找职工姓名: ");
    scanf("%s",&name);
    for(i=0;i<count;i++)
    {
        if(strcmp(SI[i].name,name)==0)
        {
            flag=1;
            printf("\n已找到此人,其记录为:\n");
            printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
            printf("* %d\t%s\t %d\t%.2f\t        %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
            printf("******************************************************************************\n"); //break;
        }
    }
    if(flag!=1)
    {
        printf("\n  ---对不起,查无此人---  \n");
    }
    printf("\n[ 1.返回查询菜单 2.继续查姓名查询] 请输入: ");
    scanf("%d",&t);
    switch(t)
    {
    case 1:system("cls");search_Menu();break;
    case 2:search_name();break;
    default:break;
    }
}

void statistics() /*统计函数*/
{
    int i,t,m,n,flag,banner,num,Card_No;
    do
    {
        printf("***********************************统计数据***********************************\n\n");
        display();
        printf("请输入职工工资卡号: ");
        fflush(stdin);
        scanf("%d",&Card_No);
        printf("请输入开始月份: ");
        scanf("%d",&m);
        printf("请输入结束月份: ");
        scanf("%d",&n);
        num=n-m+1;
        for(i=0;i<=count;i++)
            if(Card_No==SI[i].Card_No)
            {
                if(num>=1&&num<=12)
                {
                banner=1;
                SI[i].Final_Salary_sum = num*SI[i].Final_Salary;
                printf("**********************************查询结果如下*********************************\n");
                printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
                printf("* %d\t%s\t %d\t%.2f\t        %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
                printf("*-----------------------------------------------------------------------------\n");
                printf("* 实发工资总额为:%.2f\n",SI[i].Final_Salary_sum);
                printf("*******************************************************************************\n");
                break;
                }
            }
            else
            {
                banner=0;
                printf("\n您输入有误,请重新输入!\n");
            }
            printf("\n[ 1.继续查询 2.返回菜单] 请输入: ");
            scanf("%d",&t);
            if(t>=1&&t<=2)
            {
            flag=1;
            break;
            }
            else
            {
                flag=0;
                system("cls");
                printf("\n您输入有误!!! 请重新选择。\n\n");
            }
    }
    while(flag==0);
    while(flag==1)
    {
        switch(t)
        {
        case 1:statistics();break;
        case 2:system("CLS");main();break;
        default:break;
        }
    }
}

void del()   /*删除函数*/
{
    printf("********************删除职工信息************************\n\n");
    int i,j,n,t,flag;
    char name[20];
    printf("\n 原来的职工信息:\n");
    display();
    printf("\n请输入要删除的职工的姓名:");
    scanf("%s",&name);
    for(flag=1,i=0;flag&&i<count;i++)
    {
        if(strcmp(SI[i].name,name)==0)
        {
            printf("\n已找到此人,原始记录为:\n");
            printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
            printf("* %d\t%s\t %d\t%.2f\t        %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
            printf("******************************************************************************\n");
            printf("\n[ 1.确认删除 0.不删除] 请输入(0或1): ");
            scanf("%d",&n);
            if(n==1)
            {
                for(j=i;j<count;j++)
                {
                    SI[j].Card_No=SI[j+1].Card_No;
                    strcpy(SI[j].name,SI[j+1].name);
                    SI[j].month=SI[j+1].month;
                    SI[j].Init_Salary=SI[j+1].Init_Salary;
                    SI[j].Water_Rate=SI[j+1].Water_Rate;
                    SI[j].Electric_Rate=SI[j+1].Electric_Rate; 
                    SI[j].tax=SI[j+1].tax;
                    SI[j].Final_Salary=SI[j+1].Final_Salary;
                
                }
                    count=count-1;
                    flag=0;
            }
        }
    }
    if(!flag)
    {
        save();     /*调用保存函数*/
        printf("\n浏览增加后的所有职工信息:\n");
        display();  /*调用浏览函数*/
        printf("\n[ 1.继续删除 0.不再删除] 请输入(0或1): ");
        scanf("%d",&t);
        switch(t)
        {
        case 1:del();break;
        case 0:break;
        default :break;
        }
    }
}

void add()/*添加函数*/
{
    printf("********************添加职工信息************************\n\n");
    FILE*fp;
    int n;
    int i;
    float sum;
    printf("原来的职工信息:\n");
    display();  
    printf("\n");
    fp=fopen("Salary_Info.txt","ab+");
    printf("请输入想增加的职工数:");
    scanf("%d",&n);
    for (i=count;i<(count+n);i++)
    {
        printf("请输入职工工资卡号:");
        scanf("%d",&SI[i].Card_No);
        printf("请输入姓名:");
        scanf("%s",&SI[i].name);
        printf("请输入月份:");
        scanf("%d",&SI[i].month);
        printf("请输入应发工资:");
        scanf("%f",&SI[i].Init_Salary);
        printf("请输入水费:");
        scanf("%f",&SI[i].Water_Rate);
        printf("请输入电费:");
        scanf("%f",&SI[i].Electric_Rate);
        if(SI[i].Init_Salary <= 800) sum=0; /*计算税金*/
            else if(SI[i].Init_Salary > 800 && SI[i].Init_Salary <= 1400) sum=(float)(SI[i].Init_Salary-800)*0.05;
            else  sum=(SI[i].Init_Salary-800)*0.1;
              SI[i].tax=sum;
            SI[i].Final_Salary=(SI[i].Init_Salary-SI[i].Water_Rate-SI[i].Electric_Rate-SI[i].tax);  /*计算实发工资*/
    }
    fwrite(&SI[i],sizeof(struct Salary_Info),1,fp);
    fclose(fp);
    count=count+n;
    printf("\n已增加的人数:");
    printf("%d",n);
    printf("\n添加完毕!\n");
    save();
    printf("\n浏览增加后的所有职工信息:\n");
    display();
}

void modify() /*修改函数*/
{
    printf("********************修改职工信息************************\n\n");
    int Card_No;                   //工资卡号
    char name[20];                 //姓名
    int month;                     //月份
    float Init_Salary;             //应发工资
    float Water_Rate;              //水费
    float Electric_Rate;           //电费
    float Final_Salary;
    float sum; //计算税金时用于转换赋值
    int b,c,i,n,t,flag; 
    printf("\n 原来的职工信息:\n");
    display(); 
    printf("请输入要修改的职工的姓名:");
    scanf("%s",&name);
    for(i=0;i<count;i++)
    {
        if(strcmp(SI[i].name,name)==0)
        {
            system("cls");
            printf("\n已找到此人,原始记录为:\n");
            printf("******************************************************************************\n");
            printf("*\n");
            printf("* 卡号\t姓名\t月份\t应发工资\t水费\t电费\t税\t实发工资\n");
            printf("* %d\t%s\t %d\t%.2f\t        %.2f\t%.2f\t%.2f\t%.2f\n",SI[i].Card_No,SI[i].name,SI[i].month,SI[i].Init_Salary,SI[i].Water_Rate,SI[i].Electric_Rate,SI[i].tax,SI[i].Final_Salary);
            printf("******************************************************************************\n");
            printf("[ 1.修改  2.不修改] 请输入: ");
            scanf("%d",&n);
            if(n!=1) break;
            if(n==1)
            {
                flag=1;
                printf("\n************修改选项: 1.卡号 2.姓名 3.月份 4.应发工资 5.水费 6.电费***********\n");  
                printf("请选择[1-6]: ");  
                scanf("%d",&c);  
                if(c>6||c<1)
                    printf("\n选择错误,请重新选择!\n");  
            }
        }
        else
        {
            printf("\n对不起,查无此人!\n");
            flag=0;
            break;
        }
    }   
    if(flag==1)
    do  
    {
        switch(c)      /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/
        {
        case 1:printf("工资卡号改为: ");
        scanf("%d",&Card_No);
        SI[i-1].Card_No=Card_No;
        break;
        case 2:printf("姓名改为: ");
        scanf("%s",&name);
        strcpy(SI[i-1].name,name); 
        break;  
        case 3:printf("月份改为: ");
        scanf("%d",&month);
        SI[i-1].month=month;
        break;  
        case 4:printf("应发工资改为: ");
        scanf("%f",&Init_Salary);
        SI[i-1].Init_Salary=Init_Salary;
        if(SI[i-1].Init_Salary <= 800) sum=0; /*计算修改应发工资后的税金*/
            else if(SI[i-1].Init_Salary > 800 && SI[i-1].Init_Salary <= 1400) sum=(float)(SI[i-1].Init_Salary-800)*0.05; /*sum强制转换类型,double到float*/
            else  sum=(SI[i-1].Init_Salary-800)*0.1;
              SI[i-1].tax=sum;
        SI[i-1].Final_Salary=Final_Salary=(SI[i-1].Init_Salary-SI[i-1].Water_Rate-SI[i-1].Electric_Rate-SI[i-1].tax);   /*计算修改应发工资后的实发工资*/
        break;  
        case 5:printf("水费改为: ");
        scanf("%f",&Water_Rate);
        SI[i-1].Water_Rate=Water_Rate;
        SI[i-1].Final_Salary=Final_Salary=(SI[i-1].Init_Salary-SI[i-1].Water_Rate-SI[i-1].Electric_Rate-SI[i-1].tax);   /*计算修改水费后的实发工资*/
        break;  
        case 6:printf("电费改为: ");
        scanf("%f",&Electric_Rate);
        SI[i-1].Electric_Rate=Electric_Rate;
        SI[i-1].Final_Salary=Final_Salary=(SI[i-1].Init_Salary-SI[i-1].Water_Rate-SI[i-1].Electric_Rate-SI[i-1].tax);   /*计算修改电费后的实发工资*/
        break;
        }
        printf("\n");
        printf("[1.确认修改  2.不修改] 请输入: ");
        scanf("%d",&b);
    }
    while(b==2);
    printf("\n浏览修改后的所有职工信息:\n");
    save();
    display();
    printf("\n[1.继续修改  2.不再修改] 请输入: ");
    scanf("%d",&t);
    switch(t)
    {
    case 1: system("cls");modify();break;
    case 0:break;
    default :break;
    }
}

void save()  /*数据保存函数*/
{
    int i;
    FILE *fp;
    if ((fp=fopen("Salary_Info.txt","wb"))==NULL)
    {
        printf ("cannot open file\n");
        exit(1);
    }
   for(i=0;i<count;i++) /*将内存中职工的信息输出到磁盘文件中去*/
       fwrite(&SI[i],sizeof(struct Salary_Info),1,fp);
       fclose(fp);
       printf("\n数据保存......\n");
       printf("数据保存成功!\n");
}

void load()  /*数据读取函数*/
{
    FILE *fp;
    int i;
    if((fp=fopen("Salary_Info.txt","rb"))==NULL)
    {
        printf ("cannot open file\n");
        exit(1);
    }
    for(i=0; fread(&SI[i],sizeof(struct Salary_Info),1,fp)!=0; i++);
        fclose(fp);
        count=i;
    printf("\n数据调入......\n");
    printf("数据调入成功!\n");
}

void main()  /*主函数*/
{
    load();system("cls");
    system("color f5");
    int n,flag;
    char a;
    start:
    do
    {   
        Menu();
        printf("\n请选择你需要操作的步骤(0--10): ");
        scanf("%d",&n);
        if(n>=0 && n<=10)
        {
            flag=1;break;
        }
        else
        {
            flag=0;
            printf("您输入有误,请重新选择!\n");
        }
    }
    while(flag==0);
    while(flag==1)
  {
        switch(n)
        {
        case 1:system("cls");  input();break;/*调用输入函数*/
        case 2:system("cls");  sort_Menu();break; /*调用排序函数*/
        case 3:system("cls");  display();break;/*调用显示函数*/
        case 4:save();break; /*调用保存函数*/
        case 5:load();break; /*调用读取函数*/
        case 6:system("cls");  search_Menu();break;/*调用查询函数*/
        case 7:system("cls");  statistics();break;/*调用统计函数*/
        case 8:system("cls");  del();break;/*调用删除函数*/
        case 9:system("cls");  add();break;/*调用添加函数*/
        case 10:system("cls"); modify();break;/*调用修改函数*/
        case 0: exit(0);break;
        default:system("cls");goto start;
        }
    getchar();
    printf("\n是否继续进行(y or n): ");
    scanf("%c",&a);
    if(a=='y'||a=='Y')
    {
        flag=1;
        system("cls");  /*清屏*/
        Menu(); /*调用菜单函数*/
        printf("请再次选择你需要操作的步骤(0--10): ");
        scanf("%d",&n);
    }
    else
        exit(0);
    }
}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,137评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,824评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,465评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,131评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,140评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,895评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,535评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,435评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,952评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,081评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,210评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,896评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,552评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,089评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,198评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,531评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,209评论 2 357