《C语言程序设计》课程设计
实验报告
题目:汽车租赁管理系统
专业:
班级:
姓名:
学号:
时间:2015年6月
一、目的
1、进一步掌握和利用 C 语言进行程序设计的能力; 2、进一步理解和运用结构化程序设计的思想和方法; 3、初步掌握开发一个小型实用系统的基本方法; 4、学会调试一个较长程序的基本方法; 5、学会利用流程图或 N-S 图表示算法;
6、掌握书写程序设计开发文档,即书写课程设计报告的能力;
第 1 页
二、内容与设计思想。
1、系统功能与分析(填写你所设计的菜单及流程图)。 查询汽车 系统选项 非0,1,2,3,4为无效值 主函数 办理租赁 管理系统 归还登记 退出系统 1:增加汽车 2:删除汽车 3:汽车统计 4:会员管理系统 1: 申请新卡 2: 删除卡号 3: 卡号统计 0: 返回
第 2 页
2、数据结构
数据表格图形 会员信息 卡号
数据结构代码
struct member {
int cardnum; char lendcar[10]; }member[1000];
struct car {
int carnum;
char carname[20]; float carprice; char carcreat[20]; int turefalse; }car[1000];
struct card {
int cardnum; char sex[5];
char membersname[20]; long int memberstel; }card[1000];
全局变量:char ch1,ch2,ch4;
第 3 页
车辆信息 品牌 租金 状态 姓名 性别 电话 编号 车型
3、模块设计 根据功能需要: 源文件 函数名 main() chacar() findcar() findcar1() lendcar() huancar() 汽车租赁管addcard() 理系统.c delcard() cardcount() addcar() delcar() carcount() end()
删除会员,清除信息 统计会员总数,显示详细信息 增加新车,采集信息 删除车辆,清除信息 统计车辆总数,显示详细信息 结束系统运行 新增会员,采集信息 主函数 分类查找汽车 按“车型”查找 按“品牌”查找 将汽车租出并记录 将汽车归还并记录 功能 第 4 页
4、总体设计思想:
整个程序主要由4个界面组成,分别是查询汽车,办理租赁,管理系统,归还登记组成。其中管理系统包括汽车的增加、删除、统计和会员管理系统。会员管理系统又包括申请新卡、删除旧卡、卡号统计的程序。
5、调试过程: 测试数据及结果,出现了哪些问题,如何修改的。 以下是测试截图:
主界面
汽车租赁
管理系统
(1.增加汽车)
第 5 页
(2.删除汽车)
(3.汽车统计)
第 6 页
(4.会员管理系统) (1.申请新卡)
(2.删除卡号)
(3.卡号统计)
4.归还登记
归还前已租到 suv 一辆
归还suv 汽车
第 7 页
归还后
查询汽车时遇到的问题:
1.字符串用的双引号与字符用的单引号上有错误。
2.输出时在上下行数据的排列方式上出现问题,不会灵活运用。
3.考虑不全面,调试时出现不符合要求的错误,重新整理思路,解决问题。
第 8 页
办理租赁时遇到的问题:
1.结构体运用中调用出错。
2.对结构体认识不清,理解不透彻,运用不够准确。
3.大括号,分号漏加。
4.没有注意字符串处理函数应用时的格式,导致后期出错。
5.对文件的读写,认识不够深刻。
管理系统中遇到的问题:
1.对结构体中各成员的引用上,调用存在问题。
2.结构体变量的定义及使用。
3.If 与 else 的用法仍不明确。有时会搞混不同层次的if与else的搭配。
归还登记中遇到的问题
1.Continue,break的区别。
2.While、if-else、for等的应用。
3.If 语句中的判断过于复杂,可简化
6、程序有待改进的地方及本次实习的收获和建议 有待改进的部分:
第 9 页
1.没有完成自动计算时间,从而计算总费用的功能。
2.功能较少。
3.存储的会员、车辆信息有限。
4.输入下一步操作选项时,界面乱,不整洁。
5.删除汽车、会员时,即使输入不存在的值,操作结束后也会提示操作成功。
6.无法存储车辆、会员信息。
收获和建议:
1.面对较大的程序时,应把问题逐渐细分,从大到小,一步步来
2.多思考,多查阅资料,多测试,多咨询,多沟通。
3.要首先确定基本结构。多关注各个功能的衔接,确定都要使用的全局变量正确。
7、源程序清单(主要代码)
#include struct member { int cardnum; char lendcar[10]; }member[5]; struct car { int carnum; char carname[20]; 第 10 页 float carprice; char carcreat[20]; int turefalse; }car[5]; struct card { int cardnum; char sex[5]; char membersname[20]; long int memberstel; }card[5]; findcar() { char carname[10]; int i; printf(\"\\n\\n请输入你要查找的车型:\\n\"); scanf(\"%s\ for(i=0;i<5;i++) { while(strcmp(carname,car[i].carname)==0) { if(car[i].turefalse==1) { printf(\" 编号 车型 品牌\\n %d %s %s \\n\ printf(\"\\n\\n\"); printf(\"---------------此车现在无人租用\\n.\"); printf(\"---------------按任意键返回\\n\"); break; } else {printf(\"\\n\\n---------------这辆车已经有人借出\\n\");break;} } } return 0; } findcar1() { char carcreat[10]; 第 11 页 int i; printf(\"\\n\\n请输入你要查找的品牌:\\n\"); scanf(\"%s\ for(i=0;i<5;i++) { { { while(strcmp(carcreat,car[i].carcreat)==0) if(car[i].turefalse==1) printf(\" 编号 车型 品牌 \\n %d %s %s \\n\ printf(\"\\n\\n\"); printf(\"---------------此车现在无人租用\\n.\"); printf(\"---------------按任意键返回\\n\\n\"); break; } else {printf(\"\\n\\n---------------这辆车已经有人借出!\\n\");printf(\"---------------按任意键返回\\n\\n\"); break; } } } return 0; } chacar() { char ch5; do { printf(\"\\n\\n 1: 按车型查找 \\n\"); printf(\" 2: 按品牌查找 \\n\"); printf(\" 0: 返回 \\n\"); printf(\" 请输入0━2:\\n\"); ch5=getch(); switch(ch5) { case '1':findcar();getch();break; case '2':findcar1();getch();break; case '0':break; default:printf(\"---------------无此操作!\\n\");getch();break; } } }while(ch5!='0'); return 0; 第 12 页 lendcar() { int i,n; int cardnum; printf(\"\\n\\n请输入卡号 :\\n\"); scanf(\"%d\ for(i=0;i<5;i++) { { if(card[i].cardnum==cardnum) n=i; printf(\"\\n车型:\"); scanf(\"%s\ for(i=0;i<5;i++) { if(strcmp(car[i].carname,member[n].lendcar)==0) { {printf(\"---------------对不起,此车已被租出,请重新选择\\n\"); getch();return 0; } if(car[i].turefalse==0) else member[n].cardnum=cardnum; for(i=0;i<5;i++) { { if(strcmp(car[i].carname,member[n].lendcar)==0) car[i].turefalse=0; continue; } } printf(\"\\n---------------按任意键返回...\\n\"); printf(\"\\n\\n---------------操作成功,请及时提车.\"); getch(); return 0; } } printf(\"\\n\\n---------------错误操作.\"); printf(\"\\n---------------按任意键返回...\\n\"); getch(); return 0; } } printf(\"\\n---------------按任意键返回...\\n\"); printf(\"\\n\\n---------------你的卡号不存在,请申请新卡.\\n\"); 第 13 页 getch(); return 0;} huancar() { int i,n; int cardnum; char lendcar[10]; printf(\"\\n\\n\\n\"); printf(\" --- 欢迎进入还车界面 ---\"); printf(\"\\n\\n请你输入你的卡号 :\"); scanf(\"%d\ for(i=0;i<5;i++) { { if(card[i].cardnum==cardnum) n=i; printf(\"\\n请输入你要归还的车型:\"); scanf(\"%s\ for(i=0;i<5;i++) { { car[i].turefalse=1; } while(strcmp(member[i].lendcar,lendcar)==0) break; printf(\"\\n\\n---------------还车完毕.\"); printf(\"\\n---------------按任意键返回...\\n\"); getch(); return 1; } printf(\"\\n---------------按任意键返回...\\n\"); printf(\"\\n\\n---------------租赁记录不存在.\"); getch(); return 0; } else{ printf(\"\\n\\n---------------卡号不存在,请与管理员联系.\\n\"); printf(\"\\n---------------按任意键返回...\\n\"); getch(); 第 14 页 return 0;}}} void addcard() { int i=0; char choice; for(i=0,choice='y';choice=='y'||choice=='Y';i++) { printf(\"\\n\\n卡号:\"); scanf(\"%d\ printf(\"\\n性别:\"); scanf(\"%s\ printf(\"\\n姓名:\"); scanf(\"%s\ printf(\"\\n电话:\"); scanf(\"%ld\ } delcard() { int i; int cardnum; char choice; printf(\"\\n\\n要删除的卡号:\"); scanf(\"%d\ for(i=0;i<5;i++) { { printf(\"\\n\\n是否要输入下一个人===============(y \\\\ n)\\n\\n\"); } printf(\"\\n---------------任意键返回...\\n\"); scanf(\"%s\ printf(\"\\n\\n-----------------输入完毕.\"); getch(); while(card[i].cardnum==cardnum) printf(\"\\n\\n确认删除? (Y / N)\\n\"); scanf(\"%s\ if(choice=='y'||choice=='Y') { { for(;i<5;i++) card[i]=card[i+1]; } printf(\"\\n\\n---------------已删除成功!\\n---------------按任意键返回...\\n\"); 第 15 页 getch(); return 0; }}} void cardcount() { int i,n=0; for(i=0;i<5;i++) { if(card[i].cardnum!=0) { printf(\"第%d张卡 \\n\ } { printf(\"---------------已取消删除\\n\\n\"); getch(); return 0; } else printf(\" 卡号 性别 姓名 电话\\n\"); printf(\"\\\\n\"); printf(\" %d %6s %10s %ld \\n\\n\ n++; printf(\"\\n\"); } } printf(\"---------------目前共有%d个会员.\\n\ printf(\"---------------按任意键返回...\\n\"); getch(); } void addcar() { char choice; int i; for(i=0,choice='y';choice=='y'||choice=='Y';i++) { printf(\"\\n\\n\\n编号:\"); scanf(\"%d\ printf(\"\\n\\n车型:\"); scanf(\"%s\ printf(\"\\n\\n品牌:\"); scanf(\"%s\ printf(\"\\n\\n租金:\"); scanf(\"%f\ printf(\"\\n\\n请你设定车的状态===============(0-不在 \\\\ 1-在):\"); scanf(\"%d\ printf(\"\\n\\n是否要输入下一辆车===============(y \\\\ n)\\n\\n\"); scanf(\"%s\ 第 16 页 } printf(\"\\n\\n-----------------输入完毕.\"); } delcar() { int i,carnum; char choice; printf(\"\\n\\n\"); printf(\"编号:\\n\"); for(i=0;i<5;i++) { while(carnum==car[i].carnum) { printf(\"确认删除-----(y / n)?\\n\"); printf(\"\\n---------------任意键返回...\\n\"); getch(); scanf(\"%d\ scanf(\"%s\ if(choice=='y'||choice=='Y') { {for(;i<5;i++) car[i]=car[i+1];} printf(\"\\n\\n---------------已删除成功!\\n---------------按任意键返回...\\n\"); getch(); return 0; } else { printf(\"---------------已取消删除\\n\\n\"); } } } printf(\"--------------------按任意键返回...\\n\"); getch(); return 0; } void carcount() { int i,n=0; for(i=0;i<5;i++) { if(car[i].carnum!=0&&car[i].carname!=0) { printf(\"\\n\\n第%d辆车\\n编号 车型 品牌 租金 状态\\n\ printf(\"\\\\n\"); printf(\" %d %10s \ printf(\"%15s %4.2f %d=====(1在\\\\0不在)\\n\\n\ n=n+1; 第 17 页 } } printf(\"\\n\\n---------------目前共有%d辆车.\\n\ printf(\"---------------按任意键返回...\\n\"); } void end() { printf(\"\\n\\n\\n-------------------------------------------------------------------------------\\n\"); printf(\"\\n\"); printf(\" --- 谢谢使用本系统, 再见! ---\\n\"); printf(\"\\n\\n\\n\\n\"); } void main() { char ch1,ch2,ch4; do { printf(\"\\n\"); printf(\" --- 制作: 学号: 班级: --- \\n\\n\"); printf(\"\\n --- 欢迎使用系统 ---\"); printf(\"\\n\\n\"); printf(\" 请选择需要的服务:\\n\"); printf(\" 1:查询汽车\\n\"); printf(\" 2:办理租赁\\n\"); printf(\" 3:管理系统 \\n\"); printf(\" 4:归还登记\\n\"); printf(\" 0:退出系统 \\n\"); printf(\"请输入数字0━4:\\n\"); ch1=getch(); switch(ch1) { case '1':chacar();break; case '2':lendcar();;break; case '3':{ do {printf(\"\\n\\n 1:增加汽车\\n\"); printf(\" 2:删除汽车 \\n\"); printf(\" 3:汽车统计 \\n\"); printf(\" 4:会员管理系统\\n\"); printf(\" 0:返回首页 \\n\"); printf(\"请输入0━4:\\n\"); ch2=getch(); switch(ch2) { 第 18 页 case '1':addcar(); break; case '2':delcar();break; case '3':carcount();getch();break; case '4':{ do { printf(\"\\n\\n 1: 申请新卡 \\n\"); printf(\" 2: 删除卡号 \\n\"); printf(\" 3: 卡号统计\\n\"); printf(\" 0: 返回\\n\"); printf(\"请输入0━3:\\n\"); ch4=getch(); switch(ch4) { case '1':addcard();break; case '2':delcard();break; case '3':cardcount();break; case '0':break; default:printf(\"无此操作!\\n\");getch();break; } }while(ch4!='0');}break; case '0':end();break; default:printf(\"无此操作!\\n\");getch();break; } } while(ch2!='0');}break; case '4':huancar();break; case '0':end();break; default:printf(\"无此操作!\\n\");getch();break; } } }while(ch1!='0'); 第 19 页 因篇幅问题不能全部显示,请点此查看更多更全内容