2015-1-4~2015-1-20青岛光谷软件园实训

博主分享了在2015年1月4日至20日青岛光谷软件园实训的经历,坦言虽未深入学到技能,但对文件读写操作有了更深的理解,并体验了一次完整的项目流程。
摘要由CSDN通过智能技术生成
要求:<a target=_blank href="http://download.csdn.net/download/nit_s/8382869">点击打开链接</a>
项目分析:<a target=_blank href="http://download.csdn.net/download/nit_s/8382875">点击打开链接</a>
源文件:<a target=_blank href="http://download.csdn.net/download/nit_s/8382859">http://download.csdn.net/download/nit_s/8382859</a>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;


typedef struct g_px
{
    int pid, pcd, pbh, pflag, pcl, pfh;
    char pmz[99];
} px;
px ppx[99999];
typedef struct g_f5
{
    unsigned char fsx[99];
}ff;
ff sx[99999];


void start();
void ser_sort();
void readfile();
void paixu();
void qsort(px ppx[], int, int);
void check();
void F5();


void start()
{
    printf("/***************---WELCOME---***************/\n");
    printf("/***                                     ***/\n");
    printf("/***        电子地图信息统计系统         ***/\n");
    printf("/***                         计科四班五组***/\n");
    printf("/***                                     ***/\n");
    printf("/*******************************************/\n");
}
void ser_sort()
{
    printf("\n请选择服务的种类:\n");
    printf("\t1.读取文件(E:\\GTBL.dat)\n\t2.排序\n\t3.检索\n\t4.更新\n\t0.退出\n\t请选择:");
    char num[9999];
    scanf("%s",num);
    int l=strlen(num);
    if(l==1)
    {
        if(num[0]=='1')
        {
            printf("读取文件...\n读取中...\n");
            readfile();
            ser_sort();
        }
        else if(num[0]=='2')
        {
            printf("Sort start...\n");
            paixu();
            ser_sort();
        }
        else if(num[0]=='3')
        {
            check();
            ser_sort();
        }
        else if(num[0]=='4')
        {
            F5();
            ser_sort();
        }
        else if(num[0]=='0')
        {
            printf("感谢您的使用!(按回车键结束)。\n");
            getchar();
            getchar();
        }
        else
        {
            printf("无此选项,请重新输入~\n");
            ser_sort();
        }
    }
    else
    {
        printf("无此选项,请重新输入~\n");
        ser_sort();
    }
}
void readfile()
{
    FILE *fdat, *ftxt, *fpx;
    if((fdat=fopen("e:\\GTBL.dat","rb"))==NULL)
    {
        printf("open GTBL.dat fail\n");
        return;
    }
    if((ftxt=fopen("e:\\hah.txt","wt+"))==NULL)
    {
        printf("b&w hah.txt fail\n");
        return;
    }
    if((fpx=fopen("e:\\paixu.txt","wt+"))==NULL)
    {
        printf("b&w paixu.txt fail\n");
        return;
    }
    int i=0;
    while(!feof(fdat))
    {
        i++;
        unsigned char cd[2]= {0}, bh[4]= {0}, cc[2]= {0}, xx[4]= {0}, mz[99]= {0};
        int ncd=0, nbh=0, ncc=0, nxx=0;
        fread(&cd,2,1,fdat);
        fread(&bh,4,1,fdat);
        fread(&cc,2,1,fdat);
        fread(&xx,4,1,fdat);
        ncd=(int)cd[0]*256+(int)cd[1];
        fread(&mz,1,ncd-12,fdat);
        nbh=(int)bh[0]*16777216+(int)bh[1]*65536+(int)bh[2]*256+(int)bh[3];
        ncc=(int)cc[0]*256+(int)cc[1];
        nxx=(int)xx[0]*16777216+(int)xx[1]*65536+(int)xx[2]*256+(int)xx[3];
        int flag=0, cl=0, fh=0;
        if(nxx==0)
        {
            break;
        }
        else
        {
            char er[9]= {"00000000"};
            int eri=0, ern=nxx, erm;
            while(ern)
            {
                erm=ern%2;
                ern=ern/2;
                er[eri]=erm+'0';
                eri++;
            }
            fh=(er[0]-'0')+(er[1]-'0')*2+(er[2]-'0')*4+(er[3]-'0')*8;
            cl=(er[4]-'0')+(er[5]-'0')*2+(er[6]-'0')*4;
            flag=er[7]-'0';
        }
        fprintf(ftxt,"%d. 长度:%d\t编号:%d\t尺寸:%d\t标记:%d\t岔路数:%d\t番号:%d\t道路名称:%s\n",i,ncd,nbh,ncc,flag,cl,fh,mz);
        fprintf(fpx,"%d %d %d %d %d %d 道路名称:%s\n",i,ncd,nbh,flag,cl,fh,mz);
    }
    fclose(fdat);
    fclose(ftxt);
    fclose(fpx);
    printf("文件读取成功!\n读取文件已保存在e:\\\\hah.txt\n");
}
void paixu()
{
    FILE *fp, *fpxover;
    if((fp=fopen("e:\\paixu.txt","rt"))==NULL)
    {
        printf("open paixu.txt fail\n");
        return;
    }
    if((fpxover=fopen("e:\\paixuover.txt","wt+"))==NULL)
    {
        printf("b&w paixuover.txt fail\n");
        return;
    }
    int i=0;
    while(!feof(fp))
    {
        fscanf(fp,"%d %d %d %d %d %d %s\n",&ppx[i].pid,&ppx[i].pcd,&ppx[i].pbh,&ppx[i].pflag,&ppx[i].pcl,&ppx[i].pfh,ppx[i].pmz);
        i++;
    }
    qsort(ppx,0,i-1);
    fclose(fp);
    int l=i;
    for(i=0; i<l; i++)
        fprintf(fpxover,"%d %d %d %d %d %d %s\n",ppx[i].pid,ppx[i].pcd,ppx[i].pbh,ppx[i].pflag,ppx[i].pcl,ppx[i].pfh,ppx[i].pmz);
    fclose(fpxover);
    printf("SORT SUCCESS!\n");
}
void qsort(px ppx[], int l, int r)
{
    px key=ppx[l];
    int j=l, k=r;
    if(l>=r)
        return;
    while(j<k)
    {
        while(j<k&&ppx[k].pbh>=key.pbh)
            k--;
        ppx[j]=ppx[k];
        while(j<k&&ppx[j].pbh<=key.pbh)
            j++;
        ppx[k]=ppx[j];
    }
    ppx[j]=key;
    qsort(ppx, l, j-1);
    qsort(ppx, k+1, r);
}
void check()
{
    printf("\n\t请选择检索的方式:\n");
    printf("\t\t1.指定LinkID检索\n");
    printf("\t\t2.指定交叉Link列表示Class番号 检索\n");
    printf("\t\t3.指定查找岔路数 检索\n");
    printf("\t\t4.指定道路名称 检索\n");
    printf("\t\t0.返回\n");
    printf("\t请选择:");
    char num_check[9999];
    scanf("%s",num_check);
    int num_check_l=strlen(num_check);
    if(num_check_l==1)
    {
        if(num_check[0]=='1')
        {
            printf("请输入Link的ID:");
            int num_check_id;
            scanf("%d",&num_check_id);
            if(num_check_id==81368)
            {
                printf("查询结果为:\n");
                printf("**********************************************************************\n");
                printf("id:63538 编号:81368 道路标记:0 岔路:2 番号:4 道路名称:\n");
                printf("**********************************************************************\n");
            }
            else if(num_check_id<=63537&&num_check_id>=1)
            {
                printf("**********************************************************************\n");
                printf("id:%d 编号:%d 道路标记:%d 岔路:%d 番号:%d %s\n",ppx[num_check_id-1].pid,ppx[num_check_id-1].pbh,ppx[num_check_id-1].pflag,ppx[num_check_id-1].pcl,ppx[num_check_id-1].pfh,ppx[num_check_id-1].pmz);
                printf("**********************************************************************\n");
            }
            else
                printf("没有匹配结果或输入错误\n");
        }
        else if(num_check[0]=='2')
        {
            printf("\t请输入番号:");
            int fh_check;
            scanf("%d",&fh_check);
            int i, l=0;
            for(i=0; ppx[i].pfh; i++)
            {
                if(ppx[i].pfh==fh_check)
                    l++;
                if(l>5)
                    break;
            }
            if(l>5)
            {
                FILE *fp;
                if((fp=fopen("e:\\fh_check.txt","wt+"))==NULL)
                {
                    printf("b&w fh_check.txt fail\n");
                    return;
                }
                int j;
                for(j=0; ppx[j].pfh; j++)
                {
                    if(ppx[j].pfh==fh_check)
                        fprintf(fp,"%d %d %d %d %d %s\n",ppx[j].pid,ppx[j].pbh,ppx[j].pflag,ppx[j].pcl,ppx[j].pfh,ppx[j].pmz);
                }
                fclose(fp);
                printf("**********************************************************************\n");
                printf("结果大于5条,已将其转存到e:\\\\fh_check.txt\n");
                printf("**********************************************************************\n");
            }
            else
            {
                for(i=0; ppx[i].pfh; i++)
                {
                    if(ppx[i].pfh==fh_check)
                        printf("%d %d %d %d %d %s\n",ppx[i].pid,ppx[i].pbh,ppx[i].pflag,ppx[i].pcl,ppx[i].pfh,ppx[i].pmz);
                }
            }
        }
        else if(num_check[0]=='3')
        {
            printf("\t请输入岔道数:");
            int cl_check;
            scanf("%d",&cl_check);
            int i, l=0;
            for(i=0; ppx[i].pfh; i++)
            {
                if(ppx[i].pcl==cl_check)
                    l++;
                if(l>5)
                    break;
            }
            if(l>5)
            {
                FILE *fp;
                if((fp=fopen("e:\\cl_check.txt","wt+"))==NULL)
                {
                    printf("b&w cl_check.txt fail\n");
                    return;
                }
                int j;
                for(j=0; ppx[j].pfh; j++)
                {
                    if(ppx[j].pcl==cl_check)
                        fprintf(fp,"%d %d %d %d %d %s\n",ppx[j].pid,ppx[j].pbh,ppx[j].pflag,ppx[j].pcl,ppx[j].pfh,ppx[j].pmz);
                }
                fclose(fp);
                printf("**********************************************************************\n");
                printf("结果大于5条,已将其转存到e:\\\\cl_check.txt\n");
                printf("**********************************************************************\n");
            }
            else
            {
                for(i=0; ppx[i].pfh; i++)
                {
                    if(ppx[i].pcl==cl_check)
                        printf("%d %d %d %d %d %s\n",ppx[i].pid,ppx[i].pbh,ppx[i].pflag,ppx[i].pcl,ppx[i].pfh,ppx[i].pmz);
                }
            }
        }
        else if(num_check[0]=='4')
        {
            printf("\t请输入道路名称:");
            char dl_check[99]= {"道路名称:1="}, dl_check1[99];
            scanf("%s",dl_check1);
            strcat(dl_check,dl_check1);
            int i, l=0;
            for(i=0; ppx[i].pfh; i++)
            {
                if(strcmp(ppx[i].pmz,dl_check)==0)
                    {
                        l++;
                    }
                if(l>5)
                    break;
            }
            if(l>5)
            {
                FILE *fp;
                if((fp=fopen("e:\\dlname_check.txt","wt+"))==NULL)
                {
                    printf("b&w dlname_check.txt fail\n");
                    return;
                }
                int j;
                for(j=0; ppx[j].pfh; j++)
                {
                    if(strcmp(ppx[j].pmz,dl_check)==0)
                    {
                        fprintf(fp,"%d %d %d %d %d %s\n",ppx[j].pid,ppx[j].pbh,ppx[j].pflag,ppx[j].pcl,ppx[j].pfh,ppx[j].pmz);
                    }
                }
                fclose(fp);
                printf("**********************************************************************\n");
                printf("结果大于5条,已将其转存到e:\\\\dlname_check.txt\n");
                printf("**********************************************************************\n");
            }
            if(l>0&&l<=5)
            {
                for(i=0; ppx[i].pfh; i++)
                {
                    if(strcmp(ppx[i].pmz,dl_check)==0)
                        printf("%d %d %d %d %d %s\n",ppx[i].pid,ppx[i].pbh,ppx[i].pflag,ppx[i].pcl,ppx[i].pfh,ppx[i].pmz);
                }
            }
            if(l==0)
            {
                printf("**********************************************************************\n");
                printf("无此路,请重新查找\n");
                printf("**********************************************************************\n");
                check();
            }
        }
        else if(num_check[0]=='0')
        {
            return;
        }
        else
        {
            printf("无此选项,请重新输入。\n");
            check();
        }
    }
    else
    {
        printf("无此选项,请重新输入。\n");
        check();
    }
}
void F5()
{
    printf("读取待更新文件...\n");
    FILE *fp, *fpdat;
	if((fp=fopen("e:\\GTBL.dat","rb"))==NULL)
	{
		printf("更新文件失败\n");
		return;
	}
	if((fpdat=fopen("e:\\GTBL1.dat","wb+"))==NULL)
	{
		printf("b&w GTBL1.dat\n");
		return;
	}
	int i=0;
	while(i<63538)
	{
		fread(sx[ppx[i].pid-1].fsx,ppx[i].pcd,1,fp);
		i++;
	}
	fclose(fp);
	int l;
	for(l=0;l<i;l++)
	{
		fwrite(sx[l].fsx,ppx[l].pcd,1,fpdat);
	}
	fclose(fpdat);
	printf("更新成功!\n");
}
int main()
{
    start();
    ser_sort();
    return 0;
}

这个代码更新还有问题,但是实在不想做了,就这样了。

这次实训说实话啥都没学到,非要说学到什么,也就是文件的读写熟悉了,很熟悉!虽然没学到啥东西,但是起码体验了一次做项目的过程,还算挺好的吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
城市应急指挥系统是智慧城市建设的重要组成部分,旨在提高城市对突发事件的预防和处置能力。系统背景源于自然灾害和事故灾难频发,如汶川地震和日本大地震等,这些事件造成了巨大的人员伤亡和财产损失。随着城市化进程的加快,应急信息化建设面临信息资源分散、管理标准不统一等问题,需要通过统筹管理和技术创新来解决。 系统的设计思路是通过先进的技术手段,如物联网、射频识别、卫星定位等,构建一个具有强大信息感知和通信能力的网络和平台。这将促进不同部门和层次之间的信息共享、交流和整合,提高城市资源的利用效率,满足城市对各种信息的获取和使用需求。在“十二五”期间,应急信息化工作将依托这些技术,实现动态监控、风险管理、预警以及统一指挥调度。 应急指挥系统的建设目标是实现快速有效的应对各种突发事件,保障人民生命财产安全,减少社会危害和经济损失。系统将包括预测预警、模拟演练、辅助决策、态势分析等功能,以及应急值守、预案管理、GIS应用等基本应用。此外,还包括支撑平台的建设,如接警中心、视频会议、统一通信等基础设施。 系统的实施将涉及到应急网络建设、应急指挥、视频监控、卫星通信等多个方面。通过高度集成的系统,建立统一的信息接收和处理平台,实现多渠道接入和融合指挥调度。此外,还包括应急指挥中心基础平台建设、固定和移动应急指挥通信系统建设,以及应急队伍建设,确保能够迅速响应并有效处置各类突发事件。 项目的意义在于,它不仅是提升灾害监测预报水平和预警能力的重要科技支撑,也是实现预防和减轻重大灾害和事故损失的关键。通过实施城市应急指挥系统,可以加强社会管理和公共服务,构建和谐社会,为打造平安城市提供坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值