Java学习第八周
include
include
include
include
include
using namespace std;
time_t t=time(NULL);//设置当前时间
static int n=0;//总车次
void menu();
class bus //车票车次类
{
public:
int hour; //发车时间(时)
int minute; //发车时间(分)
char start_station[20]; //起始站
char end_station[20]; //终点站
double runtime; //行车时间
int busload; //载客量
int ys; //已售票
};
class sy //管理系统类
{
private:
bus bs;
public:
void input();//录入车次信息
void browse();//浏览车次信息
void search_train();//按车次查询
void search_station();//按终点站查询
void sp();//售票
void tp();//退票
void display(int a);//显示各车次信息
friend void save();//保存数据
friend void read();//初始化函数,读取"数据.txt"的数据
};
sy ticket[1000];
/* 将车次信息存储在文本文件数据.txt中 /
void save()
{
ofstream file("数据.txt",ios_base::out);
int i;
for(i=0;i<n;i++)
{
file<<i+1<<" ";
file<<ticket[i].bs.hour<<" ";
file<<ticket[i].bs.minute<<" ";
file<<ticket[i].bs.start_station<<" ";
file<<ticket[i].bs.end_station<<" ";
file<<ticket[i].bs.runtime<<" ";
file<<ticket[i].bs.busload<<" ";
file<<ticket[i].bs.ys<<endl;
}
file.close();
cout<<"信息已存入文件"<<endl;
}
/录入车次信息/
void sy::input()
{
cin>>ticket[n].bs.hour>>ticket[n].bs.minute;
cin>>ticket[n].bs.start_station>>ticket[n].bs.end_station;
cin>>ticket[n].bs.runtime>>ticket[n].bs.busload>>ticket[n].bs.ys;
n++;
save();
}
/ 浏览车次信息 /
void sy::browse()
{
tmpt=localtime(&t);
cout<<"当前时间: "<<setw(2)<
cout<
cout<<"车次信息:"<<endl;
cout<<"班次号\t"<<"发车时间 "<<"起始站 "<<"终点站 "<<"行车时间 "<<"载客量 "<<"已售票 "<<"状态"<<endl;
int j;
for(j=0;j<n;j++)
{
ticket[j].display(j+1);
cout<<" ";
if(ticket[j].bs.hour< pt->tm_hour){
cout<<"此班已发出"<<endl;
}else{
if (ticket[j].bs.minute<=pt->tm_min&&ticket[j].bs.hourpt->tm_hour){
cout<<"此班已发出"<<endl;
}else{
cout<<"此班未发出"<<endl;
}
}
}
}
/* 显示 */
void sy::display(int a){
cout<<a<<"\t"<<bs.hour<<":";
if(bs.minute0){
cout<<"00";
}else{
cout<<bs.minute;
}
cout<<"\t "<<" "<<bs.start_station<<"\t"<<" "<<bs.end_station<<" "<<bs.runtime<< " "<<bs.busload<<" "<< bs.ys;
}
/* 按车次查询 /
void sy::search_train(){
int s;
cout<<"输入要查询的车次: ";
cin>>s;
cout<<"班次号\t"<<"发车时间 "<<"起始站 "<<"终点站 "<<"行车时间 "<<"载客量 "<<"已售票"<<endl;
cout<<s<<"\t"<<ticket[s - 1].bs.hour << ":"<<ticket[s - 1].bs.minute<<"\t"<<ticket[s - 1].bs.start_station<<"\t"<<ticket[s - 1].bs.end_station<<"\t"<<ticket[s-1].bs.runtime<<"\t"<<ticket[s-1].bs.busload<<"\t"<<ticket[s-1].bs.ys<<endl;
}
/ 按终点站查询 /
void sy::search_station(){
char s[20];
int flag=0;
cout<<"要查询的终点站: ";
cin>>s;
int j;
cout<<"查询结果:" << endl;
cout<<"班次号\t"<<"发车时间 "<<"起始站 "<<"终点站 "<<"行车时间 "<<"载客量 "<<"已售票"<<endl;
for (j=0;j<n;j++){
if(strcmp(s,ticket[j].bs.end_station)==0){
cout<<j+1<<"\t"<<ticket[j].bs.hour<<":"<<ticket[j].bs.minute<<"\t"<<ticket[j].bs.start_station<<"\t"<<ticket[j].bs.end_station<<"\t"<<ticket[j].bs.runtime<<"\t"<<ticket[j].bs.busload<<"\t"<<ticket[j].bs.ys<<endl;
}
}
}
/ 初始化函数,从数据.txt中读出信息 /
void read(){
ifstream file("数据.txt",ios_base::in);
while(!file.eof()){
file>>ticket[n].bs.hour;
file>>ticket[n].bs.minute;
file>>ticket[n].bs.start_station;
file>>ticket[n].bs.end_station;
file>>ticket[n].bs.runtime;
file>>ticket[n].bs.busload;
file>>ticket[n].bs.ys;
n++;
}
file.close();
}
/ 售票 /
void sy::sp(){
int flag=0;
int a;
cout<<"输入售票班次号: ";
cin>>a;
tmpt=localtime(&t);
if(ticket[a - 1].bs.ys<ticket[a - 1].bs.busload){
if (ticket[a - 1].bs.hour>pt->tm_hour){
flag=1;
}else{
if(ticket[a-1].bs.hourpt->tm_hour&&ticket[a-1].bs.minute>pt->tm_min){
flag = 1;
}
}
}
if (flag == 1){
cout<<"售票成功"<<endl;
ticket[a-1].bs.ys++;
}else{
cout<<"票已售完"<<endl;
}
}
/* 退票 /
void sy::tp(){
int a;
cout<<"退票的车次: ";
cin>>a;
tmpt=localtime(&t);
int flag=0;
if(ticket[a-1].bs.hour>pt->tm_hour){
flag = 1;
}else{
if(ticket[a-1].bs.hourpt->tm_hour&&ticket[a-1].bs.minute>pt->tm_min){
flag=1;
}
}
if (flag==1){
cout<<"退票成功"<<endl;
ticket[a-1].bs.ys--;
}else{
cout<<"退票失败"<<endl;
}
}
/主菜单/
void menu(){
cout<<""<<endl;欢迎使用车票管理系统!
cout<<" ========================="<<endl;
cout<<" 1.录入车票信息 "<<endl;
cout<<" 2.浏览车票信息 "<<endl;
cout<<" 3.查询车票信息 "<<endl;
cout<<" 4.售票 "<<endl;
cout<<" 5.退票 "<<endl;
cout<<" 6.退出系统 "<<endl;
}
int main(){
menu();
int m;
int f;
int z=1;
sy p;
while(z1){
cout<<"\n请选择: ";
cin>>m;
switch(m){
case 1:p.input();
break;//录入车票信息
case 2:p.browse();
break;//浏览车票信息
case 4:p.sp();
break;//售票
case 5:p.tp();
break;//退票
case 6:z = 0;
break;//退出系统
case 3:
cout<<"查询方式(按车次查询输入1,按终点站查询输入2):";
cin>>f;
if(f1){
p.search_train();
}
if(f==2){
p.search_station();
}
}
}
return 0;
}
(1)录入车次信息(文本文件保存),可随机地增加班次数据。
(2)浏览车次信息,可显示出所有车次当前状态(如果当前时间
超过了某车次的发车时间,则显示“此班已发出”的信息)。
(3)查询路线:可按车次号查询,可按终点站查询
(4)售票和退票功能:情况A:当查询出已售票数小于额定载量且
当前系统时间小于发车时间时才能售票,自动更新已售票人数;情
况B:退票时,输入退票的车次,当本班车未发出时才能退票,自
动更新已售票人数。
程序要求:
(1)车票的总车次n(n<1000,使用静态数组实现),
(2)定义两个类:管理系统类和车票车次类。
程序所显示的菜单基本内容如下:
=====================
1.录入车票信息
2.浏览车票信息
3.查询车票信息
4.售票
5.退票
6.退出系统
请选择
package com.sxt;
public class User {
int id;
String name;
String pwd;
public User() {
}
public User(int id) {
this.id=id;
}
public User(int id,String name) {
this.id=id;
this.name=name;
}
public User(int id,String name,String pwd) {
this.id=id;
this.name=name;
this.pwd=pwd;
}
public static void main(String[] args) {
User u=new User();
User u1=new User(1001,"李");
User u2=new User(1002,"王","123456");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)