资源描述
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2023年秋季学期
面向对象课程设计
题 目: 公交公司管理系统
专业班级: 计算机科学与技术1班
姓 名: 金明
学 号: 10240113
指导教师: 年福忠
成 绩:
目 录
摘 要................................................................3
序 言 4
正 文 5
1. 问题描述 5
2. 系统总体设计 6
3. 具体设计 7
4. 程序调试与测试 8
5. 结果分析 13
6. 软件安装和使用说明书 14
设 计 总 结 15
参考文献 16
致 谢 17
附件Ⅰ 程序代码 18
摘 要
C++是一门编程语言,也是一个平台,具有跨平台优势,具有简朴、面向对象、分布式、解释执行、健壮、安全、体系结构中立的、可移植、高性能、多线程、以及多态性的特点。本公交公司管理系统提供用户注册和登录功能,使用户登录成功后能查询到所需的信息,同时可以进行简朴的输入、查询信息等并提供搜索
功能。该程序显示GUI界面并运用部分java辅助。
关键词:C++;公交公司管理;信息管理。
序 言
随着计算机的普及和计算机技术的飞速发展,人们越来越多的运用计算机解决实际问题。城市公共交通系统是一个复杂的系统, 公交生产的三要素(人、车、路) 处在开放的大系统中, 运营作业具有点多、线长、面广和运营条件复杂等特点, 传统的解决信息方法给整个系统的管理带来了很多困难, 难以适应现代化管理的需要. 因此, 将公共交通管理与计算机技术有机结合起来, 研制出一个信息收集、储存、传输、辨认、提取、控制和运用的综合信息管理系统已势在必行
本程序是一个图形界面的简朴的c++公交公司管理系统,整个系统从操作简便、界面和谐、灵活、实用、安全的角度出发,使用人员能快捷简朴地进行操作,即时准确地获得需要的公交信息。可以进行简朴的注册,登录,登录成功后可以查询到需要的信息,并提供查找和搜索功能。
正 文
1. 问题描述
该公交公司管理系统具体功能规定是要可以显示GUI用户界面,用c++语言设计并以JDK为开发平台能实现公交公司的管理并且界面要用图形界面实现
2. 系统总体设计
一方面明确该实验设计的规定实现的基本功能,另一方面设计布局,使用布局管理器设计布局,安排每个组件的位置,并设立菜单和菜单项。。程序流程图如下图:
开始
搜索事件解决模块
用户登录注册模块
提交公交信息模块
结束
图一 总体设计
用户名
密码
检查
Y恭喜你注册成功把数据写入File("Student.dat");
N对不起此用户名已注册
结束
输入关键字
遍历查找
Y 显示找到的信息
N 反馈犯错信息给用户
结束
图二 功能模块图
3. 具体设计
一、程序中重要内容:
1) 运营管理:
2) 票务管理:
3) 物资管理:
4) 车辆管理:
二、程序功能介绍:
功能1,涉及对车辆的购置、运营技术状况。
功能2,可输入公交车的信息。
功能3,可通过搜索找到已有的数据信息。
功能4,驾驶员信息查询。
功能5,管理员信息注册。
4. 程序调试与测试
调试显示公交管理系统GUI界面:
1.运营界面
2.用户登陆
3用户注册
4.添加公交信息
5.搜索公交信息
5. 结果分析
公交公司管理系统就是管理公交信息及查找所需的公交信息等,同时可以根据客运量和票价得到该路公家的营收额。此公交公司管理系统提供了提交、查找 和用户登录功能,对于本系统,我们还可以扩充很多功能 比如说营收排序、数据写入数据库、菜单的事件解决等都是可扩展的功能。同时进行关键字搜索的时候,结果太多,没有分类,假如数据量足够大的话,会让使用者感觉很烦乱,不能不久的找到所需求的信息,这是本程序的局限性之处。在此本人由于时间的关系和知识的欠缺没有实现,希望有能力的同学可以实现程序。
6. 软件安装和使用说明书
该程序采用结构化的程序设计方法编写而成,安装非常简朴,只需在windows系统下安装该程序的可执行文献就可以让有一定计算机基础的人员,根据程序的提醒信息开始操作。
本程序充足考虑到了操作者的技术规定,旨在降级程序的操作规定达成人人可操作限度。所以,程序中给出了相称多的操作提醒,以便减轻用户的操作难度,以使广大用户易于接受。
设 计 总 结
在做公交公司管理系统的过程中碰到了不少的问题,同时也有不小的收获。
看相关的书,模仿书上的例题,查找一些类的方法的运用,慢慢去学着怎么灵活的使用面板来布局,来添加组件。像事件解决这一块的确出了不少难题。例如用户的登录和注册,一方面怎么检查用户名是否注册,注册了怎么做错误解决等等,尚有怎么把公交车数据存入数组,再把数组显示到右边的表格里,这些都比较头疼。还通过网络如百度、CSDN上查找解决的方法及周边同学的帮助。这次课设实践给了我们一个既动手又动脑,独立实践的机会但其中又包含着共同合作,对我们能力提高很有帮助。
参考文献
[1]初小璐.完全掌握SQL Server 2023 [M] 机械工业出版社,2023
[2]Jeraod V.Post.数据库管理系统(英文版.第三版)[美]清华大学出版社,2023.1
[3]张海藩.软件工程导论[M].北京:清华大学出版社,1998.1
[4]谢希仁.计算机网络(第二版)[M].北京:电子工业出版社,2023.6
[5]戴志诚,赵国峰.JSP信息化系统建设案例[M].北京:人民邮电出版社,2023.12
[6]成晓静,毕靖.网页设计三剑客完全学习手册[M].北京:中国电力出版社,2023.11
[7]赵强.精通JSP编程[M].北京:电子工业出版社,2023.3
[8]萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2023.2
[9]张海藩,李劲,谢兆阳.SQL Server2023数据库设计与系统管理[M].北京:清华大学出版社,2023.9
[10]刘禾,蔡锋.Web数据库假设技巧[M].北京:科技技术出版社,1999.4
[11]徐建波. Internet与Web设计教程[M].北京:中国矿业大学出版社,2023.12
[12]于书举,许向众.数据库设计与开发教程[M].北京:电子工业出版社,2023.11
[13]安海忠,李文斌,林旭新.商业网站建设与管理[M].北京:人民交通出版社,2023.8
[14]T.Umeda and S.Hagiwara.web-based database for EPR centers in semiconductors[J].BPhysica B:Condensed Matter,3(7),249-252,2023.3
[15]Yih-Ling Hedley,Muhammad Younas.Sampling,information extraction and summarisation of Hidden Web databases[J].Data & Knowledge Engineering,In Press,Uncorrected Proof,Available online 10 March 2023.2
致 谢
通过一个学期的C++学习,对C++编程有了一定的结识,在做这个课程设计的时候,刚开始感觉自己无从下手,不知道该怎么开始,很茫然。最终运用网络资源和查阅图书馆的书籍,在老师和同学的指导和讨论下,通过一段时间终于完毕了这个设计,从中学到了很多书本知识不能体现的东西,也通过这次的程序设计感觉到自己平时对于编程实际操作的贫乏没有把书本上知识真正的掌握牢固。
附件Ⅰ 程序代码
#include "stdafx.h"
#include "busl.h"
#include "buslDlg.h"
#include"Buswr.h"
#include"Modifybus.h"
#include"Bussearch.h"
#include"Sitewr.h"
#include"Dmsite.h"
#include"Dlsite.h"
#include"Design.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
void CBuslDlg::OnBuswr() //公交车基本信息录入单击事件函数
{
Buswr bus;
bus.DoModal();
}
void CBuslDlg::OnBusmo() //公交车基本信息修改
{
Modifybus busmo;
busmo.DoModal();
}
void CBuslDlg::OnBuslo()//公交车基本信息查询
{
Bussearch sea;
sea.DoModal();
}
void CBuslDlg::OnDlo() //站点信息查询
{
ShellExecute(NULL,"open","f:\\站点基本信息.txt",NULL,NULL,SW_SHOW);
}
void CBuslDlg::OnDmo()//站点信息修改
{
ShellExecute(NULL,"open","f:\\站点基本信息.txt",NULL,NULL,SW_SHOW);
}
void CBuslDlg::OnDwr()//站点信息的录入
{
Sitewr te;
te.DoModal();
}
void CBuslDlg::OnFshe() //方案设计
{
Design de;
de.DoModal();
}
void CBuslDlg::OnExit() //退出应用程序
{
if(MessageBox("拟定要退出应用程序吗?","系统提醒!",MB_OKCANCEL|MB_ICONQUESTION)!=IDOK)
return;
exit(0);
}
if (e.getSource() == login) {
String NCmp = Tname.getText();
String PCmp = Tpassword.getText();
boolean flag = false;
for (int i = 0; i < Usersname.length; i++) {
if (NCmp.equals(Usersname[i])) {
flag = true;
break;
}
}
if (flag) {
JOptionPane.showMessageDialog(null, "对不起此用户名已经注册!", "错误", JOptionPane.ERROR_MESSAGE);
}
else {
int index = 0;
JOptionPane.showMessageDialog(null, "注册成功!", "消息", JOptionPane.INFORMATION_MESSAGE);
for (int i = 0; i < Usersname.length; i++) {
if (Usersname[i] == null) {
Usersname[i] = NCmp;
index = i;
break;
}
}
Userspassword[index] = PCmp;
}
try{
file1=new File("Transit.dat");
FileWriter fw=new FileWriter(file1,true);
fw.write("用户名"+"\t\t"+"密码"+"\n");
fw.write(NCmp+"\t\t"+PCmp+"\n");
fw.close();
}catch (IOException e1){
e1.printStackTrace();
}
}
if(flag) {
if(e.getSource() ==Certain){
Float Frevenue;
String revenue;
String name=Tname.getText();
String number=TNumber.getText();
int Intnumber=Integer.parseInt(number);//这个需要判断输入的值是否为空,并且输入的是否是数字
String driver=TDriver.getText();//这个需要判断输入的值是否为空
String price=TPrice.getText();
float Fprice=Float.parseFloat(price);//这个需要判断输入的值是否为空,并且输入的是否是数字
String source=TSource.getText();//这个需要判断输入的值是否为空
String destination=TDestination.getText();//这个需要判断输入的值是否为空
String amount=TAmount.getText();
int Intamount=Integer.parseInt(amount);//这个需要判断输入的值是否为空,并且输入的是否是数字
Frevenue=Fprice*Intamount;
revenue=Float.toString(Frevenue);
int len1=len;
int len2 = 0;
TransitInformation[len1][len2++]=number;
TransitInformation[len1][len2++]=driver;
TransitInformation[len1][len2++]=price;
TransitInformation[len1][len2++]=source;
TransitInformation[len1][len2++]=destination;
TransitInformation[len1][len2++]=amount;
TransitInformation[len1][len2++]=revenue;
len ++;
table.updateUI();
}
if (e.getSource() == Sbutton) {
BaseTransit.setText("");
int i, j;
boolean brk = false;
String seach = Stextfield.getText();
for (i = 0; i < TransitInformation.length; i++) {
for (j = 0; j < TransitInformation[i].length; j++) {
if (seach.equals(TransitInformation[i][j])) {
brk = true;
BaseTransit.append(TransitBase[0] + ":");
BaseTransit.append(TransitInformation[i][0]);
BaseTransit.append("\n");
BaseTransit.append(TransitBase[1] + ":");
BaseTransit.append(TransitInformation[i][1]);
BaseTransit.append("\n");
BaseTransit.append(TransitBase[2] + ":");
BaseTransit.append(TransitInformation[i][2]);
BaseTransit.append("\n");
BaseTransit.append(TransitBase[3] + ":");
BaseTransit.append(TransitInformation[i][3]);
BaseTransit.append("\n");
BaseTransit.append(TransitBase[4] + ":");
BaseTransit.append(TransitInformation[i][4]);
BaseTransit.append("\n");
BaseTransit.append(TransitBase[5] + ":");
BaseTransit.append(TransitInformation[i][5]);
BaseTransit.append("\n");
BaseTransit.append("\n");
BaseTransit.append(TransitBase[6] + ":");
BaseTransit.append(TransitInformation[i][6]);
BaseTransit.append("\n");
BaseTransit.append("\n");
}
}
}
if (!brk) {
JOptionPane.showMessageDialog(null, "对不起您的搜索条件不对的!", "错误",JOptionPane.ERROR_MESSAGE);
}
}
}
}
public static void main(String []args){
Frame FTransit=new Transit();
FTransit.setSize(600,400);
FTransit.setTitle("公交公司管理系统");
FTransit.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
FTransit.setVisible(true);
}
}
void CBuslDlg::OnInternet()
{
ShellExecute(0, "open", NULL, NULL, SW_SHOWNORMAL);
}
void Buswr::OnWr()
{
UpdateData(TRUE);//用于将屏幕上控件中的数据互换到变量中。
int m=0,n=0;
if(m_Pcheci==0||m_Pnextt==0||m_Ptotalt==0)
{
MessageBox("请填写完整!","提醒!",MB_OK|MB_ICONEXCLAMATION);
}
else
{
if(m_Pstim<=m_Povert)
{
CStdioFile file;
CStdioFile fir;
CString str;
CString strtemp;//每读取一行的复制
CString temp;
file.Open(_T("f:\\公交车基本信息.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite|CFile::typeText|CFile::shareDenyNone);
fir.Open(_T("f:\\公交车基本信息.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite|CFile::typeText|CFile::shareDenyNone);
file.Seek(0,CFile::end);
while(fir.ReadString(strtemp))
{
m++;
temp.Format("%3d",m_Pcheci);
if(strtemp.Find(temp,0)!=-1)
{
}
else
n++;
}
if(m==n)
{
str.Format("\n%3d%3d%3d%3d%3d%3d%3d\n",m_Pcheci,m_Pstim,m_Pstimt,m_Povert,m_Povertt,m_Pnextt,m_Ptotalt);
file.WriteString(str);
UpdateData(FALSE);
UpdateData(TRUE);
m_Pcheci=0;
m_Pstim=0;
m_Pstimt=0;
m_Povert=0;
m_Povertt=0;
m_Pnextt=0;
m_Ptotalt=0;
}
else
MessageBox("车次已存在,请重新输入……","提醒!");
fir.Close();
file.Close();
}
else
{
MessageBox("输入时间有误!","提醒!");
}
UpdateData(FALSE);//用于将数据在屏幕中相应控件中显示出来。
}
void Modifybus::OnModok()
{
UpdateData(TRUE);
int flag=0;
int flg=0;
CStdioFile file;
file.Open("f:\\公交车基本信息.txt",CFile::modeReadWrite|CFile::typeText |CFile::shareDenyNone); //读
CStdioFile fir;
fir.Open("f:\\公交车基本信息.txt",CFile::modeReadWrite|CFile::typeText |CFile::shareDenyNone); //写
//file.SeekToBegin();
CString strstart;
CString temp,mp,strche;
CString netemp;
netemp.Format("%3d%3d%3d%3d%3d%3d%3d\n",m_Pmoche,m_Pmosta,m_Pmostf,m_Pmoend,m_Pmoenf,m_Pmonex,m_Pmotot);
strche.Format("%3d",m_Pmoche);
if(file&&fir)
{
if(m_Pmoche!=0&&m_Pmonex!=0&&m_Pmotot!=0)
{
while(file.ReadString(temp))
{
mp=temp;
strstart=temp.Left(3);
if(strstart==strche)
{
temp.Replace(mp,netemp);
//fir.WriteString(temp);
MessageBox("修改成功!","提醒");
flag=1;
}
else
temp=temp+"\n";
fir.WriteString(temp);
}
}
else
{
flg=1;
MessageBox("请填写完整!","提醒!");
}
file.Close();
fir.Close();
UpdateData(TRUE);
}
if(flag==0&&flg==0)
{
MessageBox("数据库中不存在此车次,请先录入……","提醒!");
}
}
void Bussearch::OnBusse()
{
UpdateData(TRUE);
int flag=0;
CString strTemp;
CString strStart;
CString temp;
CStdioFile file;
CStdioFile fir;
fir.Open("f:\\站点基本信息.txt",CFile::modeReadWrite|CFile::typeText);
file.Open("f:\\公交车基本信息.txt",CFile::modeReadWrite|CFile::typeText); //只读
//file.Seek(0,CFile::begin);
CString str;
str.Format("%3d",m_Pbusnum);
file.SeekToBegin();
while(file.ReadString(strTemp)) // 每读完一行,指向下一行,假如读到文献末尾,退出循环
{
//file.Seek(0,CFile::current);
file.ReadString(strTemp);
strStart=strTemp.Left(3);
if (strStart==str)
{
sscanf(strTemp, "%3d%3d%3d%3d%3d%3d%3d",&m_Pbusnum,&m_Pseatims,&m_Pseatimf,&m_Pseaov,&m_Pseaovf,&m_Pseane,&m_Pseatota);
flag=1;
}
}
file.Close();
if(flag!=1)
{
MessageBox("无此车次!","系统提醒!");
}
while(fir.ReadString(temp))
{
strStart=temp.Left(3);
if(strStart==str)
m_Pseasite=temp;
}
fir.Close();
UpdateData(FALSE);
}
void Sitewr::OnSitewrt()
{
UpdateData(TRUE);
if(m_comcheci==""||m_deson==""||m_desthr==""||m_destw==""||m_siteone==""||m_sitethr==""||m_sitethu==""||m_sitetwo=="")
{
MessageBox("请填写完整!站点至少四个或以上","提醒!",MB_OK|MB_ICONEXCLAMATION);
}
else
{
CStdioFile file;
file.Open(_T("f:\\站点基本信息.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite|CFile::typeText);
file.Seek(0,CFile::end);
CString str;
//str.Format("%3s%4s%3s%4s%3s%4s%5s\n",m_comcheci,m_siteone,m_sitetwo,m_sitethr,m_sitethu,m_sitefiv,m_sitesix,m_deson,m_destw,m_desthr,m_desthu,m_desfi);
file.WriteString(m_comcheci);file.WriteString("次 途经站点为:");
file.WriteString(m_siteone);file.WriteString("->");
file.WriteString(m_sitetwo);file.WriteString("->");
file.WriteString(m_sitethr);file.WriteString("->");
file.WriteString(m_sitethu);file.WriteString("->");
file.WriteString(m_sitefiv);file.WriteString("->");
file.WriteString(m_sitesix);file.WriteString(" 前后两站里程各为(单位:米)");
file.WriteString(m_deson);file.WriteString(" ");
file.WriteString(m_destw);file.WriteString(" ");
file.WriteString(m_desthr);file.WriteString(" ");
file.WriteString(m_desthu);file.WriteString(" ");
file.WriteString(m_desfi);file.WriteString("\n");
file.Close();
m_comcheci="",m_siteone="",m_sitetwo="",m_sitethr="",m_sitethu="",m_sitefiv="",m_sitesix="",m_deson="",m_destw="",m_desthr="",m_desthu="",m_desfi="";
UpdateData(FALSE);
}
}
void Design::OnFsok()
{
UpdateData(TRUE);
CString str,temp,strtemp;
int flg=0,flag=0,flag1=0,flag2=0;
//int pose1=0,pose2=0;
if(m_Psheend==""||m_Pshesta=="")
{
MessageBox("请输入完整!","提醒");
}
CStdioFile file;
file.Open("f:\\站点基本信息.txt",CFile::modeReadWrite|CFile::typeText); //只读
if(!file)
MessageBox("打开文献错误","提醒!",MB_OK);
else
{
while(file.ReadString(temp))
{
if(temp.Find(m_Pshesta)!=-1&&temp.Find(m_Psheend)!=-1)//&&m_Psheend!=""&&m_Pshesta!=""可以加上去
{
str="您可以乘坐"+temp.Left(3)+"车次,从"+m_Pshesta+"到"+m_Psheend;
}
else
{
if(temp.Find(m_Pshesta)!=-1&&temp.Find(m_Psheend)==-1)
{
str="您可以乘坐"+temp.Left(3)+"车次";
flag1=1;
}
if(temp.Find(m_Psheend)!=-1&&temp.Find(m_Pshesta)==-1)
{
str+="再乘坐"+temp.Left(3)+"车次(您需要转车……)";
flag2=1;
}
}
}
}
m_Presult=str;
/*if(flag1==0)
MessageBox("不存在该始发站!","提醒!");
*/
if(flag2==0)
MessageBox("不存在该终点站!","提醒!");
file.Close();
UpdateData() }
展开阅读全文