C语言课程设计报告车辆调度调度程序设计

更新时间:2023-10-08 13:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

沈阳航空航天大学

课 程 设 计 报 告

课程设计名称:C语言课程设计 课程设计题目: 车辆调度调度程序设计

院(系): 计算机学院 专 业: 计算机科学与技术 班 级: 04010101 学 号: 2010040101033 姓 名: 杨振璞 指导教师: 丛丽晖 完成日期: 2010年3月17日

I

沈阳航空航天大学课程设计报告 第1章 概要设计

目 录

第1章 概要设计 .......................................................................................................... 2 1.1题目的内容与要求 ................................................................................................. 2 1.2总体结构 ................................................................................................................. 2 第2章 详细设计 .......................................................................................................... 4 2.1主程序模块 ............................................................................................................. 4 2.2车辆调用模块 ......................................................................................................... 5 2.3车辆归还模块 ......................................................................................................... 6 2.4车辆总览模块 ......................................................................................................... 7 2.5车辆查询模块 ......................................................................................................... 8 2.6新车登记模块 ......................................................................................................... 9 2.7车辆注销模块 ....................................................................................................... 10 第3章 调试分析 ......................................................................................................... 11 3.1调试前期 ................................................................................................................ 11 3.2调试中期 ............................................................................................................... 12 3.3调试后期 ............................................................................................................... 12 第4章 使用说明与执行结果 .................................................................................... 13 4.1车辆调度: ........................................................................................................... 13 4.2车辆归还: ........................................................................................................... 14 4.3车况一览: ........................................................................................................... 16 4.4车辆查询: ........................................................................................................... 16 4.5新车登陆: ........................................................................................................... 17 4.6车辆注销: ........................................................................................................... 18 4.7退出系统: ........................................................................................................... 18 参考文献 ........................................................................................................................ 19 附 录(程序清单) .................................................................................................. 20

1

沈阳航空航天大学课程设计报告 第1章 概要设计

第1章 概要设计

1.1题目的内容与要求

内容:用文件系统设计实现一个简单的车辆调度系统。实现用车要求的登记、车辆的管理等功能。

建立车辆基本的情况表,内容包含车辆所有信息,包括车辆目前状态,认为司机和车辆是一一对应的,在用户要求时进行信息动态匹配,并且可以智能选择最合理的车辆资源满足用户要求,为简单起见,可以不考虑司机的情况即仅对车辆进行管理,程序最终输出结果是:本次调出的车辆或者司机。

要求:

1) 系统利用C语言实现;

2) 车辆调用或归还结束后,需要把新的车辆状况保存到文本文件中; 3) 采用VC环境进行调试运行。

1.2总体结构

本程序主要分为七个模块(功能模块图见图1.1):主程序模块,车辆调用模块,车辆归还模块,车辆总览模块,车辆查询模块,新车登记模块,车辆注销模块。

主程序模块:用于实现整个程序功能引导。 车辆调用模块:实现车辆调用功能。 车辆归还模块:实现车辆归还功能。 车辆总览模块:实现车辆总体情况查看功能。 车辆查询模块:实现单一车辆查询功能。

新车登记模块:实现新车登记,并存入到文件的功能。

2

沈阳航空航天大学课程设计报告 第1章 概要设计

车辆注销模块:实现车辆注销,并从文件中删除的功能。

车辆调度程序

主程序模块

车辆调用模块

车辆归还模块

车辆总览模块

车辆查询模块

新车登记模块

车辆注销模块

图1.1 功能模块图

3

沈阳航空航天大学课程设计报告 第2章 详细设计

第2章 详细设计

2.1主程序模块

引导整个程序的运行,通过主函数模块分别调用各个模块,实现各项功能,流程如图2.1所示。

开始输出主菜单判断主菜单函数返回值‘E’ ‘0’ ‘1’ ‘2’ ‘3’ ‘4’ ‘5’ ‘6’ 返回主菜单进入车辆调度功能进入车辆归还功能进入车况一览功能进入车辆查询功能进入新车登陆功能进入车辆注销功能进入安全退出功能结束图2.1 主模块流程图

4

沈阳航空航天大学课程设计报告 第4章 使用说明与执行结果

租车人姓名或身份证号输入有误!

请按任意键继续. .

2.归还太迟:

进入车辆归还功能!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 请输入汽车编号: 1003

请输入租车人姓名: LIUZHIGONG

请输入租车人身份证号: 123456789123456789

归还失败,您的车辆已超期,请到总服务台办理超期还车手续!

请按任意键继续. . .

3.归还成功:

进入车辆归还功能!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 请输入汽车编号: 1005

请输入租车人姓名: WAHAHA

请输入租车人身份证号: 123456789987654321

汽车归还成功!

请按任意键继续. . .

15

沈阳航空航天大学课程设计报告 第4章 使用说明与执行结果

4.3车况一览:

进入车况一览功能!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

车辆编号 车牌号 驾驶员 车型 车辆状态 上次出车时间 租车人姓名 计划归还时间 1001 KDF001 ZHANGSAN A 可调出 2011-03-12 N/A N/A 1002 KDF002 LISI B 出车中 2011-03-15 LIUZHIGONG 2011-03-20 1003 KDF003 ZHAOLIU A 出车中 2011-03-11 LIUZHIGONG 2011-03-14 1004 KDF004 ZHANGWU C 可调出 2011-03-12 N/A N/A 1005 KDF005 LILIU B 可调出 2011-03-24 N/A N/A 1006 KDF006 ZHAOLI B 出车中 2011-03-11 LIUZHIGONG 2011-03-17 1007 KDF007 ZHANGXUE A 出车中 2011-03-17 QIANGGE 2011-3-18 1008 KDF008 LIJIE C 可调出 NEW N/A N/A 1009 KDF009 ZHAOJIE B 可调出 2011-03-11 N/A N/A 1010 KDF010 ZHOUSU A 可调出 2011-03-14 N/A N/A 1011 DFD222 ZHIGONG C 可调出 NEW N/A N/A 1012 KDF010 ZHOULANG A 可调出 2011-03-15 N/A N/A

请按任意键继续. . .

4.4车辆查询:

16

沈阳航空航天大学课程设计报告 第4章 使用说明与执行结果

进入车辆查询功能!

请输入汽车编号或车牌号: 1005

***************找到了符合条件的车辆信息*****************************

车辆编号 车牌号 驾驶员 车型 车辆状态 上次出车时间划归还时间

1005 KDF005 LILIU B 可调出 2011-03-24 N/A

请按任意键继续. . .

4.5新车登陆:

进入车新车登陆功能! 请输入车牌号: KSF008 请输入驾驶员: LEHAHA 请选择车辆类型(A/B/C): C

成功登记牌号为:KSF008的车辆,车辆编号为:1013!

请按任意键继续. . .

17

租车人姓名 N/A 计 沈阳航空航天大学课程设计报告 第4章 使用说明与执行结果

4.6车辆注销:

进入车辆注销功能!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 请输入需要注销的车辆编号: 1011 已注销编号为1011的车辆!

请按任意键继续. . .

4.7退出系统:

****************************************************** * 汽车调度程序 * ****************************************************** * 1.汽车调度 * * 2.汽车归还 * * 3.车辆总况一览 * * 4.车辆查询 * * 5.新车登记 * * 6.车辆注销 * * 7.退出系统 * ****************************************************** * 请选择: 1-7 *

请输入您的选项:7

您确定要退出系统?输入Y确定,输入N返回主菜单 Y

18

沈阳航空航天航天大学课程设计报告 参考文献

参考文献

[1] 张长海. C语言程序设计[M] . 北京:高等教育出版社,2006

[2] 裘宗燕. 从问题到程序:程序设计与C语言引论[M] . 北京:机械工业出版社,2005.9

[3] 王敬华,林萍,张清国. C语言程序设计教程[M] . 北京:清华大学出版社,2009.8、

[4] 谭浩强. C程序设计[M] . 北京:清华大学出版社,2005

[5] 谭浩强. C程序设计题解与上机指导[M] . 北京:清华大学出版社,2005 [6] 胡建平. C语言程设计学习指导书[M] . 天津:天津大学出版社,2005 [7] 谭明金,余海英. C语言程序设计实例精粹[M] . 北京:电子工业出版社,2006

19

沈阳航空航天大学课程设计报告 附录

VehicleList p;

FILE *fp;//定义文件指针 p=L;

if((fp = fopen(filename,\{ } else {

while (p->next != NULL) {

printf(\文件写入失败!\\n\

fprintf(fp,\ta.ver_no, }

//定义主菜单 int main_menu()

25

p->next->data.driver,p->next->data.ver_type,p->next->data.ver_status, }

}

p->next->data.ver_last_date,p->next->data.lender_name, p->next->data.lender_id,p->next->data.return_time);

p=p->next;

fclose(fp);

沈阳航空航天大学课程设计报告 附录

{ }

//定义功能1--汽车调度

int dispatch(VehicleList L, char *lender_name, char *lender_id, char *return_time) {

char *vtype,*vid;//车型 VehicleList p,q1,q2; char tmpdate[20]; int i=0; p=L;

26

int i;

printf(\printf(\ 汽车调度程序 *\\n\printf(\printf(\ 1.汽车调度 *\\n\printf(\ 2.汽车归还 *\\n\printf(\ 3.车辆总况一览 *\\n\printf(\ 4.车辆查询 *\\n\printf(\ 5.新车登记 *\\n\printf(\ 6.车辆注销 *\\n\printf(\ 7.退出系统 *\\n\printf(\printf(\ 请选择: 1-7 *\\n\printf(\printf(\请输入您的选项:\scanf(\feature=i; return i;

沈阳航空航天大学课程设计报告 附录

q1=L; q2=L;

strcpy(tmpdate,now_date);

printf(\请选择您需要的车型(A.大型车 B.中型车 C.小型车 E.返回主菜单 请输入大写字母!):\

vtype = getS();

if (strcmp(\如果输入E,返回主菜单

printf(\可选车辆列表******************************************\

printf(\车辆编号 车牌号 驾驶员 车辆类型 车辆状态 上次出车时间(DDYYMM)\\n\

while (L->next != NULL) {//显示符合条件的在库车辆信息

if (strcmp(\出车中\strcmp(vtype,L->next->data.ver_type) ==0)

{

if(datecmp(tmpdate,L->next->data.ver_last_date) > -1)//调用比较未调度时间的函数

{ }

q1=L;//获得最长时间没有被调度的车的节点指针 strcpy(tmpdate,q1->next->data.ver_last_date);

printf(\

L->next->data.ver_id,L->next->data.ver_no,L->next->data.driver,L->next->data.ver_type,

}

L->next->data.ver_status,L->next->data.ver_last_date);

if (strcmp(\strcmp(vtype,L->next->data.ver_type) ==0)

27

沈阳航空航天大学课程设计报告 附录

}

{ }

L=L->next;

i++;//计算新车数量 q2=L;//获得新车的节点指针

L=p;

printf(\**************\\n\

printf(\请输入车辆编号或输入W智能筛选(输入E返回主菜单):\vid = getS();

if (strcmp(\{

if(i>0) {

printf(\车辆调度结果****************************************\ printf(\已调出车辆:%s,驾驶员:%s,出车日期:%s\\n\

printf(\**********************************\\n\ 间

q2->next->data.ver_status=\出车中\修改车辆状态和上次出车时

q2->next->data.ver_last_date=(char*)malloc(sizeof(char)*(strlen(now_date)+1));

strcpy(q2->next->data.ver_last_date,now_date); strcpy(q2->next->data.lender_name,lender_name); strcpy(q2->next->data.lender_id,lender_id); strcpy(q2->next->data.return_time,return_time);

28

沈阳航空航天大学课程设计报告 附录

return 1;

} else {

printf(\车辆调度结果****************************************\ printf(\已调出车辆:%s,驾驶员:%s,出车日期:%s\\n\

printf(\**********************************\\n\ 间

}

else if ((p=select_vehicle(L,vid)) != NULL) {

p->next->data.ver_status=\出车中\修改车辆状态和上次出车时间

}

q1->next->data.ver_status=\出车中\修改车辆状态和上次出车时

q1->next->data.ver_last_date=(char*)malloc(sizeof(char)*(strlen(now_date)+1));

strcpy(q1->next->data.ver_last_date,now_date); strcpy(q1->next->data.lender_name,lender_name); strcpy(q1->next->data.lender_id,lender_id); strcpy(q1->next->data.return_time,return_time); return 1;

p->next->data.ver_last_date=(char*)malloc(sizeof(char)*(strlen(now_date)+1));

strcpy(p->next->data.ver_last_date,now_date);

29

沈阳航空航天大学课程设计报告 附录

strcpy(p->next->data.lender_name,lender_name); strcpy(p->next->data.lender_id,lender_id); strcpy(p->next->data.return_time,return_time);

printf(\车辆调度结果****************************************\

printf(\已调出车辆:%s,驾驶员:%s,出车日

期:%s\\n\

printf(\**********************************\\n\ }

//定义功能2--汽车归还

void back_vehicle(VehicleList L, char * key, char *lender_name, {

VehicleList p;

if ((p=select_vehicle(L,key)) != NULL)

30

}

return 1;

else if (strcmp(\{ } else { }

printf(\输入错误,请返回!\\n\return 3; return 0;

return 3;

char *lender_id)

沈阳航空航天大学课程设计报告 附录

{

if (strcmp(lender_name,p->next->data.lender_name) == 0 &&

strcmp(lender_id,p->next->data.lender_id) == 0)//姓名和身份证号输入正确才可还车

{

if (datecmp(now_date,p->next->data.return_time) < 1)//如果实际归还时间超出预定归还时间,提示到服务台办理

{

p->next->data.ver_status=\可调出\恢复车辆状态及租车人信息p->next->data.lender_name=\p->next->data.lender_id=\p->next->data.return_time=\printf(\汽车归还成功!\\n\\n\

为初始状态

}

else {

printf(\归还失败,您的车辆已超期,请到总服务台办理超期还车手续!\\n\\n\

31

}

}

else { }

printf(\租车人姓名或身份证号输入有误!\\n\\n\

}else{ }

printf(\没有查询到编号为:%s的车辆信息!\\n\\n\

沈阳航空航天大学课程设计报告 附录

}

//定义功能3--车辆总况一览 void list_all(VehicleList L) {

printf(\车辆编号 车牌号 驾驶员 车型 车辆状态 上次出车时间 租车人姓名 计划归还时间\\n\

while (L->next != NULL) {

//显示所有已登记车辆信息 }

//定义功能4--车辆查询

VehicleList select_vehicle(VehicleList L, char * key) {

VehicleList p; p=L;

while (p->next != NULL) {

//if(strcmp(\出车中\printf(\ %9s s\\n\

L->next->data.ver_id,L->next->data.ver_no,L->next->data.driver,

L->next->data.ver_type,L->next->data.ver_status,L->next->data.ver_last_date, }

printf(\system(\

L->next->data.lender_name,L->next->data.return_time);

L=L->next;

32

沈阳航空航天大学课程设计报告 附录

//如果查找到符合条件的车辆信息,则返回这个车辆信息节点的指针,strcmp,字符串比较函数 == 0) }

//定义功能5--新车登记

VehicleList register_vehicle(VehicleList L) {

VehicleList p,q;

Vehicle v;//定义新增车辆结构体 int id=1001;//初始车辆编号起始ID char tmpID[5];//车辆编号格式化为字符串 q=L;

while (q->next != NULL) { }

q=q->next;//将指针调至链表尾部以插入新数据 }

return NULL;

if (strcmp(key,p->next->data.ver_id) == 0 || strcmp(key,p->next->data.ver_no) { } else { }

p=p->next;

return p;//P为该车辆信息节点的指针

//printf(\请输入车辆编号: \//v.ver_id=getS();

33

沈阳航空航天大学课程设计报告 附录

printf(\请输入车牌号: \v.ver_no=getS(); printf(\请输入驾驶员: \v.driver=getS();

printf(\请选择车辆类型(A/B/C): \v.ver_type=getS(); v.ver_status=\可调出\v.ver_last_date=\v.lender_name=\v.lender_id=\v.return_time=\//自动生成车辆编号 sprintf(tmpID, \

while(select_vehicle(L,tmpID) != NULL)

{

if(select_vehicle(L,v.ver_no) == NULL)

v.ver_id=(char*)malloc(sizeof(char)*(strlen(tmpID)+1));//分配内存空间 strcpy(v.ver_id,tmpID);//将tmpID拷贝到车辆信息结构中 }

id++;

sprintf(tmpID, \将id转为字符串存储到tmpID中

{

//检查是否已有该车牌号

p=(VehicleList)malloc(sizeof(VNode));//创建新的车辆节点 p->data=v;

q->next=p;//连接新的车辆节点 q=p;

//将q指针移至最后节点

34

沈阳航空航天大学课程设计报告 附录

q->next=NULL;//将最后一个节点的next设为NULL

printf(\成功登记牌号为:%s的车辆,车辆编号为:%s!\\n\\n\

}

else { }

//定义功能6--车辆注销

void delete_vehicle(VehicleList L, char * key) {

} else

35

printf(\已存在该车辆!\\n\\n\

} return L;

VehicleList p,q; p=L;

if ((p=select_vehicle(L,key)) != NULL) {

q=p->next;

p->next=q->next;//将节点p连接到下下一个节点,即删除找到的节点 free(q);

printf(\已注销编号为%s的车辆!\\n\\n\

沈阳航空航天大学课程设计报告 附录

}

{ }

printf(\没有找到符合条件的车辆!\\n\\n\

system(\

//定义功能7--退出系统函数 int quit() {

char *temp; }

36

temp=getS();//接受用户输入

if(strcmp(\{ }

else if(strcmp(\{ } else { }

return 2;//返回2,说明输入错误,任意键返回主菜单 return 0;//返回0,则不退出,并清屏,加载主菜单 return 1;//返回1,为确实退出

return 2;//默认返回2

沈阳航空航天大学课程设计报告 附录

int main() {

main_menu:

//SaveData(L1,filename);//每完成一个操作都保存数据到文件,默认选择7程序退出时才保存数据

main_menu();//加载主菜单 switch (feature) { case 1:

{

int i;

printf(\请输入租车人姓名: \lender_name = getS();

printf(\请输入租车人身份证号: \lender_id = getS();

L1=(VehicleList)malloc(sizeof(VNode)); L1=InitList(L1);

L1=LoadData(L1,\

VehicleList L1,tmpL;

char *vehicle_key,*lender_name,*lender_id,*return_time; char *filename=\设置数据文件 GetLocalTime(&sys);

sprintf(now_date,\

printf(\请输入计划归还时间(格式YYYY-MM-DD,如 %s): \

return_time = getS();

37

沈阳航空航天大学课程设计报告 附录

if (datecmp(now_date,return_time) > 0) {

printf(\归还时间输入错误,最少需要租一天,即时间应该大于等于 %s\\n\\n\

函数

}

case 2: {

system(\ system(\ goto main_menu;

}

i=dispatch(L1,lender_name,lender_id,return_time); if (i==0) { system(\ goto main_menu;

} else { system(\ system(\ goto main_menu; }

printf(\请输入汽车编号: \vehicle_key = getS(); printf(\请输入租车人姓名: \lender_name = getS();

38

//调用车辆调度

沈阳航空航天大学课程设计报告 附录

}

printf(\请输入租车人身份证号: \lender_id = getS();

back_vehicle(L1,vehicle_key,lender_name,lender_id);//调用车辆归还函system(\system(\goto main_menu;

case 3:

{ }

list_all(L1);//调用车辆总览函数 system(\goto main_menu;

case 4:

{

printf(\请输入汽车编号或车牌号: \vehicle_key=getS();

tmpL=select_vehicle(L1,vehicle_key);//调用车辆查找函数 if (tmpL != NULL)//返回不为空,说明找到了 {

printf(\找到了符合条件的车辆信息*****************************\\n\

printf(\车辆编号 车牌号 驾驶员 车型 车辆状态 上次出车时间 租车人姓名 计划归还时间\\n\

printf(\ %9s s\\n\\n\

tmpL->next->data.ver_id,tmpL->next->data.ver_no,tmpL->next->data.driver,

39

本文来源:https://www.bwwdw.com/article/liyf.html

Top