程序 停车场管理系统
( 2013 /2014 学年 第 1学期)
题 目:
专 业 网络工程 组长 学号姓名 组员 学号姓名 李洬翊 B12070319 指 导 教 师 周 剑 指 导 单 位 软件教学中心 日 期 2013年11月 20 日
停车场管理系统
停车场管理系统
一、 课题内容和要求
(1) 管理人员根据口令进入系统;
(2) 管理车位信息(车位编号,状态)和每分钟的收费费率;
(3) 停车时录入汽车停泊信息(车牌号,车型,停泊位置,停泊开始时间);如果车位已满要给出提示;
(4) 取车时,根据车牌取,如果没有给出提示;需要根据车辆停泊时间自动计算费用并显
示在屏幕上。
二、 需求分析
停车场管理系统的功能框架图如图1所示。
图1 停车场管理系统功能框架图
(1)管理员登陆:其实现是在设计程序时定义一个字符串数组作为密码,在管理员想通过主菜单界面登陆到管理系统的时候,系统要求管理员输入密码,将保存的密码和管理员输入的密码进行比较,如果一致则跳出密码登陆函数进入管理界面。 (2)车位信息:可查询当前时间车库的基本停车情况。
(3)车辆驶入:进入此系统后,输入当前时间和车牌号码,若有空位则停车成功,否则显示车库已满,自动返回上一层操作系统。
(4)车辆驶离:进入此系统后,依次输入车牌号码,停车时间,当前时间,若查找到所输入的车牌信息,则显示本次停车应付金额,并显示取车成功。若无输入的车牌号码信息,则显示取车错误并返回上层操作系统。
(5)退出系统:当程序使用结束的时候,通过该项功能即可终止程序。
...... ......
三、概要设计
1.用户登录
2.信息查询
3.主体程序
四、源程序代码
#include #include #include #include #include using namespace std; class car {
public: char no[9]; int pos; double fee; void putcar(); void takecar();
}; class Time {
public: int hour; int min;
void getime(); };
int i,poi;
int position[100]={0};//全局变量 car carin[100]; Time catime[100]; int juge(); int comp();
void search_no(); void search_pos(); void main() {
/////////////////////////////////////////////用户登录 const char ha[10]="hahaha";//管理员用户名const char hb[10]="1234";//////管理员密码 char cn[10],cm[10]; int ci=0; while(1) {
cout>cn;
if(strcmp(ha,cn)) {
ci++; if(ci==3) return; continue; } else {
cout>cm; }
if(!strcmp(hb,cm)) break; else {
cout
////////////////////////////////////////////////主程序 int k;
cout
ofstream outfile("车辆信息.txt",ios::app); if(! outfile)
{cerr
//ifstream infile("车辆信息.txt",ios::in); //if(! outfile)
//{cerr
}
while(cin>>k) {
if(k==1) {
i=juge();
cin>>carin[i].no; carin[i].putcar(); cout
string time1; time_t t; time(&t);
time1=ctime(&t);
cout
outfile
continue; }
if(k==2) {
poi=comp(); carin[poi].takecar(); cout
if(k==3) { int x; while(1) {
cout>x; if(x==1) {
search_no();break; }
else if(x==2) {
search_pos();break; }
else if(x==3) {
string a,time1[100][5];////定义二维数组读取数据 int i,j,m,n;
ifstream infile("车辆信息.txt",ios::in); if(! infile)
{cerr
infile>>a;
for(i=0;i
for(m=0;m>time1[m][i]; coutcout
else if(x==4) {
break; } else
cout
}
cout
}
outfile.close(); }
}
int juge() ///////////////////////判断出第一个空的车位 {
int j=0;
while(position[j]==1&&j
if(j
} int comp() {
char ch[9];
cout>ch;
for(int k=0;k
if(!strcmp(ch,carin[k].no)) {
if(position[carin[k].pos-1]==1) {
return (carin[k].pos-1); break; } } }
if(k=100) return k; }
void car::putcar() { int t;
while(1) {
cout>t; if(t==1) {
carin[i].fee=7.0;break; }
else if(t==2)
{
carin[i].fee=5.0;break; }
else if(t==3) {
carin[i].fee=4.0;break; }
else if(t==4) {
carin[i].fee=4.0;break; }
cout
if(i==100)
cout
cout
cout
}
void car::takecar() {
int hour1,min1; double charge; if(poi
position[poi]=0;//重新设置为空位 hour1=catime[poi].hour; min1=catime[poi].min; catime[poi].getime();
hour1=catime[poi].hour-hour1; min1=catime[poi].min-min1; if(min1
charge=carin[poi].fee*hour1+carin[poi].fee*0.5; else
charge=carin[poi].fee*hour1+carin[poi].fee;
cout
cout
}
void Time::getime() {
struct tm *newtime; //获取停车时间 time_t long_time;
time( &long_time );
newtime = localtime( &long_time ); hour=newtime->tm_hour; min=newtime->tm_min;
}
void search_no() {
int poi=comp(); if(poi
cout
cout
void search_pos() {
int loc;
cout>loc;
if(position[loc-1]==1) {
cout
cout
cout
///////////////////////////////////////程序结束
五、测试数据及其结果分析
图1为密码和用户名输入正确后进入主程序
图1
图2为输入车牌号界面
图2
图3为车辆类型选择界面
图3
图4为取车操作界面
图4
图5为查询信息界面
图5
图6为按车牌查询界面
图6
图7为按车位查询界面
图7
图8为历史信息查询界面
图8
图9为查询信息的退出界面
图9
图10为存储信息的文档的截图
图10
六、调试过程中的问题
(1)各种零碎的编译错误;
(2)密码问题,没有接触过该类型的程序;
(3)函数调用问题;
(4)不同数据类型之间的兼容问题;
(5)数据的存储。
七、课程设计总结
刚开始拿到题目,我觉得无从下手,毕竟我对C 语言掌握的并不多所以就用了拿手的c++,参考了网上的程序结果好多的错的,最后还是需要我自己反复修改程序、反复调试、各种查阅资料才能完成作业。
在编写程序的过程中,我思考最多的问题就是在停车过程中会发生的各种情况,这也是程序不断完善的关键。有时,不断产生的问题会导致整过程序无法运行,所以及时保存是非常必要的。
一个能真正应用的程序是分为很多的模块,模块之间的相互联系就需要团队之间的讨论交流。所以团队合作非常重要,但是我们小组情况有点特殊,各做各的,完成挺累的。
在这次实习之前我从未自己写过什么较长一点的程序,而且自C 语言课程结束之后基本上没有看过书,忘记了相当多的知识,所以在编写程序时感觉很困难。我觉得在之前的学习当中我根本没注意培养一种正确的编程的思维,在拿到程序题时脑海里没有一个清晰的思路。所以经过这次实习之后我会在以后的学习当中强化对一些编程思想的学习,通过多写程序多体会来提升自己。就我个人来说我是很希望能在编程上有所提升,我有计划准备在以后的时间里花一个学期好好强化一下C 语言,然后再开始学C++,并把C++作为以后唯一学习的一门计算机编程语言来学习。
程序 停车场管理系统
( 2013 /2014 学年 第 1学期)
题 目:
专 业 网络工程 组长 学号姓名 组员 学号姓名 李洬翊 B12070319 指 导 教 师 周 剑 指 导 单 位 软件教学中心 日 期 2013年11月 20 日
停车场管理系统
停车场管理系统
一、 课题内容和要求
(1) 管理人员根据口令进入系统;
(2) 管理车位信息(车位编号,状态)和每分钟的收费费率;
(3) 停车时录入汽车停泊信息(车牌号,车型,停泊位置,停泊开始时间);如果车位已满要给出提示;
(4) 取车时,根据车牌取,如果没有给出提示;需要根据车辆停泊时间自动计算费用并显
示在屏幕上。
二、 需求分析
停车场管理系统的功能框架图如图1所示。
图1 停车场管理系统功能框架图
(1)管理员登陆:其实现是在设计程序时定义一个字符串数组作为密码,在管理员想通过主菜单界面登陆到管理系统的时候,系统要求管理员输入密码,将保存的密码和管理员输入的密码进行比较,如果一致则跳出密码登陆函数进入管理界面。 (2)车位信息:可查询当前时间车库的基本停车情况。
(3)车辆驶入:进入此系统后,输入当前时间和车牌号码,若有空位则停车成功,否则显示车库已满,自动返回上一层操作系统。
(4)车辆驶离:进入此系统后,依次输入车牌号码,停车时间,当前时间,若查找到所输入的车牌信息,则显示本次停车应付金额,并显示取车成功。若无输入的车牌号码信息,则显示取车错误并返回上层操作系统。
(5)退出系统:当程序使用结束的时候,通过该项功能即可终止程序。
...... ......
三、概要设计
1.用户登录
2.信息查询
3.主体程序
四、源程序代码
#include #include #include #include #include using namespace std; class car {
public: char no[9]; int pos; double fee; void putcar(); void takecar();
}; class Time {
public: int hour; int min;
void getime(); };
int i,poi;
int position[100]={0};//全局变量 car carin[100]; Time catime[100]; int juge(); int comp();
void search_no(); void search_pos(); void main() {
/////////////////////////////////////////////用户登录 const char ha[10]="hahaha";//管理员用户名const char hb[10]="1234";//////管理员密码 char cn[10],cm[10]; int ci=0; while(1) {
cout>cn;
if(strcmp(ha,cn)) {
ci++; if(ci==3) return; continue; } else {
cout>cm; }
if(!strcmp(hb,cm)) break; else {
cout
////////////////////////////////////////////////主程序 int k;
cout
ofstream outfile("车辆信息.txt",ios::app); if(! outfile)
{cerr
//ifstream infile("车辆信息.txt",ios::in); //if(! outfile)
//{cerr
}
while(cin>>k) {
if(k==1) {
i=juge();
cin>>carin[i].no; carin[i].putcar(); cout
string time1; time_t t; time(&t);
time1=ctime(&t);
cout
outfile
continue; }
if(k==2) {
poi=comp(); carin[poi].takecar(); cout
if(k==3) { int x; while(1) {
cout>x; if(x==1) {
search_no();break; }
else if(x==2) {
search_pos();break; }
else if(x==3) {
string a,time1[100][5];////定义二维数组读取数据 int i,j,m,n;
ifstream infile("车辆信息.txt",ios::in); if(! infile)
{cerr
infile>>a;
for(i=0;i
for(m=0;m>time1[m][i]; coutcout
else if(x==4) {
break; } else
cout
}
cout
}
outfile.close(); }
}
int juge() ///////////////////////判断出第一个空的车位 {
int j=0;
while(position[j]==1&&j
if(j
} int comp() {
char ch[9];
cout>ch;
for(int k=0;k
if(!strcmp(ch,carin[k].no)) {
if(position[carin[k].pos-1]==1) {
return (carin[k].pos-1); break; } } }
if(k=100) return k; }
void car::putcar() { int t;
while(1) {
cout>t; if(t==1) {
carin[i].fee=7.0;break; }
else if(t==2)
{
carin[i].fee=5.0;break; }
else if(t==3) {
carin[i].fee=4.0;break; }
else if(t==4) {
carin[i].fee=4.0;break; }
cout
if(i==100)
cout
cout
cout
}
void car::takecar() {
int hour1,min1; double charge; if(poi
position[poi]=0;//重新设置为空位 hour1=catime[poi].hour; min1=catime[poi].min; catime[poi].getime();
hour1=catime[poi].hour-hour1; min1=catime[poi].min-min1; if(min1
charge=carin[poi].fee*hour1+carin[poi].fee*0.5; else
charge=carin[poi].fee*hour1+carin[poi].fee;
cout
cout
}
void Time::getime() {
struct tm *newtime; //获取停车时间 time_t long_time;
time( &long_time );
newtime = localtime( &long_time ); hour=newtime->tm_hour; min=newtime->tm_min;
}
void search_no() {
int poi=comp(); if(poi
cout
cout
void search_pos() {
int loc;
cout>loc;
if(position[loc-1]==1) {
cout
cout
cout
///////////////////////////////////////程序结束
五、测试数据及其结果分析
图1为密码和用户名输入正确后进入主程序
图1
图2为输入车牌号界面
图2
图3为车辆类型选择界面
图3
图4为取车操作界面
图4
图5为查询信息界面
图5
图6为按车牌查询界面
图6
图7为按车位查询界面
图7
图8为历史信息查询界面
图8
图9为查询信息的退出界面
图9
图10为存储信息的文档的截图
图10
六、调试过程中的问题
(1)各种零碎的编译错误;
(2)密码问题,没有接触过该类型的程序;
(3)函数调用问题;
(4)不同数据类型之间的兼容问题;
(5)数据的存储。
七、课程设计总结
刚开始拿到题目,我觉得无从下手,毕竟我对C 语言掌握的并不多所以就用了拿手的c++,参考了网上的程序结果好多的错的,最后还是需要我自己反复修改程序、反复调试、各种查阅资料才能完成作业。
在编写程序的过程中,我思考最多的问题就是在停车过程中会发生的各种情况,这也是程序不断完善的关键。有时,不断产生的问题会导致整过程序无法运行,所以及时保存是非常必要的。
一个能真正应用的程序是分为很多的模块,模块之间的相互联系就需要团队之间的讨论交流。所以团队合作非常重要,但是我们小组情况有点特殊,各做各的,完成挺累的。
在这次实习之前我从未自己写过什么较长一点的程序,而且自C 语言课程结束之后基本上没有看过书,忘记了相当多的知识,所以在编写程序时感觉很困难。我觉得在之前的学习当中我根本没注意培养一种正确的编程的思维,在拿到程序题时脑海里没有一个清晰的思路。所以经过这次实习之后我会在以后的学习当中强化对一些编程思想的学习,通过多写程序多体会来提升自己。就我个人来说我是很希望能在编程上有所提升,我有计划准备在以后的时间里花一个学期好好强化一下C 语言,然后再开始学C++,并把C++作为以后唯一学习的一门计算机编程语言来学习。