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) 可自己定义其他功能需求,并编码实现。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <conio.h>typedef struct car Car,*cheliang;struct car{char brand[20];//型号char manufacturar[15];//产商char degree[15];//等级int seats;//座位数float displacement;//排量char biansuxiang[20];//变速箱 char color[20];//颜色char price[30];//价格cheliang next;};
cheliang head,tail;
/************************************************************************ 说明:  从data.dat中读取车辆信息保存为单链表***********************************************************************/
void read_cars();
/************************************************************************ 说明:  把车辆信息写入data.dat中***********************************************************************/
void write_cars();
/************************************************************************ 说明:  新增车辆信息***********************************************************************/
void add_car();//没问题
/************************************************************************ 说明:  把所有的车辆信息输出到电脑***********************************************************************/
void display_cars();//没问题
/************************************************************************ 说明:  修改车辆信息***********************************************************************/
void change();
/************************************************************************ 说明:  查找车辆信息***********************************************************************/
void find();
/************************************************************************ 说明:  按车辆型号来查找车辆信息***********************************************************************/
void find_brand();
/************************************************************************ 说明:  按产商来查找车辆信息***********************************************************************/
void find_manufacturar();//没问题
/************************************************************************ 说明:  按车辆等级来查找车辆信息***********************************************************************/
void find_degree();
/************************************************************************ 说明:  按车辆价格来查找车辆信息***********************************************************************/
void find_price();
/************************************************************************ 说明:  删除车辆信息***********************************************************************/
void delete_car();
/************************************************************************ 说明:  通过车辆型号来删除车辆信息***********************************************************************/
void delete_car_brand();
/************************************************************************ 说明:  通过产商来删除车辆信息***********************************************************************/
void delete_car_manufacturar();
int main()
{read_cars();//读取文件int i;while(1){while(1){printf("请选择相关操作:\n1.增加车辆信息\n2.浏览车辆信息\n");printf("3.查询车辆信息\n4.修改车辆信息\n5.删除车辆信息\n6.保存数据并退出管理系统\n");printf("请输入数字选择要实现的功能:\n");scanf("%d",&i);if(i>=1&&i<=6){break;}else{printf("数字错误,请重新输入");}}switch(i){case 1: add_car();break;case 2: display_cars();break;case 3: find();break;case 4: change();break;case 5: delete_car();break;case 6: write_cars();//把数据信息保存到文件里printf("谢谢使用!\n");exit(0);}}return 0;
}
void read_cars()
{FILE *fp;if (0 != fopen_s(&fp, "data.dat", "a+b"))//fopen_s方法返回值是0或非0,0代表打开成功,非0代表打开失败{perror("打开文件失败,原因是");//perror(s) 用来将上一个函数发生错误的原因输出到标准设备(stderr)getch();exit(1);}cheliang car;head = (cheliang)malloc(sizeof(Car));if (NULL == head){printf("内存分配失败!\n");exit(EXIT_FAILURE);}head->next = NULL;tail = head;while (1){car = (cheliang)malloc(sizeof(Car));if (fread(car, sizeof(Car), 1, fp) == 0){free(car);break;}car->next = NULL;tail->next = car;tail = car;}fclose(fp);
}
void write_cars()
{FILE *fp;if (0 != fopen_s(&fp, "data.dat", "w+"))//打开文件{perror("打开文件失败,原因是");_getch();return;}cheliang car = head->next;while (car != NULL){fwrite(car, sizeof(Car), 1, fp);car = car->next;}fclose(fp);//关闭文件
}
void add_car()
{cheliang p,temp;p=(cheliang)malloc(sizeof(Car));if(p==NULL){printf("内存分配失败");exit(1);}printf("请输入车辆信息\n型号:");scanf("%s",p->brand);printf("商家:");scanf("%s",p->manufacturar);printf("等级:");scanf("%s",p->degree);printf("座位数:");scanf("%d",&p->seats);printf("排量:");scanf("%f",&p->displacement);printf("变速箱:");scanf("%s",p->biansuxiang);printf("颜色:");scanf("%s",p->color);printf("价格:");scanf("%s",p->price);if(NULL == head->next){head->next = p;p->next = NULL;}else{temp = head->next;//头插法head->next = p;p->next = temp;}printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n","车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",p->brand,p->manufacturar,p->degree,p->seats,p->displacement,p->biansuxiang,p->color,p->price);}
void display_cars()
{int a=0;cheliang p=head->next;if(NULL == head->next){printf("无车辆信息\n");return ;}printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n","车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");for(;p!=NULL;p=p->next){a++;printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",p->brand,p->manufacturar,p->degree,p->seats,p->displacement,p->biansuxiang,p->color,p->price);}printf("一共有%d台车辆信息",a);
}
void find()
{int k;while(1){printf("请选择查找方式:1.按照型号查找 2.按照产商查找 3.按照等级查找 4.按照价格查找");printf("请选择:");scanf("%d",&k);if(k>=1&&k<=4){break;}else{printf("数字错误,请重新输入");}}switch(k){case 1: find_brand();break;case 2: find_manufacturar();break;case 3: find_degree();break;case 4:find_price();break;}
}
void find_brand()
{cheliang p;p=head->next;printf("请输入要查找的型号:");char brand[20];scanf("%s",brand);int j=0;printf("您要找的资料是:\n");printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n","车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");while(p!=NULL){if(strcmp(p->brand,brand)==0){printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",p->brand,p->manufacturar,p->degree,p->seats,p->displacement,p->biansuxiang,p->color,p->price);p=p->next;j++;}elsep=p->next;}if(j==0){printf("该系统无该产商的车辆信息");}
}
void find_manufacturar()
{cheliang p;p=head->next;printf("请输入要查找的产商:");char manufacturar[15];int j=0;scanf("%s",manufacturar);fflush(stdin);printf("您要找的资料是:\n");printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n","车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");while(p!=NULL){if(strcmp(p->manufacturar,manufacturar)==0){printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",p->brand,p->manufacturar,p->degree,p->seats,p->displacement,p->biansuxiang,p->color,p->price);p=p->next;j++;}elsep=p->next;}if(j==0){printf("该系统无该产商的车辆信息");}
}
void find_degree()
{cheliang p;p=head->next;printf("请输入找要寻找的等级:");char degree[15];int j=0;scanf("%s",degree);printf("您要找的资料是:\n");fflush(stdin);printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n","车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");while(p!=NULL){if(strcmp(p->degree,degree)==0){printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",p->brand,p->manufacturar,p->degree,p->seats,p->displacement,p->biansuxiang,p->color,p->price);p=p->next;j++;}elsep=p->next;}if(j==0){printf("该系统无该等级的车辆信息");}
}
void find_price()
{cheliang p;p=head->next;//char price_max[30],price_min[30];int price_max,price_min;int j=0;printf("请输入价格的最大值:");scanf("%d",&price_max);fflush(stdin);printf("请输入价格的最小值:");scanf("%d",&price_min);fflush(stdin);printf("您要找的资料是:\n");printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n","车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");while(p!=NULL){if(atoi(p->price)>price_min && atoi(p->price)<price_max){printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",p->brand,p->manufacturar,p->degree,p->seats,p->displacement,p->biansuxiang,p->color,p->price);j++;}p=p->next;}if(j==0){printf("该系统无该价格范围的车辆信息");}
}
void change()
{cheliang q;int i;q=head->next;int j=0;printf("请输入要修改车辆的型号:\n");char brand[20];scanf("%s",brand);fflush(stdin);printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n","车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");while(q!=NULL){if(strcmp(q->brand,brand)==0){printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",q->brand,q->manufacturar,q->degree,q->seats,q->displacement,q->biansuxiang,q->color,q->price);j++;while(1){printf("1.改变型号 2.改变产商 3.改变等级 4.改变座位数 5.改变排量 6.改变变速箱 7.改变颜色 8.改变价格");printf("请输入要修改的车辆信息的类型:");scanf("%d",&i);if(i>=1&&i<=8){break;}else{printf("请输入正确的数字");}}switch(i){case 1:printf("型号:");char str1[20];scanf("%s",str1);strcpy(q->brand,str1);break;case 2:printf("产商:");char str2[15];scanf("%s",str2);strcpy(q->manufacturar,str2);break;case 3:printf("等级:");char str3[15];scanf("%s",str3);strcpy(q->degree,str3);break;case 4:printf("座位数:");int str4;scanf("%d",&str4);q->seats=str4;break;case 5:printf("排量:");float str5;scanf("%f",&str5);q->displacement=str5;break;case 6:printf("变速箱:");char str6[20];scanf("%s",str6);strcpy(q->biansuxiang,str6);break;case 7:printf("颜色:");char str7[20];scanf("%s",str7);strcpy(q->color,str7);break;case 8:printf("价格:");char str8[30];scanf("%s",str8);strcpy(q->price,str8);break;}printf("修改成功\n");printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",q->brand,q->manufacturar,q->degree,q->seats,q->displacement,q->biansuxiang,q->color,q->price);q=q->next;break;}else{q=q->next;}}if(j==0){printf("没找到你要的型号");}
}
void delete_car()
{int i;while(true){printf("按什么的方式寻找车辆:1.型号 2.产商\n");scanf("%d",&i);if(i>=1&&i<=2){break;}else{printf("数字错误,请重新输入");}}switch(i){case 1: delete_car_brand();break;case 2: delete_car_manufacturar();break;}
}
void delete_car_brand()
{cheliang p,q;int j=0;char brand[20];printf("请输入要删除的车辆的型号:");scanf("%s",brand);fflush(stdin);//p=head;q=head;printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n","车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");while(q->next!=NULL){if(strcmp(q->next->brand,brand)==0){printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",q->next->brand,q->next->manufacturar,q->next->degree,q->next->seats,q->next->displacement,q->next->biansuxiang,q->next->color,q->next->price);j++;p=q->next;q->next = q->next->next;printf("数据删除成功!\n");free(p);break;}elseq=q->next;}if(j==0){printf("该系统无你所要删除的车辆信息!\n");}
}
void delete_car_manufacturar()
{cheliang p,q;int j=0;char manufacturar[15];printf("请输入要删除的车辆的产商:");scanf("%s",manufacturar);fflush(stdin);q=head;printf("%-15s|%-15s|%-15s|%5s|%5s|%-15s|%-15s|%-5s\n","车辆型号", "厂商", "车型级别", "座位数", "排量(L)", "变速箱", "车身颜色", "车辆价格(万)");while(q->next!=NULL){if(strcmp(q->next->manufacturar,manufacturar)==0){printf("%-16s%-16s%-16s%-7d%-8.1f%-16s%-16s%-5s\n",q->next->brand,q->next->manufacturar,q->next->degree,q->next->seats,q->next->displacement,q->next->biansuxiang,q->next->color,q->next->price);j++;p=q->next;q->next = q->next->next;printf("数据删除成功!\n");free(p);break;}elseq=q->next;}if(j==0){printf("该系统无你所要删除的车辆信息!\n");exit(0);}
}

C语言大作业:车辆信息管理系统相关推荐

  1. 学委作业管理系统c语言,c语言大作业-学生信息管理系统.doc

    c语言大作业-学生信息管理系统.doc 课程设计报告书 题目:学生信息管理系统设计 学 院 电子与信息学院 专 业 电子信息类 学生姓名 学生学号 指导教师 课程编号 135160 课程学分 1学分 ...

  2. C语言大作业:车辆管理系统

    C语言大作业:车辆管理系统 声明 此代码使用VS2019编译器进行编译 使用 vc 和 dev-c 的有可能会出现编译警告,需要自己去网上查找相关的编译环境的问题 其次使用vs编译器也可能会报 C49 ...

  3. 哈工大C语言大作业-学生成绩管理系统

    哈工大C语言大作业-学生成绩管理系统 完整项目地址:https://github.com/944613709/Student-Performance-Management-System-ByC 说明 ...

  4. 【C】C语言大作业——学生学籍管理系统

    文章目录 学生管理系统 界面 主界面 登陆界面 注册界面 管理界面 学生界面 退出界面 链接 注意 学生管理系统 学C语言时写的一个大作业,弄了一个带图形界面的,使用的是VS配合EasyX图形库进行实 ...

  5. 安卓期末大作业——图书信息管理系统

    前言 随着信息技术的高速发展,科技逐渐走进各行各业,帮助人们快速.便利地完成一些工作.BMS系统是基于Android移动设备的应用软件,该系统能够帮助用户在家里通过手机查看相应图书馆的馆藏情况,而不用 ...

  6. c语言大作业书店图书管理系统,c语言课程设计 书店管理系统.pdf

    c语言课程设计 书店管理系统 计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24 日 一.选题背景: 设计一 ...

  7. c语言大作业书店图书管理系统,C语言_课程设计—书店图书管理系统.doc

    计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24日 一.选题背景: 设计一个图书管理系统,管理员通过登陆账 ...

  8. c语言大作业书店图书管理系统,C语言课程设计书店管理系统.pdf

    计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24 日 一.选题背景: 设计一个图书管理系统,管理员通过登陆 ...

  9. c语言大作业教室预约管理系统,C语言程序设计——教室管理系统(源代码))

    C语言程序设计--教室管理系统(源代码) 非常有用的. #include #include #include #define szSTR 64 #define fileDB "c:\\con ...

  10. 数据库大作业-学生信息管理系统

    软件:SQL Server:Visual Studio 语言:C#,SQL 两个身份,管理员和学生. 管理员功能:管理学生专业信息.课程信息.选课信息(增删改查),查看已注册过的同学信息(密码不可见, ...

最新文章

  1. windows QT kits配置
  2. python验证码识别接口 服务器_python验证码识别模块
  3. 2021年是“三蛇闹春,十鼠抢粮,十一牛耕田”,啥意思?
  4. Java多线程之可见性之volatile
  5. 在Windows系统下安装RabbitMQ
  6. 基于Redis的三种分布式爬虫策略
  7. linux下简单好用的端口映射转发工具rinetd
  8. canvas 小球碰撞
  9. C++二叉树的 前中后序遍历(学C++必看必会)深度优先遍历详解
  10. 如何在html中添加视频链接,在ppt中加入视频超链接的方法步骤
  11. 计算机地图制图pdf,计算机地图制图(资料).pdf
  12. vtuber面部捕捉工具_如何做一名VTuber?一个VUP就足够
  13. moc 文件自动生成
  14. 此博客更新较慢,主要用于微信公众号“申龙斌的程序人生”的备份了
  15. 树形DP(Simple Tree,玲珑杯 Round#8 B lonlife 1080)
  16. 学号 20175212童皓桢 《Java程序设计》第8周学习总结
  17. Google内部流传的反多样性文章(10页完整版中文翻译)
  18. 本科生毕业设计选题——计算机类
  19. 又一位程序员要去IPO敲钟:40岁,知乎老板做出200亿
  20. SQL SERVER中PERCENTILE_CONT和PERCENTILE_DISC

热门文章

  1. activiti7(三):Activiti7简介与HelloWorld
  2. 【FPGA】DS18B20温度显示
  3. 移卡旗下全新餐饮SaaS产品米粒餐收银发布 科技驱动零售餐饮业态场景创新
  4. 牛客练习赛89 第一题(牛牛吃米粒)
  5. 二阶系统响应指标图_自动控制理论_3.3 二阶系统的瞬态响应
  6. 手把手BC26模组OpenCPU开发之旅-1.简介
  7. 移远NB-IOT模块BC26资料
  8. 腾讯翻译君在线翻译怎么翻译整个文件_希腊语怎么翻译?教你两个超实用的翻译方法...
  9. 打开统计年鉴html,南京统计年鉴2018(HTML)
  10. RC延时电路延时计算