车次信息管理系统课程设计C++
主界面
0:退出本程序!
1:增加车次信息
2:修改车次信息
3:查找车次信息
4:显示车次信息
5:删除车次信息
6:删除所有车次信息
7:返回上一页面
基本要求
a) 修改车次信息
b) 查找车次信息
c)删除某一车次信息
d)删除所有车次信息
e)分不同操作员操作系统
f)进入管理员界面需要密码登录
g)退出程序时停留几秒挽留界面然后退出
h)增加、修改车次信息
目 录
一.设计思路……………………………………………………………… 1
二.功能实现详细设计……………………………… ……………………2
2.1类设计………………………………………………………………… 2
2.2程序代码描述………………………………………………………… 2
2.3界面设计……………………………………………………………… 13
三.测试结果分析………………………………………………………… 15
3.1 首先进入管理员界面…………………………………………………15
3.2 增加任一车次信息……………………………………………………15
3.3 修改车次信息…………………………………………………………16
3.4 查找车次信息…………………………………………………………16
3.5 显示车次信息…………………………………………………………16
3.6 删除车次信息…………………………………………………………17
3.7 删除所有车次信息……………………………………………………17
3.8 跳回乘客界面查找本次车次信息……………………………………17
四.用户手册 …………………………………………………………… 19
4.1 管理员
4.1.1 增加任一车次信息………………………………………………19
4.1.2 修改车次信息……………………………………………………19
4.1.3 查找车次信息……………………………………………………20
4.1.4 显示车次信息……………………………………………………20
4.1.5 删除车次信息……………………………………………………20
4.1.6 删除所有车次信息………………………………………………20
4.2 乘客
4.2.2 查找车次信息……………………………………………………20
4.2.3 显示车次信息……………………………………………………21
一、设计思路
车次信息管理系统,顾名思义就是要能够完成最基本的模块。一是添加车次信息,二是显示添加的车次信息。
本程序分为两个角色登录,一是管理员,管理员能够使用的功能有增加、修改、删除、查找、显示车次信息;二是乘客,乘客只能查找车次信息和显示所有车次信息。
为了保证乘客不能进入管理员的操作界面,本程序为管理员的登录设置了一个密码,只有输入密码正确(本程序默认管理员密码abcd)才能够进入管理员操作界面,输入错误三次则没有权限使用此程序。
图1-1:系统模块图
二、功能实现详细设计
2.1 类设计
(1) 数据成员:
NODE p;
NODE q;
(2)成员函数:
void add(); //公有普通函数成员-增加车次信息
void edit(); //公有普通函数成员-修改车次信息
void lookfor(); //公有普通函数成员-查找车次信息
void printall(); //公有普通函数成员-显示车次信息
void del(); //公有普通函数成员-删除车次信息
void deleteall(); //公有普通函数成员-删除所有车次信息
void mima(); //公有普通函数成员-密码程序
2.2 程序代码描述
#include
#include<string.h>
#include<stdlib.h>
#include<malloc.h>
#include<conio.h>
#include<Windows.h>
using namespace std;
typedef struct node //定义一个结构体
{
char n[20]; //存储起点站的信息
char m[20]; //存储终点站的信息
char t[20]; //存储经过站的信息
char num[20]; //存储车次号码
char starttime[20]; //存储发车时间
char endtime[20]; //存储到站时间
struct node next;
}NODE;
NODE start;
class train //创建一个类
{
private:
NODE * p;
NODE * q;
NODE * t;
public:
train(NODE * m)
{
t = m = p;
}
void add(); //公有普通函数成员-增加车次信息
void edit(); //公有普通函数成员-修改车次信息
void lookfor(); //公有普通函数成员-查找车次信息
void printall(); //公有普通函数成员-显示车次信息
void del(); //公有普通函数成员-删除车次信息
void deleteall(); //公有普通函数成员-删除所有车次信息
void mima(); //公有普通函数成员-密码程序
};
void train::add() //定义添加车次信息的函数
{
start = new NODE; //动态成员
q = start;
q->next = p;
p = q;
cout << “请输入本次列车起点站的名称” << endl;
cin >> q->n;
cout << “请输入本次列车终点站的名称” << endl;
cin >> q->m;
cout << “请输入经过站点的名称” << endl;
cin >> q->t;
cout << “请输入车次号码” << endl;
cin >> q->num;
cout << “请输入本次列车的发车时间” << endl;
cin >> q->starttime;
cout << “请输入本次列车到本站的时间” << endl;
cin >> q->endtime;
}
void train::edit() //定义编辑车次信息的函数
{
p = q;
char n[20];
cout << “请输入车次号码:” << endl;
cin >> n;
while (p != t && (strcmp(p->num, n) != 0) != 0)
p = p->next;
if (p == t)
cout << “没有找到您要找的车次!请重新输入” << endl;
else
{
cout << “请重新输入本次列车起点站的名称” << endl;
cin >> p->n;
cout << “请重新输入本次列车终点站的名称” << endl;
cin >> p->m;
cout << “请重新输入经过站点名称:”;
cin >> p->t;
cout << “请重新输入车次号码:”;
cin >> p->num;
cout << “请重新输入发车时间:”;
cin >> p->starttime;
cout << “请重新输入到站时间:”;
cin >> p->endtime;
}
}
void train::lookfor() //定义查询车次的函数
{
p = q;
char n[20];
char m[20];
char i;
cout << “请输入查询方式:1.车次查询\n”;
cout << " 2.站名查询\n";
cout << " 3.站-站查询\n";
cin >> i;
if (p == NULL)
{
cout << “没有列车信息!!” << endl;
}
switch (i)
{
case ‘1’:
{
cout << “请输入车次号码:” << endl;
cin >> n;
while (p != NULL)
{
if (strcmp(p->num, n) == 0)
{
cout << “经过起点站名称:” << p->n << endl;
cout << “经过终点站名称:” << p->m << endl;
cout << “车次号码:” << p->num << endl;
cout << “开车时间:” << p->starttime << endl;
cout << “到站时间:”<< p->endtime<<endl;
}
p = p->next;
}
return;
}
case '2':
{
cout << "请输入站名:" << endl;
cin >> n;
while (p != NULL)
{
if ((strcmp(p->n, n) == 0) || (strcmp(p->m, n) == 0))
{
cout << "起点站名称" << p->n << endl;
cout << "终点站名称" << p->m << endl;
cout << "车次号码" << p->num << endl;
cout << "开车时间" << p->starttime << endl;
cout << "到站时间" << p->endtime << endl;
}
p = p->next;
}
return;
}
case '3':
{
cout << "请输入起点站名" << endl;
cin >> n;
cout << "请输入终点站名" << endl;
cin >> m;
while (p != NULL)
{
if ((strcmp(p->n, n) == 0) && (strcmp(p->m, m) == 0))
{
cout << "起点站名称" << p->n << endl;
cout << "终点站名称" << p->m << endl;
cout << "车次号码" << p->num << endl;
cout << "开车时间" << p->starttime << endl;
cout << "到站时间" << p->endtime << endl;
}
p = p->next;
}
return;
}
default:return;
}
}
void train::printall() //定义显示车次信息的函数
{
p = q;
while (q != t)
{
cout << “起点站:” << q->n << endl;
cout << “终点站:” << q->m << endl;
cout << “经过站点:” << q->n << endl;
cout << “车次号码:” << q->num << endl;
cout << “发车时间:” << q->starttime << endl;
cout << “到站时间:” << q->endtime << endl;
q = q->next;
}
q = p;
}
void train::del() //定义删除车次信息的函数
{
NODE* k;
k = new NODE;
k = p = q;
char n[20];
cout << “请输入车次号码” << endl;
cin >> n;
while (p != t && (strcmp(p->num, n) != 0) != 0)
p = p->next;
if (p == t)
cout << “没有找到您要找的车次!请重新输入” << endl;
else
{
if (p == q)
q = q->next;
else
k->next = p->next;
free§;
cout << “删除成功” << endl;
}
}
void train::deleteall()
{
while (q != t)
{
p = q;
q = q->next;
free§;
}
cout << “成功删除所有信息!”;
}
void train::mima() //密码函数
{
char str1[20], str2[20] = “abcd”;//定义两个字符串数组,str2存放已知密码,str1存放输入密码
int i = 0, k, flag = 0;
cout << “请输入管理员密码:” << endl;
while (1)//死循环
{
cin >> str1;//输入密码
k = strcmp(str1, str2);//比较,输入密码和已知密码相等,k=0
++flag;//计数器加1
if (!k)
{
cout << “登陆成功\n” << endl;
break;
}
else if (k&&flag != 3) printf(“密码输入错误,请再次输入:\n”);
if (flag == 3)//当输入超过三次,跳出循环,结束程序
{
cout << “对不起,您无权使用” << endl;
break;
}
}
}
void operators() //身份选择界面
{
system(“cls”);
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
---------------------------------------------------
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−” << endl;
cout << “| 身份选择界面 |” << endl;
cout << “| 0.退出程序 |” << endl;
cout << “| 1.管理员 |” << endl;
cout << “| 2.乘客 |” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
---------------------------------------------------
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−” << endl;
}
void welcome() //欢迎界面
{
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
---------------------------------------------------
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−” << endl;
cout << “| |” << endl;
cout << “| 欢迎进入车次管理系统 |” << endl;
cout << “| |” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
---------------------------------------------------
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−” << endl;
cout << “按任意键进入系统” << endl;
getchar();
}
void display() //管理员可使用的功能
{
system(“cls”);
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
管
理
员
程
序
清
单
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
----------------------管理员程序清单---------------
−−−−−−−−−−−−−−−−−−−−−−管理员程序清单−−−−−−−−−−−−−−−” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
0
:
退
出
本
程
序
!
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
----------------------0:退出本程序!---------------
−−−−−−−−−−−−−−−−−−−−−−0:退出本程序!−−−−−−−−−−−−−−−” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
1
:
增
加
车
次
信
息
−
−
−
−
−
−
−
−
−
−
−
−
−
−
----------------------1:增加车次信息--------------
−−−−−−−−−−−−−−−−−−−−−−1:增加车次信息−−−−−−−−−−−−−−” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
2
:
修
改
车
次
信
息
−
−
−
−
−
−
−
−
−
−
−
−
−
−
----------------------2:修改车次信息--------------
−−−−−−−−−−−−−−−−−−−−−−2:修改车次信息−−−−−−−−−−−−−−” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
3
:
查
找
车
次
信
息
−
−
−
−
−
−
−
−
−
−
−
−
−
−
----------------------3:查找车次信息--------------
−−−−−−−−−−−−−−−−−−−−−−3:查找车次信息−−−−−−−−−−−−−−” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
4
:
显
示
车
次
信
息
−
−
−
−
−
−
−
−
−
−
−
−
−
−
----------------------4:显示车次信息--------------
−−−−−−−−−−−−−−−−−−−−−−4:显示车次信息−−−−−−−−−−−−−−” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
5
:
删
除
车
次
信
息
−
−
−
−
−
−
−
−
−
−
−
−
−
−
----------------------5:删除车次信息--------------
−−−−−−−−−−−−−−−−−−−−−−5:删除车次信息−−−−−−−−−−−−−−” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
6
:
删
除
所
有
车
次
信
息
−
−
−
−
−
−
−
−
−
−
----------------------6:删除所有车次信息----------
−−−−−−−−−−−−−−−−−−−−−−6:删除所有车次信息−−−−−−−−−−” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
7
:
返
回
上
一
页
面
−
−
−
−
−
−
−
−
−
−
−
−
−
−
----------------------7:返回上一页面--------------
−−−−−−−−−−−−−−−−−−−−−−7:返回上一页面−−−−−−−−−−−−−−” << endl;
cout << “请输入你要进行的功能” << endl;
}
void ckdisplay() //乘客可使用的功能
{
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
乘
客
程
序
清
单
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
----------------------乘客程序清单-----------------
−−−−−−−−−−−−−−−−−−−−−−乘客程序清单−−−−−−−−−−−−−−−−−” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
0
:
退
出
程
序
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
----------------------0:退出程序------------------
−−−−−−−−−−−−−−−−−−−−−−0:退出程序−−−−−−−−−−−−−−−−−−” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
1
:
查
找
车
次
信
息
−
−
−
−
−
−
−
−
−
−
−
−
−
−
----------------------1:查找车次信息--------------
−−−−−−−−−−−−−−−−−−−−−−1:查找车次信息−−−−−−−−−−−−−−” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
2
:
显
示
车
次
信
息
−
−
−
−
−
−
−
−
−
−
−
−
−
−
----------------------2:显示车次信息--------------
−−−−−−−−−−−−−−−−−−−−−−2:显示车次信息−−−−−−−−−−−−−−” << endl;
cout << “请输入你要进行的功能” << endl;
}
void main()
{
NODE* p;
int i, j = 1, f = 1, flag = 1;
char ch;
start = NULL;
p = (NODE*)malloc(sizeof(struct node));
train a§;
welcome();
system(“cls”);
while (j)
{
operators();
cout << “请选择操作员的身份(0——2):”;
cin >> i;
while (!(i == 1 || i == 2 || i == 0))
{
cout << “\a\a 选择错误!请重新选择!(0–2):”;
cin >> i;
}
if (i == 1)
{
a.mima();
system(“cls”);
display();
while (flag)
{
cout << “请选择菜单号(0——7):”;
cin >> i;
while (!(i == 1 || i == 2 || i == 3 || i == 4 || i == 5 || i == 6 || i == 7 || i == 0))
{
cout << “\a\a 选择错误!请重新选择!请选择菜单号(0–7):”;
cin >> i;
}
if (i == 1)
{
do
{
a.add();
cout << “是否继续添加车次信息[Y/N]?”;
cin >> ch;
while (!(ch == ‘n’ || ch == ‘N’ || ch == ‘y’ || ch == ‘Y’))
{
cout << “\n\t\t\a\a输入错误! (y/n)”;
cin >> ch;
}
}while (ch == ‘y’ || ch == ‘Y’);
}
else if (i == 0)
{
cout << “感谢您使用本程序!!” << endl;
for (i = 3; i > 0; i–) // 延时3秒
{
cout << "还有: " << i - 1 << “秒就要退出程序了-_-,真舍不得您呢~~\r”;
cout.flush();
Sleep(1000); // 延时1秒
}
j = 0;
flag = 0;
}
else
{
if (start == NULL)
cout << “请先建立车次信息!” << endl;
else if (i == 2)
a.edit();
else if (i == 3)
a.lookfor();
else if (i == 4)
a.printall();
else if (i == 5)
a.del();
else if (i == 6)
a.deleteall();
else
{
flag = 0;
}
}
cout << "请按回车键继续" << endl;
getchar();
}
}
else if (i == 2)
{
system("cls");
cout << "\n\n\n\n\nPs:欢迎乘客进入此系统,您可以查找任意车次的信息和查看所有车次的信息" << endl;
ckdisplay();
while (f)
{
cout << "请选择菜单号(0——2):";
cin >> i;
while (!(i == 1 || i == 2||i==0))
{
cout << "\a\a 选择错误!请重新选择!请选择菜单号(0--2):";
cin >> i;
}
if (start == NULL)
cout << "请先建立车次信息!" << endl;
else if (i == 1)
a.lookfor();
else if (i == 2)
a.printall();
else
{
cout << "感谢您使用本程序!!" << endl;
for (i = 3; i >0; i--) // 延时3秒
{
cout << "还有: " << i - 1 << " 秒就要退出程序了-_-,真舍不得您呢~~\r";
cout.flush();
Sleep(1000); // 延时1秒
}
j = 0;
f = 0;
flag = 0;
}
}
}
else
{
cout << "感谢您使用本程序!!" << endl;
for (i = 3; i >0; i--) // 延时3秒
{
cout << "还有: " << i - 1 << " 秒就要退出程序了-_-,真舍不得您呢~~\r";
cout.flush();
Sleep(1000); // 延时1秒
}
j = 0;
flag = 0;
}
}
}
2.3界面设计
系统开始界面
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
---------------------------------------------------
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−” << endl;
cout << “| |” << endl;
cout << “| 欢迎进入车次管理系统 |” << endl;
cout << “| |” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
---------------------------------------------------
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−” << endl;
cout << “按任意键进入系统” << endl;
图2-1系统开始界面
1.操作人员选择界面
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
---------------------------------------------------
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−” << endl;
cout << “| 身份选择界面 |” << endl;
cout << “| 0.退出程序 |” << endl;
cout << “| 1.管理员 |” << endl;
cout << “| 2.乘客 |” << endl;
cout << “
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
---------------------------------------------------
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−” << endl;
图2-2操作人员选择界面
2.管理员进入的界面
图2-3管理员进入的界面
3.乘客进入的界面
图2-4乘客进入的界面
三、测试结果分析
1.首先进入管理员界面
2.增加任一车次信息
3.修改车次信息(修改北京-广州为黑龙江-深圳)
4.查找车次信息
5.显示车次信息
6.删除车次信息
7.删除所有车次信息
8.增加车次信息跳回乘客界面查找本次车次信息
**已经增加了北京到广州的车次信息,按7功能键返回上一界面,进入乘客界面查找本次车次信息。选择任意查找车次。
四、
用户手册
管理员
4.1增加车次信息
进入主界面按任意键进入身份选择界面,按1选择管理员身份,输入初始密码abcd进入管理员功能操作界面,按1功能键进入增加车次信息界面。
4.2修改车次信息
如上操作进入管理员操作界面后,按2号功能键修改车次信息。
4.3查找车次信息
如上操作进入管理员操作界面后,按3号功能键查找车次信息。
4.4显示车次信息
如上操作进入管理员操作界面后,按4号功能键显示车次信息。
4.5删除某一车次信息
如上操作进入管理员操作界面后,按5号功能键删除某一车次信息。
4.6删除所有车次信息
如上操作进入管理员操作界面后,按6号功能键删除所有车次信息。
乘客
1.查找车次信息
进入乘客操作界面后,按一号功能键后选择任意查找方式进行查找车次信息。
2.显示车次信息
进入乘客操作界面后,按二号功能键显示车次信息。