




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文档名称文档密级car.h/* 版权所有 (c), 2009-2009, 华为技术有限公司 * 文 件 名 : car.h 版 本 号 : 初稿 作 者 : 生成日期 : 2010年1月21日 最近修改 : 功能描述 : car.cpp 的头文件 函数列表 : 修改历史 : 1.日 期 : 2010年1月21日 作 者 : 修改内容 : 创建文件*/#ifndef _car_h_#define _car_h_#ifdef _cplusplusextern c#endif /* _cplusplus */#define max_peccancy_record_num 10 /最大违规记录数#define max_score_value 20 /初始积分#define max_days_value 1000 /最大时间(天)#define max_money_value 6000 /最大金额/*违规类型*/enum enpeccancytype peccancy_type_0, /违章停车 peccancy_type_1, /超速 peccancy_type_2, /闯红灯 peccancy_type_3, /超载 peccancy_type_4, /醉酒驾车 peccancy_type_butt;/*违规罚款缴费状态*/enum enpaystat stat_no_pay, /未缴纳罚款 stat_have_pay /已缴纳罚款;/* 函 数 名 : opinit 功能描述 : 考生需要实现的接口 完成“系统初始化”操作 命令实例:i 输入参数 : 无 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2010年1月21日 作 者 : 修改内容 : 新生成函数*/void opinit(void);/* 函 数 名 : oprecord 功能描述 : 考生需要实现的接口 完成“录入违规记录”操作 命令实例:r 0-1 输入参数 : int peccancy : 违规类型 int days : 时间 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2010年1月21日 作 者 : 修改内容 : 新生成函数*/void oprecord(int peccancytype, int days);/* 函 数 名 : opquery 功能描述 : 考生需要实现的接口 完成查询违规记录操作 命令实例:q 输入参数 : 无 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2010年1月21日 作 者 : 修改内容 : 新生成函数*/void opquery(void);/* 函 数 名 : oppay 功能描述 : 考生需要实现的接口 完成缴纳违规罚款操作 命令实例:p 100 输入参数 : int money : 缴纳金额 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2010年1月21日 作 者 : 修改内容 : 新生成函数*/void oppay(int money);#ifdef _cplusplus#endif /* _cplusplus */#endif /* _car_h_ */car.cpp#include #include #include stdio.h#include api.h#include car.h#include malloc.hint recordnum ;int lasttime=-1;int index;int score;int flag;query_resultnode *pheadnode = null;/*function : createlistdescription : 创建链表头节点(头结点中不存放数据)return : 链表的头指针*/query_resultnode* createlist(void) query_resultnode *phead = null; phead = (query_resultnode *)malloc(sizeof(query_resultnode); if (null = phead) api_print_result(e999); return null; phead-data.index=0; phead-data.fee=0; phead-data.score=20; phead-pnext = null;return phead;/*function : pushbacknodedescription : 向链表中尾部插入某个节点input : phead 链表的头节点指针 pinfo 违规记录信息output : 无return : 正确:返回头节点指针 失败:返回空指针*/query_resultnode* pushbacknode(query_resultnode *pheadnode, queryresult *pinfo)query_resultnode *ptemp=null;query_resultnode *pnewnode=null;if(null = pinfo)|(null = pheadnode)api_print_result(e999);return null;pnewnode = (query_resultnode *)malloc(sizeof(query_resultnode); if(null = pnewnode)api_print_result(e999);return null; memcpy(&pnewnode-data,pinfo,sizeof(queryresult);ptemp = pheadnode; while(null != ptemp-pnext)/* 找到尾结点 */ptemp = ptemp-pnext;ptemp-pnext = pnewnode;pnewnode-pnext = null; return pheadnode;/*function : findnodebyindexdescription : 在链表中找到指定违规序号的结点input : phead 链表的头节点指针 index 违规序号output : 无return : 正确:返回该索引号所对应的结点 失败:返回空指针*/query_resultnode* findnodebyindex(query_resultnode *phead, int index) query_resultnode *pnode = null; if (null = phead) | (index pnext; while (null != pnode) if (pnode-data.index = index) break; pnode = pnode-pnext; return pnode;/*function : removelistdescription : 删除整个链表input : phead 链表的头节点指针return : 正确:1 失败:0*/int removelist(query_resultnode *phead) query_resultnode *pnode = null; query_resultnode *pb = null; if (null = phead) api_print_result(e999); return 1; pnode = phead; pb = pnode-pnext; if (null = pb)/*如果链表是一个只包含头结点的空链表,则只需删除头结点*/ free(pnode); else/*从头结点开始逐个删除*/ while (null != pb) free(pnode); pnode = pb; pb = pb-pnext; free(pnode); pnode = null; return 1;/* main函数 */void main(int argc, char* argv) /* 启动socket服务侦听5555端口(sapi_server_start函数在lib库已实现)。 * lib库已实现从socket接收到字符串后的命令分发处理; * 考生只需要实现分发后的各命令即可。 */ api_server_start(argc, argv);/ 此处不会执行到,注意不要在此处添加代码/* 函 数 名 : opinit 功能描述 : 考生需要实现的接口 完成“系统初始化”操作 命令实例:i 输入参数 : 无 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2010年1月21日 作 者 : 修改内容 : 新生成函数*/void opinit(void)if (null != pheadnode) if (1!= removelist(pheadnode) api_print_result(e999); return; pheadnode = null; pheadnode = createlist();if(null = pheadnode)api_print_result(e999); return; lasttime=0; /*最后一次违规的时间*/recordnum =0;/* 违规记录数 */index =0;/* 违规序号 */score =20;/* 没有任何违规记录时,积分为20 */flag =1;/* 车牌吊销标志(1表示没有被吊销)*/ api_print_result(s001);/* 初始化成功 */return;/* 函 数 名 : oprecord 功能描述 : 考生需要实现的接口 完成“录入违规记录”操作 命令实例:r 0-1 输入参数 : int peccancy : 违规类型(0:违章停车;1:超速;2:闯红灯;3:超载;4:醉酒驾车) int days : 时间 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2010年1月21日 作 者 : 修改内容 : 新生成函数*/void oprecord(int peccancytype, int days) queryresult temp; int calcredit; int calfee; if(lasttime = -1)api_print_result(e001);/* 系统未初始化(系统未初始化前不能输入其他命令) */return; if(flag=0)/* 车牌已被吊销 */api_print_result(e004);return; if(recordnum = 10) api_print_result(e009);/* 违规记录已满 */return; if(0 peccancytype) | (4 peccancytype)api_print_result(e003);/* 输入违规类型超出系统允许范围 */ return;if(max_days_value days)api_print_result(e002);/* 输入时间超出系统允许范围 */ return;if(days lasttime)/* 时间参数小于上次时间 */api_print_result(e008);return; /* 计算罚款 */switch(peccancytype)case 0 : calfee=100;break;case 1 : calfee=200;break;case 2 : calfee=300;break;case 3 : calfee=400;break;case 4 : calfee=500;break; /* 计算扣分 */ switch(peccancytype)case 0 : calcredit=1;break;case 1 : calcredit=2;break;case 2 : calcredit=3;break;case 3 : calcredit=4;break;case 4 : calcredit=5;break; recordnum+;index+;temp.reason = peccancytype;temp.time = days;temp.index =index;temp.score= score -=calcredit;temp.fee =calfee; temp.payflag = stat_no_pay;pushbacknode(pheadnode,&temp);if(score pnext;ptemp != null;ptemp = ptemp-pnext) memcpy(&temp,&(ptemp-data),sizeof(queryresult);api_print_query_info(&temp); return;/* 函 数 名 : oppay 功能描述 : 考生需要实现的接口 完成缴纳违规罚款操作 命令实例:p 100 输入参数 : int money : 缴纳金额 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2010年1月21日 作 者 : 修改内容 : 新生成函数*/void oppay(int money) payresult pr;query_resultnode *wpay10; int i=0,j=0,f=0,pfee; query_resultnode *pnode = null; pnode = pheadnode; if(1 money) | (6000 pnext!=null) if(pnode-data.payflag=stat_no_pay) wpayi=pnode; i+; pr.fee+=pnode-data.fee; pnode=pnode-pnext; pr.fee+=pnode-data.fee; for(i=0;idata.feedata.fee; /*if(wpayi+1-data.time=wpayi-data.time)&(wpayi+1-data.feedata.feepfee) pfee=wpayi+1-data.fee;*/ break; pr.peccancyno=recordnum; pr.returnmoney=money-pfee; pr.score=score;pr.fee-=pfee; api_print_pay_info(&pr);if(f=0) api_print_result(e006); api.h/* 版权所有 (c), 2009-2009, 华为技术有限公司 * 文 件 名 : api.h 版 本 号 : 初稿 作 者 : 生成日期 : 2009年9月9日 最近修改 : 功能描述 : api.cpp 的头文件 函数列表 : 修改历史 : 1.日 期 : 2009年9月9日 作 者 : 修改内容 : 创建文件*/#ifndef _api_h_#define _api_h_#ifdef _cplusplusextern c#endif /* _cplusplus */* 本文件中的枚举、结构、api接口等供考生使用,但不允许修改 */返回操作信息enum op_rst_info s001, /初始化成功 s002, /录入违规记录成功 e001, /系统未初始化 e002, /输入时间超出系统允许范围 e003, /输入违规类型超出系统允许范围 e004, /车牌已吊销,操作失败 e005, /输入缴纳金额超出系统允许范围 e006, /缴纳动作无效 e007, /无违规记录,不需要缴纳罚款 e008, /时间参数小于上次操作时间 e009, /违规记录已满 e010, /无违规记录 e999 /系统内部错误;/车辆违规信息typedef struct car_sys_info int time; /违规时间 int reason; /违规原因int fee; /罚款金额int credit; /应扣除积分int index; /历史违规记录编号carsysinfo;/历史违规信息typedef struct query_result int index; /历史违规序号 int time; /违规时间 int reason; /违规原因 int fee; /罚款金额 enum enpaystat payflag; /罚款是否已经缴纳(0是未缴纳罚款,1是已缴纳罚款) int score; /剩余积分queryresult;typedef struct tagquery_resultnodequeryresult data;struct tagquery_resultnode *pnext;query_resultnode;/缴纳罚款输出信息typedef struct pay_result int returnmoney; /找零 int score; /剩余积分 int peccancyno; /剩余违规记录数 int fee; /剩余罚款金额payresult;/* 函 数 名 : api_print_result 功能描述 : 打印返回码信息到socket工具窗口 输入参数 : enum op_rst_info enresultcode 输出参数 : 无 返 回 值 : extern void 调用函数 : 被调函数 : 修改历史 : 1.日 期
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纺织品工艺的家居装饰应用考核试卷
- 货运枢纽站物流供应链协同优化考核试卷
- 羽绒制品加工工艺技术创新考核试卷
- 木工三维建模与仿真考核试卷
- 纤维素纤维在建筑节能材料的运用考核试卷
- 煤焦油轻质化加工考核试卷
- 腈纶纤维的导电纤维应用研究考核试卷
- 婚前个人首饰财产权分配与分割协议
- 金融资产管理公司股权托管与监管合作框架协议
- 跨境电商股权收益权质押贷款合同
- 机电安装工程安全培训
- 2025-2030国内光学显微镜行业市场发展现状及竞争策略与投资发展研究报告
- 八年级语文下古诗文默写练习汇编
- 肩袖损伤修补术后护理
- 中国传统节日习俗知到课后答案智慧树章节测试答案2025年春嘉兴大学
- 足浴店收银规章制度
- 夏季极端天气安全教育
- 《网络与新媒体广告(第2版)》 课件 第7章 新媒体广告的设计
- 音协入会申请书
- 《智慧运输运营》课程标准
- 2025届陕西省汉中南郑区数学三年级第一学期期末经典模拟试题含解析
评论
0/150
提交评论