C语言课程设计-车辆信息管理系统

这篇具有很好参考价值的文章主要介绍了C语言课程设计-车辆信息管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C语言课程设计-车辆信息管理系统

这个是我学编程以来写的第一个管理系统,现在回来看,当时写的代码还是很青涩的,写得不好大家轻点喷!!!

题目描述:
建立车辆信息管理系统,实现车辆信息的添加和维护管理。
系统存储数据要求:
每台车辆至少需要包含以下属性,系统中保存多台车辆的信息:
 车辆型号(如思域、卡罗拉、天籁等)
 厂商(如广汽本田、一汽大众、东风日产等)
 车型级别(如紧凑型车、中型车、SUV等)
 座位数(如5座、7座等)
 排量(如1.2T、1.4T、1.5T、1.6T等)
 变速箱(如手动、手自一体、无级变速等)
 车身颜色(白色、黑色等)
 车辆价格(单位为万)

程序基本要求:
1、 要有系统菜单,选择不同选项执行不同功能。每个功能执行结束后,需返回到系统菜单,继续进行功能选择操作。
2、系统需要完成以下基本功能,每个功能的代码封装在单独的函数里:
(1) 系统初始化时,至少要有10条车辆记录信息。
(2) 录入车辆信息:录入某台车辆的基本信息,为新记录自动生成一个记录号。输入数据时要有提示语,录入结束后在屏幕上输出新增的车辆信息。
车辆信息输出格式如下:

车辆型号 厂商 车型级别 座位数 排量 变速箱 车身颜色 车辆价格
雅阁 本田 中型车 5座 1.5T 无级变速 白色 19.98万

(3) 浏览所有车辆信息:统计共有多少台车辆,并在屏幕中显示所有车辆信息。
(4) 按不同字段查询车辆信息,包括按照厂商、车型级别、车辆价格范围(输入最低价格、最高价格)
(5) 修改车辆信息:对车辆的基本信息进行修改,要求提供菜单选择某一项参数信息进行修改,而不是重新覆盖录入整条信息。
(6) 删除车辆信息:将满足条件的车辆信息删除,包括按型号、厂商删除。要求删除前,先按照型号或者厂商查找需要删除的车辆信息,如果找不到则给出对应的提示信息。

扩展要求:
(1) 实现排序功能。例如按车辆价格、座位数、排量等对车辆信息进行排序。
(2) 所有车辆信息存储在文件中。
(3) 每次打开程序,把文件中的信息导入到程序中。
(4) 可自己定义其他功能需求,并编码实现

编写这个系统时我总结了一个思路,方便我编写代码和防止浪费不必要的时间。
开发平台:Dev-C++ 5.11
C语言课程设计-车辆信息管理系统

接下来,按照步骤一步一步地实现…

步骤一:分析功能需求

问题的分析与总结是最重要的,只要把功能需求分析清楚,接下来编写代码的思路就会很清晰。

首先从题目来看我们要实现的功能有:1.录入车辆信息功能2.浏览车辆信息功能3.查询车辆信息功能4.修改车辆信息功能5.删除车辆信息功能6.排序浏览车辆信息功能。

功能要实现的需求有:
1、录入车辆信息功能:可实现输入车辆型号、厂商、车辆级别、座位数、排量、变速箱、车身颜色、车辆价格(同时需要按照指定的格式输入,否则显示错误,需要重新输入)。录入结束后,会为新的车辆信息自动生成一个编号,并且在屏幕上输出新增的车辆信息。
2、浏览车辆信息功能:选择该功能可以输出所有车辆信息,并且统计共有多少台车辆。
3、查询车辆信息功能:该功能可以提供菜单选择四种不同的方式进行查询:一、按厂商查询,二、按车型级别查询,三、按车辆价格范围查询(同时需要按照指定的格式输入,否则显示错误,需要重新输入)四、按厂商和车型级别查询。如果查询的车辆信息不存在,会提示该信息不存在。
4、修改车辆信息功能:该功能可以提供菜单选择某一项参数信息进行修改。选择想要修改的车辆信息编号,将需要修改的车辆信息输出,进行参数信息的修改。修改结束后,输出修改后的车辆信息。修改完成后,进行录入保存。
5、删除车辆信息功能:该功能可以提供菜单选择四种不同的方式进行删除:一、按车辆型号,二、按厂商,三、按车型级别,四、按车辆型号和厂商。将满足条件的车辆信息输出,如果找不到,则显示该信息不存在。否则判断是否删除(是:输入Y,否:输入N),删除结束后,进行录入保存。
6、排序浏览车辆信息功能:该功能可以提供菜单选择三种不同方式进行排序浏览:一、按价格,二、按座位,三、 按排量。
7、退出功能:可以实现退出车辆信息管理系统。(即结束程序)
8、所有的车辆信息可以存储在文件中,每次打开程序,可以把文件里的车辆信息导入到程序中,并且每次修改也可以保存在文件里,还有可以删除文件里面的车辆信息。

步骤二:分析业务逻辑

功能需求分析完毕后,接下来就是大体的功能交互分析,逻辑分析,画好系统程序流程图。注意这不是最终的流程图,如果在编写过程中有修改的话,也可以进行修改(也方便后期增加需求)
C语言课程设计-车辆信息管理系统

分析完业务逻辑之后,我们还需要考虑三个问题:1、数据的保存2、数据的展示3、用户的交互。
数据保存:
从题目来看数据应保存在文件中,我选择的是保存在txt文件中。
数据展示:
数据的可视化我是直接在控制台中进行输出。
用户交互:
用户的输入输出都是通过控制台,进行交互的。

步骤三:编写代码

定义数据结构:

struct Car //定义结构体 
{
  	int   number;         //编号 
 	char  type[20];       //车辆型号 
 	char  merchant[20];   //厂商 
 	char  level[20];      //车辆级别 
 	char  seet[10];       //座位数 
   	char  output[10];     //排量 
	char  gearbox[20];    //变速箱 
	char  colour[10];     //车身颜色 
	float price;	      //车辆价格 
}   c[100];               //定义100个结构体数组

准备数据,(在工程目录下新建一个file.txt的文件,用于存放数据)
注意:
每行数据用英文格式的空格隔开。
C语言课程设计-车辆信息管理系统

读取文件中的数据:

	FILE *fp;
	int i=0;
	fp=fopen("file.txt","r");    //读取文件中的车辆信息。
	while(!feof(fp)) 
	{
		fscanf(fp,"%d %s %s %s %s %s %s %s %f\n",&c[i].number,c[i].type,c[i].merchant,c[i].level,c[i].seet,c[i].output,c[i].gearbox,c[i].colour,&c[i].price);
		i++;                    //记录录入的车辆信息,每录入一条车辆信息i自增1。
	}
	fclose(fp);  //关闭文件 

保存数据到文件中:

	FILE *fp;
	int j;
	fp=fopen("file.txt","w");   //打开文件名为file的文件,文件file里面的车辆信息已经删除,重新录入。 
	for(j=0;j<i;j++)            //读取车辆信息
	{
		if(c[j].number!=0)      //判断编号是否是 0,如果是不输入,达到删除的目的,否则输入车辆信息。
		fprintf(fp,"%d %s %s %s %s %s %s %s %0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);               //录入车辆信息 
	}
	fclose(fp);  //关闭文件

主函数目录:

	int chose=0;       //定义chose用来选择功能 
	while(chose!=7)    //当chose等于7时结束循环。 
	{
		printf("                              欢迎使用车辆信息管理系统       \n");
		printf("                                    菜单目录                 \n");
		printf("                   ******************************************\n");
		printf("                   *     1→     录入车辆信息               *\n");
		printf("                   *     2→     浏览车辆信息               *\n");
		printf("                   *     3→     查询车辆信息               *\n");
		printf("                   *     4→     修改车辆信息               *\n");
		printf("                   *     5→     删除车辆信息               *\n");
		printf("                   *     6→     排序车辆信息               *\n");
		printf("                   *     7→         退出                   *\n");
		printf("                   ******************************************\n");   //菜单:方便选择需要的功能
		printf("请输入功能的选项:");
		scanf("%d",&chose);             //用于输入选择的功能
		switch(chose)
		{
			case 1:	input(c,i);i++;break;	           //功能1:录入 
			case 2:	browse(c,i);break;                 //功能2:浏览 
			case 3:	inquiry(c,i);break;                //功能3:查询
			case 4:	modify(c,i);rekeep(c,i);break;     //功能4:修改
			case 5:	delete_0(c,i);rekeep(c,i);break;   //功能5:删除
			case 6:	sort(c,i);break;                   //功能6:排序
			case 7:printf("欢迎下次使用!\n");break;   //功能7:退出
			default:printf("您输入的数据有误!\n请重新输入!\n");          //如果输入的数字不是1到7会显示您输入的数据有误!
		}
	}

接下来,就编写每一个功能函数~~~

1、void input(struct Car c[],int i) :为录入车辆信息功能的一个函数。主要功能为输入车辆信息,包括车辆型号、厂商、车型级别、座位数、排量、变速箱、车身颜色、车辆价格,并为新记录自动生成一个编号。输入时需按照指定的格式输入车辆信息(如果输入格式不对会有提示和需要重新输入)

void input(struct Car c[],int i)        //功能1:录入功能的定义 
{
	FILE *fp;
	fp=fopen("file.txt","a");          //定义文件file.tet,录入时录入文件里
	printf("请输入车辆的有关信息!\n\n");
	printf("请输入车辆型号:");
	scanf("%s",c[i].type); 
	
	printf("请输入厂商:");
	scanf("%s",c[i].merchant);
	
	printf("请输入车型级别:");
	scanf("%s",c[i].level); 
	
	printf("请输入座位数:");
	scanf("%s",c[i].seet); 	
	
	printf("请输入排量:");
	scanf("%s",c[i].output); 	
	
	printf("请输入变速箱:");
	scanf("%s",c[i].gearbox); 	
		
	printf("请输入车身颜色:");
	scanf("%s",c[i].colour); 		
		
	printf("请输入车辆价格:");
	scanf("%f",&c[i].price); 	
	while(c[i].price==0||c[i].price<0)       //容错处理,金额不能小于或等于零
	{
		printf("\n输入错误!\n价格不能为:零和负数\n\n");
		printf("请重新输入车辆价格:");
		scanf("%f",&c[i].price); 
	}
	
	c[i].number=i+1;             //自动生成一个编号 
	printf("输入完毕!\n\n");
	printf("______________________________________________________________________________________________________________________\n");  //输出新增的车辆信息。
	printf("   编号       车辆型号       厂商       车型级别     座位数/座    排量/T       变速箱        车身颜色     车辆价格/万\n");
	printf("    %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[i].number,c[i].type,c[i].merchant,c[i].level,c[i].seet,c[i].output,c[i].gearbox,c[i].colour,c[i].price);
	fprintf(fp,"%d %s %s %s %s %s %s %s %0.2f\n",c[i].number,c[i].type,c[i].merchant,c[i].level,c[i].seet,c[i].output,c[i].gearbox,c[i].colour,c[i].price);               //录入新的车辆信息 
	printf("______________________________________________________________________________________________________________________\n\n");
	fclose(fp);	 //关闭文件 
}

2、void browse(struct Car c[],int i) :为浏览所有车辆信息功能的一个函数。主要功能为输出已经输入的车辆信息以及后期修改后的车辆信息。并统计共有多少台车辆。

void browse(struct Car c[],int i)      //功能2:浏览功能的定义 
{
	int j;
	printf("______________________________________________________________________________________________________________________\n");
	printf("   编号       车辆型号       厂商       车型级别     座位数/座    排量/T       变速箱        车身颜色     车辆价格/万\n");
	for(j=0;j<i;j++)              //输出所有的车辆信息          
	{
	printf("    %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);	
	}
	printf("______________________________________________________________________________________________________________________\n");
	printf("共有%d台车辆\n\n",j);//输出一共有多少台车辆 
}

3、void inquiry(struct Car c[],int i) :为查询车辆信息功能的一个函数。里面同时也包含了四个函数。主要的功能为提供一个关于查询方式的菜单(1、按厂商查询 2、按车型级别查询 3、按车辆价格范围查询 4、按厂商和车型级别查询),里面的四个函数分别是:
一、void inquiry_1(struct Car c[],int i) :为按厂商查询的一个函数,主要功能为输出指定的厂商信息(若指定的厂商不存在,则会输出你查询的信息不存在,直接跳出函数)。
二、void inquiry_2(struct Car c[],int i) :为按车型级别查询的一个函数。主要功能为输出指定的车型级别信息(若指定的车型级别不存在,则会输出你查询的信息不存在,直接跳出函数)。
三、void inquiry_3(struct Car c[],int i) :为按车辆价格范围查询的一个函数。主要功能为输出指定的车辆价格范围内车辆信息(若价格不在范围之内,则会输出你查询的信息不存在,直接跳出函数)。
四、void inquiry_4(struct Car c[],int i) :为按厂商和车型级别查询的一个函数。主要功能为输出指定的厂商和车型级别的信息(若指定的厂商和车型级别不存在,则会输出你查询的信息不存在,直接跳出函数)。

void inquiry(struct Car c[],int i)     //功能3:查询功能的定义 
{
	int chose;	         //定义chose用来选择功能
	for(;chose!=5;)      //当chose=5时结束循环。即退出查询功能 
	{
	printf("                               需要选择的查询方式        \n");
	printf("                  ***************************************\n"); 
	printf("                  **     1   按厂商查询                **\n");
	printf("                  **     2   按车型级别查询            **\n");
	printf("                  **     3   按车辆价格范围查询        **\n");
	printf("                  **     4   按厂商和车型级别查询      **\n");
	printf("                  **     5      退出查询               **\n");
	printf("                  ***************************************\n"); //查询菜单:方便选择需要的功能
		printf("请输入功能的选项:");
		scanf("%d",&chose);		//输入需要选择的查询方式
		switch(chose)
		{
			case 1:inquiry_1(c,i);break;                            //查询功能1:按厂商查询
			case 2:inquiry_2(c,i);break;                            //查询功能2:按车型级别查询
			case 3:inquiry_3(c,i);break;                            //查询功能3:按车辆价格范围查询 
			case 4:inquiry_4(c,i);break;                            //查询功能4:按厂商和车型级别查询
			case 5:printf("已退出查询!\n");break;                  //查询功能5:退出查询功能 
			default:printf("您的输入有误!\n请重新输入!\n");         //如果输入的数字不是1到5会显示您输入的数据有误!
		}
	}
}
void inquiry_1(struct Car c[],int i)        //按厂商查询功能的定义 
{
	int j,a=0;              //定义a用于判断是否查询到信息
	char q1[20];            //定义数组q1用于输入的赋值以及进行比较查询
	printf("请输入需要查询的厂商:");
	scanf("%s",q1);        //输入需要查询的厂商
	for(j=0;j<i;j++)       //对输入的信息在原数据进行搜索并输出
	{
		if(strcmp(q1,c[j].merchant)==0)  //判断输入的厂商与已存在的厂商是否有相同的 
		{
			a++;		//用于显示有没有查询到相应的厂商的输出
			printf("______________________________________________________________________________________________________________________\n");
			printf("   编号       车辆型号       厂商       车型级别     座位数/座    排量/T       变速箱        车身颜色     车辆价格/万\n");
			break;
		}
	}
	
	for(j=0;j<i;j++)		//对输入的信息在原数据进行搜索并输出
	{
		if(strcmp(q1,c[j].merchant)==0)   //判断输入的厂商与已存在的厂商是否有相同的 
		printf("    %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);	
	}
	printf("______________________________________________________________________________________________________________________\n\n");
	
	if(a==0)              //对没有查询到信息进行输出
	printf("您所要查找的信息不存在!\n");	
}	

文章篇幅有限完整的代码我放到了文章的最后~~~有兴趣的同学可以看看

4、void modify(struct Car c[],int i) :为修改车辆信息功能的一个函数。主要功能为提供菜单选择某一项参数信息进行修改,包括车辆型号、厂商、车型级别、座位数、排量、变速箱、车身颜色、车辆价格。

void modify(struct Car c[],int i)       //功能4:修改功能的定义 
{
	int j,n;          //定义n用于输入想要修改的车辆信息编号。以及进行比较查询
	int h=0,t=0,b=0;  //定义h用于判断是否修改成功。 定义t用于判断是否退出俢改循环。定义b用于判断是否查询到信息。
	char m;           //定义m用于判断是否修改车辆信息。 
	int chose;        //定义chose用于选择功能
	browse(c,i);      //输出车辆信息表 
	
	while(b==0)       //此循环用于判断是否找到要修改的车辆信息编号
	{
		printf("请输入想要修改的车辆信息的编号:");
		scanf("%d",&n);   //输入想要修改的车辆信息的编号
		
		for(j=0;j<i;j++)       //对输入的信息在原数据进行搜索并输出
		{
			if(n==c[j].number)     //判断输入的编号是否存在 
			{
				b++;		
				printf("______________________________________________________________________________________________________________________\n");
				printf("   编号       车辆型号       厂商       车型级别     座位数/座    排量/T       变速箱        车身颜色     车辆价格/万\n");
				printf("    %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);
				printf("______________________________________________________________________________________________________________________\n\n");
				break;
			}
		}
		if(b==0)            //对没有查询到信息进行输出
		printf("您想要修改的信息不存在!\n\n");
	}

	printf("                               选择修改的类型        \n");
	printf("                  ***************************************\n"); 
	printf("                  **     1   按车辆型号                **\n");
	printf("                  **     2   按厂商                    **\n");
	printf("                  **     3   按车型级别                **\n");
	printf("                  **     4   按座位数                  **\n");
	printf("                  **     5   按排量                    **\n");
	printf("                  **     6   按变速箱                  **\n");
	printf("                  **     7   按车身颜色                **\n");
	printf("                  **     8   按车辆价格                **\n");
	printf("                  **     9     退出修改                **\n");
	printf("                  ***************************************\n"); //查询班费菜单:方便选择需要的功能
	while(t==0)     //此循环用于判断是否执行修改命令,如果不是1~9的命令,则会提示输入错误,请重新输入 
	{
		printf("请输入修改的类型:");
		scanf("%d",&chose);		//输入需要选择的修改方式
		switch(chose)
		{
			case 1: printf("输入新的车辆型号:");
					scanf("%s",c[j].type); 
					h++;t++;
					break;
			case 2: printf("输入新的厂商:");
					scanf("%s",c[j].merchant);
					h++;t++;
					break;
			case 3: printf("输入新的车型级别:");
					scanf("%s",c[j].level);
					h++;t++;
					break;
			case 4:	printf("输入新的座位数:");
					scanf("%s",c[j].seet);
					h++;t++;
					break;
			case 5: printf("输入新的排量:");
					scanf("%s",c[j].output);
					h++;t++;
					break;
			case 6: printf("输入新的变速箱:");
					scanf("%s",c[j].gearbox);
					h++;t++;
					break;
			case 7: printf("输入新的车身颜色:");
					scanf("%s",c[j].colour);
					h++;t++;
					break;
			case 8: printf("输入新的车辆价格:");
					scanf("%f",&c[j].price);
					while(c[j].price==0||c[j].price<0)       //容错处理,金额不能小于或等于零
					{
						printf("\n输入错误!\n价格不能为:零和负数\n\n");
						printf("请重新输入车辆价格:");
						scanf("%f",&c[j].price); 
					}
					h++;t++;
					break;
			case 9: printf("已退出修改!\n");t++;
					break;
			default:printf("输入错误!\n");//如果输入的数字不是上面的数字会输出:输入错误!	
		}
	}

	if(h!=0)
	{
		printf("______________________________________________________________________________________________________________________\n");  //输出修改后的车辆信息 
		printf("   编号       车辆型号       厂商       车型级别     座位数/座    排量/T       变速箱        车身颜色     车辆价格/万\n");
		printf("    %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);
		printf("______________________________________________________________________________________________________________________\n\n");
		printf("修改成功!\n\n");
	}
}

5、void Delete(struct Car c[],int i) :为删除车辆信息功能的一个函数。里面同时也包含了四个函数。主要功能为提供一个关于删除方式的菜单(1、按车辆型号删除 2、按厂商删除 3、按车型级别删掉 4、按车辆型号和厂商删除),里面的四个函数分别是:
一、void delete_1(struct Car c[],int i) :为按车辆型号删除的一个函数。主要功能为删除指定的车辆型号信息(若指定的车辆型号不存在,则会输出你查找的信息不存在)。
二、void delete_2(struct Car c[],int i) :为按厂商删除的一个函数,主要功能为删除指定的厂商信息(若指定的厂商信息不存在,则会输出你查找的信息不存在)。
三、void delete_3(struct Car c[],int i) :为按车型级别删除的一个函数。主要功能为删除指定的车型级别信息(若指定的车型级别信息不存在,则会输出你查找的信息不存在)。
四、void delete_4(struct Car c[],int i) :为按车辆型号和厂商删除的一个函数。主要功能为删除指定的车辆型号和厂商信息(若指定的车辆型号和厂商不存在,则会输出你查找的信息不存在)。

void delete_0(struct Car c[],int i)     //功能5:删除功能的定义
{
	int chose;       //定义chose用于功能选择。
	while(chose!=5)  //当chose等于5时,退出删除功能。
	{
		printf("                               需要选择删除的方式        \n");
		printf("                  ***************************************\n"); 
		printf("                  **     1   按车辆型号删除            **\n");
		printf("                  **     2   按厂商删除                **\n");
		printf("                  **     3   按车型级别删除            **\n");
		printf("                  **     4   按车辆型号和厂商删除      **\n");
		printf("                  **     5      退出删除               **\n");
		printf("                  ***************************************\n"); //删除菜单:方便选择需要的功能
		printf("请选择删除的方式:");
		scanf("%d",&chose);     //输入选择的功能
		switch(chose)
		{
			case 1:delete_1(c,i);break;                        //删除功能1:按车辆型号删除
			case 2:delete_2(c,i);break;                        //删除功能2:按厂商删除
			case 3:delete_3(c,i);break;                        //删除功能3:按车型级别删除
			case 4:delete_4(c,i);break;                        //删除功能4:按车辆型号和厂商删除
			case 5:printf("已退出删除!\n");break;             //删除功能5:退出删除功能 
			default:printf("您的输入有误!\n请重新输入!\n");    //如果输入的数字不是1到5会显示您输入的数据有误!
		}
	}
}
void delete_1(struct Car c[],int i)      //按车辆型号删除功能的定义 
{
	int j,b=0;           //定义b用于判断是否查询到信息
	char q1[20];         //定不义q1用于存放需要删除车辆型号。以及进行比较查询
	printf("请输入需要删除车辆型号:");
	scanf("%s",q1);      //输入需要删除车辆型号
	for(j=0;j<i;j++)     //对输入的信息在原数据进行搜索并输出
	{
		if(strcmp(q1,c[j].type)==0)  //判断输入的车辆型号和已存在的车辆型号是否有相同的
		{
			b++;		
			printf("______________________________________________________________________________________________________________________\n");
			printf("   编号       车辆型号       厂商       车型级别     座位数/座    排量/T       变速箱        车身颜色     车辆价格/万\n");
			break;
		}
	}
		
	if(strcmp(q1,c[j].type)==0)   //用于判断是否执行删除命令
	{
		for(j=0;j<i;j++)		//对输入的信息在原数据进行搜索并输出
		{
			if(strcmp(q1,c[j].type)==0)  //判断输入的车辆型号和已存在的车辆型号是否有相同的
			printf("    %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);
		}
		printf("______________________________________________________________________________________________________________________\n\n");
			
		char c1;          //定义c1用于输入Y或者N
		printf("确定删除该信息(Y/N):");
		getchar();        //用于清除回车
		scanf("%c",&c1);  //需要输入Y或者N
		while(c1!='Y'&&c1!='N')      //容错处理,用于判断是否是Y或者N,不是则需要重新输入
		{
			printf("输入错误,请重新输入(Y/N):");
			getchar();     //用于清除回车
			scanf("%c",&c1);//需要重新输入Y或者N
		}
			
		if(c1=='Y')        //判断c1是否等于Y 
		{
			for(j=0;j<i;j++)		//对输入的信息在原数据进行搜索并输出
			{
				if(strcmp(q1,c[j].type)==0)   //判断输入的车辆型号和已存在的车辆型号是否有相同的
				{
				c[j].number=0;
				strcpy(c[j].type," ");  
				strcpy(c[j].merchant," ");     
				strcpy(c[j].level," ");		
				strcpy(c[j].seet," ");	
				strcpy(c[j].output," ");	
				strcpy(c[j].gearbox," ");
				strcpy(c[j].colour," ");	
				c[j].price=0;
				}	
			}
			printf("删除成功!\n\n");
		}
		else
		{
		printf("已退出删除功能!\n");
		}
	}
		
	if(b==0)            //对没有查询到信息进行输出
	printf("您所要查找的信息不存在!\n\n");
}

6、void sort(struct Car c[],int i) :为排序浏览车辆信息功能的一个函数。主要功能为提供一个关于排序方式的菜单(1、按价格排序 2、按座位排序 3、 按排量排序),利用冒泡排序法进行排序。

void sort(struct Car c[],int i)    //功能6:排序功能的定义
{
	struct Car d[100];             //定义结构体d,作为临时变量,用于交换数据。 
	int j,k,chose=0;               //定义chose用于功能选择。 
	while(chose!=4)                //当chose等于4时,退出排序功能。 
	{
		printf("                                    排序浏览\n");
		printf("                   *****************************************\n");
		printf("                   **           1→   按价格              **\n");
		printf("                   **           2→   按座位              **\n");
		printf("                   **           3→   按排量              **\n");
		printf("                   **           4→   退出排序            **\n");
		printf("                   *****************************************\n");  //菜单:方便选择需要的功能
		printf("输入功能的选项:");
		scanf("%d",&chose);      //输入选择的功能
	 	switch(chose)
		{
		case 1:
		  	for(j=0;j<i-1;j++)        //利用冒泡排序法进行从大到小排序
			{
			for(k=0;k<i-1;k++)
				{
				if(c[k].price<c[k+1].price) //比较价格的大小 
			 	 	{
					  d[k]=c[k];//交换数据
					  c[k]=c[k+1];//交换数据
					  c[k+1]=d[k];//交换数据
				    }
				}
			}
			printf("______________________________________________________________________________________________________________________\n");//输出排序后的结果。
			printf("   编号       车辆型号       厂商       车型级别     座位数/座    排量/T       变速箱        车身颜色     车辆价格/万\n");
			for(j=0;j<i;j++)              //输出所有的车辆信息          
			{
			printf("    %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);	
			}
			printf("______________________________________________________________________________________________________________________\n");break; 
		case 2:
		  	for(j=0;j<i-1;j++)       //利用冒泡排序法进行从大到小排序
			{
			for(k=0;k<i-1;k++)
				{
				if(strcmp(c[k].seet,c[k+1].seet)<0)  //比较座位的大小 
			 	 	{
					  d[k]=c[k];//交换数据
					  c[k]=c[k+1];//交换数据
					  c[k+1]=d[k];//交换数据
				    }
				}
			}
			printf("______________________________________________________________________________________________________________________\n");//输出排序后的结果。
			printf("   编号       车辆型号       厂商       车型级别     座位数/座    排量/T       变速箱        车身颜色     车辆价格/万\n");
			for(j=0;j<i;j++)              //输出所有的车辆信息          
			{
			printf("    %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);
			}
			printf("______________________________________________________________________________________________________________________\n");break; 
		case 3:
			for(j=0;j<i-1;j++)       //利用冒泡排序法进行从大到小排序
			{
			for(k=0;k<i-1;k++)
				{
				if(strcmp(c[k].output,c[k+1].output)<0)  //比较排量的大小 
			  		{
					  d[k]=c[k];//交换数据
					  c[k]=c[k+1];//交换数据
					  c[k+1]=d[k];//交换数据
			  		}
				}
			}
			printf("______________________________________________________________________________________________________________________\n");//输出排序后的结果。
			printf("   编号       车辆型号       厂商       车型级别     座位数/座    排量/T       变速箱        车身颜色     车辆价格/万\n");
			for(j=0;j<i;j++)              //输出所有的车辆信息          
			{
			printf("    %-10d %-11s %-13s %-14s %-10s %-10s %-16s %-12s %-0.2f\n",c[j].number,c[j].type,c[j].merchant,c[j].level,c[j].seet,c[j].output,c[j].gearbox,c[j].colour,c[j].price);
			}
			printf("______________________________________________________________________________________________________________________\n");break;
		case 4: printf("已退出排序!\n");break;    //退出排序功能 
		default:printf("您输入的数据有误!\n请重新输入!\n");	 //如果输入的是其他数字,显示您输入的数据有误!
		}
	}
}

步骤四:功能测试

就随便测了几个功能,边测边改bug
功能1:录入车辆信息
C语言课程设计-车辆信息管理系统
功能2:浏览车辆信息
C语言课程设计-车辆信息管理系统
功能3:查询车辆信息
C语言课程设计-车辆信息管理系统

总结

程序优点:基本实现要求的所有功能,程序能较好的运行,而且用户输入错误时有保障机制,能让用户重新输入数据。实现了所需的功能操作和更加有序的程序代码,输出时也能清晰显示,避免了输出时不理解的现象。同时,各种功能之间也会有一定的关系。它对某些输入有特定的输入,以避免输入数据中的错误。

程序不足:没有采用链表存储车辆信息,每次需要引用车辆信息时都需要把车辆信息全部录入,消耗资源大。

遇到的困难:1、数据录入TXT时,打开TXT文件时,如果用“w”,会先删除文件中的内容。如果用“r+”,会先覆盖文件中的内容。“a”为追加模式每次写入时,位置指针都会指向文件结尾以便于追加新内容。
2、程序结束时要在最后关闭文件fclose ( fp ),否则不会保存。
3、在功能输入数字时,若输入其它数据,可能会出现错误和无限循环。
4、在修改功能上,选择某一项参数信息进行修改,没有想到更好的方法确定参数信息,没有实现循环修改。

完整代码下载!!!

资源下载路径一

资源下载路径二

!!!文章来源地址https://www.toymoban.com/news/detail-493885.html

到了这里,关于C语言课程设计-车辆信息管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学生信息管理系统MySql课程设计

    本篇文章是第一次发布在这个平台上,文章的内容是平时课程的一个小作业,由于时间不足,还有很多内容没有完善好,会继续下一次的修改,对该学生管理系统进行修改和创新, 一、 分析 1.1 业务分析   学生信息管理系统是一个面向学生和学校老师的一个多功能数据平台

    2024年02月06日
    浏览(38)
  • Python课程设计之学生信息管理系统

    核心代码 运行效果 核心代码 运行效果 核心代码 运行效果 核心代码 运行效果 核心代码 运行效果 核心代码 运行效果 核心代码 运行效果 核心代码 运行效果 点击下载

    2024年02月11日
    浏览(45)
  • MySQL课程设计——简易学生信息管理系统

    1.1.1 业务分析 学生信息管理系统时面向学生和学校教师的一个多功能数据管理平台。 1.1.2 分析系统 本系统所设计到的用户有学校在校学生、教师,对于不同的用户系统所提供给的功能也有所不同,其中对于学生来说,学生可以通过该系统进行学生基本信息查询、考试成绩查

    2024年02月09日
    浏览(43)
  • java课程设计(学生信息管理系统设计)+数据库

    🔍 🔎 本期带领大家一起来学习 java课程设计(学生信息管理系统设计)+数据库 的实现思路 🔍 🔎 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计学生信息管理系统,使之能提供以下功能: 1、系统以菜单方式工作 2、学生信息录入功能

    2024年02月08日
    浏览(53)
  • ASP.NET程序设计课程设计——学生信息管理系统

    点击查看详细信息 ASP.NET程序设计课程设计——学生信息管理系统 一、实验目的 综合运用们所学的ASP.NET知识,开发学生信息管理系统,完成相关功能: (1)教师管理 (2)学生信息 (3)课程信息 (4)成绩管理 (5)班级管理 二、实验环境 (1)Windows 10 (2)Visual Studio 2

    2024年02月03日
    浏览(52)
  • python课程设计——Django+vue信息管理系统

    python课程设计 之Django+vue2 文章目录 系列文章目录 前言 一、 信息管理系统的具体设计 二、 信息管理系统测试效果 三、结语 总结 python课程设计——Django+vue2 1 Django平台整体构建 一个完整的Django项目通常需要划分出很多不同的子模块进行设计,采用模块设计可以使得分工更加

    2024年02月05日
    浏览(62)
  • 【JSP课程设计】个人信息管理系统(代码保姆级)

    目录 开发工具及开发环境 WEB系统注册与登录功能模块需求 1.1 注册功能 1.2 登录功能 登陆时的过程: 1.3 填写补充信息功能 1.3 查看注册信息功能 1.4 修改用户信息功能 1.5 用户退出 1.6 其它功能 项目流程结构及源码 项目编写的流程(参考) 系统功能展示 JSP个人信息管理系统:

    2024年02月07日
    浏览(49)
  • 【JSP课程设计】个人信息管理系统(代码保姆级)【更新】

    目录 开发工具及开发环境 WEB系统注册与登录功能模块需求 1.1 注册功能 1.2 登录功能 登陆时的过程: 1.3 填写补充信息功能 1.3 查看注册信息功能 1.4 修改用户信息功能 1.5 用户退出 1.6 其它功能 项目流程结构及源码 项目编写的流程(参考) 系统功能展示 JSP个人信息管理系统:

    2024年02月03日
    浏览(37)
  • 数据库原理及应用课程设计--药品存储信息管理系统

    1.1项目提出 1.2.调查使用该药品存储信息数据库的用户的实际需求 1.3 功能需求 1.供应商基本信息模块,完成对供应商基本信息的输入、修改和查询; 2.员工基本信息模块,完成对员工基本情况的输入、修改和查询; 3.药品基本信息模块,完成对药品基本信息的输入、修改

    2024年02月08日
    浏览(39)
  • 高校人员信息管理系统(Java课程设计,带图形界面版)

    题目 1 、问题描述 某高校有四类员工:教师、实验员、行政人员,教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息由:所在实验室、职务;行政人员还包含的信息有:政治面貌、职称

    2024年02月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包