社区车辆信息管理系统
设计要求
车辆包含以下信息项:车辆编号、车辆名称、车辆厂家名称、车辆牌号、车主姓名、车主电话、车辆类型、车辆价值、车位号。
系统的主要功能包括:
(1)创建车辆信息文件,根据提示输入车辆的各项信息,按车辆编号对车辆信息进行排序,并将排序后的车辆信息存储到一个二进制文件中。
(2)增加车辆信息,在原有车辆信息文件的基础上增加新的车辆信息,要求:增加后的车辆信息仍按编号排序,并继续保存至文件。
(3)删除车辆信息,提示用户输入要进行删除操作的车辆编号,如果在文件中有该信息存在,则将该编号所对应的车辆信息删除,否则输出提示信息。并提示用户选择是否继续进行删除操作。
(4)修改车辆信息,提示用户输入要进行修改操作的车辆编号,如果在文件中有该息存在,则将提示用户输入该编号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。
(5)按不同条件对车辆信息进行查询操作,输出满足条件的车辆信息。
①按车辆牌号查询,输入一个编号,输出对应的车辆信息。
②按车主姓名查询,包括精确查询(输入全名),模糊查询(输入姓)。
③按车辆名称查询,输入车辆名称,输出该类车辆的全部信息。
④按车位号查询,输入车位号,输出相应车辆的信息。
(6)按不同条件对车辆信息进行统计工作。
①统计各车辆类型的个数及所占比例。
②统计各价位的车辆的个数及所占比例。
③统计各车辆厂家的车辆的个数及所占比例。
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 1000
#define OUT "%d\t%s\t%s\t%s\t%s\t%s\t%s\t%d\t%d\n"
#define AI c[i].id, c[i].car , c[i].cname , c[i].num , c[i].name, c[i].tel, c[i].lei, c[i].mon, c[i].cw
#define AJ &c[j].id, &c[j].car , &c[j].cname , &c[j].num , &c[j].name, &c[j].tel, &c[j].lei, &c[j].mon, &c[j].cw
#define AK &c[k].id, &c[k].car , &c[k].cname , &c[k].num , &c[k].name, &c[k].tel, &c[k].lei, &c[k].mon, &c[k].cw
#define head1 printf("------------------------------------------------------------------------------------------------------\n");
#define head2 printf("|车辆编号|车辆名称|车辆厂家名称| 车辆牌号 |车主姓名| 车主电话 | 车辆类型 | 车辆价值 | 车位号 |\n");
#define P "| %7d| %7s| %11s| %11s| %7s| %13s| %9s| %8d | %8d |\n"
#define BJ c[j].id, c[j].car , c[j].cname , c[j].num , c[j].name, c[j].tel, c[j].lei, c[j].mon, c[j].cw
int len = 0;
typedef struct contral
{
int id; //车辆编号
char car[20]; // 车辆名称
char cname[20]; //车辆厂家名称
char num[10]; //车辆牌号
char name[20]; //车主姓名
char tel[20]; //车主电话
char lei[10]; //车辆类型
int mon; //车辆价值
int cw; //车位号
}CON;
void menu(); //显示菜单
void creat(CON c[]); //创建文件
void add(CON c[]); //增加信息
void del (CON c[]); //删除信息
void display(CON c[]); //查找信息
void xiugai(CON c[]); //修改信息
void seek(CON c[]); //显示信息
void tj(CON c[]);
int main()
{
CON c[N];
while(1)
{
int select;
menu();
printf("请选择服务(0-6):");
scanf("%d",&select);
switch(select)
{
case 1:creat(c);break;
case 2:add(c);break;
case 3:del(c);break;
case 4:xiugai(c);break;
case 5:display(c);break;
case 6:tj(c);break;
case 7:seek(c);break;
case 0:exit(0);break;
default:printf("输入的数据有误,请重新输入\n");break;
}
}
return 0;
}
void menu() //c创建菜单
{
printf("\t\t\t\t---------------------------------------\n");
printf("\t\t\t\t|1.创建车辆信息文件|2.增加车辆信息 |\n");
printf("\t\t\t\t---------------------------------------\n");
printf("\t\t\t\t|3.删除车辆信息 |4.修改车辆信息 |\n");
printf("\t\t\t\t---------------------------------------\n");
printf("\t\t\t\t|5.查询车辆信息 |6.统计车辆信息 |\n");
printf("\t\t\t\t---------------------------------------\n");
printf("\t\t\t\t|7.显示车辆信息 |0.退出系统 |\n");
printf("\t\t\t\t---------------------------------------\n");
}
void creat(CON c[]) //创建文件
{
FILE *fp;
fp = fopen("社区车辆管理系统.txt","w");
int i,selcet;
for(i=len;;i++)
{
printf("请输入车辆编号:");
scanf("%d",&c[i].id);
printf("\n请输入车辆名称:");
scanf("%s",c[i].car);
printf("\n请输入车辆厂家名称:");
scanf("%s",c[i].cname);
printf("\n请输入车辆牌号:");
scanf("%s",c[i].num);
printf("\n请输入车主姓名:");
scanf("%s",c[i].name);
printf("\n请输入车主电话:");
scanf("%s",c[i].tel);
printf("\n请输入车辆类型:");
scanf("%s",c[i].lei);
printf("\n请输入车辆价值:");
scanf("%d",&c[i].mon);
printf("\n请输入车位号:");
scanf("%d",&c[i].cw);
len++;
printf("\n是否继续输入数据?0不再输入数据:\n");
scanf("%d",&selcet);
if(!selcet)
break;
}
CON t;
int j;
for(i = 0;i<len-1;i++) //冒泡排序法将数据按车辆编号排序
{
for(j = i+1;j<len;j++)
{
if(c[i].id>c[j].id)
{
t = c[i];
c[i] = c[j];
c[j] = t;
}
}
}
for(i = 0;i<len;i++) //将排序后的数据写入二进制文件中
{
fprintf(fp,OUT,AI);
}
printf("