C语言课程设计——简易公交车管理系统(数组实现)

这是一个使用C语言编写的简易公交车管理系统,包括信息录入、显示、修改、删除和查询等功能。系统采用数组存储公交车信息,如路线编号、司机姓名、站台信息等,并实现了文件操作以保存和读取数据。
摘要由CSDN通过智能技术生成
/**************************头文件声明************************************/

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "conio.h"

/**************************函数声明************************************/

void init();	                     //初始化函数
void add();                          //信息录入函数
void view();                         //信息显示函数
void mod();                          //信息修改函数
void modmeun();                      //修改菜单
void modnavimeun();                  //路线修改菜单
void del();                          //信息删除函数
void find();                         //信息查询函数
void findmeun();                     //查询菜单
void findnavi();                     //路线导航查询函数
void findnum();                      //路线编号查询函数
void findstameun();                  //站台信息查询菜单
void findsta();                      //站台信息查询函数
void save();                         //信息保存函数 
void mainmeun();                     //主菜单
char Test(char a,char b,char c);     //菜单输入检测函数

/**************************宏定义声明************************************/
#define N 100                    //公交车数量

/**************************结构体定义************************************/
struct station                   //途径站点信息
{
	char c[20];                  //站点名称
};

struct bus                       //公交车信息
{
	char num[20];                //公交车路线编号
	char name[20];               //司机姓名
	int n;                       //站台数目
	struct station b[12];        //站台名称
	char topen[20];              //起始时间
	char tclose[20];             //终止时间
	int money;                   //票价
}a[N];


/**************************函数定义************************************/

int main()
{
	char a;
	init();
	printf("\n\t\t目前所能录入的公交车数量上限为 %d 辆\n\n",N);
	printf("\n\t\t输入回车键继续\n");
	fflush(stdin);                           //清除键盘缓冲区
	while(1)
	{
		system("cls");
		mainmeun();
		a=Test(getchar(),'1','6');      //菜单检测输入函数 
		switch(a)
		{
		case '1':	system("cls"); add(); break;
		case '2':	system("cls"); view(); break;
		case '3':	system("cls"); mod(); break;
		case '4':	system("cls"); del(); break;
		case '5':   system("cls"); find(); break;
		case '6':   return 0;
		}
	}
	return 0;
}

void init()     //初始化函数       
{
	FILE *fp;                        //文件指针
	int i;
	if((fp=fopen("bus.txt","r+"))==NULL)                  //初次尝试打开"bus.txt"文本文件
	{
		printf("\n\t\t文件打开失败\n\n\t\t正在尝试创建新文件...\n");
		fp=fopen("bus.txt","w");                          //创建"bus.txt"文本文件
		if((fp=fopen("bus.txt","r+"))==NULL)              //再次判断是否打开成功
		{
			printf("\t\t文件创建失败!!!\n");
			return;
		}
	}
	fp=fopen("bus.txt","r+");
	for(i=0;i<N;i++)                                          //将磁盘中的信息输出到内存中
		if(fread(&a[i],sizeof(struct bus),1,fp)!=1)
			break;
	fclose(fp);
	printf("\n\t\t初始化完成!!!\n\n");
	return;
}

void add()     //信息录入函数      
{
	FILE *fp=NULL;                        //文件指针
	int i,j;
	char cc[20];
	for(i=0;i<N;i++)
	{
		if(*a[i].num!='\0')
			continue;
		else
		{
			printf("\n添加第%d辆公交车路线记录:\n",i+1);                               
			printf("\n请输入路线编码(3位编码,第一位为大写字母,后两位为数字):\n");    //路线编码
			scanf("%s",cc);
			for(j=0;j<N;j++)                                                           //检验是否重复
				if(strcmp(a[j].num,cc)==0)
				{
					printf("\n与已有路线编码重复,按回车键返回!!!\n");
					fflush(stdin);                           //清除键盘缓冲区
					getchar();
					system("cls");
					return;
				}
			strcpy(a[i].num,cc);
			printf("\n请输入司机姓名: ");                                              //司机姓名
			scanf("%s",a[i].name);
			printf("\n请输入途径站台总数(>=2): ");                                     //站台总数
			scanf("%d",&a[i].n);
			printf("\n");
			if(a[i].n<2||a[i].n>12)
			{
				while(a[i].n<2||a[i].n>12)
				{
					printf("\n站台总数应满足(2<=n<=12),请重新输入: ");
					scanf("%d",&a[i].n);
					printf("\n");
				}
			}
			for(j=0;j<a[i].n;j++)
			{
				printf("请输入第%d个站台名称: ",j+1);                    //站台名称
				scanf("%s",a[i].b[j].c);
			}
			printf("\n自动生成公交路线:(1) %s",a[i].b[0].c);
			for(j=1;j<a[i].n;j++)
			{
				printf(" ----> (%d) %s",j+1,a[i].b[j].c);
			}
			printf("\n\n请输入公交车的起始时间(格式为:时:分): ");       //起始时间
			scanf("%s",a[i].topen);
			printf("请输入公交车的终止时间(格式为:时:分): ");           //终止时
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值