设计要求
(1)建立车票信息库,每班车次有若干途径站,有若干票源,按照里程票价不同。//本人是按照三个中途站来编写的
(2)建立旅客信息库(乘车人的基本信息)。
(3)为二者建立乘车票务信息库(每位旅客定了哪里的票)。
(4)实现各种信息的统计。
本人建立了三个文件trainmes.txt、membermes.txt、memtrainmes.txt用来分别存储列车班次信息、用户基本信息、用户票务信息
功能系统分析
分为两个模块:管理员模块和用户模块
系统运行流程
代码实现
main函数
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "head.h"
char secret[20]="000000";
int main()
{
char secret1[20];
int flag;
int com,com1,com2;
printf("******************************************************************************\n");
printf("*******************************欢迎使用本系统*********************************\n");
printf("******************************本系统由****编写********************************\n");
printf("******************************指导教师:$$$$$********************************\n");
printf("******************************************************************************\n");
printf("\n\n\n\n\n");
printf("**************请确定您所属身份,用户请回复0、管理员请回复1!!!**************\n");
scanf("%d",&com);
if(com==0)
{
printf("**************您是否为新用户,新用户请回复0、否则请回复1!!!****************\n");
scanf("%d",&com1);
if(com1==0)
{
printf("请完成信息注册,格式为:姓名 年龄 性别 联系方式 身份证号;\n");
zhuce();
printf("注册成功!!!\n");
}
while(1)
{
introduce1();
while(scanf("%d",&com2)!=1)
{
printf("您输入的指令不正确,请重新输入!\n");
fflush(stdin);
continue;
}
switch(com2)
{
case 0:saygoodbye1();exit(1);
case 1:outputs();break;
case 2:find1();break;
case 3:yuding1();break;
case 4:tuipiao();break;
case 5:chaxunxingcheng();break;
case 6:system("cls");break;
default :printf("没有该操作,请确认后再输入\n");break;
}
}
}
else if(com==1)
{
flag=3;
printf("*************************请输入密码!!!**************************\n");
scanf("%s",secret1);
while(strcmp(secret,secret1)!=0)
{
printf("密码输入失败!!!您还有%d次机会!!!\n",--flag);
if(flag==0)
saygoodbye1(),exit(1);
printf("请输入密码!!!\n");
scanf("%s",secret1);
}
printf("密码输入正确!!!\n");
while(1)
{
introduce2();
while(scanf("%d",&com2)!=1)
{
printf("您输入的指令不正确,请重新输入!\n");
fflush(stdin);
}
switch(com2)
{
case 0:saygoodbye1();exit(1);
case 1:add();break;
case 2:outputs();break;
case 3:outputmembermes();break;
case 4:outputmemtrainmes();break;
case 5:find1();break;
case 6:findmembermes();break;
case 7:findmemtrainmes();break;
case 8:system("cls");break;
default :printf("没有该指令,请确认后再次操作\n");
}
}
}
}
头文件 head.h
#ifndef HEAD_H_INCLUDED
#define HEAD_H_INCLUDED
struct trainmes1
{
char mid[10][20];
char checi[20];
char startime[20];
int number;
double money;
struct trainmes1 *next;
};
typedef struct trainmes1 trainmes1;
#define lenoftrainmes1 sizeof(trainmes1)
struct trainmes2
{
char mid[10][20];
char checi[20];
char startime[20];
int number;
double money;
};
typedef struct trainmes2 trainmes2;
#define lenoftrainmes2 sizeof(trainmes2)
struct member1
{
char name[20];
char sex;
int age;
char tel[15];
char id[30];
struct member1 *next;
};
typedef struct member1 member1;
#define lenofmember1 sizeof(member1)
struct member2
{
char name[20];
char sex;
int age;
char tel[15];
char id[30];
};
typedef struct member2 member2;
#define lenofmember2 sizeof(member2)
struct piaowu1
{
char name[20];
char id[30];
char checi[20];
char start[20];
char last[20];
char starttime[20];
int piaoshu;
struct piaowu1 *next;
};
typedef struct piaowu1 piaowu1;
#define lenofpiaowu1 sizeof(piaowu1)
struct piaowu2
{
char name[20];
char id[30];
char checi[20];
char start[20];
char last[20];
char starttime[20];
int piaoshu;
};
typedef struct piaowu2 piaowu2;
#define lenofpiaowu2 sizeof(piaowu2)
extern char secret[20];
//zhuce.c
void zhuce();
//introduce.c
void introduce1();
void introduce2();
void introduce3();
void introduce4();
//saygoodbye.c
void saygoodbye1();
//add.c
void add2(int num);
void add();
//尾插法.c
trainmes1 * aaa(int m);
trainmes1 * aaa2(FILE *fp1);
//清空链表.c
void freee(trainmes1 *phead);
void freee1(piaowu1 *phead);
void freee2(member1 *phead);
//outputs.c
void outputs();
//sort.c
trainmes1 * paixu();
trainmes1 *zhijiepaixu(FILE *fp);
void charu(trainmes1 *phead,trainmes1 *pnew);
//yuding.c
void charu1(piaowu1 *phead,piaowu1 *pnew);
piaowu1 *zhijiepaixu1(FILE *fp);
piaowu1 * paixu1();
int piaowuxinxitianjia(char *name,char *id,char *start,char *last,char *time,char *checi,int num);
void yuding1();
void yuding2();
void yuding3();
//修改文件信息类型的输入.c
void xiugai1(char *pp,piaowu1 *phead);
void xiugai2(char *pp,trainmes1 *phead);
//find.c
void find1();
void find2();
void find3();
void find4();
//tuipiao.c
void charu2(piaowu1 *phead,piaowu1 *pnew);
piaowu1 *zhijiepaixu2(FILE *fp);
piaowu1 * paixu2();
void tuipiao();
//chaxunxingcheng.c
void chaxunxingcheng();
//outputtrainmes.c
void charu3(member1 *phead,member1 *pnew);
member1 *zhijiepaixu3(FILE *fp);
member1 * paixu3();
void outputmembermes();
//outputmemtrainmes.c
void outputmemtrainmes();
//findmembermes.c
void findmembermes();
void findmembermes2();
void findmembermes1();
//findmemtrainmes.c
void findmemtrainmes();
void findmemtrainmes1();
void findmemtrainmes2();
#endif // HEAD_H_INCLUDED
添加列车信息函数 add.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include "head.h"
void add2(int num)
{
int com;
trainmes1 *phead,*p;
FILE *fp;
if((fp=fopen("trainmes.txt","ab"))==NULL)
{
printf("文件打开失败!!!\n");
exit(1);
}
phead=aaa(num);
p=phead->next;
printf("是否添加上述信息?如果是请回复0,否则回复1\n");
scanf("%d",&com);
if(com==0)
{
while(p!=NULL)
{
fwrite(p,lenoftrainmes2,1,fp);
p=p->next;
}
printf("添加班次信息成功!!!\n");
freee(phead);
}
fclose(fp);
}
void add()
{
printf("********************1表示从键盘添加列车班次信息******************\n");
printf("********************2表示从文件添加列车班次信息******************\n");
int com,num,m;
trainmes1 *phead,*p;
char file3[100],file2[100];
FILE *fp1,*fp2;
scanf("%d",&com);
if(com==1)
{
printf("请输入要添加的班次个数\n");