为杭州市车辆管理所建立车辆信息录入系统。编写具有下列功能的菜单驱动的程序。

  • 添加车辆信息
  • 显示所有车辆信息
  • 删除车辆信息 让操作者输入要删除车辆的车牌,将其删除
  • 查询车辆信息 让操作者输入要查询车辆的车牌,显示其信息或提示无
  • 清空车辆信息
  • 更新车辆信息
  • 退出系统
    啥也不敢说,啥也不敢问,直接看代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//车辆信息管理系统
typedef struct{char Card[10];//车牌号char owner[5];//车组姓名char brand[5];//汽车品牌double height;//汽车高度double weight;//汽车重量int  year;//购买年份
}Car;
int M=0;//M表示文件中Car的个数
void Start();//显示欢迎头信息
void Home();//主界面,输入功能选择
void Over();//结束导语
void Head();//打印可选可能
void Function(int key);//功能函数
void Add();//添加Car信息
void WriteData(Car *C);//写入一个Car信息
void Show();//显示所有车辆信息
void Delete();//输入车牌号,删除其附有的车辆信息
void Search();//根据车牌号搜索车辆信息
void Clear();//清空文件,类似删库跑路
void GetM();//获取存储信息个数
void Upgrade();//更新车辆信息
int Check(char Num[]);//检测是否存在相应的车牌号,车牌号唯一不可重复
void ReNew(Car *A);//更新写入新的信息
int main()
{system("Color 1e");//系统背景颜色变化Start();Home();return 0;
}
void Start()
{printf("<<<<<<<<---------------------------------------------------->>>>>>>>>>\n");printf("              欢迎使用车辆信息管理系统                    \n");printf("<<<<<<<<---------------------------------------------------->>>>>>>>>>\n");return;
}
void Home()
{GetM();//首先获取当前文件中信息个数Head();while(1){printf("请输入选择的功能:");int t;scanf("%d",&t);if(t!=0&&t!=1&&t!=2&&t!=3&&t!=4&&t!=5&&t!=6)//判读输入选择是否正确,只能是特定选择{printf("输入有误!!\n");continue;//输入有误需要重新输入}if(t==0)//不断循环,知道t=0退出循环break;elseFunction(t);//不退出的话就进入功能函数}Over();//结束导语return;
}
void Head()
{printf("\n\n<<<<<<<<<<<<----功能选择---->>>>>>>>>>>>>>>\n\n");printf("-------------1.添加车辆信息\n");printf("-------------2.显示所有车辆信息\n");printf("-------------3.删除车辆信息\n");printf("-------------4.查询车辆信息\n");printf("-------------5.更新车辆信息\n");printf("-------------6.清空车辆信息\n");printf("-------------0.退出系统\n\n\n");return;
}
void Over()                       //退出系统
{printf("\n\t\t>>>>>>>>Welcome back!!<<<<<<<<<\n");exit(0);
}
void Function(int key)//功能选择
{switch(key)//switch语句根据传入的值选择功能函数{case 1:    Add();break;case 2:    Show();break;case 3:    Delete();break;case 4:    Search();break;case 5:    Upgrade();break;case 6:    Clear();break;}return;
}
void GetM()//获取信息数量
{FILE *fp;if((fp=fopen("CarInfo.txt","r"))==NULL){printf("Fail to Open it");exit(0);}//只读方式打开文件fseek(fp, 0, SEEK_END);//定位到文件尾部int nFileLen = ftell(fp);//ftell函数能够计算文件头当当前位置的偏移自字节数fseek(fp, 0, SEEK_SET);//重新回到文件头位置M=nFileLen/sizeof(Car);//字节数/单个结构体数=存储的车辆信息个数return;
}void Add()//添加车辆信息
{while(1){Car C;//输入若干的车辆信息,通过键盘Ctrl+Z按键结束输入,if(scanf("%s%s%s%lf%lf%d",C.Card,C.owner,C.brand,&C.height,&C.weight,&C.year)!=EOF){if(Check(C.Card)==1)//首先检测是否有相同车牌号{//存在的话就无法写入,因为车牌号是关键字,不能有相同的车牌号的车printf("车牌%s信息已经存在,禁止重复\n",C.Card);continue;//继续输入}else{M++;WriteData(&C);//如果没有冲突,则写入}}elsebreak;}return;
}
void WriteData(Car *C)
{FILE *fp;if((fp=fopen("CarInfo.txt","a"))==NULL)//以添加的方式打开,写位置在文件尾部{printf("Fail to Open it");exit(0);}fwrite(C,sizeof(Car),1,fp);//写入一个车的信息fclose(fp);return;
}
void Show()//打印所有信息
{if(M==0){printf("数据库内无车辆信息\n");return;}//M=0没有车辆信息FILE *fp;if((fp=fopen("CarInfo.txt","r"))==NULL){printf("Fail to Open it");exit(0);}//以只读方式打开printf("当前信息库中共有%d台车辆信息\n",M);printf("车主姓名    车牌号\t汽车品牌    车长    车高    购买年份\n");for(int i=0;i<M;i++){Car B;fread(&B,sizeof(Car),1,fp);//共有M个,每次读取一个到Bprintf("%-7s\t    %-7s\t%-5s\t    %-4.2f    %-4.2f    %-4d\n",B.owner,B.Card,B.brand,B.height,B.weight,B.year);}//打印输出,注意对齐printf("\n");fclose(fp);return;
}
void Search()//搜素信息
{char Num[10];printf("输入要查找的车牌号:\n");scanf("%s",Num);//输入车牌号FILE *fp;if((fp=fopen("CarInfo.txt","r"))==NULL){printf("Fail to Open it");exit(0);}//以只读方式打开int flag=0;for(int i=0;i<M;i++){Car B;fread(&B,sizeof(Car),1,fp);//读取一个信息if(strcmp(B.Card,Num)==0)//找到车牌相同的信息了{ //打印信息printf("车辆信息:\n");printf("车主姓名是%s\n",B.owner);printf("车牌号为%s\n",B.Card);printf("汽车品牌为:%s\n",B.brand);printf("于%d年购买此车\n",B.year);printf("车长:%.2f米   重量:%.2f吨\n",B.height,B.weight);flag=1;break;}}if(flag==0)//如果flag没有变化说明没有找打信息printf("没有找到车牌号为%s的车辆信息",Num);printf("\n");fclose(fp);return ;
}void Delete()
{char Num[10];printf("输入要删除车辆的车牌号:\n");scanf("%s",Num);//输入车牌号FILE *fp,*fq;if((fp=fopen("CarInfo.txt","r+"))==NULL){printf("Fail to Open it");exit(0);}//以读写的方式打开,写的时候不会清空文件fq=fopen("Temp.txt", "w+");以读写的方式打开,写的时候会清空文件Car A;while (fread(&A, sizeof(Car), 1, fp))//从原文件读一个结点{if (strcmp(A.Card, Num)!=0)//不是要删除的内容的话fwrite(&A, sizeof(Car), 1, fq);//写入临时文件}fclose(fp);fclose(fq);fq = fopen("Temp.txt", "r");//从临时文件读出来fp = fopen("CarInfo.txt", "w+");//原来文件存在,所以会清空while (fread(&A, sizeof(Car), 1, fq)){fwrite(&A, sizeof(Car), 1, fp);//写入原文件}fclose(fp);fclose(fq);M--;//个数减1return;
}void Upgrade()
{Car A;printf("请输入更新的信息!\n");scanf("%s%s%s%lf%lf%d",A.Card,A.owner,A.brand,&A.height,&A.weight,&A.year);//输入要更新的信息if(Check(A.Card)==0)//查看是否存在这台车,要更新文件中必存在有相同的车牌号的车{printf("不存在车牌为%s的车辆信息无法更新",A.Card);return ;}ReNew(&A);//更新信息函数return;
}void ReNew(Car *A)
{FILE *fp;if((fp=fopen("CarInfo.txt","r+"))==NULL){printf("Fail to Open it");exit(0);}//以读写方式打开,写的时候不清空已有文件Car B;while(fread(&B,sizeof(Car),1,fp)==1){if(strcmp(B.Card,A->Card)==0)//找到修改目标{fseek(fp,-sizeof(Car),SEEK_CUR);//指针移至修改目标前fwrite(A,sizeof(Car),1,fp);//写入新的数据覆盖原来的数据printf("修改成功\n");break;}}fclose(fp);return;
}
void Clear()//清空信息
{remove("CarInfo.txt");//移除FILE *fp;if((fp=fopen("CarInfo.txt","w"))==NULL)//再生成{printf("Fail to Open it");exit(0);}fclose(fp);M=0;return;
}int Check(char Num[])//搜素信息
{FILE *fp;if((fp=fopen("CarInfo.txt","r"))==NULL){printf("Fail to Open it");exit(0);}//只读方式打开for(int i=0;i<M;i++){Car B;fread(&B,sizeof(Car),1,fp);if(strcmp(B.Card,Num)==0)//比较车牌号是否相等return 1;}printf("\n");fclose(fp);return 0;
}

运行结果:



测试数据:
京L88999 张三 奔驰 3.4 2.05 2010
沪PH3X00 李四 奥迪 3.5 2.10 2018
浙C6P319 王五 宝马 3.2 2.08 2009
黑AF1949 赵六 大众 3.4 2.07 2014
苏DER238 老九 红旗 3.3 2.04 2015
湘A86888 猪头 福特 3.5 2.10 2011
川C2D318 山鸡 丰田 3.2 2.06 2019
辽GM2513 老炮 吉利 3.0 2.05 2017
辽GM2513 死鬼 吉利 3.0 2.05 2017

程序设计实践之车辆信息管理系统相关推荐

  1. 基于Java+控制台实现车辆信息管理系统

    基于Java+控制台实现车辆信息管理系统 一.系统介绍 二.功能展示 1.主要功能 2.查看所有车辆信息 3.车辆信息添加 4.车辆信息查询 5.车辆信息删除 三.系统实现 1.car.java 四. ...

  2. ASP.NET程序设计课程设计——学生信息管理系统

    点击查看详细信息 ASP.NET程序设计课程设计--学生信息管理系统 一.实验目的 综合运用们所学的ASP.NET知识,开发学生信息管理系统,完成相关功能: (1)教师管理 (2)学生信息 (3)课程 ...

  3. 基于C#实现的车辆信息管理系统

    目录 一.题目:车辆信息管理系统 1 二.内容: 1 (1)概述或引言 1 (2)程序概要设计 1 (3)程序详细设计 2 (4)程序使用说明 4 (5)总结 8 三.参考文献 10 一.题目:车辆信 ...

  4. Python程序设计之 —— 简易学生信息管理系统

    大家好,我是 Enovo飞鱼,今天分享一个 Python程序设计之 -- 简易学生信息管理系统 ,小白或者正在学习Python的小伙伴推荐阅读,加油

  5. c语言程序设计课程设计学生信息管理系统,C语言程序设计课程设计报告----学生信息管理系统.doc...

    河南理工大学计算机学院 <C语言程序设计>课程设计报告 题目: 学生信息管理系统 专业: 计算机科学与技术 班级: 计算机XX班 学号: 311009033232 姓名: ***** 日期 ...

  6. python入门基础——综合实践(学生信息管理系统的构建)

    ​ 学习语言与实践是紧密相连的,本人在学习一段时间的python语言后,运用初步学习的知识,实现了学生信息管理系统1.0,并且在学习更多知识后,会逐步完善该系统 首先要明确该系统能实现的功能: 其次, ...

  7. 基于asp.net805小区停车场(车位车库)车辆信息管理系统

    本文主要研究是如何开发一套小区车位信息管理系统,来帮助小区或者停车场来管理车库和停车的信息管理的一套管理系统.本小区车位信息管理系统主要实现了对固定车辆的信息管理,对临时车辆的信息管理以及车辆的进站, ...

  8. c语言QQ管理系统四百条,C语言程序设计论文-工会成员信息管理系统.doc

    电子科技大学成都学院 程序综合设计论文 论文题目 工会成员信息管理系统 学生姓名 学 号 专 业 通信工程 系(分院) 通信与信息工程系 授课教师 2015年5月制 摘 要 c语言是一种编程语言,用于 ...

  9. c语言车辆信息管理系统,用c语言编的车辆管理

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 (1)管理人员根据口令进入系统: (2)资费信息录入: a)通过界面录入资费数据,包括:型号编码.型号名称和每小时的费用,如: 型号编码型号名称每小时的费 ...

  10. C语言程序设计--体测成绩信息管理系统

    #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX(x,y) (x>y?x ...

最新文章

  1. 6、MySQL慢查询日志(Slow Query Log)
  2. java ssm框架详解_Java的SSM框架怎样才算真正掌握?
  3. 网络知识:电脑无线网连接不上问题汇总!
  4. php 面向对象 教程,PHP学习笔记之面向对象设计_PHP教程
  5. C++ 11 深度学习(六)智能指针综述
  6. python企业微信回调_回调模式
  7. java 字符串是否包含字符串_在Java中,如何检查字符串是否包含子字符串(忽略大小写)?...
  8. HDU 5752 Sqrt Bo【枚举,大水题】
  9. python的requests库安装失败_robot framework-requests库安装过程问题解决
  10. Lecture Notes: Macros
  11. SQLyog安装地址
  12. Long-distance navigation and magnetoreception in migratory animals(迁徙动物中的长距离导航和磁感应)...
  13. 根据缠论选择盘整股票或者期货合约
  14. 使用Photoshop辅助线制作ps切片教程
  15. 2023 闲鱼扫码自动收货跳转支付宝HTML源码
  16. uniapp 打包成安卓app
  17. Java并发指南1:并发基础与Java多线程
  18. Handler消息机制介绍,流程梳理
  19. 基于Hough变换的人眼虹膜定位
  20. geany配置python_python使用Geany编辑器配置方法

热门文章

  1. 深度学习系列43:引入注意力的SAGAN/BigGAN和big_sleep
  2. 昆仑通泰触摸屏与PLC通讯故障处理
  3. Dev-cpp5.4.0安装及下载
  4. STM32F205通过SDIO和SPI读写SD卡文件
  5. C# matlab中标准差计算方法
  6. html短竖线符号,word竖线符号
  7. Microsoft Visual Studio 的下载与安装(傻瓜式)
  8. Java applet详解
  9. Sublime好看的字体
  10. ISO14001认证