首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求大侠们指导指导小弟我编写的小程序

2012-11-09 
求大侠们指导指导我编写的小程序.C/C++ code#includestdio.h#includestdlib.h#includestring.h#incl

求大侠们指导指导我编写的小程序.

C/C++ code
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>#include<conio.h>#define N 100struct info_type{    char name[8];    char time[8];    char room[8];    int number;    int price;    int day;    float discount;    float income;}client[N];//输入函数部分void enter()         {   struct info_type client[N];//    printf("输入人数\n:");//    scanf("%d",&peo);    int j;    char c[2];    FILE *fp;    if((fp=fopen("data.txt","w"))==NULL)  //以写的方式打开,并判断是否将文件读完    {        printf("不能打开文件!\n");        exit(0);    }    for(j=0;j<N;j++)     {             fwrite(&client[j],sizeof(struct info_type),1,fp); //数据块输出函数,用于将数据输出到磁盘文件中    }     while(1)    {        printf("请输入顾客姓名:\n");        scanf("%s",client[N].name);        printf("请输入入住时间:\n");        scanf("%s",client[N].time);        printf("请输入住宿房间:\n");        scanf("%s",client[N].room);        printf("请输入顾客数量:\n");        scanf("%d",&client[N].number);        printf("请输入每日价格:\n");        scanf("%d",&client[N].price);        printf("请输入住宿天数:\n");        scanf("%d",&client[N].day);        printf("请输入每日折扣率:\n");        scanf("%f",&client[N].discount);        printf("请输入应实收的金额:\n");        scanf("%f",&client[N].income);        if(fwrite(&client[N],sizeof(struct info_type),1,fp)!=1)            printf("文件读入错误!\n");            else printf("成功!\n");        printf("是否要继续输入?( 是[y]/否[n]) \n");        scanf("%s",c);        if(strcmp(c,"n")==0)fclose(fp);             }        fclose(fp);}//修改部分void change(){//    struct info_type client[N];    int i,j;    printf("请输入要修改的信息的顾客姓名:\n");    scanf("%s",client[N].name);    while(client[j].name!=client[i].name)    {        j++;    }    printf("请输入要修改的信息的顾客姓名、入住时间、住宿房间、顾客数量、每日价格、住宿天数、折扣率、实收金额\n");    scanf("%s%s%s%d%f%f%f%f",client[i].name,client[i].time,client[i].room,&client[i].number,&client[i].price,&client[i].day,&client[i].discount,&client[i].income);    printf("修改成功\n");    printf("按任意键退出\n");    getchar();}//删除部分int del(struct info_type client[N],int a){//    struct info_type client[N];    int i,j;    i=0;    printf("请输入要删除的信息的顾客房间号:\n");    scanf("%d",client[j].room);    while(client[j].room!=client[i].room)    {        i++;    }    for(i;i<a-1;i++);    {        strcpy(client[i].room,client[i+1].room);    }return a-1;    }//以下为浏览模块void scan() {     int j;     FILE *fp;     fp=fopen("data.txt","rb");     for(j=0;j<N;j++)     {         if(fread(&client[j],sizeof(struct info_type),1,fp)==1)        {                        printf("                        客户名:%s\n",client[j].name);            printf("                        住宿房间:%d\n",client[j].room);            printf("                        顾客数量:%d\n",client[j].number);            printf("                        每日价格:%f\n",client[j].price);            printf("                        住宿天数:%d\n",client[j].day);            printf("                        折扣率:%f\n",client[j].discount);            printf("                        实收金额:%f\n",client[j].income);            printf("**************************************************************\n");        }        else break;    }     fclose(fp);}/*以下为查询模块*/void search() {     int flag,j,x;    char w[20];    FILE *fp;    char v[20];      printf("1.按客户名查询\n");     printf("2.按住宿房间查询\n");    printf("请选择查询方式:\n");    scanf("%d",&x);    if(x==2)     {         flag=0;        printf("请输入客户名:");         scanf("%s",&v);         fp=fopen("data.txt","rb");         for(j=0;j<100;j++)         {             if(fread(&client[j],sizeof(struct info_type),1,fp)!=1) break;             if(strcmp(client[j].room,v)==0)             {             printf("                        客户名:%s\n",client[j].name);            printf("                        住宿房间:%d\n",client[j].room);            printf("                        顾客数量:%d\n",client[j].number);            printf("                        每日价格:%f\n",client[j].price);            printf("                        住宿天数:%d\n",client[j].day);            printf("                        折扣率:%f\n",client[j].discount);            printf("                        实收金额:%f\n",client[j].income);                printf("***********************************************************************\n");                flag=1;            }         }         if(flag==0)            printf("客户名不存在!\n");         fclose(fp);    }     else if(x==1)     {            flag=0;        printf("请输入客户名:");         scanf("%s",w);         fp=fopen("data.txt","rb");         for(j=0;j<N;j++)         {             if(fread(&client[j],sizeof(struct info_type),1,fp)!=1) break;             if(strcmp(client[j].name,w)==0)             {             printf("                        客户名:%s\n",client[j].name);            printf("                        住宿房间:%d\n",client[j].room);            printf("                        顾客数量:%d\n",client[j].number);            printf("                        每日价格:%f\n",client[j].price);            printf("                        住宿天数:%d\n",client[j].day);            printf("                        折扣率:%f\n",client[j].discount);            printf("                        实收金额:%s\n",client[j].income);                printf("*******************************************************************\n");                flag=1;                                }         }         if(flag==0)            printf(" 客户名不存在!\n");         fclose(fp);    }    else printf("错误!\n");} /*以下为排序模块*/void sort(){    int j,k,l,m,x;    struct info_type client[N];//    char client[].name    FILE *fp;                printf("                ***********************************\n");                printf("                **51---------------按顾客姓名排序**\n");                printf("                **52---------------按入住时间排序**\n");                printf("                **53---------------按住宿房间排序**\n");                printf("                **54---------------按顾客数量排序**\n");                printf("                **55---------------按每日价格排序**\n");                printf("                **56-----------------按折扣率排序**\n");                printf("                **56---------------按实收金额排序**\n");                printf("                **50-------------------返回主菜单**\n");                printf("                ***********************************\n");                scanf("%d",&x);     if(x==1)    {            fp=fopen("data.txt","rb");        for(l=0;l<99;l++)            for(j=l+1;j<=N;j++)                 if(client[l]. name<client[j].name)                    {                        client[m].name=client[l].name;                        client[l].name=client[k].name;                        client[k].name=client[m].name;                    }    }    fp=fopen("data.txt","rb");        for(j=0;j<N;j++)     {         if(fread(&client[j],sizeof(struct info_type),1,fp)==1)        {            printf("                        客户名:%s\n",client[j].name);            printf("                        住宿房间:%s\n",client[j].room);            printf("                        顾客数量:%s\n",client[j].number);            printf("                        每日价格:%s\n",client[j].price);            printf("                        住宿天数:%s\n",client[j].day);            printf("                        折扣率:%s\n",client[j].discount);            printf("                        实收金额:%s\n",client[j].income);            printf("**************************************************************\n");        }        else break;    }         fclose(fp);}void menu()//菜单函数{    printf("                *1----------------输入住宿结帐信息*\n");    printf("                *2----------------修改住宿结帐信息*\n");    printf("                *3----------------删除住宿结帐信息*\n");    printf("                *4----------------查找住宿结帐信息*\n");    printf("                *5----------------住宿结帐信息排序*\n");    printf("                *6----------------显示住宿结帐信息*\n");    printf("                *7----------------统计住宿结帐信息*\n");    printf("                *0----------------退出住宿管理系统*\n");    printf("请选您需要的服务:\n");}void main() {  int sel,a;     printf("                ***********************************\n"); //    Sleep(1000);// 执行挂起一段时间     printf("                        欢迎进入住宿结帐系统  \n"         );//    Sleep(1000);     printf("                ***********************************\n"); //    Sleep(1000);    //菜单显示    printf("                *1----------------输入住宿结帐信息*\n");//    Sleep(1000);    printf("                *2----------------修改住宿结帐信息*\n");//    Sleep(1000);    printf("                *3----------------删除住宿结帐信息*\n");//    Sleep(1000);    printf("                *4----------------查找住宿结帐信息*\n");//    Sleep(1000);    printf("                *5----------------住宿结帐信息排序*\n");//    Sleep(1000);    printf("                *6----------------显示住宿结帐信息*\n");//    Sleep(1000);    printf("                *7----------------统计住宿结帐信息*\n");//    Sleep(1000);    printf("                *0----------------退出住宿管理系统*\n");//    Sleep(1000);    printf("请选您需要的服务:\n");    scanf("%d",&sel);//扫描键盘    switch(sel)//选择菜单    {        case 1:printf("请选择输入方式:\n");                printf("                ***********************************\n");                printf("                *****11---------------文件操作*****\n");                printf("                *****12---------------键盘操作*****\n");                printf("                *****10-------------返回主菜单*****\n");                printf("                ***********************************\n");                scanf("%d",&a);                switch(a)                {                        case 11:enter();                    case 10:menu();                }            break;            case 2:                printf("                ***********************************\n");                printf("                     *****确认修改请输入1*****\n");                printf("                     *****取消修改请输入0*****\n");                printf("                ***********************************\n");                    scanf("%d",&a);//扫描键盘                    switch(a)                    {                        case 1:change();                        case 0:menu();                                        }            break;        case 3:                printf("                ***********************************\n");                printf("                     *****确认删除请输入1*****\n");                printf("                     *****取消删除请输入0*****\n");                printf("                ***********************************\n");            break;        case 4:                printf("                ***********************************\n");                printf("                **41---------------按住宿天数查询**\n");                printf("                **42---------------按住宿房间查询**\n");                printf("                **40-------------------返回主菜单**\n");                printf("                ***********************************\n");            break;        case 5:            break;        case 6:printf("请输入顾客姓名:\n");            break;        case 0:(exit(1));break;    };} 


目前的进展 主菜单没有完全..先做的主函数 还是有很多问题..求高手指导指导,谢谢了..还有就是我这有的菜单,做子菜单然后返回主菜单该怎么实现呢..
题目是这样的:该系统以菜单方式工作,住宿结帐信息包括:顾客姓名、入住时间、住宿房间、顾客数量、每日价格、住宿天数、折扣率、实收金额。试设计一住宿结帐管理系统,使之能提供以下功能:住宿信息录入、修改、删除功能;住宿信息排序、浏览功能;按住宿天数查询、按住宿房间查询;住宿信息的统计:人数、收入、空房数.c语言实现,而且不能用链表..
谢谢大家了..

[解决办法]
楼主很多地方都写错了,%d %f的格式错误就有好多个,另外你的那个冒泡排序写错了,字符串不能直接比较大小,直接赋值,需要使用字符串操作函数。。 我都给修改过来了,也标记处了修改的地方,而且现在子菜单可以返回到主菜单了。。。
C/C++ code
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>#include<conio.h>#define N 100struct info_type{    char name[8];    char time[8];    char room[8];    int number;    int price;    int day;    float discount;    float income;}client[N];//输入函数部分void enter()         {    struct info_type client[N];    //    printf("输入人数\n:");    //    scanf("%d",&peo);    int j;    char c[2];    FILE *fp;    if((fp=fopen("data.txt","w"))==NULL)  //以写的方式打开,并判断是否将文件读完    {        printf("不能打开文件!\n");        exit(0);    }    for(j=0;j<N;j++)     {         fwrite(&client[j],sizeof(struct info_type),1,fp); //数据块输出函数,用于将数据输出到磁盘文件中    }     while(1)    {        printf("请输入顾客姓名:\n");        scanf("%s",client[N].name);        printf("请输入入住时间:\n");        scanf("%s",client[N].time);        printf("请输入住宿房间:\n");        scanf("%s",client[N].room);        printf("请输入顾客数量:\n");        scanf("%d",&client[N].number);        printf("请输入每日价格:\n");        scanf("%d",&client[N].price);        printf("请输入住宿天数:\n");        scanf("%d",&client[N].day);        printf("请输入每日折扣率:\n");        scanf("%f",&client[N].discount);        printf("请输入应实收的金额:\n");        scanf("%f",&client[N].income);        if(fwrite(&client[N],sizeof(struct info_type),1,fp)!=1)            printf("文件读入错误!\n");            else printf("成功!\n");        printf("是否要继续输入?( 是[y]/否[n]) \n");        scanf("%s",c);        if(strcmp(c,"n")==0)            fclose(fp);             }        fclose(fp);}//修改部分void change(){    //    struct info_type client[N];    int i=0;    char str[8];    printf("请输入要修改的信息的顾客姓名:\n");    scanf("%s",str);    while(strcmp(client[i].name,str)!=0)    {        i++;    }    printf("请输入要修改的信息的顾客姓名、入住时间、住宿房间、顾客数量、每日价格、住宿天数、折扣率、实收金额\n");    scanf("%s %s %s %d %d %d %f %f",client[i].name,client[i].time,client[i].room,&client[i].number,&client[i].price,&client[i].day,&client[i].discount,&client[i].income);  //这里格式错误    printf("修改成功\n");     printf("按任意键退出\n");    getchar();}//删除部分int del(struct info_type client[N],int a){    //    struct info_type client[N];    int i,j;    i=0;    printf("请输入要删除的信息的顾客房间号:\n");    scanf("%d",client[j].room);    while(client[j].room!=client[i].room)    {        i++;    }    for(i;i<a-1;i++);    {        strcpy(client[i].room,client[i+1].room);    }    return a-1;    }//以下为浏览模块void scan() {     int j;     FILE *fp;     fp=fopen("data.txt","rb");     for(j=0;j<N;j++)     {         if(fread(&client[j],sizeof(struct info_type),1,fp)==1)        {                        printf("                        客户名:%s\n",client[j].name);            printf("                        住宿房间:%d\n",client[j].room);            printf("                        顾客数量:%d\n",client[j].number);            printf("                        每日价格:%f\n",client[j].price);            printf("                        住宿天数:%d\n",client[j].day);            printf("                        折扣率:%f\n",client[j].discount);            printf("                        实收金额:%f\n",client[j].income);            printf("**************************************************************\n");        }        else            break;    }     fclose(fp);}/*以下为查询模块*/void search() {     int flag,j,x;    char w[20];    FILE *fp;    char v[20];     printf("1.按客户名查询\n");     printf("2.按住宿房间查询\n");    printf("请选择查询方式:\n");    scanf("%d",&x);    if(x==2)     {         flag=0;        printf("请输入住宿房间:");         scanf("%s",&v);         fp=fopen("data.txt","rb");         for(j=0;j<100;j++)         {             if(fread(&client[j],sizeof(struct info_type),1,fp)!=1)                break;             if(strcmp(client[j].room,v)==0)             {                 printf("                        客户名:%s\n",client[j].name);                printf("                        住宿房间:%d\n",client[j].room);                printf("                        顾客数量:%d\n",client[j].number);                printf("                        每日价格:%f\n",client[j].price);                printf("                        住宿天数:%d\n",client[j].day);                printf("                        折扣率:%f\n",client[j].discount);                printf("                        实收金额:%f\n",client[j].income);                printf("***********************************************************************\n");                flag=1;            }         }         if(flag==0)            printf("住宿房间不存在!\n");         fclose(fp);    }     else if(x==1)     {        flag=0;        printf("请输入客户名:");         scanf("%s",w);         fp=fopen("data.txt","rb");         for(j=0;j<N;j++)         {             if(fread(&client[j],sizeof(struct info_type),1,fp)!=1)                break;             if(strcmp(client[j].name,w)==0)             {                 printf("                        客户名:%s\n",client[j].name);                printf("                        住宿房间:%d\n",client[j].room);                printf("                        顾客数量:%d\n",client[j].number);                printf("                        每日价格:%f\n",client[j].price);                printf("                        住宿天数:%d\n",client[j].day);                printf("                        折扣率:%f\n",client[j].discount);                printf("                        实收金额:%f\n",client[j].income);   //这里错了                printf("*******************************************************************\n");                flag=1;            }         }         if(flag==0)            printf(" 客户名不存在!\n");         fclose(fp);    }    else        printf("输入错误!\n");} /*以下为排序模块*/void sort(){    int j,l,m,x;    char temp[8];    struct info_type client[N];    FILE *fp;    printf("                ***********************************\n");    printf("                **51---------------按顾客姓名排序**\n");    printf("                **52---------------按入住时间排序**\n");    printf("                **53---------------按住宿房间排序**\n");    printf("                **54---------------按顾客数量排序**\n");    printf("                **55---------------按每日价格排序**\n");    printf("                **56-----------------按折扣率排序**\n");    printf("                **56---------------按实收金额排序**\n");    printf("                **50-------------------返回主菜单**\n");    printf("                ***********************************\n");    scanf("%d",&x);     if(x==1)    {            fp=fopen("data.txt","rb");        for(l=0;l<99;l++)        {            for(j=l+1;j<N;j++)     //这里写错了            {                if(strcmp(client[l].name,client[j].name)>0)     //这里写错了                {                    strcpy(temp,client[l].name);                    strcpy(client[l].name,client[j].name);                    strcpy(client[j].name,temp);                }            }        }    }    fp=fopen("data.txt","rb");    for(j=0;j<N;j++)     {         if(fread(&client[j],sizeof(struct info_type),1,fp)==1)        {            printf("                        客户名:%s\n",client[j].name);            printf("                        住宿房间:%s\n",client[j].room);            printf("                        顾客数量:%s\n",client[j].number);            printf("                        每日价格:%s\n",client[j].price);            printf("                        住宿天数:%s\n",client[j].day);            printf("                        折扣率:%s\n",client[j].discount);            printf("                        实收金额:%s\n",client[j].income);            printf("**************************************************************\n");        }        else break;    }     fclose(fp);}void menu()//菜单函数{    printf("                *1----------------输入住宿结帐信息*\n");    printf("                *2----------------修改住宿结帐信息*\n");    printf("                *3----------------删除住宿结帐信息*\n");    printf("                *4----------------查找住宿结帐信息*\n");    printf("                *5----------------住宿结帐信息排序*\n");    printf("                *6----------------显示住宿结帐信息*\n");    printf("                *7----------------统计住宿结帐信息*\n");    printf("                *0----------------退出住宿管理系统*\n");    printf("请选您需要的服务:\n");}void main() {    int sel,a;     printf("                ***********************************\n");     printf("                        欢迎进入住宿结帐系统  \n"         );    printf("                ***********************************\n");     while(1)    {        menu();        scanf("%d",&sel);//扫描键盘        switch(sel)//选择菜单        {        case 1:            printf("请选择输入方式:\n");            printf("                ***********************************\n");            printf("                *****11---------------文件操作*****\n");            printf("                *****12---------------键盘操作*****\n");            printf("                *****10-------------返回主菜单*****\n");            printf("                ***********************************\n");            scanf("%d",&a);            switch(a)            {            case 11:                enter();            }            break;        case 2:            printf("                ***********************************\n");            printf("                     *****确认修改请输入1*****\n");            printf("                     *****取消修改请输入0*****\n");            printf("                ***********************************\n");            scanf("%d",&a);//扫描键盘            switch(a)            {            case 1:                change();            }            break;        case 3:            printf("                ***********************************\n");            printf("                     *****确认删除请输入1*****\n");            printf("                     *****取消删除请输入0*****\n");            printf("                ***********************************\n");            break;        case 4:            printf("                ***********************************\n");            printf("                **41---------------按住宿天数查询**\n");            printf("                **42---------------按住宿房间查询**\n");            printf("                **40-------------------返回主菜单**\n");            printf("                ***********************************\n");            break;        case 5:            sort();            break;        case 6:            printf("请输入顾客姓名:\n");            break;        case 0:            (exit(1));            break;        }    }} 


[解决办法]
不用控制while循环的跳出么?
[解决办法]
要考虑抛出异常!
[解决办法]
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

热点排行
Bad Request.