资源简介

一车站每天有n个发车班次,每个班次都有一班次号(1、2、3…n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如 班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数 1 8:00 郫县 广汉 2 45 30 2 6:30 郫县 成都 0.5 40 40 3 7:00 郫县 成都 0.5 40 20 4 10:00 郫县 成都 0.5 40 2 … (一)功能要求:设计一系统,能提供下列服务: (1)录入班次信息(信息用文件保存),可不定时地增加班次数据 (2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。 (3)查询路线(起点、终点):可按班次号查询 ,可按终点站查询 (4)售票和退票功能 当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数 退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数 (二)其它要求: (1) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (2) 学生可自动增加新功能模块(视情况可另外加分)

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include

typedef struct information

int numb; 
char starttime[10]; 
char begin[21]; 
char end[21]; 
float lasttime; 
int canload; 
int alreadyload;
struct information *next;
}  
information*PINF;            //结构体类型的指针
information *head;             //建立班次头结点
information *rear;             //建立班次尾结点

void save()
{ FILE *fp;
  int i;
  if((fp=fopen(“information““a+“))==NULL)
  {printf(“不能打开文件\n“);
   return;
  }
  for(i=0;;i++)
  if(fwrite(&informationsizeof(information)1fp)!=1)
  { 
  printf(“文件编写错误\n“);
  break;}
  fclose(fp);
}

int main() //主程序
{
int numb; 
char starttime[10]; 
char begin[21]; 
char end[21]; 
float lasttime; 
int canload; 
int alreadyload; 

head=rear=(information *)malloc(sizeof(information));
head->next=NULL;
//函数声明
     
void Read_In();         //文件读入 
void Scan();            //浏览全部信息  
void Lookup();          //查询信息 
void Buyticket();       //预定车票 
void Cancelticket();    //退订车票 
void Save_In();         //把数据重新保存到文件中 

int i=0;
while(i!=6)

    printf(“ * *车 票 管 理 系 统* * \n“);   //总菜单 
    printf(“ 1、    录入信息         \n“);
printf(“ 2、    浏览信息         \n“);
    printf(“ 3、    查询信息         \n“);
    printf(“ 4、    预订车票         \n“);
    printf(“ 5、    退订车票         \n“);
    printf(“ 6、    退出系统         \n“); 
    printf(“* * * * * * * * * * * * *\n“);
    
    printf(“请根据您的需要选择:“); 
    scanf(“%d“&i);
    switch(i)
    { 
  case 1:printf(“请输入您要录入的班次:\n“);
     scanf(“%d%s%s%s%d%d%d“numb&starttime[10]&begin[21]&end[21]lasttimecanloadalreadyload);
     save();break;
      case 2:Scan();break; 
      case 3:Lookup();break;
      case 4:Buyticket();break;
      case 5:Cancelticket();break;
      case 6:break; 
      default:printf(“Sorry你的输入有误,请在1--6范围内输入。\n“);break;
    } 
}   //while (i!=6)

Save_In();    //保存信息

return 0;
}
void Read_In()       //班次信息文件读入
{
     FILE *fp; 
     if((fp=fopen(“information.txt““r+“))==0) 
     { 
        printf(“\n打开文件错误!\n“); 
        exit(0); 
     } 
     while(!feof(fp))      //读取文件并测试是否抵达文件尾 
     {
       information *p;
       p=(information *)malloc(sizeof(information)); //开辟内存空间 
      
       fscanf(fp“%d%s%s%s%f%d%d\n“&p->numb&p->starttime&p->begin&p->end&p->lasttime&p->canload&p->alreadyload);
      
       rear->next=p;      //在INFORMATION单链表中依次插入下一结点 
       rear=p;
       rear->next=NULL;    
     }
     fclose(fp); 
     
}

void Save_In()     //保存数据 
{
     FILE *fp;
     if((fp=fp=fopen(“information.txt“ “r+“))==0)
     {
        printf(“\n打开文件错误!\n“); 
        exit(0);
     }
     PINF p=head->next;   
     while(p!=NULL)
     {
       fprintf(fp“%d\t%s\t%s\t%s\t%.2f\t%d\t%d\n“p->numbp->starttimep->beginp->endp->lasttimep->canloadp->alreadyload); 
       p=p->next; 
     }
     fclose(fp);
}

void Scan()
{
     PINF p=head->next;
    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      11390  2019-05-20 10:48  9.cpp

----------- ---------  ---------- -----  ----

                11390                    1


评论

共有 条评论