读书人

.关于c语言创建一个简单的信息管理系统

发布时间: 2012-10-26 10:30:59 作者: rapoo

求助.关于c语言创建一个简单的信息管理系统.急~~~

C/C++ code
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>#include<conio.h>int peo;struct info_type{    char name[20];    char time[20];    char room[20];    int number[100];    float price[20];    float day[20];    float discount[20];    float income[20];}client[peo];//输入函数部分void enter()         {   struct info_type.client[peo];    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<peo;j++)     {             fwrite(&client[j],sizeof(struct info_type),1,fp); //数据块输出函数,用于将数据输出到磁盘文件中    }     while(1)    {        printf("请输入顾客姓名:\n");        scanf("%s",client[peo].name);        printf("请输入入住时间:\n");        scanf("%s",client[peo].time);        printf("请输入住宿房间:\n");        scanf("%s",client[peo].room);        printf("请输入顾客数量:\n");        scanf("%d",client[peo].number);        printf("请输入每日价格:\n");        scanf("%f",client[peo].price);        printf("请输入住宿天数:\n");        scanf("%f",client[peo].day);        printf("请输入每日折扣率:\n");        scanf("%f",client[peo].discount);        printf("请输入应实收的金额:\n");        scanf("%f",client[peo].income);        if(fwrite(&client[peo++],sizeof(struct info_type),1,fp)!=1)            printf("文件读入错误!\n");            else printf("成功!\n");        printf("是否要继续输入?( 是[y]/否[n]) \n");        scanf("%s",c);        if(strcmp(c,"n")==0)break;             }        fclose(fp);}//修改部分void change(struct info_type.client[]);{    int i,j;    printf("请输入要修改的信息的顾客姓名:\n");    scanf("%s",client[peo].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[],int a);{    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++);    {        client[i].room=client[i+1].room;    }return a-1;    }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 10:menu();                    }            break;            case 2:                printf("                ***********************************\n");                printf("                     *****确认修改请输入1*****\n");                printf("                     *****取消修改请输入0*****\n");                printf("                ***********************************\n");                    scanf("%d",&a);//扫描键盘            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:                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");            break;        case 6:printf("请输入顾客姓名:\n");            break;                    case 7:                printf("                ***********************************\n");                printf("                **71-------------------按收入统计**\n");                printf("                **72-----------------按空房数统计**\n");                printf("                **73---------------按住宿人数统计**\n");                printf("                **70-------------------返回主菜单**\n");                printf("                ***********************************\n");            break;        case 0:(exit(1));break;    };} 



[解决办法]
[Quote=引用:]
引用:

1.你是想建立结构体数组吧?但是你的peo没赋值啊,这样数组的维数不能确定.
2.你是想动态建立数组是吧?但是c99标准没有这功能,你可以用动态内存分配,比如malloc函数

int *p=(int *)malloc(sizeof(int)*m);
其中m就是这个数组的大小,当然m的值是可以你自己输入的。另外指针和数组本来就是等……
[/Quote
不是链表啊,实际上就是建立一个数组,不过是用指针表示数组首地址而已
struct info_type.client[peo];
printf("输入人数\n:");
scanf("%d",&peo);
这个地方你不是想输入人数吗?这样不行,因为上面定义结构体数组的时候peo的值不可以不确定!

读书人网 >C++

热点推荐