刚写完,好累。还有很多bug,你看看会不会改,不行的话我有时间再帮你改。各位有什么意见的也可以告诉我

编译器是VC6

#include

#include

#include

#define MaxNum 20

typedef struct A{

int No; /*车辆编号*/

char Type; /*车类型*/

int Payment;/*租费*/

int fine; /*罚金*/

struct A *next;/*指向下一个结点*/

} car;

typedef struct B{

int No; /*顾客编号*/

char Name[20]; /*顾客姓名*/

char License; /*执照类别*/

int carNo; /*租凭的车辆编号*/

int Day; /*租的天数*/

int DelayDay;/*延迟的天数*/

struct B *next;

} client;

struct C{/*这个结构体是车辆链表的头结点,A,B,C每种类型有一种*/

char Type;/*车辆型号*/

int avl; /*可用数*/

car *head;/*指向车辆结点*/

} headNode[3]={{'A',MaxNum,NULL},{'B',MaxNum,NULL},{'C',MaxNum,NULL}} ;

client *allClien=NULL;

int pay[3]={400,300,200},fine[3]={600,500,400};

void init();/*初始化*/

int menu();/*简单菜单界面*/

void search();/*查询*/

void carSc(); /*查询车辆*/

void clientSc();/*查询顾客*/

void rent(); /*租车*/

void giveback();/*还车*/

void addCli(client *cli);/*向顾客链表增加顾客*/

client* delCli(int clientNo);/*从顾客链表删除一个顾客*/

void addCar();/*向车辆链表归还车辆*/

car* delCar();/*从车辆链表拿出一辆车*/

void Exit();/*退出*/

void main()

{

init();

while(1)

{

switch(menu())

{

case 1:search();break;

case 2:rent();break;

case 3:giveback();break;

case 4:Exit();

default:;

}

}

}

void init()

{

int i;

car *ptr,*pa=headNode[0]。

head,*pb=headNode[1]。head,*pc=headNode[2]。head;

for(i=1;iNo=100 i;

ptr->Type='A';

ptr->Payment=400;

ptr->fine=600;

pa=ptr;

pa=ptr->next;

ptr=ptr=(car *)malloc(sizeof(car));

ptr->No=200 i;

ptr->Type='B';

ptr->Payment=300;

ptr->fine=500;

pb=ptr;

pb=ptr->next;

ptr=(car *)malloc(sizeof(car));

ptr->No=300 i;

ptr->Type='C';

ptr->Payment=200;

ptr->fine=400;

pc=ptr;

pc=ptr->next;

}

pa=NULL;pb=NULL;pc=NULL;

}

int menu()

{

int choice;

printf("

选择服务:1。

查询 2。租车 3。归还 4。退出

");

scanf("%d",&choice);

while(choice!=1&&choice!=2&&choice!=3&&choice!=4)

{

printf("

输入有误,重新输入:");

scanf("%d",&choice);

}

return choice;

}

void search()

{

int choice;

printf("

你想查询:1。

汽车 2。顾客 3。返回

");

scanf("%d",&choice);

while(choice!=1&&choice!=2&&choice!=3)

{

printf("

输入有误,重新输入:");

scanf("%d",&choice);

}

switch(choice)

{

case 1:carSc(); break;

case 2:clientSc(); break;

case 3: ;

default:;

}

}

void carSc()

{

printf("

所有汽车信息:

");

printf("

A类汽车还剩%d辆。

B类汽车还剩%d辆。

C类汽车还剩%d辆。",

headNode[0]。avl,headNode[1]。avl,headNode[2]。avl);

}

void clientSc()

{

client *ptr=allClien;

printf("

所有顾客信息:

");

while(ptr!=NULL)

{ printf("

顾客编号:%d",ptr->No);

printf("

顾客姓名:%s",ptr->Name);

printf("

驾照类型:%c",ptr->License);

printf("

租赁车号:%d",ptr->carNo);

printf("

租赁天数:%d",ptr->Day);

printf("

延迟天数:%d",ptr->DelayDay);

ptr=ptr->next;

}

}

void addCli(client *cli)

{

if(allClien)

allClien=cli;

else

{

cli->next=allClien->next;

allClien=cli;

}

}

client* delCli(int clientNo)

{

client *ptr,*prePtr;;

ptr=allClien;

while(ptr!=NULL&&ptr->No!=clientNo)

{ prePtr=ptr;

ptr=ptr->next;

}

if(ptr!=NULL)

{

if(ptr==allClien)

{

allClien=NULL;

}

else

{

prePtr->next=ptr->next;

}

}

return ptr;

}

void rent()

{

char name[20],type,Yes_No;

int num,day,No;

car *carPtr;

client *cli;

printf("

输入执照类型(A/B/C):");

scanf("%c",&type);

while(type!='A'&&type!='B'&&type!='C')

{

printf("输入有误,重新输入:");

scanf("%c",&type);

}

if(type=='A')

num=headNode[0]。

avl;

else if(type=='B')

num=headNode[1]。avl;

else

num=headNode[2]。

avl;

printf("

%c类汽车还剩%d辆,是否要租凭(Y/N):",type,num);

scanf("%c",&Yes_No);

while(Yes_No!='Y'&&Yes_No!='N'&&Yes_No!='y'&&Yes_No!='n')

{

printf("Y或N:");

scanf("%c",&Yes_No);

}

/*增加顾客*/

if(Yes_No=='Y'||Yes_No=='y')

{

printf("

输入你的名字:");

scanf("%s",name);

printf("

输入你的租赁天数:");

scanf("%d",&day);

}

No=rand()` 200;

carPtr=delCar(type);

cli=(client *)malloc(sizeof(client));

cli->No=No;

strcpy(cli->Name,name);

cli->License=type;

cli->carNo=carPtr->No;

cli->Day=day;

cli->DelayDay=0;

cli->next=NULL;

addCli(cli);

/*移出一辆车*/

printf("

你的顾客编号是:%d",No);

printf("

你所租赁的汽车是%c类车,车号是:%d",type,carPtr->No);

printf("

你的租赁天数是%d天。

",day);

}

void giveback()

{

int No;

long int payment;

client *ptr;

printf("

顾客编号:");

scanf("%d",&No);

if((ptr=delCli(No))==NULL)

printf("

该顾客不存在,无法归还!");

else

{

switch(ptr->License)

{

case 1:payment=ptr->Day*400 ptr->DelayDay*600;break;

case 2:payment=ptr->Day*300 ptr->DelayDay*500;break;

case 3:payment=ptr->Day*200 ptr->DelayDay*400;break;

default:;

}

printf("

顾客姓名:%s",ptr->Name);

printf("

驾照类型:%c",ptr->License);

printf("

租赁车号:%d",ptr->carNo);

printf("

租赁天数:%d",ptr->Day);

printf("

延迟天数:%d",ptr->DelayDay);

printf("

所需费用:%ld",payment);

addCar(ptr->License,ptr->carNo);

free(ptr);

}

}

void addCar(char carType,int carNo)

{

car *ptr;

int index=carType-65;

ptr=headNode[index]。

head;

if(ptr==NULL)

{ptr=(car *)malloc(sizeof(car)); headNode[index]。head=ptr; }

else

{while(ptr->next) ptr=ptr->next; ptr->next=(car *)malloc(sizeof(car)); ptr=ptr->next; }

ptr->No=carNo;

ptr->Type=carType;

ptr->Payment= pay[index];

ptr->fine=fine[index];

ptr->next=NULL;

}

car* delCar(char type)

{

car *rentcar;

switch(type)

{

case 'A':rentcar=headNode[0]。

head;

headNode[0]。head=rentcar->next;

break;

case 'B':rentcar=headNode[1]。

head;

headNode[1]。head=rentcar->next;

break;

case 'C':rentcar=headNode[2]。

head;

headNode[2]。head=rentcar->next;

break;

default:;

}

return rentcar;

}

void Exit()

{

printf("

欢迎使用。

。。。。888888888886666。。。。");

exit(0);

}。

全部

c语言汽车租赁系统实验报告,汽车租赁系统的c语言,数据结构的语言程序相关推荐

  1. matlab信号系统实验报告,信号与系统 MATLAB实验报告

    信号与系统 MATLAB 实验报告 <信号与系统>MATLAB 实验报告 院系: 专业: 年级: 班号: 姓名: 学号: 实验时间: 实验地点: 实验一 连续时间信号的表示及可视化 实验题 ...

  2. 用C语言学生成绩数据库排序功能设计,[c语言学生成绩管理系统]C语言学生成绩管理系统实验报告...

    篇一 : C语言学生成绩管理系统实验报告 实 验 四:结构体(6学时) 实验目的: 1.更加灵活的使用数组作为函数参数: 2.初步掌握开发一个小型实用系统的基本方法: 3.初步掌握书写程序设计开发文档 ...

  3. c语言飞机票实验报告格式,c语言航班信息查询系统实验报告

    <c语言航班信息查询系统实验报告>由会员分享,可在线阅读,更多相关<c语言航班信息查询系统实验报告(21页珍藏版)>请在人人文库网上搜索. 1.希昌丸會软件学院大作业任务书题目 ...

  4. c语言课设航班信息管理软件管理系统,c语言航班信息查询系统实验报告.doc

    c语言航班信息查询系统实验报告.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3 ...

  5. c语言程序设计航空查询系统,c语言航班信息查询系统实验报告.doc

    c语言航班信息查询系统实验报告 PAGE 13 - 软件学院大作业任务书 题 目:航班信息查询系统 专 业: 班 级: 姓 名: 学 号: 完成人数: 起讫日期: 任课教师: 职称: 讲师 部分管主任 ...

  6. c语言链表做歌手比赛系统,大型实验报告(歌手比赛系统)

    <大型实验报告(歌手比赛系统)>由会员分享,可在线阅读,更多相关<大型实验报告(歌手比赛系统)(5页珍藏版)>请在人人文库网上搜索. 1.呀歩垂不主邂目蜃轨运(Z)SIO乙/讥 ...

  7. 杭电c语言课程设计短学期第七次作业,杭电短学期数字电子钟整点报时系统实验报告...

    杭电数字电子钟整点报时系统实验报告 链接: http://pan.杭电baidu.杭电com杭电/s杭电/1nuxwOdz 密杭电码: k4yy 1. 自主设计: 1.1选题目的 数字电子钟是一种用数 ...

  8. c语言课题设计字符串处理函数报告,C语言输入输出库函数设计实验报告.doc

    C语言输入输出库函数设计实验报告 第 PAGE \* MERGEFORMAT I页 共 SECTIONPAGES \* MERGEFORMAT 1页 华中科技大学计算机科学与技术学院 C语言课程设计报 ...

  9. 《c语言程序设计》实验(上机)报告,《c语言程序设计》上机实验报告要求

    <c语言程序设计>上机实验报告要求 1. 实验环境: 软件系统:使用的软件环境 硬件系统:机型说明 2. 实验目的:掌握如何编辑.编译.链接调试运行c程序 3. 实验内容: (1) 掌握顺 ...

  10. java学生考勤系统实验报告,程序设计实验报告学生考勤系统).doc

    程序设计实验报告学生考勤系统) C语言程序设计 课程报告 所在学院计算机科学学院所在班级计算机科学与技术1班 小组成员XX(组长) XXX(副组长) XXX(组员) XXX(组员) 指导老师XXX X ...

最新文章

  1. 如何在修改checkbox状态,不触发事件
  2. Spring Boot使用maven打包成jar后将依赖jar一起打进jar文件
  3. php和java语言_JAVA语言和PHP语言的比较
  4. Python - 按天算年龄
  5. Linux du指令
  6. mysql触发器新元组_MySQL触发器-条件触发器语法
  7. 推荐几个在大厂996,却一心想要按时下班的公众号主和他们的工作(摸鱼)心得...
  8. 导入了jar包但是无法import方法
  9. VS开发中,常见编译问题解决方案
  10. 幅频特性和相频特性的物理意义
  11. edk2中的全局变量gST和gBS
  12. 信息 按顺序打印commit_Git 工作流,看这一篇就够了
  13. 计算机桌面分页,你的电脑桌面还会一团糟吗?这款软件可以帮你整理文件
  14. Rhythmbox中mp3中文乱码问题
  15. 人工智能计算机技术图片,这是人工智能眼中它自己的样子
  16. 华为27asph是什么型号_华为官宣新增P40 Pro+等27款机型支持换原装电池,有你的手机吗?...
  17. 网络游戏服务器端架构设计
  18. windows画图板 ESL转RGB 实现区间渐变色
  19. (Swift)Missing argument for parameter #1 in call
  20. 如何进行自媒体创业?你是否能把握住,短视频都有哪些变现方式?

热门文章

  1. 计算一条3d空间直线和一个3d空间平面的交点
  2. 我们——程序员应该关注,功能?设计?
  3. gSoap下Server端接口函数的数据传出
  4. [转]如何用SQL命令修改字段名称
  5. CnForums1.0 Alpha RC1 发布
  6. js吧键值对变成对象_【面试题】和Vue.js有关的41个基础问题
  7. jsp用javascript关于浏览器静止后退,刷新
  8. LayIM v2.x 正式开源,Web 即时通讯前端解决方案
  9. 3、grep,vim,压缩功能详解
  10. 理清javascript的相关概念 DOM和BOM