车次信息管理系统课程设计C++

车次信息管理系统课程设计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.显示车次信息
进入乘客操作界面后,按二号功能键显示车次信息。

  • 0
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C++程序设计》 课程设计说明书 题 目 长途客运售票管理系统的设计 学 号 姓 名 指导教师 日 期 C++课程设计长途客运售票管理系统全文共25页,当前为第1页。 C++课程设计长途客运售票管理系统全文共25页,当前为第1页。 内蒙古科技大学课程设计任务书 课程名称 面向对象程序设计A课程设计 设计题目 长途客运售票管理系统的设计 指导教师 时间 一、教学要求 1. 巩固和加深学生对C++语言课程的基本知识的理解和掌握 2. 掌握C++语言编程和程序调试的基本技能 3. 利用C++语言进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用C++语言解决实际问题的能力 二、设计资料及参数 用C++设计一个系统,能提供下列服务: (1)录入车次信息,格式为: 车次 开车时间 起始 终点 票价 剩余座位 221 20:30 包头 北京 310 87 可不定时地增加车次数据。 (2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示"此班车已发出"的提示信息。 (3)查询路线:可按车次编号查询,可按起始站,终点站查询 (4)售票和退票功能 A:查询车次编号或站点。当剩余座位数大于0,并且当前系统时间小于开车时间时才能售票,售票后自动更新剩余座位数。 B:退票时,输入退票的车次,当本班车未发出时才能退票,退票后自动更新剩余座位数。 三、设计要求及成果 根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法); (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)提交课程设计报告:完成系统总结报告以及系统使用说明书 C++课程设计长途客运售票管理系统全文共25页,当前为第2页。 C++课程设计长途客运售票管理系统全文共25页,当前为第2页。 目录 第1章 需求分析 3 第2章 总体设计 3 第3章 类的设计 3 3.1 ×××类的设计 3 3.2 ×××类的设计 4 第4章 详细设计 4 4.1 工程视图 4 4.2 类图视图 4 4.3 函数的调用关系 5 4.4 主程序流程图 5 4.5 主要算法的流程图 5 第5章 测试 5 第6章 总结 5 附录:程序代码 6 C++课程设计长途客运售票管理系统全文共25页,当前为第3页。 C++课程设计长途客运售票管理系统全文共25页,当前为第3页。 需求分析 1.1设计资料及参数 用C++设计一个系统,能提供下列服务: (1)录入车次信息,格式为: 车次 发车时间 起始 终点 硬座票价 剩余座位 k264 20:30 包头 北京 110 200 可不定时地增加车次数据。 (2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示"此班列车已发出"的提示信息。 (3)查询路线:可按车次编号查询,可按起始站,终点站查询 (4)售票和退票功能 A:查询车次或站点。当剩余座位数大于0,并且当前系统时间小于发车时间时才能售票,售票后自动更新剩余座位数。 B:退票时,输入退票的车次,当本班列车未发出时才能退票,退票后自动更新剩余座位数。 总体设计 2.1用结构框图表示各个功能之间的关系 C++课程设计长途客运售票管理系统全文共25页,当前为第4页。 C++课程设计长途客运售票管理系统全文共25页,当前为第4页。 2.2将框图中系统的各个功能用文字详细的描述。 1.铁路售票管理系统理解: 系统中必须有车次信息,车次信息应该是由管理员录入,可由管理员或者乘客查看,定退票及其他操作。其中要注意的是录入信息必须是由管理员完成的,所以我会创建一个乘客类,然后创建管理员类继承乘客类,进而继承乘客的所有功能,并添加录入信息的功能。 信息的载体可以使链表,也可以是数组,因为我更加熟悉数组,所以我用对象数组。(为了熟悉链表,课下自己还建立了以链表存放数据的系统) 系统录入信息的操作非常枯燥,所以我创建了一个文件,把每次录入的信息保存入文件,在下一次进入系统是,它会默认读取文件原有的信息,当然也可以随时添加录入车次信息。 然后系统的各个功能仅仅是通过查询找到具体对象的具体数据进行操作。 2.基本功能: 录入——次、始发站、终点站、开车时间(小时、分钟)、票价、剩余票数等信息。 浏览车次——查看所有的录入车次其中开车时间小于当前时间的车次则输出车次已发出。 查询车次——通过搜索车次或站点来快速的查看车辆的信息。 定退票——车时间大于当前系统时间的前提下才可退票并且在票数大于零的前提下才可定票,票数更新。 文件的存储——存储录入的车次信息以便下次访问。 文件的读取——读取文件内的信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值