×

打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

×

打开微信“扫一扫”,关注我们官方微信^_^

筑梦网络官方微信



上门家政O2O系统源码程序报告

发表日期:2017-04-05 11:02浏览: 作者:筑梦
家政管理系统
一·课程内容和要求
家政管理系统能够简单的实现从业人员,客户的登记,修改,删除和查找,并且能够实现一些列排序,统计能实用功能,与现实生活中家政公司的管理相关信息的需求相适应,且能适应需求越来越明显的信息智能化管理,与当今家政公司的需求密切相联系,具有很高的实际使用性。
该家政管理系统使用c语言进行编写,符合现在编程的主流趋势,与实际紧密联系,具有很高的可操作性和实用性。
 
二·需求分析
现代社会,随着经济生活水平的提高,家政公司如雨后春笋般迅速增长,实现信息智能化管理的需求越来越强烈,编写一套简洁但实用的家政管理软件就显得越来越具有市场导向性。此课题正是顺着这样的大潮流环境,编写了这样一个能够基本实现管理功能的家政管理系统。
该系统可分为8个模块,即菜单界面上的
1·显示基本信息;
2·从业人员信息综合管理;
3·管理客户信息综合管理;
4·按不同家政类型对从业人员进行查找;
5·按体检证有、无对家政人员分类;
6·统计某类家政类型的业务数目,收入及家政公司从其间获得的收益及所有类型的总的收入;
7·按薪金对从业人员进行排序;
8退出登录界面。
 
其中从业人员信息综合管理又分为从业人员的登记,修改,删除和精确查找,客户类似。
该系统在要求的基础上增加了二级界面,修改,删除,精确查找等功能,丰富了家政系统,使其更具实际可操作性。
 
 
三·概要设计
 
整个系统利用结构函数,以实现各部分功能,各部分之间通过子函数。
 
主界面:menu子函数,列出一系列需要的菜单选项;
 
职工综合管理界面:menubase1子函数,列出职工信息管理的登记,修改,删除,精确查找等一系列功能;
 
客户信息综合管理界面:menubase2子函数,列出客户信息管理的登记,修改,删除,精确查找等功能;
 
职员登记:采用了while,for函数,字符串的printf-gets函数,数字输入的printf-scanf函数;
 
薪金排序函数:利用冒泡排序法实现排序。
 
密码函数:利用strcmp字符串比较函数实现。
 
保存函数:save()函数利用for循环和fprintf函数读入数据进行保存,并且利用save1()和save()函数分别保存,不致混乱。
 
四.源程序代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
#define N 100
  
struct employer
{
  char name[10];
  int age;
  char tp[20];
  char work[3];
  int sa;
  char tjz[10];
}stu[N],t;
 
struct employee
{
  char name[10];
  char tp[20];
  char local[20];
  char work[3];
  char time[20];
}ee[N];
 
int i,j;
int len=0;//从业人员人数
int kh=0;//客户总数
char ch;
 
void  save1()//保存从业人员信息
{
   FILE *fp1;
 
   if((fp1=fopen("家政管理系统1.txt","w"))==NULL)
   {
      printf("文件打开失败!");
  exit(0);
   }
   for(i=0;i<len;i++)
   {
    fprintf(fp1,"%s\t%d\t%s\t%s\t%d\t%s\n",stu[i].name,stu[i].age,stu[i].tp,stu[i].work,stu[i].sa,stu[i].tjz);
   }
     fclose(fp1);
}
 
void  save2()//保存客户信息
{
   FILE *fp2;
 
   if((fp2=fopen("家政管理系统2.txt","w"))==NULL)
   {
      printf("文件打开失败!");
  exit(0);
   }
   for(i=0;i<kh;i++)//客户信息写入文件
   {
      fprintf(fp2,"%s\t%s\t%s\t%s\t%s\n",ee[i].name,ee[i].tp,ee[i].local,ee[i].work,ee[i].time);
   }
      
   fclose(fp2);
}
 
void  load1()//读取从业人员信息
{
   FILE *fp1;
 
   if((fp1=fopen("家政管理系统1.txt","r"))==NULL)
   { 
  fopen("家政管理系统1.txt","w");
  return;
   }
 
   i=0;
   while(!feof(fp1))
   {
     fscanf(fp1,"%s%d%s%s%d%s",&stu[i].name,&stu[i].age,&stu[i].tp,&stu[i].work,&stu[i].sa,&stu[i].tjz);
     //读取从业人员信息
      if(!feof(fp1))
  i++;
   }
   len=i;//数量
    fclose(fp1);
}
 
 void  load2()//读取客户信息
{
   FILE *fp2;
 
   if((fp2=fopen("家政管理系统2.txt","r"))==NULL)
   { 
  fopen("家政管理系统2.txt","w");
  return;
   }
 
   i=0;
   while(!feof(fp2))
   {
     fscanf(fp2,"%s%s%s%s%s",&ee[i].name,&ee[i].tp,&ee[i].local,&ee[i].work,&ee[i].time);
     //读取客户信息
      if(!feof(fp2))
  i++;
   }
   kh=i;//数量
    fclose(fp2);
}
 
void regist() //从业人员注册
{
 system("cls");
while(1)
{
printf("\n    是否继续?(y/n)");
ch=getchar();
getchar();
if(ch=='n')
   break;
 i=len;//指向第一个空位
  printf("    姓名:");
  gets(stu[i].name);
 
  printf("    年龄:");
  scanf("%d",&stu[i].age);
  getchar();
  
  printf("    电话/手机号:");
  gets(stu[i].tp);
  
  printf("    求职类型(1.钟点工 2.保姆 3.护工):");
  gets(stu[i].work);
  
  printf("    薪金:");
  scanf("%d",&stu[i].sa);
  getchar();
     
 printf("    体检证(1、是  2、否):");
 {
     ch=getchar();
 getchar();//消除上一步产生的回车符
      
 if(ch=='1')
  strcpy(stu[i].tjz,"yes");
  else
          strcpy(stu[i].tjz,"no");
           
 }
    len++;
}
 
 save1();
 
 printf("注册成功!回车返回。");
 getchar();
}
 
void kehu() //客户注册
{
system("cls");
while(1)
{
printf("\n    是否继续(y/n):");
ch=getchar();
getchar();
if(ch=='n')
   break;
    i=kh;//指向第一个空位
 
 printf("    姓名:");
 gets(ee[i].name);
 
  printf("   电话/手机号:");
  gets(ee[i].tp);
  
  printf("   所属辖区:");
  gets(ee[i].local);
  
  printf("   所需类型(1.钟点工 2.保姆 3.护工): ");
  gets(ee[i].work);
  
  printf("   开始时间:");
  gets(ee[i].time);
     
     kh++;
}
 save2();
 
 printf("注册成功!回车返回。");
 getchar();
}
 
 
 
void unregist() //删除从业人员记录   
{
char name[10];
 
    system("cls");
printf("职员姓名:");
gets(name);
 
for(i=0;i<len;i++)
if(strcmp(stu[i].name,name)==0)
break;//存在结束循环
if(i==len)
{
   printf("对不起!没有你要查找的信息,回车返回。");
   getchar();
   return;
}
 
       stu[i]=stu[len-1];//将最后一个从业人员信息覆盖这个要被删除从业人员信息
 
        len--;//从业人员数减一        
 save1();//保存
   printf("删除成功!回车返回。");
 getchar();
}
 
void unkehu() //删除客户记录   
{
char name[10];
 
    system("cls");
printf("客户姓名:");
gets(name);
 
for(i=0;i<kh;i++)
if(strcmp(ee[i].name,name)==0)
break;//存在结束循环
if(i==kh)
{
   printf("对不起!没有你要查找的信息,回车返回。");
   getchar();
   return;
}
      ee[i]=ee[len-1];//将最后一个客户信息覆盖这个要被删除客户信息
 
        len--;//客户数减一
 
kh--;//客户数减一
 
 save2();//保存
 
 printf("删除成功!回车返回。");
 getchar();
}
 
void xgjz() // 修改家政人员信息
{
     char type[10],a[10],b[10],c[10],d[10];
     int e,f;
   system("cls");
   printf("请输入要修改的家政人员姓名:  ");
   gets(type);
 
   
for(i=0;i<len;i++)//查询是否存在输入的信息
if(strcmp(stu[i].name,type)==0)
break;

if(i==len)
{
   printf("对不起!未查询到该人员,回车返回。");
   getchar();
   return;

for(i=0;i<len;i++)
{
if(strcmp(type,stu[i].name)==0)//查询类型是否相符
{
{
printf("________________________________________________________________________________\n");
printf("姓名      年龄    电话       类型    薪金   体检证\n\n");
printf("%-10s%-6d%-15s%-6s%-10d%-10s\n",stu[i].name,stu[i].age,stu[i].tp,stu[i].work,stu[i].sa,stu[i].tjz);
    printf("________________________________________________________________________________\n");
    printf("请输入要修改的项(1.姓名 2.年龄 3.电话 4.类型 5.薪金 6.体检证):");
    ch=getchar();
    getchar();
}
    switch(ch)
    {
        case '1':
        {
         printf("修改姓名为:");
                 gets(a);
                 strcpy(stu[i].name,a);
        break;
        }
        case '2':
        {
         printf("修改年龄为:");
        scanf("%d",&e);
        stu[i].age=e;
        break;
        }
        case '3':
        {
         printf("修改电话为:");
                 gets(b);
                 strcpy(stu[i].tp,b);
        break;
        }
        case '4':
        {
         printf("修改类型为:");
                  gets(c);
                 strcpy(stu[i].work,c);
        break;
        }
        case '5':
        {
         printf("修改薪金为:");
        scanf("%d",&f);
        stu[i].sa=f;
        break;
        }
        case '6':
        {
         printf("修改体检证有/无:");
                 gets(d);
                 strcpy(stu[i].tjz,d);
        break;
        }
        break;
    }
    }
}

    save1();
printf("修改完成,回车返回。");
getchar();
}
 
void xgkh() // 修改客户信息
{
     char type[10],a[10],b[10],c[10],d[10],e[10];
   system("cls");
   printf("请输入要修改的客户姓名:  ");
   gets(type);
 
   
for(i=0;i<len;i++)//查询是否存在输入的信息
if(strcmp(ee[i].name,type)==0)
break;

if(i==len)
{
   printf("对不起!未查询到该客户,回车返回。");
   getchar();
   return;

for(i=0;i<kh;i++)
{
if(strcmp(type,ee[i].name)==0)//查询类型是否相符
{
{
printf("________________________________________________________________________________\n");
printf("姓名      电话             所在辖区            需求类型   开始时间\n\n");
printf("%-10s%-20s%-20s%-6s%-20s\n",ee[i].name,ee[i].tp,ee[i].local,ee[i].work,ee[i].time);
    printf("________________________________________________________________________________\n");
    printf("请输入要修改的项(1.姓名  2.电话      3.所在辖区         4.需求类型   5.开始时间):");
    ch=getchar();
    getchar();
}
    switch(ch)
    {
        case '1':
        {
         printf("修改姓名为:");
                 gets(a);
                 strcpy(ee[i].name,a);
        break;
        }
        case '2':
        {
         printf("修改电话为:");
                 gets(b);
                 strcpy(stu[i].tp,b);
        break;
        }
         case '3':
        {
         printf("修改所在辖区为:");
                 gets(c);
                 strcpy(ee[i].tp,c);
        break;
        }
        case '4':
        {
         printf("修改需求类型为:");
                  gets(d);
                 strcpy(ee[i].work,d);
        break;
        }
        case '5':
        {
         printf("修改开始时间为:");
            gets(e);
            strcpy(ee[i].time,e);
        break;
        }
        break;
    }
    }
}

    save2();
printf("修改完成,回车返回。");
getchar();
}
 
void xs() // 显示基本信息
{
system("cls");
{
printf("\n\n职员信息如下\n");
printf("________________________________________________________________________________\n");
printf("姓名      年龄    电话       类型    薪金   体检证\n\n");
for(i=0;i<len;i++)
printf("%-10s%-6d%-15s%-6s%-10d%-10s\n",stu[i].name,stu[i].age,stu[i].tp,stu[i].work,stu[i].sa,stu[i].tjz);
     
printf("________________________________________________________________________________\n\n\n");
}
{
printf("\n\n客户信息如下\n");
printf("_______________________________________________________________________________\n");
printf("姓名      电话                 所在辖区        需求类型   开始时间\n\n");
for(i=0;i<kh;i++)
    printf("%-10s%-20s%-20s%-6s%-20s\n",ee[i].name,ee[i].tp,ee[i].local,ee[i].work,ee[i].time);
    printf("________________________________________________________________________________\n\n\n");
}
     
     printf("显示完毕,回车返回。(如若没有数据则数据库为空,请返回输入再显示!)");
getchar();
}
 
 
void sa() //按照从业人员薪金从小到大显示
{

   system("cls");
   for(j=0;j<len-1;j++)
   for(i=0;i<len-1-j;i++)
   if(stu[i].sa>stu[i+1].sa)//冒泡法,按年龄排序
   {
      t=stu[i];
  stu[i]=stu[i+1];
  stu[i+1]=t;
   }
printf("按照从业人员薪金从小到大显示:\n");
printf("________________________________________________________________________________\n");
printf("姓名      年龄    电话       类型    薪金   体检证\n\n");
for(i=0;i<len;i++)
printf("%-10s%-6d%-15s%-6s%-10d%-10s\n",stu[i].name,stu[i].age,stu[i].tp,stu[i].work,stu[i].sa,stu[i].tjz);
     
printf("________________________________________________________________________________\n");
 
printf("排序完成,回车返回。");
getchar();
}
 
void tjz() // 按照体检证查询
{
char type[10];
 
   system("cls");
   printf("有/无体检证(输入yes/no): ");
   gets(type);
 
   
for(i=0;i<len;i++)//查询是否存在输入的信息
{
if(strcmp(stu[i].tjz,type)==0)
break;
if(i==len)
{
   printf("对不起!未查到该类型,回车返回。");
   getchar();
   return;

}
printf("信息如下:\n");
printf("________________________________________________________________________________\n");
printf("姓名   年龄    电话           求职类型       薪金     体检证\n\n");
    for(i=0;i<len;i++)
if(strcmp(type,stu[i].tjz)==0)//查询类型是否相符
printf("%-10s%-6d%-20s%-10s%-10d%-10s\n",stu[i].name,stu[i].age,stu[i].tp,stu[i].work,stu[i].sa,stu[i].tjz);
printf("________________________________________________________________________________\n");
 
printf("显示完成,回车返回。");
getchar();
}
 
void zy() // 从业人员精确查询
{
char type[20];
 
   system("cls");
   printf("欢迎进入从业人员查找界面:\n\n");
   printf("请输入查询的条件(1.姓名 2.电话): ");
   ch=getchar();
   getchar();
   switch(ch)
   {
    case '1':
    {
    printf("请输入要查询的姓名:");
    gets(type);
        for(i=0;i<len;i++)//查询是否存在输入的信息
    {
   if(strcmp(stu[i].name,type)==0)
break;
   if(i==(len-1))
      {
        printf("对不起!未查到该从业人员,回车返回。");
        getchar();
        return;
       } 
    }
      printf("信息如下:\n");
      printf("________________________________________________________________________________\n");
      printf("姓名   年龄    电话           求职类型       薪金     体检证\n\n");
          for(i=0;i<len;i++)
 if(strcmp(type,stu[i].name)==0)//查询类型是否相符
 printf("%-10s%-6d%-20s%-10s%-10d%-10s\n",stu[i].name,stu[i].age,stu[i].tp,stu[i].work,stu[i].sa,stu[i].tjz);
     printf("________________________________________________________________________________\n");
    }
    break;
    case '2':
    {
    printf("\n请输入要查询的电话号码:");
    gets(type);
        for(i=0;i<len;i++)//查询是否存在输入的信息
   {
   if(strcmp(stu[i].tp,type)==0)
break;
   if(i==len)
    {
      printf("对不起!未查到该职员,回车返回。");
      getchar();
      return;
    } 
   }
printf("信息如下:\n");
printf("________________________________________________________________________________\n");
printf("姓名   年龄    电话           求职类型       薪金     体检证\n\n");
    for(i=0;i<len;i++)
if(strcmp(type,stu[i].tp)==0)//查询类型是否相符
printf("%-10s%-6d%-20s%-10s%-10d%-10s\n",stu[i].name,stu[i].age,stu[i].tp,stu[i].work,stu[i].sa,stu[i].tjz);
printf("________________________________________________________________________________\n");
    }
    break;
   }
   
printf("显示完成,回车返回。");
getchar();
   }
   
  void jq() // 客户精确查询
  {
char type[20];
 
   system("cls");
   printf("欢迎进入客户查找界面:\n\n ");
   printf("请输入查询的条件(1.姓名 2.电话): ");
   ch=getchar();
   getchar();
   switch(ch)
   {
    case '1':
    {
    printf("请输入要查询的姓名:");
    gets(type);
        for(i=0;i<kh;i++)//查询是否存在输入的信息
    {
   if(strcmp(ee[i].name,type)==0)
break;
   if(i==(kh-1))
     {
        printf("对不起!未查到该客户,回车返回。");
        getchar();
        return;
      } 
}
printf("信息如下:\n");
printf("________________________________________________________________________________\n");
printf("姓名      电话           所属辖区           需求类型    开始时间\n\n");
    for(i=0;i<kh;i++)
if(strcmp(type,ee[i].name)==0)//查询类型是否相符
printf("%-10s%-20s%-20s%-6s%-20s\n",ee[i].name,ee[i].tp,ee[i].local,ee[i].work,ee[i].time);
printf("________________________________________________________________________________\n");
    }
    break;
    case '2':
    {
    printf("\n请输入要查询的电话号码:");
    gets(type);
        for(i=0;i<kh;i++)//查询是否存在输入的信息
{
if(strcmp(ee[i].tp,type)==0)
break;
if(i==kh)
{
   printf("对不起!未查到该客户,回车返回。");
   getchar();
   return;

}
printf("信息如下:\n");
printf("________________________________________________________________________________\n");
printf("姓名      电话           所属辖区           需求类型    开始时间\n\n");
    for(i=0;i<kh;i++)
if(strcmp(type,ee[i].tp)==0)//查询类型是否相符
printf("%-10s%-20s%-20s%-6s%-20s\n",ee[i].name,ee[i].tp,ee[i].local,ee[i].work,ee[i].time);
printf("________________________________________________________________________________\n");
    }
    break;
   }
   
printf("显示完成,回车返回。");
getchar();
   }
    
   
void tj() // 显示每种家政类型的人员数目
{
     char type[10];
        int sum=0;
   system("cls");
   printf("请输入要查询的家政类型(1.钟点工  2.保姆  3.护工): ");
   gets(type);
 
   
for(i=0;i<len;i++)//查询是否存在输入的信息
if(strcmp(stu[i].work,type)==0)
break;

if(i==len)
{
   printf("对不起!未查询到该类别,回车返回。");
   getchar();
   return;

     printf("________________________________________________________________________________\n");
 printf("姓名   年龄    电话           求职类型       薪金     体检证\n\n");
     for(i=0;i<len;i++)
     {
if(strcmp(type,stu[i].work)==0)//查询类型是否相符
{
printf("%-10s%-6d%-20s%-10s%-10d%-10s\n",stu[i].name,stu[i].age,stu[i].tp,stu[i].work,stu[i].sa,stu[i].tjz);
sum++;//该类型家政类型人数加一
}
     }
 printf("________________________________________________________________________________\n");

printf("\n\n\n\n该类型从业人员总数:%d\n\n\n",sum);

printf("\n\n\n\n所有从业人员总数:%d\n\n\n",len);
     
     printf("查询完毕,回车返回。");
getchar();
}
 
void total() // 统计业绩
{
     char type[10];
        int ss=0,sum=0,sun=0;
        double cc,km;
   system("cls");
   printf("家政类型(1.钟点工 2.保姆 3.护工):\n请输入要统计的业务代码: ");
   gets(type);
 
   
for(i=0;i<len;i++)//查询是否存在输入的信息
if(strcmp(stu[i].work,type)==0)
break;

if(i==len)
{
   printf("对不起!未查到该类型或没有该类型数据,回车返回。");
   getchar();
   return;

    for(i=0;i<len;i++)
if(strcmp(type,stu[i].work)==0)//查询类型是否相符
{
    sum++;//业务数目显示
ss=ss+stu[i].sa;//业务收入显示
cc=ss/10;//中介公司的该类型家政人员收入
 
}
printf("\n\n业务数目:%d\n\n\n业务收入:%d\n\n\n家政公司该类型人员收入:%Lf\n\n\n",sum,ss,cc);

for(i=0;i<len;i++)
 sun=sun+stu[i].sa;
 km=sun/10;
 printf("家政公司所有业务总收入:%Lf\n\n\n",km);
 
printf("统计完成,回车返回。");
getchar();
}
 
void menubase()//家政服务人员二级菜单
{
    system("cls");
    printf(" \n\n\n\n\n                               欢迎哦,亲!!!                                          \n\n\n");
printf("              $$$$$$$$$$$$$$$(∩_∩) 1.登记从业人员信息$$$$$$$$$$$$$                        \n\n");
printf("              &&&&&&&&&&&&&&&(∩_∩) 2修改从业人员信息&&&&&&&&&&&&&&                       \n\n");
printf("              ###############(∩_∩) 3.删除从业人员信息#############                        \n\n");
printf("              <<<<<<<<<<<<<<<(∩_∩) 4.从业人员信息精确查找>>>>>>>>>                       \n\n");
printf("                                                                           \n\n\n");
printf("     O(∩_∩)0欢迎光临请选择:");
ch=getchar();
getchar();
switch(ch)
{
case '1':regist();
   break;
case '2':xgjz();  
   break;
case '3':unregist();
   break;
case '4':zy();
   break;
}
printf("回车返回上级菜单O(∩_∩)0:");
}
 
void menubase2()//客户二级菜单
{
    system("cls");
    printf("\n\n\n\n\n                           欢迎哦,亲!!!                         \n\n");
printf("         ******************(∩_∩) 1.登记客户信息 *******************                        \n\n");
printf("         @@@@@@@@@@@@@@@@@@(∩_∩) 2修改客户员信息 @@@@@@@@@@@@@@@@@@                         \n\n");
printf("         <<<<<<<<<<<<<<<<<<(∩_∩) 3.删除客户信息 >>>>>>>>>>>>>>>>>>>                        \n\n");
printf("         !!!!!!!!!!!!!!!!!!(∩_∩) 4.客户信息精确查找!!!!!!!!!!!!!!!!                      \n\n");
printf("     O(∩_∩)0欢迎光临请选择:");
ch=getchar();
getchar();
switch(ch)
{
case '1':kehu(); break;
case '2':xgkh();  break;
case '3':unkehu(); break;
case '4':jq();  break;
}
}
 
char menu()//菜单
{
char c;
    system("cls");
    printf("                                                            \n");
printf("                                                             \n");
printf("                                                             \n");
printf("                                                              \n");
printf("               =═══════════════════════=============== \n");
printf("                    O(∩_∩)0   欢迎进入家政系统 O(∩_∩)0       \n");
printf("               ==═══════════════════════= =============\n");
printf("                                                                \n");  
printf("                                                                \n");   
printf("\n               ╔═══════════════════════=============╗\n");
printf("               ║            1.显示所有基本信息                ║\n");
printf("               ╠═══════════════════════==============╣\n");
printf("               ║            2.从业人员信息综合管理            ║\n");
printf("               ╠═══════════════════════==============╣\n");
printf("               ║            3.客户信息综合管理                 ║\n");
printf("               ╠═══════════════════════===============╣\n");
printf("               ║            4.按类型查询从业人员数目          ║\n");
printf("               ╠═══════════════════════===============╣\n");
printf("               ║            5.查询具有体检证的从业人员        ║\n");  
printf("               ╠═══════════════════════===============╣\n");
printf("               ║            6.统计                               ║\n");
printf("               ╠═══════════════════════===============╣\n");
printf("               ║            7.按薪金排序从业人员              ║\n");  
printf("               ╠═══════════════════════===============╣\n");
printf("               ║            8.退出系统                         ║\n");
printf("               ╚═══════════════════════===============╝\n");
printf("     O(∩_∩)0欢迎光临请选择:");
    
c=getchar();
getchar();
return c;
}
 
void login()//登录
{
char pswd[10];
   system("cls");
   printf("\n\n\n\n\n\n请您输入登陆密码(不可重复输入!): ");
   gets(pswd);
   if(strcmp(pswd,"123")==0)//密码正确
   return;
   else
   {
      printf("密码错误,输入回车结束!");
  getchar();
  exit(0);
   }
}
 
main()
{
   char ch;
   login();
   load1();
   load2();
 
   while(1)
   {
      ch=menu();//获取选择
  switch(ch)
  {
     case '1': xs();  break;  
 case '2': menubase(); break;    
 case '3': menubase2();    break;
 case '4': tj();  break;
 case '5': tjz();  break;
 case '6': total();  break;  
 case '7': sa(); break;
 case '8': exit(0);
 
  }
   }

 
 
五.测试数据及结果分析
首先,输入密码进入系统(密码为123): 
 
进入后,显示主界面:
 
因为已存入一些原始数据,故可选择1显示基本信息:
 
图片中不难看到,从业人员又9组数据,客户信息有7组数据,均是已保存在文件中的原始数据
 
返回到主菜单选择2进入职员信息综合管理的二级菜单:
 
进入该二级菜单后,选择1课进行从业人员登记:
 
登记了洪秀全和开山两个从业人员的基本信息
返回后在显示基本信息最后可观察到这两个新添进去的从业人员的信息:
 
然后返回可进行职员信息的修改:如,修改刘德华的信息,改其姓名为刘成华
 
然后在显示栏中观察修改的结果:可见其姓名已修改为刘成华;
 
在从业人员菜单中选择3可进行人员信息的删除:如,删除刘成华的信息
 
返回进行查看:可见刘成华的信息已删除
 
在从业人员菜单中选择4可进行人员的可进行精确查找:如要查找王楚凡这个人的信息:
 
客户的信息查询操作与从业人员的操作十分类似。
 
回到主菜单,选择4可按类型查询每类家政类型人员的查找:显示所有符合的人员信息以及总人数
 
 
 
主菜单中选择5可按体检证的进行分类查询:显示所有具有体检证的人员
 
 
主菜单中选择6可进行统计:统计某类家政类型的业务数目,业务收入以及家政公司该类收入,及其所有家政类型的总收入
 
 
 
返回主菜单,在主菜单中选择7可将从业人员按薪金从小到大进行排序,方便查看:
 
在主菜单中选择8可退出系统。
该系统是一个基本实用的家政系统,在原有基础上加上了修改,删除,精确查找,二级菜单等功能,实现了实际运用的可操作性。
 
六.调试过程中的问题
在完成整个系统的过程中,遇到了很多困难,调试过程中也遇到了很多问题。
首先,是整体思路的问题。不知道该用怎样的结构来穿蓝整个系统的各个子函数来构成一个整体的系统。经过几番考虑和查阅资料,才最终确定了一种较为简便的方法—结构数组。在确定了整体的构架之后,调试过程中的问题便逐渐多了起来。
1)·在调试主菜单时,主要遇到的是界面的设计问题,以及随之而来的主程序的结构问题,后来查阅了相关资料,确定了case语句来执行主菜单和各个子函数。
2)·在调试从业人员的登记函数时,一开始遇到的问题是字符串和数字型的读写问题,一直输入有问题,最后用getchar()来消除回车符,这才解决了这一问题。
3)·在调试修改函数时,遇到了比较大的问题。报出了一堆错误,但是那些显示错误的地方明明都没有什么明显的错误。后来几经查看,才知道是上面的一个子函数末尾少了一个大括号,使得下面的子函数纳入了上面的函数,不符合语法规则,所以才出现了一堆错误。后来,添了一个大括号,这些问题就消失了,其实那些显示的问题与那本都是不存在的。
4)·后来在调试函数问题时,出现了就是输出错误也不报错的现象,百思不得其解,细细察看了几遍程序才知道,原来循环的过程中无法达到那个数,所以永远不会运行那一步,也就不会显示出原本要出现的错误信息。
程序代码如下:
for(i=0;i<len;i++)//查询是否存在输入的信息
    {
   if(strcmp(stu[i].name,type)==0)
break;
   if(i==(len-1))
      {
        printf("对不起!未查到该从业人员,回车返回。");
        getchar();
        return;
       }
    }
一开始未调试时if(i==len),可是i从0到len-1,故该程序下面的语句永远无法运行。
5)·后来把调试过程中的格式不符合,一些末尾分号缺失等警告错误一一解决,程序才能安稳的运行。
 
七.课程设计总结
回顾起此次课程设计,至今感慨很多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整两个星期的日子里,可以学到很多很多的的东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,毕竟第一次做一个整个系统,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体数组……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在老师和同学的辛勤指导下,终于迎逆而解。同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢。
在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。
在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。
 
两个星期的实验课快结束了,无论我以后会不会涉及到C语言程序编译的研究,我想,我至少掌握了一种系统的研究方法,我们学习的目的就在于运用,我们运用这种研究方法的时候会很多,我最后要感谢课程设计,它的确教会我很多。