超详细的c++项目代码(新手必看)

游轮乘票预定

#include<iostream>
#include<cstring>
#include<conio.h>
#include<stdio.h>
#include<windows.h>
using namespace std;

#define MAXNUM_KEY 8
#define RADIX_n 10
#define RADIX_c 26
#define MAX_SPACE 10000
#define HEAD1 "|------------------------------------------Book--Ticket--------------------------------------|\n"
#define HEAD2 "|cruisename|---start---time---|----end---time----|satrt-city|-end-city-|---price--|--Ticket--|\n"
#define HEAD3 "|----------|------------------|------------------|----------|----------|----------|----------|\n"
#define FORMAT "|%-10s|%-18s|%-18s|%-10s|%-10s|%-10.2lf|   %-5d  |\n"
#define FORMAT1 "%s %s %s %s %s %lf %d\n"
#define DATA1 L->r[L->recnum+1].cruisename,L->r[L->recnum+1].starttime,L->r[L->recnum+1].endtime,L->r[L->recnum+1].startcity,L->r[L->recnum+1].endcity,&L->r[L->recnum+1].price,&L->r[L->recnum+1].ticket
#define DATA L->r[i].cruisename,L->r[i].starttime,L->r[i].endtime,L->r[i].startcity,L->r[i].endcity,L->r[i].price,L->r[i].ticket
#define DATA2 arr[i].cruisename,arr[i].starttime,arr[i].endtime,arr[i].startcity,arr[i].endcity,arr[i].price,arr[i].ticket
#define FORMAT2 "|%-12s|%-10s|   %-4d   |\n"
#define DATA3 m->data.ID,m->data.name,m->data.ticket
bool saveflag=0;
const char zhanghao[15]="2724391331";
const char mima[15]="123456";
//游轮的节点信息
typedef struct cruise
{
    char cruisename[MAXNUM_KEY+1];
    char starttime[18];//2020/12/12-24:15
    char endtime[18];
    char startcity[10];
    char endcity[10];
    double price;
    int ticket;
    int next;
} cruise;

//订票人的节点信息
typedef struct man
{
    char name[10];
    char ID[12];
    int ticket;
} man;

//游轮信息顺序表
typedef struct  Node1
{
    cruise r[MAX_SPACE];
    int keynum;
    int recnum;
} cruiseNode,*cruiseList;

//去别名-给int[RADIX]
typedef int ArrType_n[RADIX_n];
typedef int ArrType_c[RADIX_c];


//乘客信息单链表
typedef struct Node2
{
    man data;
    struct Node2 *next;
} ManNode,*ManList;

//Manfind(ManList M);
//初始化
void Initcruise(cruiseList &L)
{
    L=new cruiseNode;
    L->recnum=0;
    L->keynum=MAXNUM_KEY;
}
//初始化
void Initman(ManList &M)
{
    M =new ManNode;
    M->next = NULL;
}
//基数排序
//数字排序
//分配
void Distribute_n(cruise *r,int i,ArrType_n &f,ArrType_n &e)
{
    int j,p;
//cruise p;
    for(j=0; j<RADIX_n; j++)
    {
        f[j]=0;
        e[j]=0;
    }
    for(p=r[0].next; p; p=r[p].next)
    {
        j=r[p].cruisename[i]%48;
        //ord(r[p].cruisename[i]);
        if(!f[j])
            f[j]=p;
        else
            r[e[j]].next=p;
        e[j]=p;
    }
}

//收集
void Collect_n(cruise *r,int i,ArrType_n f,ArrType_n e)
{
    int j,p;
    for(j=0; !f[j]; j++);
    r[0].next=f[j];
    int t=e[j];
    while(j<RADIX_n)
    {
        //succ(j)
        for(j=j+1; j<RADIX_n-1&&!f[j]; j++);
        if(f[j])
        {
            r[t].next=f[j];

            t=e[j];
        }
        r[t].next=0;
    }
}

//基数排序
//字母排序
//分配
void Distribute_c(cruise *r,int i,ArrType_c &f,ArrType_c &e)
{
    int j,p;
//cruise p;
    for(j=0; j<RADIX_c; j++)
    {
        f[j]=0;
        e[j]=0;
    }
    for(p=r[0].next; p; p=r[p].next)
    {
        j=r[p].cruisename[i]%65;
        //ord(r[p].cruisename[i]);
        if(!f[j])
            f[j]=p;
        else
            r[e[j]].next=p;
        e[j]=p;
    }
}

//收集
void Collect_c(cruise *r,int i,ArrType_c f,ArrType_c e)
{
    int j,p;
    for(j=0; !f[j]; j++);
    r[0].next=f[j];
    int t=e[j];
    while(j<RADIX_c)
    {
        //succ(j)
        for(j=j+1; j<RADIX_c-1&&!f[j]; j++);
        if(f[j])
        {
            r[t].next=f[j];

            t=e[j];
        }
        r[t].next=0;
    }
}


void  RADIXsort(cruiseList &L)
{
    ArrType_n fn,en;
    ArrType_c fc,ec;
    for(int i=0; i<=L->recnum; i++)
    {
        L->r[i].next=i+1;

    }
    L->r[L->recnum+1].next=0;
    //for(int i=0;i<L->recnum;i++)
    for(int i=L->keynum-1; i>=2; i--)

    {
        Distribute_n(L->r,i,fn,en);
        Collect_n(L->r,i,fn,en);
    }
    for(int i=1; i>=0; i--)
    {
        Distribute_c(L->r,i,fc,ec);
        Collect_c(L->r,i,fc,ec);
    }
    /*for(int i=L->keynum-1; i>=0; i--)

    {
        Distribute_n(L->r,i,fn,en);
        Collect_n(L->r,i,fn,en);
    }*/
}

void Arrange(cruiseList &L)
{
    int p,q,i;
    cruise  temp;
    p=L->r[0].next; /*p指示第一个记录的当前位置*/
    for(i=1; i<L->recnum; i++)
    {
        while(p<i) /*找到第i个记录,并用p指示其在的位子*/
            p=L->r[p].next;
        q=L->r[p].next; /*q指示尚未调整的表尾*/
        if(p!=i)
        {
            temp=L->r[p];
            L->r[p]=L->r[i];
            L->r[i]=temp;
            L->r[i].next=p;/*指向被移走的记录*/
        }
        p=q;
    }
}

//打印head
void printhead()
{
    printf(HEAD1);
    printf(HEAD2);
    printf(HEAD3);
}

//打印数据
void printdata (cruiseList L,int i)
{
    printf(FORMAT,DATA);
}

//按时间段查找
void timefind(cruiseList &L)
{
    int i=0;
    printf("请输入查找游轮的出发时间\n");
    char time1[18];
    scanf("%s",time1);
    getchar();
    printf("请输入查找游轮的到达时间\n");
    char time2[18];
    scanf("%s",time2);
    printhead();
    for(i=1; i<=L->recnum; i++)
    {
        if(strcmp(time1,L->r[i].starttime)<=0&&strcmp(time2,L->r[i].endtime)>=0)
        {
            //printf("\n");
            printdata(L,i);
        }
    }
    if(i>1+L->recnum)
    {
        printf("很抱歉,不存在当前游轮\n");
        system("pause");
    }
}
//按起始站和终点站查找 
 void cityfind(cruiseList &L)
 {
 	int i=0;
    printf("请输入查找游轮的起始站\n");
    char city1[10]={0},city2[10]={0};
    scanf("%s",city1);
    printf("请输入查找游轮的终点站\n");
    scanf("%s",city2);
    printhead();
    for( i=1; i<=L->recnum; i++)
    {
        if(strcmp(city1,L->r[i].startcity)==0&&strcmp(city2,L->r[i].endcity)==0)
        {
            printdata(L,i);
            //printf("\n");
        }
    }
    if(i>1+L->recnum)
    {
        printf("很抱歉,不存在当前游轮\n");
        system("pause");
    }
  } 
//按出发时间查找
void starttimefind(cruiseList &L)
{
    int i=0;
    printf("请输入查找游轮的出发时间\n");
    char time[18];
    scanf("%s",time);
    printhead();
    for(i=1; i<=L->recnum; i++)
    {
        if(strcmp(time,L->r[i].starttime)==0)
        {
            //printf("\n");
            printdata(L,i);
        }
    }
    if(i>1+L->recnum)
    {
        printf("很抱歉,不存在当前游轮\n");
        system("pause");
    }

}

//按到达时间查找
void endtimefind(cruiseList &L)
{
    int i=0;
    printf("请输入查找游轮的到达时间\n");
    char time[18];
    scanf("%s",time);
    printhead();
    for( i=1; i<=L->recnum; i++)
    {
        if(strcmp(time,L->r[i].endtime)==0)
        {
            printdata(L,i);
            //printf("\n");
        }
    }
    if(i>1+L->recnum)
    {
        printf("很抱歉,不存在当前游轮\n");
        system("pause");
    }
}

//按起始站查找
void startcityfind(cruiseList &L)
{
    int i=0;
    printf("请输入查找游轮的起始站\n");
    char city[10];
    scanf("%s",city);
    printhead();
    for( i=1; i<=L->recnum; i++)
    {
        if(strcmp(city,L->r[i].startcity)==0)
        {
            printdata(L,i);
            //printf("\n");
        }
    }
    if(i>1+L->recnum)
    {
        printf("很抱歉,不存在当前游轮\n");
        system("pause");
    }
}

//按终点站查找
void endcityfind(cruiseList &L)
{
    int i=0;
    printf("请输入查找游轮的终点站\n");
    char city[10];
    scanf("%s",city);
    printhead();
    for(int i=1; i<=L->recnum; i++)
    {
        if(strcmp(city,L->r[i].endcity)==0)
        {
            printdata(L,i);
            //printf("\n");
        }
    }
    if(i>1+L->recnum)
    {
        printf("很抱歉,不存在当前游轮\n");
        system("pause");
    }
}

//按游轮班号查找
int   cruisenamefind(cruiseList &L,int flag,char *name)
{
    //printf("请输入游轮的班号\n");
    //char name[10];
    //scanf("%s",name);
    int left=1,right=L->recnum,mid;
    printf("%d\n",right);
    while(left<=right)
    {
        mid=left+(right-left)/2;
        if(strcmp(L->r[mid].cruisename,name)<0)
            left=mid+1;
        else if(strcmp(L->r[mid].cruisename,name)>0)
            right=mid-1;
        else if(strcmp(L->r[mid].cruisename,name)==0)
        {
            if(flag==0)
            {
                printhead();
                printdata(L,mid);
                //return mid;
            }

            //printf("\n");
            if(flag==1)
            {
                for(int i=mid; i<L->recnum+1; i++)
                {
                    L->r[i]=L->r[i+1];
                }
                L->recnum--;
                saveflag=1;
            }
            return mid;
        }
    }
    /*for(int i=0;i<L.recnum;i++)
    {
    	if(strcmp(name,L.r[i].cruisename)==0)
    	{
    		pritnf("\n");
    	  }
      }*/
    if(left>right&&flag>=0&&flag<2)
    {
        printf("很抱歉,不存在当前游轮班号\n");
        system("pause");
    }
    return 0;
}
//游轮信息删除
void Deletecruiseinfo(cruiseList &L)
{
    if(L->recnum<=0)
    {
        exit(0);
    }
    char name[MAXNUM_KEY];
    printf("请输入你想要删除游轮的班号\n");
    scanf("%s",name);
    cruisenamefind(L,1,name);
}
//游轮信息插入
void Insertcruiseiofo(cruiseList &L)
{
    if(L->recnum==MAX_SPACE)
    {
        exit(0);
    }
    char name[MAXNUM_KEY+1]= {0};
    while(1)
    {

        printf("请输入你想插入的游轮班号(按0退出)\n");
        scanf("%s",name);
        if(strcmp(name,"0")==0)
            break;
        if(cruisenamefind(L,2,name))
        {
            printf("游轮已存在\n");
            continue;
        }
        //printf("请输入游轮的班号\n");
        //scanf("%s",L->r[L->recnum].cruisename);
        strcpy(L->r[L->recnum+1].cruisename,name);
        printf("请输入游轮的出发时间\n");
        scanf("%s",L->r[L->recnum+1].starttime);
        printf("请输入游轮的到达时间\n");
        scanf("%s",L->r[L->recnum+1].endtime);
        printf("请输入游轮的起始站\n");
        scanf("%s",L->r[L->recnum+1].startcity);
        printf("请输入游轮的终点站\n");
        scanf("%s",L->r[L->recnum+1].endcity);
        printf("请输入游轮的票价\n");
        scanf("%lf",&L->r[L->recnum+1].price);
        printf("请输入游轮的票数\n");
        scanf("%d",&L->r[L->recnum+1].ticket);
        L->recnum++;
        //RADIXsort(L);
        //Arrange(L);
    }
    saveflag=1;
}

//游轮信息修改
void  Modefy(cruiseList &L)
{
    if(L->recnum==0)
    {
        printf("没有可修改的数据\n");
        return ;
    }
    else
    {
        printf("请问你是否确定修改?(y/n)\n");
        char YN;
        getchar();
        scanf("%c",&YN);
        if(YN=='y'||YN=='Y')
        {
            printf("请输入你要修改的游轮班号\n");
            char name[10];
            scanf("%s",name);
            int f=cruisenamefind(L,2,name);
            if(f>=0)
            {
                printf("请输入游轮的班号\n");
                scanf("%s",L->r[f].cruisename);
                //strcpy(L->r[L->recnum].cruisename,name);
                printf("请输入游轮的出发时间\n");
                scanf("%s",L->r[f].starttime);
                printf("请输入游轮的到达时间\n");
                scanf("%s",L->r[f].endtime);
                printf("请输入游轮的起始站\n");
                scanf("%s",L->r[f].startcity);
                printf("请输入游轮的终点站\n");
                scanf("%s",L->r[f].endcity);
                printf("请输入游轮的票价\n");
                scanf("%lf",&L->r[f].price);
                printf("请输入游轮的票数\n");
                scanf("%d",&L->r[f].ticket);
                //	RADIXsort(L);
                saveflag=1;
            }
        }
        else
        {
            printf("已退出\n");
        }
    }
    saveflag=1;
}
//菜单
void menu1()
{
    printf("\n");
    printf("\t\t|---------------------------|\n");
    printf("\t\t|----欢迎进入管理员系统-----|\n");
    printf("\t\t|---------------------------|\n");
    printf("\t\t|    1.游轮信息插入功能     |\n");
    printf("\t\t|    2.游轮信息删除功能     |\n");
    printf("\t\t|    3.游轮信息修改功能     |\n");
    printf("\t\t|    4.游轮班号查询功能     |\n");
    printf("\t\t|    5.出发时间查询功能     |\n");
    printf("\t\t|    6.到达时间查询功能     |\n");
    printf("\t\t|    7.起点站查询功能       |\n");
    printf("\t\t|    8.终点站查询功能       |\n");
    printf("\t\t|    9.显示游轮信息功能     |\n");
    printf("\t\t|   10.乘客订票功能         |\n");
    printf("\t\t|   11.保存游轮信息功能     |\n");
    printf("\t\t|   12.查看乘客信息功能     |\n");
    printf("\t\t|   13.按时间段查询功能     |\n");
    printf("\t\t|   14.乘客信息增加功能     |\n");
    printf("\t\t|   15.乘客信息删除功能     |\n");
    printf("\t\t|   16.保存乘客信息功能     |\n");
    printf("\t\t|    0.退出界面             |\n");
    printf("\t\t|---------------------------|\n");
}
//退出界面
void menu2()
{
    printf("\t\t欢迎再次使用本系统\n");

}
//查询订票人信息
int Manfind(ManList &M,char *name,char *ID)
{
    ManList p, r;
    r = M;
    //s = M->next;

    while (r->next != NULL)
    {
        if(strcmp(r->next->data.ID,ID)==0&&strcmp(r->next->data.name,name)==0)
        {
            //r->next=r->next->next;
            //break;
            return 1;
        }
        r = r-> next;
    }
    return 0;
}
//修改乘客的票数
void ModefyMan(ManList & M,int num,char *name,char *ID)
{
    ManList p, r;
    r = M;
    //s = M->next;
    /*char ID[12] = { 0 },name[10]={0};
    	printf("请输入乘客ID信息:\n");
    	scanf("%s", ID);
    	printf("请输入姓名:\n");
    	scanf("%s", name);*/
    while (r->next != NULL)
    {
        if(strcmp(r->next->data.ID,ID)==0&&strcmp(r->next->data.name,name)==0)
        {
            /*r->next=r->next->next;
            break;*/
            r->next->data.ticket+=num;

        }
        r = r-> next;
    }
}
//乘客订票
void BookTicket(cruiseList &L,ManList &M)
{
    int k=0;
    char name[10]= {0},ID[12]= {0};
    char str1[10]= {0},str2[10]= {0};
    cruise arr[50];
    ManNode *h,*m;
    m=M;
    /*while(m->next!=NULL)
    {
        m=m->next;
    }*/
    printf("欢迎使用订票专栏\n");
    printf("请输入你所在的城市:");
    scanf("%s",str1);
    getchar();
    printf("请输入你想去的城市:");
    scanf("%s",str2);
    for(int i=1; i<=L->recnum; i++)
    {
        if(strcmp(str1,L->r[i].startcity)==0&&strcmp(str2,L->r[i].endcity)==0)
        {
            arr[k++]=L->r[i];
        }
    }
    printf("有%d个选择\n",k);
    printhead();
    for(int i=0; i<k; i++)
        printf(FORMAT,DATA2) ;
    if(k==0)
        printf("非常抱歉,没有可选的游轮!\n");
    else
    {
        printf("请确定是否进行订票(y/n)\n");
        char YN;
        int i=0;
        getchar();
        scanf("%c",&YN);
        if(YN=='y'||YN=='Y')
        {
            h=new ManNode;

            /*printf("请输入你的名字\n");
            scanf("%s",name);
            strcpy(h->data.name,name);
            printf("请输入你的ID\n");
            scanf("%s",ID);
            strcpy(h->data.ID,ID);*/
            //char ID[12] = { 0 },name[10]={0};
            printf("请输入乘客ID信息:\n");
            scanf("%s", ID);
            getchar();
            printf("请输入姓名:\n");
            scanf("%s", name);
            getchar();
            int f=Manfind(M,name,ID);
            if(f==1)
            {
                printf("请输入你想乘坐的游轮班号\n");
                char banhao[10];
                scanf("%s",banhao);

                for(i=1; i<=L->recnum; i++)
                {
                    if(strcmp(banhao,L->r[i].cruisename)==0)
                    {
                        if(L->r[i].ticket<1)
                        {
                            printf("不好意思,该游轮余票不足\n");
                        }
                        else
                        {
                            printf("请输入你想购票的数量\n");
                            int num;
                            scanf("%d",&num);
                            if(num>L->r[i].ticket)
                            {
                                printf("不好意思,该游轮余票不足\n");
                            }
                            else
                            {
                                L->r[i].ticket=L->r[i].ticket-num;
                                ModefyMan(M,num,name,ID);
                                //h->data.ticket=num;
                                //h->next=NULL;
                                //m->next=h;
                                printf("很幸运,你抢到票了\n");
                                saveflag=1;
                                break;
                            }
                        }


                    }
                    /*else
                    */
                }
            }

            if(i>1+L->recnum)
            {

                printf("输入错误\n");
                system("pause");

            }
        }

    }


}

//显示游轮信息
void showcruise(cruiseList L)
{
    //RADIXsort(L);
    printhead();
    for(int i=2; i<=L->recnum; i++)
    {
        printdata(L,i);
    }
}



void printdata1(ManList m)
{
    printf(FORMAT2,DATA3);
}

void printhead1()
{
    printf("|----------------------------------|\n");
    printf("|------------|----------|----------|\n");
    printf("|-----ID-----|---name---|--ticket--|\n");
}
//显示乘客信息
void showman(ManList M)
{
    printhead1();
    ManList m;
    m=M->next;
    while(m)
    {
        printdata1(m);
        m=m->next;
    }
}

//文件保存游轮信息
void SaveCruiseinfo(cruiseList &L)
{
    FILE *fp;
    //RADIXsort(L);
    //Arrange(L);
    int cnt=0,flag=1;
    fp=fopen("./cruiseinfo.txt","w");
    if(fp==NULL)
    {
        printf("文件打开失败\n");
        return ;
    }/*
		  for(int i=0;i<L->recnum;i++)
		  {
		  	if(fwrite(&L->r[i],sizeof(cruise),1,fp)==1)
		  	{
		  		cnt++;
			  }
			  else
			  {
			  	flag=0;
			  	break;
			  }

		  }
		  if(flag)
		  {
		  	printf("save %d record\n",cnt);
		  	saveflag=0;
		  }*/
    int i=1;
    if(L->recnum==1)
        fprintf(fp,FORMAT1,DATA);
    else
        for(int i=2; i<=L->recnum; i++)
        {
            fprintf(fp,FORMAT1,DATA);
        }
        saveflag=1;
    fclose(fp);
}

//保存订票人信息
void SaveManinfo(ManList M)
{
    FILE* fp;
    ManList p;
    int cnt = 0, flag = 1;
    fp = fopen("./man.txt", "wb");
    if (fp == NULL)
    {
        printf("文件打开失败\n");
        return;
    }
    p = M->next;
    while (p)
    {
        if (fwrite(p, sizeof(ManNode), 1, fp) == 1)
        {
            p = p->next;
            cnt++;
        }
        else
        {
            flag = 0;
            break;
        }
    }
    if (flag)
    {
        printf("saved %d  record\n", cnt);
        saveflag = 1;
    }
    fclose(fp);
}

//订票人信息增加
void InsertMan(ManList &M)
{
    ManList p, r, s;
    r = M;
    s = M->next;
    while (r->next != NULL)
    {
        r = r-> next;
    }

    while (1)
    {
        p = new ManNode;
        char ID[12] = { 0 };
        printf("请输入乘客ID信息:\n");
        scanf("%s", ID);
        if (strcmp(ID, "0") == 0)
        {
            break;
        }
        while (s)
        {
            if (strcmp(s->data.ID, ID) == 0)
            {
                printf("this ID '%s' is existing\n",ID);
                return;
            }
            s = s->next;
        }
        strcpy(p->data.ID, ID);
        printf("请输入姓名:\n");
        scanf("%s", p->data.name);
        p->data.ticket=0;
        p->next = NULL;
        r->next = p;
        r = p;
        s = M->next;
    }
    saveflag=1;
}

//订票人信息删除
void DeleteMan(ManList &M)
{
    ManList p, r;
    r = M;
    //s = M->next;
    char ID[12] = { 0 },name[10]= {0};
    printf("请输入乘客ID信息:\n");
    scanf("%s", ID);
    printf("请输入姓名:\n");
    scanf("%s", name);
    while (r->next != NULL)
    {
        if(strcmp(r->next->data.ID,ID)==0&&strcmp(r->next->data.name,name)==0)
        {
            r->next=r->next->next;
            break;
        }
        r = r-> next;
    }
    saveflag=1;
    /*while (1)
    {
    	p = new ManNode;
    	char ID[10] = { 0 };
    	printf("请输入乘客ID信息:\n");
    	scanf("%s", ID);
    	if (strcmp(ID, "0") == 0)
    	{
    		break;
    	}
    	while (s)
    	{
    		if (strcmp(s->data.ID, ID) == 0)
    		{
    			printf("this ID '%s' is existing\n",ID);
    			return;
    		}
    		s = s->next;
    	}
    	strcpy(p->data.ID, ID);
    	printf("请输入姓名:\n");
    	scanf("%s", p->data.name);
    	p->data.ticket=0;
    	p->next = NULL;
    	r->next = p;
    	r = p;
    	s = M->next;
    } */
}
void menu3(ManList &M,cruiseList &L)
{
    while(1)
    {
        menu1();
        printf("请输入你的选择:");
        int choose;
        scanf("%d",&choose);
        switch(choose)
        {
        case 1:
            Insertcruiseiofo(L);
            break;
        case 2:
            Deletecruiseinfo(L);
            break;
        case 3:
            Modefy(L);
            break;

        case 4:{
			
            char name[MAXNUM_KEY+1];
            printf("请输入游轮的班号\n");
            scanf("%s",name);
            cruisenamefind(L,0,name);
            break;
        }
        case 5:
            starttimefind(L);
            break;
        case 6:
            endtimefind(L);
            break;
        case 7:
            startcityfind(L);
            break;
        case 8:
            endcityfind(L);
            break;
        case 9:
            showcruise(L);
            break;
        case 10:
            BookTicket(L,M);
            break;
        case 11:
            SaveCruiseinfo(L);
            break;
        case 12:
            showman(M);
            break;
        case 13:
            timefind(L);
            break;
        case 14:
            InsertMan(M);//插入 乘客信息
            break;
        case 15:
            DeleteMan(M);//删除乘客信息
            break;
        case 16:
            SaveManinfo(M);//保存乘客信息
            break;

        case 0:
            if(saveflag==1)
            {
                printf("你的文件信息已经改动,已重新保存\n");
                RADIXsort(L);
                Arrange(L);
                SaveManinfo(M);
                SaveCruiseinfo(L);

            }
            //printf("")
            menu2();
            return ;
        //break;
        default:
            break;
        }
        //system("cls");
    }
}
//乘客界面
void menu4()
{
    printf("\n");
    printf("\t\t|---------------------------|\n");
    printf("\t\t|----欢迎进入乘票预定系统---|\n");
    printf("\t\t|---------------------------|\n");
    printf("\t\t|    1.游轮班号查询功能     |\n");
    printf("\t\t|    2.出发时间查询功能     |\n");
    printf("\t\t|    3.到达时间查询功能     |\n");
    printf("\t\t|    4.起点站查询功能       |\n");
    printf("\t\t|    5.终点站查询功能       |\n");
    printf("\t\t|    6.显示游轮信息功能     |\n");
    printf("\t\t|    7.乘客订票功能         |\n");
    printf("\t\t|    8.按时间段查询功能     |\n");
    printf("\t\t|    9.按两站查询功能       |\n");
    printf("\t\t|    0.退出界面             |\n");
    printf("\t\t|---------------------------|\n");
}
void menu5(ManList &M,cruiseList &L)
{
    int choose=1;
    //menu4();
    do
    {
        menu4();
        printf("请输入你的选择:");
        scanf("%d",&choose);
        switch(choose)
        {

        case 1:{
			
            char name[MAXNUM_KEY+1];
            printf("请输入游轮的班号\n");
            scanf("%s",name);
            cruisenamefind(L,0,name);
            break;
        }
        case 2:
            starttimefind(L);
            break;
        case 3:
            endtimefind(L);
            break;
        case 4:
            startcityfind(L);
            break;

        case 5:
            endcityfind(L);
            break;

        case 6:
            showcruise(L);
            break;
        case 7:
            BookTicket(L,M);
            break;
        case 8:
            timefind(L);
            break;
        case 9:
			cityfind(L);
			break; 
        case 0:
            choose=0;
            break;
        case 996:{
			
            char name1[15]= {0},mi[15]= {0};
            printf("你的管理员账号:\n");
            scanf("%s",name1);
            printf("请输入的密码:\n");
            scanf("%s",mi);
            if(strcmp(name1,zhanghao)==0&&strcmp(mi,mima)==0)
            {
                menu3(M,L);
            }
            break;
        }
            default :
            	//printf("2");
             break;


        }
    }
    while(choose);
}
int  main()
{
    cruiseList L;
    ManList M,h,t;
    Initcruise(L);
    Initman(M);
    h = M;
    /*for(int i=0;i<90;i++)
    {
    system("color e3");
    system("color e3");
    system("color e0");
    system("color e4");
    }*/
    system("color e3");
    FILE *fp1,*fp2;
    fp1=fopen("./cruiseinfo.txt","a+");
    if(fp1==NULL)
    {
        printf("文件打开失败\n");
        return 0;
    }
    //fseek(fp1,SEEK_SET,0);
    rewind(fp1);
    /*while(!feof(fp1))
    {
    	if(fread(&L->r[L->recnum],sizeof(cruise),1,fp1)==1)
    	{
    		//L->r[L->recnum]=L->r;
    		L->recnum++;

    	}
    	fscanf(fp1,FORMAT1,DATA1);
    }*/
    //int i=0;
    char ch;
    int cnt1=0,cnt2=0;
    //for(int i=0;i<L->recnum+1;i++)
    while(!feof(fp1))
    {
        ch=fgetc(fp1);
        if(ch=='\n')
            cnt1++;
        cnt2++;
        /*if(fscanf(fp1,FORMAT1,DATA1)!=1)
        {
        	break;
        }*/
    }
    //cnt++;
    //printf("%d",cnt);
    rewind(fp1);
    for(int i=1; i<=cnt1&&cnt2>2; i++)
    {

        fscanf(fp1,FORMAT1,DATA1);
        L->recnum++;
    }
    fclose(fp1);
    fp2 = fopen("./man.txt", "ab+");
    if ((fp2 == NULL))
    {
        printf("can't open the file!");
        return 0;
    }

    while (!feof(fp2))
    {
        t = new ManNode;
        if (fread(t, sizeof(ManNode), 1, fp2) == 1)
        {
            t->next = NULL;
            h->next = t;
            h = t;

        }
    }
    fclose(fp2);

    menu5(M,L);
    return 0;
}

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值