| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 591 人关注过本帖
标题:一个车位问题的程序设计,实在做不下去了求思路
取消只看楼主 加入收藏
流星于飞
Rank: 1
等 级:新手上路
帖 子:6
专家分:3
注 册:2013-5-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
一个车位问题的程序设计,实在做不下去了求思路
#include<stdio.h>
#include<stdilb.h>
#include<time.h>
#include<string.h>
#include<conoi.h>
struct time//----------------时间
{
        int da,hr,min;
}
typedef struct paking
{
    char cp[10];//------------------车牌
    char qy[10];//------------------区域
    char lx[10];//------------------类型
    char bh[10];//------------------车位编号
    struct time intime; //------------------------------进位时间
    struct time outime; //------------------------------出位时间
}PAK;
char *pak_first,*pak_end;
char gsave;
void Add(void); //--------------------------------增加记录
void Del(void);//---------------------------------删除记录
void Find(void); //-------------------------------查询记录
void Modify(void); //-----------------------------修改记录
void Rate(void); //-------------------------------使用率计算
void Tongji(void); //-----------------------------统计使用时间
void Readdatav(void; //---------------------------读取记录
void Savedata(void); //---------------------------保存记录
PAK *findcp(char *cp); //------------------------------按车牌查找
PAK *findbh(char *bh); //------------------------------按编号查找
void diaplay(PAK *pak); //------------------------显示查找信息
void list(void);
void menu(); //-----------------------------------显示菜单
//主函数
int main(void)
{
    pak.first=pak.end=NULL;
    Readdata();
    menu();
    return 0;
}
//---------------------------------------------------------------------------------------读取信息
void Readata(void)
{
    FILE *fp;
    PAK *pak1;
    fp=fopen("D:\\pak\\s.txt","rb");
        if(!fP)
    {
        printf("cannot open file s.txt\n");
        exit(1);
    };
    pak1=(PAK*)malloc(sizeof(PAK));
    if(pak1=NULL)
    {
        printf("内存分配失败!\n");
        getchar();
        return;
    }
    fread(pak1,sizeof(pak),1,fp);
    if(feof(fp)) break;
    if(pak_first==NULL)
    {
        pak_first=pak1;
        pak_end=pak1;
    }
    else
    {
        pak_end->next=pak1;
        pak_end=pak1
    }
    pak_end->next=NULL;
    fclose(fp);
}
//------------------------------------------------------------------显示主菜单
void menu()
{
    char select;
    system("cls");
    do
{
    printf("                 The Paking Information System\n");
    bound('_',30);
    printf(" *******************************Menu**************************************");
    printf("    *  1 input record                    2 delete record    *\n");
    printf("    *  3 find record                     4 modify record    *\n");
    printf("    *  5 rate record                     6 tongji record    *\n");
    printf("    *  7 save record                     8 display record   *\n");
    printf("    *  0 qiut record                                        *\n");
    printf("***************************************************************************");
    bound('_',30);
    printf("\n请选择菜单:");  
    fflush(stdin);
    select=getchar();
    system("cls");
    switch(select)
    {
    case 1:Add();break;/*-----------------------------增加记录*/
    case 2:Del();break;/*-----------------------------删除记录*/
    case 3:Find();break;/*-----------------------------查询记录*/
    case 4:Modify();break;/*--------------------------修改记录*/
    case 5:Rate();break;/*----------------------------计算使用率*/
    case 6:Tongji();break;/*--------------------------统计使用时间*/
    case 7:Save();break;/*----------------------------保存记录*/
    case 8:system(cls);Disp(1);break;/*----------------显示记录*/
    case 0:Savedata();eixt(0);
    default:Wrong();getchar();break;/*-----------------按键有误,必须为数值0~9*/
    }
}while(1);
}
//---------------------------------------------------------------------------------------输入信息
void Add()
{
    FILE *fp;
    PAK *pak1;
    int i=0;
    char select='y';
    if((fp=fopen("D:\\pak\\s.txt","ab")==NULL)
    {
        printf("打开文件出错!\n");
        getchar();
        return ;
    }
    do
    {
        i++;
        pak1=(PAK*)malloc(sizeof(PAK));
        if(pak1==NULL)
        {
            printf("内存分配失败,按任意键返回!\n");
            getchar();
            return;
        }
        bound('_',20);
        printf("车牌号:");
        scanf("%s",&pak1->cp);

        printf("车位编号:");
        scanf("%s",&pak1->bh);

        printf("区域:");
        scanf("%s",&pak1->qy);
        
        printf("类型:");
        scanf("%s",&pak1->lx);

        printf("进位时间:");
        scanf("%d/%d/%d",&pak1->intime);

        printf("出位时间:");
        scanf("%d/%d/%d",&pak1->outtime);

        pak1->next=NULL;
        if(pak_first==NULL);
        {
            pak_first=pak1;
            pak_end=pak1;
        }
        else
        {
            pak_end->next=pak1;
            pak_end=pak1;
        }
        fwrite(pak_end,sizeof(PAK),1,fp);
        printf("\n");
        bound('_',20);
        printf("\n是否继续输入?(y/n)");
        fflush(stdin);
        select=getchar();

        if(toupper(select)!='Y'||'y')
        {
            fclose(fp);
            printf("\n输入完毕,任意键返回\n");
            getchar();
            return;
        }
        system("cls");
    }while(1);
}
//---------------------------------------------------------------------------------------删除信息
void Del()
{
    inti=0,find=0;
    PAK *pak1,*pak2;
    char cp[10],select;

    system("cls");
    printf("\n输入要删除的车牌:");
    scanf("%s",cp);
    pak1=pak_first;
    pak2=pak1;
    while(pak)
    {
        if(strcmp(pak1->cp,cp)==0)
        {
            find=1;
            system("cls");
            printf("车辆:%s信息如下:\n",emp1->name);
            bound('_',25);
            printf("车牌:%s\n",pak1->cp);
            printf("车位编号:%s\n",pak1->bh);
            printf("区域:%s\n",pak1->qy);
            printf("类型:%s\n",pak1->lx);
            printf("入位时间:%d/%d/%d\n",pak1->intime);
            printf("出位时间:%d/%d/%d\n",pak1->outtime);
            bound('_',25);
            printf("真的要删除该员工的信息吗?(y/n)");
            fflush(stdin);
            select=getchar();
            if(select!=y''&&select!='Y') return;
            if(pak1==pak_first) emp_first=emp1->next;
            else pak2->next=pak1->next;
            free(pak1);
            gsave=1;
            Savedata();
            return;
        }
        else
        {
            pak2=pak1;
            pak1=pak1->next;

        }
    }
    if(!find)
    {
        bound('_',30);
        printf("未找到车牌为:%s的信息!\n",cp);
        getch()
    }
    return;
}
//---------------------------------------------------------------------------------------查询信息
void Find()
{
    int select,ret=0,num;
    char str[10];
    PAK *pak1;
    system("cls");
    do
    {
        printf("\t查询车位信息\n");
        bound('_',25);
        printf("\t1.按车牌查询\n");
        printf("\t2.按车位编号查询\n");
        printf("\t0.返回主菜单\n");
        bound("\n请选择菜单;");
        do
        {
            fflush(stdin);
            select=getchar();
            system("cls");
            
            switch(select)
            {
            case '1':
                printf("\n请输入要查询的车牌");
                scanf("%s",str);
                pak1=findcp(str);
                display(pak,"车牌",str);
                getch();
                break;
            case '2':
                printf("\n请输入要查询的车位编号\n");
                scanf("%s",str);
                pak1=findbh(str);
                display(pak,"车位编号",str);
                getch();
                break;
            case '0':
                ret=1;
                break;
            }

        }while(select<'0'||select>'2');

        system('cls');
        if(ret) break;
    }while(1);
}
PAK*findcp(char *cp)//按车牌查找
{
    PAK *pak1;
    pak1=pak_first;
    while(pak1)
    {
        if(strcmp(cp,pak1->cp)==0) return pak1;
        pak1=pak1->next;
    }
    return NULL;
}

PAK*findcp(char *bh)//按车位编号查找
{
    PAK *pak1;
    pak1=pak_first;
    while(pak1)
    {
        if(strcmp(bh,pak1->bh)==0) return pak1;
        pak1=pak1->next;
    }
    return NULL;
}
void display(PAK *pak)
{
    if(pak)
    {
        printf("\n%s:%s信息如下:\n");
        bound('_',20);
        printf("车牌:%s\n",pak->cp);
        printf("车位编号%s\n:",pak->bh);
        printf("区域%s\n:",pak->qy);
        printf("类型%s\n:",pak->lx);
        printf("入位时间%d/%d/%d\n:",pak->intime);
        printf("出位时间%d/%d/%d\n:",pak->outtime);
        bound('_',20);
    }
    else
    {
        bound('_',40);
        printf("系统中没有%s为:%s的车位信息');
    }
    return;
}
//-----------------------------------------------------------------列表显示信息
void list()
{
    PAK *pak;
   
    printf("\n车位信息列表:\n");
    bound('_',25);
    pak1=pak_first;
    while(pak1)
    {
        printf("车牌:");
        printf("车位编号:");
        printf("区域:");
        printf("类型:");
        printf("入位时间:");
        printf("出位时间:");
        bound('_',25);
        pak1=pak1->next;
    }
    printf("\n按任意键返回\n");
    getch();
    return;
}
//---------------------------------------------------------------------------------------修改信息
void Modify()
{
    PAK *pak1;
    char cp[10],*str;
    int select;
    printf("\n请输入要修改的车位编号;\n");
    scanf("%s",&bh);
    pak1=findbh(bh);
    display(pak1,"车位编号",bh);
    if(pak1)
    {
        printf("\n选择要修改的项目:\n");
        bound("_",35);
        printf("           1  修改车牌号码            2  修改区域\n");
        printf("           3  修改类型                4  修改入位时间 \n");
        printf("           5  修改出位时间            0  返回        \n");
        bound("_",35);
        printf("请选择:");
        do
        {
            fflush(stdin);
            select=getchar();
            switch(select)
            {
            case 1:
                str=modi_field("车牌",pak1->cp,10);
                if(str!=NULL)
                {
                    strcpy(pak1->cp,str);
                    free(str);
                }
                break;
            case 2:
                str=modi_field("区域",pak1->qy,10);
                if(str!=NULL)
                {
                    strcpy(pak1->qy,str);
                    free(str);
                }
                break;
            case 3:
                str=modi_field("类型",pak1->lx,10);
                if(str!=NULL)
                {
                    strcpy(pak1->lx,str);
                    free(str);
                }
                break;
            case 4:
            case 5:
            case 0: return;
            }
        }while("select<'0'||select>5");
    }
}
//-----------------------修改车牌、区域、类型
char *modi_filed(char *field,char *s,int n)
{
    char *str;
    str=malloc(sizeof(char)*n);
    if(str==NULL)
    {
        printf("内存分配失败,按任意键返回!\n");
        getch();
        return NULL;
    }
    printf("原%s:%s\n",field,s);
    printf("修改为(不超过%d个字符):",n);
    scanf("%s",str);
    return str;
}
//修改时间????????????????????????????????????????????????????????????????????????????????????????????????????????????????
char modi_time(int t)
{
    struct time
    {
        int da,hr,min;
        
    }t;
    printf("原时间:%d/%d/%d\n",t);
    printf("新时间:");
    scanf("%d\%d\%d",&t);
    return t;
}
void Rate()???????????????????????????
{
}

void Tongji()?????????????????????????????????????????
{
}
//---------------------------------------------------------------------------------------保存信息
void Savedata()
{
    FILE *fp;
    PAK *pak1;
    if(gsave==0) return;
    if((fp=fopen("D:\\pak\\s.txt","wb"))==NULL)
    {
            printf("打开文件pak出错!\n");
            getch();
            return;
    }
    pak1=pak_first;
    while(pak1)
    {
        fwrite(pak1,sizeof(PAK),1,fp);
        pak1=pak1=->next;
    }
    gasve=0;
    fclose (fp);
}
问题:车位的月使用率(时间30天);各车位的租用人使用率和临时使用率;所有车牌的每月使用时间;
求大神看看我写的代码,根基尚浅,敬请谅解!
搜索更多相关主题的帖子: 时间 程序设计 include 
2013-05-10 00:54
流星于飞
Rank: 1
等 级:新手上路
帖 子:6
专家分:3
注 册:2013-5-10
收藏
得分:0 
车牌分为租用人车牌和临时停放车牌,我貌似没有写到
2013-05-10 00:56
流星于飞
Rank: 1
等 级:新手上路
帖 子:6
专家分:3
注 册:2013-5-10
收藏
得分:0 
恩恩,谢谢我问同学和你讲得差不多
2013-05-10 22:54
快速回复:一个车位问题的程序设计,实在做不下去了求思路
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026230 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved