#include
#include "regisered.h"
#include "maininterface.h"
#include "userpasswod.h"
//声明外部变量
extern QString usernamelineEdit;
extern QString useridlineEdit;
extern QString userstylelineEdit;
extern QString userphonelineEdit;
#define cout qDebug()<<'['<<_FILE_<<':'<<_LINE_<<']'
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
.cpp文件:
#include "widget.h"
#include "ui_widget.h"
#include
QString usernamelineEdit;
QString useridlineEdit;
QString userstylelineEdit;
QString userphonelineEdit;
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setWindowTitle("航空售票系统");
//设置标题图片
this->setWindowIcon(QIcon(QPixmap(":/icon/icon/show.png")));
//设置登录界面图片
ui->usericon->setPixmap(QPixmap(":/icon/icon/yonghu.png"));
ui->usericon->setAlignment(Qt::AlignCenter);
//设置控件间隙
QHBoxLayout *layout=new QHBoxLayout(this);
layout->setMargin(0);
layout->setSpacing(0);
//创建注册窗口的指针
regisered *showregisered=new regisered();
//创建主界面窗口的指针
maininterface *showmaininterface=new maininterface();
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); //数据库驱动类型为SQL Server
qDebug()<<"ODBC driver?"<loginbtn,&QPushButton::clicked,this,[=](){
QString userid=ui->userid->text();
QString userpassword=ui->userpassword->text();
QString userinfo=QString("select *from userinfo "
"where id=%1 and userpassword=%2").arg(userid).arg(userpassword);
QSqlQuery query;
if(userid==""||userpassword=="")
{
QMessageBox::information(this,"登录信息","用户名或密码不能为空!");
}
else if(query.exec(userinfo)==true&&query.next()==true)
{
useridlineEdit=query.value(0).toString();
usernamelineEdit=query.value(1).toString();
userstylelineEdit=query.value(2).toString();
userphonelineEdit=query.value(3).toString();
this->hide();
showmaininterface->show();
}
else
QMessageBox::information(this,"登录信息","密码或用户名错误!");
});
//注册按钮
connect(ui->regstarbtn,&QPushButton::clicked,this,[=](){
this->hide();
showregisered->show();
});
}
Widget::~Widget()
{
delete ui;
}
主界面:
#ifndef MAININTERFACE_H
#define MAININTERFACE_H
#include
#include
#include "widget.h"
#include
#include
#include
#include
#include
#include "userinfowidget.h"
#include "userpasswod.h"
#include "userpasswod.h"
#include
namespace Ui {
class maininterface;
}
class maininterface : public QWidget
{
Q_OBJECT
public:
explicit maininterface(QWidget *parent = 0);
~maininterface();
void closeEvent(QCloseEvent *event);
private:
Ui::maininterface *ui;
};
#endif // MAININTERFACE_H
.cpp文件:
#include "maininterface.h"
#include "ui_maininterface.h"
#include
#include
#include
maininterface::maininterface(QWidget *parent) :
QWidget(parent),
ui(new Ui::maininterface)
{
ui->setupUi(this);
this->setWindowTitle("航空售票系统主界面窗口");
//声明用户信息显示窗口的指针
userinfoWidget *userinfowidget=new userinfoWidget();
//声明用户修改密码的指针
userpasswod *password=new userpasswod();
//设置tableview整行被选中
ui->buyticketstableView->setSelectionBehavior(QAbstractItemView::SelectRows);
//设置奇偶航颜色不同
ui->airlinetableView->setAlternatingRowColors(true);
ui->airticketstableView->setAlternatingRowColors(true);
ui->cortableView->setAlternatingRowColors(true);
ui->routetableView->setAlternatingRowColors(true);
ui->timetableView->setAlternatingRowColors(true);
ui->buyticketstableView->setAlternatingRowColors(true);
ui->ordertableView->setAlternatingRowColors(true);
//设置下拉日期
ui->routedateEdit->setCalendarPopup(true);
ui->userdateEdit->setCalendarPopup(true);
ui->airticketsdateEdit->setCalendarPopup(true);
ui->buyticketsdateEdit->setCalendarPopup(true);
//设置控件间隙
QHBoxLayout *layout=new QHBoxLayout(this);
layout->setMargin(0);
layout->setSpacing(0);
//选择栏
//用户按钮
connect(ui->userchoosebtn,&QToolButton::clicked,this,[=](){
ui->infostackedWidget->setCurrentIndex(0);
});
//表格按钮
connect(ui->formbtn,&QToolButton::clicked,this,[=](){
ui->infostackedWidget->setCurrentIndex(1);
});
//设置标题图片
this->setWindowIcon(QIcon(QPixmap(":/icon/icon/show.png")));
//设置默认显示页
ui->showWidget->setCurrentIndex(0);
ui->infostackedWidget->setCurrentIndex(2);
//接受注销用户按钮发来的信号
connect(userinfowidget,&userinfoWidget::mainfacecolose,this,[=](){
this->hide();
});
//退出系统按钮
connect(ui->dropoutsystem,&QToolButton::clicked,this,[=](){
int youchoose=QMessageBox::information(this,"信息窗口","你确定退出售票系统吗?",QMessageBox::Yes|QMessageBox::No);
if(youchoose==QMessageBox::Yes)
{
exit(0);
}
});
//查询代售地信息下拉框内容
ui->daytimecombox->addItem("2020年01月份");
ui->daytimecombox->addItem("2020年02月份");
ui->daytimecombox->addItem("2020年03月份");
ui->daytimecombox->addItem("2020年04月份");
ui->daytimecombox->addItem("2020年05月份");
ui->daytimecombox->addItem("2020年06月份");
ui->daytimecombox->addItem("2020年07月份");
ui->daytimecombox->addItem("2020年08月份");
ui->daytimecombox->addItem("2020年09月份");
ui->daytimecombox->addItem("2020年10月份");
ui->daytimecombox->addItem("2020年11月份");
ui->daytimecombox->addItem("2020年12月份");
//设置座位类型下拉框内容
ui->seatstylecombox->addItem("甲等座");
ui->seatstylecombox->addItem("乙等座");
//查询代售地信息按钮
connect(ui->consignmentinfobtn,&QToolButton::clicked,this,[=](){
ui->showWidget->setCurrentIndex(1);
});
//查询航空公司信息按钮
connect(ui->aviationinfobtn,&QPushButton::clicked,this,[=](){
ui->showWidget->setCurrentIndex(2);
});
//查询航班票数或座位按钮
connect(ui->flightinfobtn,&QPushButton::clicked,this,[=](){
ui->showWidget->setCurrentIndex(3);
});
//查询机票信息按钮
connect(ui->airticketinfobtn,&QPushButton::clicked,this,[=](){
ui->showWidget->setCurrentIndex(4);
});
//查询航线的售票数按钮
connect(ui->routebtn,&QToolButton::clicked,this,[=](){
ui->showWidget->setCurrentIndex(5);
});
//获取下拉框
connect(ui->inqirebtn,&QPushButton::clicked,this,[=](){
QString daytime=ui->daytimecombox->currentText();
int index=ui->daytimecombox->currentText().mid(5,2).toInt();
QString yeartime=daytime.mid(0,4);
QString addr=ui->addrtext->text();
//查某代售地某月售出的票数及金额
QString selectcorsignmentinfo=QString("select cast(year(daytime)as "
"varchar(50))+'-'+cast(month(daytime)as varchar(50)) 时间,addr 地址, "
"ticketnum 售出票数,ticketprice 售出总金额 from corsignmentinfo "
"join airportinfo on airportinfo.airportid=corsignmentinfo.airportid "
"where year(daytime)=%1 and month(daytime)=%2 "
"and addr='%3'").arg(yeartime).arg(index).arg(addr);
QSqlQueryModel *model=new QSqlQueryModel(ui->cortableView);
//写入SQL语句
model->setQuery(selectcorsignmentinfo);
//将数据写道tableview中
ui->cortableView->setModel(model);
//隐藏序号
ui->cortableView->verticalHeader()->hide();
//设置列宽度自适应
ui->cortableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
});
//航空公司信息查询按钮
connect(ui->airlinebtn,&QPushButton::clicked,this,[=](){
QString airlinename=ui->airlinenametext->text();
//查航空公司拥有多少航班
QString selectairline=QString("select airlinename 公司名称,count(airlinename)/2 航班数量 "
"from supplyinfo join airlineinfo "
"on supplyinfo.airlineid=airlineinfo.airlineid "
"group by airlinename "
"having airlinename='%1'").arg(airlinename);
QSqlQueryModel *airlinemodel=new QSqlQueryModel(ui->airlinetableView);
airlinemodel->setQuery(selectairline);
ui->airlinetableView->setModel(airlinemodel);
ui->airlinetableView->verticalHeader()->hide();
ui->airlinetableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
});
//航班票数或座位查询按钮
connect(ui->flightbtn,&QPushButton::clicked,this,[=](){
//获取系统时间
QDateTime getsystemtime=QDateTime::currentDateTime();
QString gettime=getsystemtime.toString("yyyy-MM-dd");
//获取用户输入的航班编号
QString flightid=ui->flightidtext->text();
//获取用户输入的日期
QString usertime=ui->userdateEdit->text();
//查询航班座数量的SQL语句
QString votenumtwo;
QString votenum=QString("select sum(votesnum) from seatinfo where seatid "
"in(select seatid from flightinfo where flightid='%1')").arg(flightid);
QSqlQuery queryvotenum;
if(queryvotenum.exec(votenum))
{
if(queryvotenum.next())
{
votenumtwo=queryvotenum.value(0).toString();
}
}
//查某天某航空还剩多少票或座位
QString selecttime=QString(
"select distinct(flightid) 航班编号,%5 座位数量或票数 from flightinfo "
"where flightid='%1' and year(begintime)='%2' and month(begintime)='%3' "
"and day(begintime)='%4'")
.arg(flightid).arg(usertime.mid(0,4)).arg(usertime.mid(5,2)).arg(usertime.mid(8,2))
.arg(votenumtwo);
if(gettime.mid(0,4).toInt()timetableView);
//执行SQL语句
timequeryone->setQuery(selecttime);
//向控件添加数据库内容
ui->timetableView->setModel(timequeryone);
//消去序号
ui->timetableView->verticalHeader()->hide();
//控件自适应宽度
ui->timetableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
else if(gettime.mid(0,4).toInt()==usertime.mid(0,4).toInt()&&
gettime.mid(5,2).toInt()<=usertime.mid(5,2).toInt())
{
QSqlQueryModel *timequerytwo=new QSqlQueryModel(ui->timetableView);
//执行SQL语句
timequerytwo->setQuery(selecttime);
//向控件添加数据库内容
ui->timetableView->setModel(timequerytwo);
//消去序号
ui->timetableView->verticalHeader()->hide();
//控件自适应宽度
ui->timetableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
else if(gettime.mid(0,4).toInt()==usertime.mid(0,4).toInt()&&
gettime.mid(5,2).toInt()==usertime.mid(5,2).toInt()&&
gettime.mid(8,2).toInt()<=usertime.mid(8,2).toInt())
{
QSqlQueryModel *timequerytwo=new QSqlQueryModel(ui->timetableView);
//执行SQL语句
timequerytwo->setQuery(selecttime);
//向控件添加数据库内容
ui->timetableView->setModel(timequerytwo);
//消去序号
ui->timetableView->verticalHeader()->hide();
//控件自适应宽度
ui->timetableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
else
QMessageBox::information(this,"信息窗口","输入日期错误!");
});
//机票信息查询按钮
connect(ui->airjicketsbtn,&QPushButton::clicked,this,[=](){
//获取系统时间
QDateTime getsystemtime=QDateTime::currentDateTime();
QString airticketsgettime=getsystemtime.toString("yyyy-MM-dd");
//获取用户输入的航班编号
QString airticketsid=ui->airticketsidtext->text();
//查询航班座数量的SQL语句
QString Avotepricetwo;
QString Bvotepricetwo;
QString Avoteprice=QString("select votesprice from flightinfo "
"join seatinfo on flightinfo.seatid=seatinfo.seatid where votestyle='甲等座' "
" and flightid='%1'").arg(airticketsid);
QSqlQuery queryvoteprice;
if(queryvoteprice.exec(Avoteprice))
{
if(queryvoteprice.next())
{
Avotepricetwo=queryvoteprice.value(0).toString();
}
}
QString Bvoteprice=QString("select votesprice from flightinfo "
"join seatinfo on flightinfo.seatid=seatinfo.seatid where votestyle='乙等座' "
"and flightid='%1'").arg(airticketsid);
QSqlQuery queryvotepricetwo;
if(queryvotepricetwo.exec(Bvoteprice))
{
if(queryvotepricetwo.next())
{
Bvotepricetwo=queryvotepricetwo.value(0).toString();
}
}
//获取用户输入的日期
QString usertimeinfo=ui->airticketsdateEdit->text();
//查某天某航空还剩甲等座位以及乙等座位票价
QString selectairtickets=QString(
"select distinct(flightid) 航班编号,%5 甲等座票价,%6 乙等座票价 from flightinfo "
"where flightid='%1' and "
"year(begintime)='%2' "
"and month(begintime)='%3' and day(begintime)='%4'").arg(airticketsid)
.arg(usertimeinfo.mid(0,4)).arg(usertimeinfo.mid(5,2)).arg(usertimeinfo.mid(8,2))
.arg(Avotepricetwo).arg(Bvotepricetwo);
if(airticketsgettime.mid(0,4).toInt()airticketstableView);
airticketsmodel->setQuery(selectairtickets);
ui->airticketstableView->setModel(airticketsmodel);
ui->airticketstableView->verticalHeader()->hide();
ui->airticketstableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
else if(airticketsgettime.mid(0,4).toInt()==usertimeinfo.mid(0,4).toInt()
&&usertimeinfo.mid(5,2).toInt()>airticketsgettime.mid(5,2).toInt())
{
// qDebug()<<"执行第二个if语句";
QSqlQueryModel *airticketsmodel=new QSqlQueryModel(ui->airticketstableView);
airticketsmodel->setQuery(selectairtickets);
ui->airticketstableView->setModel(airticketsmodel);
ui->airticketstableView->verticalHeader()->hide();
ui->airticketstableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
else if(airticketsgettime.mid(0,4).toInt()==usertimeinfo.mid(0,4).toInt()
&&airticketsgettime.mid(5,2).toInt()==usertimeinfo.mid(5,2).toInt()
&&airticketsgettime.mid(8,2).toInt()<=usertimeinfo.mid(8,2).toInt())
{
//qDebug()<<"执行第三个if语句";
QSqlQueryModel *airticketsmodel=new QSqlQueryModel(ui->airticketstableView);
airticketsmodel->setQuery(selectairtickets);
ui->airticketstableView->setModel(airticketsmodel);
ui->airticketstableView->verticalHeader()->hide();
ui->airticketstableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
else
{
QMessageBox::information(this,"信息窗口","输入日期错误!");
}
});
//航线的售票数查询按钮
connect(ui->routeinquirebtn,&QPushButton::clicked,this,[=](){
//获取系统时间
QDateTime getsystemtime=QDateTime::currentDateTime();
QString gettimeone=getsystemtime.toString("yyyy-MM-dd");
QString airlinename=ui->airlinenametexttwo->text();
//获取用户输入的日期
QString usertime=ui->routedateEdit->text();
QString beginaddr=ui->beginaddrtext->text();
QString endaddr=ui->endaddrtext->text();
QSqlQuery queryselectnuminfo;
QString selectnuminfo;
QString selectnuminfoone=QString("select count(distinct(airportid)) from corsignmentinfo "
" where airlineid=(select airlineid from airlineinfo where airlinename='%1')").arg(airlinename);
if(queryselectnuminfo.exec(selectnuminfoone))
{
if(queryselectnuminfo.next())
{
selectnuminfo=queryselectnuminfo.value(0).toString();
}
}
//查某航天公司拥有多少售票点、某月售出总金额以及某航线售出票数
QString selectroute=QString(" select distinct(airlinename) 公司名称,%6 售票点数量,"
"cast(year(daytime) as varchar(50)) +'-'+cast(month(daytime) "
"as varchar(50)) 时间,ticketprice 总金额,beginaddr+' - '+endaddr 航线,ticketnum 票数 "
"from corsignmentinfo join airlineinfo on corsignmentinfo.numid=airlineinfo.airlineid "
",supplyinfo join flightinfo on supplyinfo.flightindex=flightinfo.flightindex "
"where airlinename='%1' and "
"year(daytime)='%2' and month(daytime)='%3' and beginaddr='%4' "
"and endaddr='%5'").arg(airlinename).arg(usertime.mid(0,4)).arg(usertime.mid(5,2)).arg(beginaddr)
.arg(endaddr).arg(selectnuminfo);
if(ui->airlinenametexttwo->text()=="")
{
QMessageBox::information(this,"信息窗口","请输入航空公司的名称!");
}
if(gettimeone.mid(0,4).toInt()routetableView);
routemodel->setQuery(selectroute);
ui->routetableView->setModel(routemodel);
ui->routetableView->verticalHeader()->hide();
ui->routetableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
else if(gettimeone.mid(0,4).toInt()==usertime.mid(0,4).toInt()&&
gettimeone.mid(5,2).toInt()<=usertime.mid(5,2).toInt())
{
QSqlQueryModel *routemodel=new QSqlQueryModel(ui->routetableView);
routemodel->setQuery(selectroute);
ui->routetableView->setModel(routemodel);
ui->routetableView->verticalHeader()->hide();
ui->routetableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
else if(gettimeone.mid(0,4).toInt()==usertime.mid(0,4).toInt()&&
gettimeone.mid(5,2).toInt()==usertime.mid(5,2).toInt()&&
gettimeone.mid(8,2).toInt()<=usertime.mid(8,2).toInt())
{
QSqlQueryModel *routemodel=new QSqlQueryModel(ui->routetableView);
routemodel->setQuery(selectroute);
ui->routetableView->setModel(routemodel);
ui->routetableView->verticalHeader()->hide();
ui->routetableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
else
QMessageBox::information(this,"信息窗口","输入日期错误!");
});
//用户信息按钮实现
connect(ui->userinfoshowbtn,&QToolButton::clicked,this,[=](){
password->hide();
userinfowidget->hide();
userinfowidget->show();
});
//修改密码按钮实现
connect(ui->passwordmodifybtn,&QPushButton::clicked,this,[=](){
userinfowidget->hide();
password->hide();
password->show();
});
//接受用户修改密码界面的信号
connect(password,&userpasswod::mainfaceclose,this,[=](){
this->hide();
});
//购票按钮
connect(ui->buyticketstoolButton,&QToolButton::clicked,this,[=](){
ui->showWidget->setCurrentIndex(6);
});
//机票查询按钮
connect(ui->buyticketsbtn,&QPushButton::clicked,this,[=](){
//获取系统时间
QDateTime getsystemtime=QDateTime::currentDateTime();
QString gettimetwo=getsystemtime.toString("yyyy-MM-dd");
//获取用户输入时间
QString userbuytime=ui->buyticketsdateEdit->text();
//获取下拉框文本
QString seatsyletext=ui->seatstylecombox->currentText();
//获取用户填写的地址
QString beginaddr=ui->beginaddrlineEdit->text();
QString endaddr=ui->endaddrlineEdit->text();
//编写SQL语句
//购票信息查询
QString selecttickets=QString("select distinct(flightid) 航班编号,begintime 起飞时间,endtime 结束时间,beginaddr 出发城市,"
"endaddr 到达城市,votesprice 价格,votestyle 座位类型 from flightinfo,seatinfo "
"where votestyle='%4' and beginaddr='%5' and endaddr='%6' "
"and year(begintime)='%1' and month(begintime)='%2' and day(begintime)='%3'")
.arg(userbuytime.mid(0,4)).arg(userbuytime.mid(5,2)).arg(userbuytime.mid(8,2))
.arg(seatsyletext).arg(beginaddr).arg(endaddr);
if(gettimetwo.mid(0,4).toInt()buyticketstableView);
buytickets->setQuery(selecttickets);
ui->buyticketstableView->setModel(buytickets);
ui->buyticketstableView->verticalHeader()->hide();
ui->buyticketstableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
else if(gettimetwo.mid(0,4).toInt()==userbuytime.mid(0,4).toInt()&&
gettimetwo.mid(5,2).toInt()<=userbuytime.mid(5,2).toInt())
{
QSqlQueryModel *buytickets=new QSqlQueryModel(ui->buyticketstableView);
buytickets->setQuery(selecttickets);
ui->buyticketstableView->setModel(buytickets);
ui->buyticketstableView->verticalHeader()->hide();
ui->buyticketstableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
else if(gettimetwo.mid(0,4).toInt()==userbuytime.mid(0,4).toInt()&&
gettimetwo.mid(5,2).toInt()==userbuytime.mid(5,2).toInt()&&
gettimetwo.mid(8,2).toInt()<=userbuytime.mid(8,2).toInt())
{
QSqlQueryModel *buytickets=new QSqlQueryModel(ui->buyticketstableView);
buytickets->setQuery(selecttickets);
ui->buyticketstableView->setModel(buytickets);
ui->buyticketstableView->verticalHeader()->hide();
ui->buyticketstableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
}
else
{
QMessageBox::information(this,"信息窗口","输入日期错误!");
}
});
//购买按钮
connect(ui->buybtn,&QPushButton::clicked,this,[=](){
//获取用户输入日期
QString userbuytime=ui->buyticketsdateEdit->text();
int index= ui->buyticketstableView->currentIndex().row();
QAbstractItemModel *modessl = ui->buyticketstableView->model();
//获取座位类型下拉框内容
QString votestyle=ui->seatstylecombox->currentText();
QString buyinfo[7]={0};
int count=0;
while(count<=6)
{
QModelIndex indexitem=modessl->index(index,count);
QString basedate=modessl->data(indexitem).toString();
buyinfo[count]=basedate;
count++;
}
//调用外部变量
extern QString useridlineEdit;
QSqlQuery query;
QString insertissueticketsinfo=QString("insert issueticketsinfo(userid,flightindex) "
"values(%1,(select flightindex from flightinfo join "
"seatinfo on flightinfo.seatid=seatinfo.seatid "
"where votestyle='%3' and flightid='%2'))")
.arg(useridlineEdit).arg(buyinfo[0]).arg(buyinfo[6]);
query.exec(insertissueticketsinfo);
//查询代售信息表是否有购买记录,如果有就执行更新操作,没有就执行插入操作
QSqlQuery querycorsignmentinfo;
QString selectcorsignmentinfo=QString("select distinct(cast(year(daytime) as varchar(50))+'-'+ cast(month(daytime) as varchar(50))),* "
"from corsignmentinfo "
"where airportid= (select distinct(airportid) from corsignmentinfo "
"where airlineid=(select airlineid "
"from supplyinfo where flightindex=(select flightindex from flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid "
"where votestyle='%3' and flightid='%1' ))) "
"and airlineid= (select airlineid "
"from supplyinfo where flightindex=(select flightindex from flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid "
"where votestyle='%3' and flightid='%1')) "
"and year(daytime)=%2 "
"and month(daytime)=%4 ").arg(buyinfo[0]).arg(userbuytime.mid(0,4)).arg(votestyle).arg(userbuytime.mid(5,2));
if(querycorsignmentinfo.exec(selectcorsignmentinfo))
{
if(querycorsignmentinfo.next())
{
QSqlQuery queryupdateone;
QString updatecorsignmentinfoone=QString("update corsignmentinfo set ticketnum=ticketnum+1 "
"where airportid= (select distinct(airportid) from corsignmentinfo "
"where airlineid=(select airlineid "
"from supplyinfo where flightindex=(select flightindex from "
"flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid "
"where votestyle='%3' and flightid='%1'))) "
"and airlineid= (select airlineid "
"from supplyinfo where flightindex=(select flightindex from "
"flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid "
"where votestyle='%3' and flightid='%1')) "
" and year(daytime)=%2 "
"and month(daytime)=%4").arg(buyinfo[0]).arg(userbuytime.mid(0,4)).arg(votestyle).arg(userbuytime.mid(5,2));
queryupdateone.exec(updatecorsignmentinfoone);
QSqlQuery queryupdatetwo;
QString updatecorsignmentinfotwo=QString(" update corsignmentinfo set ticketprice=ticketprice+%1 "
"where airportid= (select distinct(airportid) from corsignmentinfo "
"where airlineid=(select airlineid "
"from supplyinfo where flightindex=(select flightindex from "
"flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid "
"where votestyle='%4' and flightid='%2'))) "
"and airlineid= (select airlineid "
"from supplyinfo where flightindex=(select flightindex from "
"flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid "
"where votestyle='%4' and flightid='%2')) "
" and year(daytime)=%3 "
"and month(daytime)=%5").arg(buyinfo[5]).arg(buyinfo[0]).arg(buyinfo[1].mid(0,4)).arg(votestyle).arg(buyinfo[1].mid(5,2));
queryupdatetwo.exec(updatecorsignmentinfotwo);
QSqlQuery queryvotenum;
QString updatevotenum=QString("update seatinfo set votesnum=votesnum-1 where votestyle='%1' "
"and seatid=(select seatinfo.seatid from flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid "
"where votestyle='%1' and flightid='%2')")
.arg(buyinfo[6]).arg(buyinfo[0]);
if(!queryvotenum.exec(updatevotenum))
QMessageBox::information(this,"信息窗口","该机票已售完!");
else
QMessageBox::information(this,"信息窗口","购买成功!");
}
else
{
QSqlQuery queryselectone;
QString selectairportid=QString("select distinct(airportid) from corsignmentinfo "
"where airlineid=(select airlineid "
"from supplyinfo where flightindex=(select flightindex from "
"flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid "
"where votestyle='%2' and flightid='%1'))").arg(buyinfo[0]).arg(votestyle);
QString airportid;
if(queryselectone.exec(selectairportid))
{
if(queryselectone.next())
{
airportid=queryselectone.value(0).toString();
}
}
QSqlQuery queryselecttwo;
QString selectairlineid=QString("select airlineid "
"from supplyinfo where flightindex=(select flightindex from "
"flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid "
"where votestyle='%2' and flightid='%1')").arg(buyinfo[0]).arg(votestyle);
QString airlineid;
if(queryselecttwo.exec(selectairlineid))
{
if(queryselecttwo.next())
{
airlineid=queryselecttwo.value(0).toString();
}
}
QSqlQuery queryinsert;
QString insertcorsinmentinfo=QString("insert corsignmentinfo(airportid, "
"airlineid,daytime,ticketnum,ticketprice) "
"values(%1,%2,'%3',1,%4)").arg(airportid).arg(airlineid).arg(userbuytime).arg(buyinfo[5]);
if(queryinsert.exec(insertcorsinmentinfo))
{
QMessageBox::information(this,"信息窗口","购买成功!");
}
}
}
});
//订单功能按钮实现
connect(ui->ordertoolButton,&QToolButton::clicked,this,[=](){
ui->showWidget->setCurrentIndex(7);
//调用外部变量
extern QString usernamelineEdit;
extern QString useridlineEdit;
extern QString userphonelineEdit;
//编写SQL语句
QString orderinfo=QString("select itid 订单编号,userid 身份证号码,'%1' 真实姓名,"
"'%3' 联系电话,flightid 航班编号,"
"begintime 出发时间,endtime 结束时间,beginaddr 出发城市,endaddr 到达城市 "
",votesprice 价格,votestyle 座位类型 from issueticketsinfo join (flightinfo join "
"seatinfo on flightinfo.seatid=seatinfo.seatid )"
"on issueticketsinfo.flightindex=flightinfo.flightindex "
"where userid='%2'").arg(usernamelineEdit).arg(useridlineEdit).arg(userphonelineEdit);
//qDebug()<ordertableView);
//qDebug()<setQuery(orderinfo);
ui->ordertableView->setModel(orderquerymodel);
ui->ordertableView->verticalHeader()->hide();
ui->ordertableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
});
}
void maininterface::closeEvent(QCloseEvent *event)
{
int youchoose=QMessageBox::information(this,"信息窗口","你确定退出售票系统吗?",QMessageBox::Yes|QMessageBox::No);
if(youchoose==QMessageBox::Yes)
{
event->accept();
}
else
{
event->ignore();
}
}
maininterface::~maininterface()
{
delete ui;
}
注册界面:
#ifndef REGISERED_H
#define REGISERED_H
#include
#include "widget.h"
namespace Ui {
class regisered;
}
class regisered : public QWidget
{
Q_OBJECT
public:
explicit regisered(QWidget *parent = 0);
~regisered();
private:
Ui::regisered *ui;
};
#endif // REGISERED_H
.cpp文件:
#include "regisered.h"
#include "ui_regisered.h"
regisered::regisered(QWidget *parent) :
QWidget(parent),
ui(new Ui::regisered)
{
ui->setupUi(this);
this->setWindowTitle("注册信息窗口");
//设置标题图片
this->setWindowIcon(QIcon(QPixmap(":/icon/icon/show.png")));
//注册按钮
connect(ui->regiseredbtn,&QPushButton::clicked,this,[=](){
QString id=ui->id->text();
QString username=ui->username->text();
QString userpassword1=ui->userpassword1->text();
QString userpassword2=ui->userpassword2->text();
QString userphone=ui->userphone->text();
QSqlQuery query;
QString insertuserinfo=QString("insert userinfo(id,username,userpassword,userphone)"
"values('%1','%2','%3','%4')").arg(id).arg(username).arg(userpassword1).arg(userphone);
QString selectuserinfo=QString("select*from userinfo where id=%1").arg(id);
if(userpassword1!=userpassword2)
{
QMessageBox::information(this,"信息窗口","两次密码必须一致!");
}
else if(id=="")
{
QMessageBox::information(this,"信息窗口","请输入身份证号码!");
}
else if(ui->id->text().length()!=16)
{
QMessageBox::information(this,"信息窗口","输入的身份证号码必须为16位!");
}
else if(username=="")
{
QMessageBox::information(this,"信息窗口","请输入真实姓名!");
}
else if(userphone=="")
{
QMessageBox::information(this,"信息窗口","请输入你的手机号码!");
}
else if(query.exec(selectuserinfo))
{
if(query.next())
{
QMessageBox::information(this,"信息窗口","该身份证号码已注册!");
}
else
{
query.exec(insertuserinfo);
QMessageBox::information(this,"信息窗口","注册成功!");
}
}
});
//取消按钮
connect(ui->closebtn,&QPushButton::clicked,this,[=](){
Widget *showmain=new Widget();
this->hide();
showmain->show();
});
}
regisered::~regisered()
{
delete ui;
}
用户信息界面:
#ifndef USERINFOWIDGET_H
#define USERINFOWIDGET_H
#include
#include "maininterface.h"
#include
#include "widget.h"
#include "userpasswod.h"
namespace Ui {
class userinfoWidget;
}
class userinfoWidget : public QWidget
{
Q_OBJECT
public:
explicit userinfoWidget(QWidget *parent = 0);
~userinfoWidget();
signals:
mainfacecolose();
private:
Ui::userinfoWidget *ui;
};
#endif // USERINFOWIDGET_H
.cpp文件:
#include "userinfowidget.h"
#include "ui_userinfowidget.h"
userinfoWidget::userinfoWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::userinfoWidget)
{
ui->setupUi(this);
this->setWindowIcon(QIcon(QPixmap(":/icon/icon/show.png")));
this->setWindowTitle("用户信息窗口");
connect(ui->userinfotoolbtn,&QToolButton::clicked,this,[=](){
extern QString usernamelineEdit;
extern QString useridlineEdit;
extern QString userstylelineEdit;
extern QString userphonelineEdit;
ui->usernamelineEdit->setText(usernamelineEdit);
ui->useridlineEdit->setText(useridlineEdit);
ui->userstylelineEdit->setText(userstylelineEdit);
ui->userphonelineEdit->setText(userphonelineEdit);
});
//注销用户按钮
connect(ui->loginoutbtn,&QPushButton::clicked,this,[=](){
//声明登录窗口的指针
Widget *login=new Widget();
//将信号发送到主界面窗口
emit mainfacecolose();
this->hide();
login->show();
});
//取消按钮
connect(ui->returnbtn,&QToolButton::clicked,this,[=](){
this->close();
});
}
userinfoWidget::~userinfoWidget()
{
delete ui;
}
修改密码界面:
#ifndef USERPASSWOD_H
#define USERPASSWOD_H
#include
#include
#include "widget.h"
#include
namespace Ui {
class userpasswod;
}
class userpasswod : public QWidget
{
Q_OBJECT
public:
explicit userpasswod(QWidget *parent = 0);
~userpasswod();
signals:
mainfaceclose();
private:
Ui::userpasswod *ui;
};
#endif // USERPASSWOD_H
.cpp文件:
#include "userpasswod.h"
#include "ui_userpasswod.h"
#include "maininterface.h"
userpasswod::userpasswod(QWidget *parent) :
QWidget(parent),
ui(new Ui::userpasswod)
{
ui->setupUi(this);
this->setWindowIcon(QIcon(QPixmap(":/icon/icon/show.png")));
this->setWindowTitle("修改密码窗口");
connect(ui->returntoolButton,&QToolButton::clicked,this,[=](){
this->close();
});
extern QString useridlineEdit;
//修改密码按钮
connect(ui->passwordtoolButton,&QToolButton::clicked,this,[=](){
QString originalpassword=ui->originalpasswordlineEdit->text();
QString newpassword=ui->newpasswordlineEdit->text();
QString definepassword=ui->definepasswordlineEdit->text();
if(originalpassword=="")
{
QMessageBox::information(this,"信息窗口","请输入原来密码!");
}
else{
QSqlQuery query;
QString selectpassword=QString("select *from userinfo "
"where id=%1 and userpassword=%2").arg(useridlineEdit).arg(originalpassword);
if(query.exec(selectpassword))
{
if(!query.next())
{
QMessageBox::information(this,"信息窗口","输入原密码错误!");
}
else if(newpassword!=definepassword){
QMessageBox::information(this,"信息窗口","输入两次密码不一致!");
}
else if(originalpassword==newpassword)
{
QMessageBox::information(this,"信息窗口","修改密码与原密码一致!");
}
else{
QSqlQuery query;
QString updatepassword=QString("update userinfo set "
" userpassword=%1 where id=%2").arg(newpassword).arg(useridlineEdit);
if(query.exec(updatepassword))
{
QMessageBox::information(this,"信息窗口","修改密码成功!");
this->hide();
//发送信号
emit mainfaceclose();
//qDebug()<<"主界面关闭信号已发送!";
QTimer::singleShot(100,this,[=](){
Widget *loginshow=new Widget();
loginshow->show();
//qDebug()<<"登录界面已显示!";
});
}
}
}
}
});
}
userpasswod::~userpasswod()
{
delete ui;
}
其实可以简化代码的,不过当时由于时间关系所以我没改,下面是数据库的代码 :
--创建民航售票系统数据库
create database CATSys
on
(
Name=CATSys,
Filename='D:\SQL Server Date\CATSys.mdf',
Size=10,
filegrowth=1
)
log on
(
Name=CATSys_log,
FileName='D:\SQL Server Date\CATSys_log.ldf',
Size=3,
MaxSize=20,
FileGrowth=10%
)
use CATSys
--用户信息表
create table userinfo
(
id char(20) not null check(len(id)=16),--身份证号码(主键)
username char(20),--真实姓名
usertype char(8) default('普通用户')
check(usertype='普通用户'or usertype='经常旅客'),--用户类型
userphone varchar(20),--用户联系方式
userpassword varchar(16)--用户密码
primary key(id)
)
--机场信息
create table airportinfo
(
airportid int not null,--机场编号(主键)
addr char(50)--机场地址
primary key(airportid)
)
--航班座位信息表
create table seatinfo
(
seatid int not null,--航班座位表编号
votesnum int check(votesnum>=0),--座位数量
votesprice int check(votesprice>=0),--座位价格
votestyle char(10) default('甲等座') check(votestyle='甲等座'or votestyle='乙等座'),--座位类型
primary key(seatid)
)
--航班信息表
create table flightinfo
(
flightindex int not null identity(1,1),--主键
flightid char(20) not null,--航班编号
seatid int,--座位编号(外键)
begintime datetime,--起飞时间
endtime datetime,--降落时间
beginaddr varchar(30),--起飞地址
endaddr varchar(30),--降落地址
primary key(flightindex),
foreign key(seatid) references seatinfo(seatid),
)
--航空公司信息表
create table airlineinfo
(
airlineid int,--公司编号(主键)
airlinename char(30),--名称
addr char(30)--公司地址
primary key(airlineid)
)
--订票信息表
create table issueticketsinfo
(
itid int not null identity(201901010,1),--订单编号(主键)
userid char(20) not null,--用户身份证
flightindex int not null--航班编号
primary key(itid)
foreign key (flightindex) references flightinfo(flightindex)
)
--航空公司提供航班信息表
create table supplyinfo
(
airlineid int not null,--公司编号(主键、航空公司信息表的外键)
flightindex int not null,--航班编号(主键、航班信息表的外键)
primary key(airlineid,flightindex),
foreign key(airlineid) references airlineinfo(airlineid),
foreign key(flightindex) references flightinfo(flightindex)
)
--代售信息表
create table corsignmentinfo
(
numid int not null identity(1,1),
airportid int not null,--机场编号(主键、机场信息表的外键)
airlineid int not null,--公司编号(主键、航空公司信息表的外键)
daytime date,--时间
ticketnum int check(ticketnum>=0),--售出的票数
ticketprice int check(ticketprice>=0),--售出的总金额
primary key(numid),
foreign key(airportid) references airportinfo(airportid),
foreign key(airlineid) references airlineinfo(airlineid)
)
--插入数据
--航空公司信息表数据
insert airlineinfo(airlineid,airlinename,addr)
values (1,'春秋航空有限公司','广西梧州航空市')
insert airlineinfo(airlineid,airlinename,addr)
values (2,'北海航空有限公司','广西北海市')
--用户信息表数据
insert userinfo(id,username,userpassword,userphone)
values('1111111111111111','张三','123456','17877380638')
insert userinfo(id,username,userpassword,userphone)
values('4504812341102010','李四','123456','24151616161')
insert userinfo(id,username,userpassword,userphone)
values('4504812341102011','黄五','123456','15325125325')
insert userinfo(id,username,userpassword,userphone)
values('4504812341102012','王一','123456','24251561621')
--机场信息数据
insert airportinfo(airportid,addr)
values(001,'北海成福机场')
insert airportinfo(airportid,addr)
values(002,'北京福成机场')
--航班信息表数据
insert flightinfo(flightid,begintime,endtime,beginaddr,endaddr,seatid)
values('9C8990','2020-01-06 16:00:00','2020-01-07 16:00:00','扬州泰州','天津',1)
insert flightinfo(flightid,begintime,endtime,beginaddr,endaddr,seatid)
values('9C8990','2020-01-06 16:00:00','2020-01-07 16:00:00','扬州泰州','天津',2)
insert flightinfo(flightid,begintime,endtime,beginaddr,endaddr,seatid)
values('9C8991','2020-01-06 5:00:00','2020-01-07 5:00:00','扬州泰州','天津',3)
insert flightinfo(flightid,begintime,endtime,beginaddr,endaddr,seatid)
values('9C8991','2020-01-06 5:00:00','2020-01-07 5:00:00','扬州泰州','天津',4)
insert flightinfo(flightid,begintime,endtime,beginaddr,endaddr,seatid)
values('9C8992','2020-01-06 5:00:00','2020-01-07 5:00:00','扬州泰州','天津',5)
insert flightinfo(flightid,begintime,endtime,beginaddr,endaddr,seatid)
values('9C8992','2020-01-06 5:00:00','2020-01-07 5:00:00','扬州泰州','天津',6)
insert flightinfo(flightid,begintime,endtime,beginaddr,endaddr,seatid)
values('9C8993','2020-01-06 5:00:00','2020-01-07 5:00:00','扬州泰州','天津',7)
insert flightinfo(flightid,begintime,endtime,beginaddr,endaddr,seatid)
values('9C8993','2020-01-06 5:00:00','2020-01-07 5:00:00','扬州泰州','天津',8)
insert flightinfo(flightid,begintime,endtime,beginaddr,endaddr,seatid)
values('9C8994','2020-01-06 5:00:00','2020-01-07 5:00:00','扬州泰州','天津',9)
insert flightinfo(flightid,begintime,endtime,beginaddr,endaddr,seatid)
values('9C8994','2020-01-06 5:00:00','2020-01-07 5:00:00','扬州泰州','天津',10)
insert flightinfo(flightid,begintime,endtime,beginaddr,endaddr,seatid)
values('9C8995','2020-01-06 5:00:00','2020-01-07 5:00:00','扬州泰州','天津',11)
insert flightinfo(flightid,begintime,endtime,beginaddr,endaddr,seatid)
values('9C8995','2020-01-06 5:00:00','2020-01-07 5:00:00','扬州泰州','天津',12)
select *from flightinfo
--代售信息表数据
insert corsignmentinfo(airlineid,airportid,daytime,ticketnum,ticketprice)
values(001,1,'2020-1-31',0,0)
insert corsignmentinfo(airlineid,airportid,daytime,ticketnum,ticketprice)
values(001,1,'2020-2-29',0,0)
insert corsignmentinfo(airlineid,airportid,daytime,ticketnum,ticketprice)
values(001,1,'2020-3-31',0,0)
insert corsignmentinfo(airlineid,airportid,daytime,ticketnum,ticketprice)
values(002,2,'2020-1-31',0,0)
insert corsignmentinfo(airlineid,airportid,daytime,ticketnum,ticketprice)
values(002,2,'2020-2-29',0,0)
insert corsignmentinfo(airlineid,airportid,daytime,ticketnum,ticketprice)
values(002,2,'2020-3-31',0,0)
--航班座位信息表数据
insert seatinfo(seatid,votesprice,votesnum,votestyle)
values(1,189,200,'甲等座')
insert seatinfo(seatid,votesprice,votesnum,votestyle)
values(2,200,200,'乙等座')
insert seatinfo(seatid,votesprice,votesnum,votestyle)
values(3,189,200,'甲等座')
insert seatinfo(seatid,votesprice,votesnum,votestyle)
values(4,200,200,'乙等座')
insert seatinfo(seatid,votesprice,votesnum,votestyle)
values(5,189,200,'甲等座')
insert seatinfo(seatid,votesprice,votesnum,votestyle)
values(6,200,200,'乙等座')
insert seatinfo(seatid,votesprice,votesnum,votestyle)
values(7,189,200,'甲等座')
insert seatinfo(seatid,votesprice,votesnum,votestyle)
values(8,200,200,'乙等座')
insert seatinfo(seatid,votesprice,votesnum,votestyle)
values(9,189,200,'甲等座')
insert seatinfo(seatid,votesprice,votesnum,votestyle)
values(10,200,200,'乙等座')
insert seatinfo(seatid,votesprice,votesnum,votestyle)
values(11,189,200,'甲等座')
insert seatinfo(seatid,votesprice,votesnum,votestyle)
values(12,200,200,'乙等座')
--订票信息表数据
--航空公司提供航班信息表数据
insert supplyinfo(airlineid,flightindex)
values(1,1)
insert supplyinfo(airlineid,flightindex)
values(1,2)
insert supplyinfo(airlineid,flightindex)
values(1,3)
insert supplyinfo(airlineid,flightindex)
values(1,4)
insert supplyinfo(airlineid,flightindex)
values(1,5)
insert supplyinfo(airlineid,flightindex)
values(1,6)
insert supplyinfo(airlineid,flightindex)
values(2,7)
insert supplyinfo(airlineid,flightindex)
values(2,8)
insert supplyinfo(airlineid,flightindex)
values(2,9)
insert supplyinfo(airlineid,flightindex)
values(2,10)
insert supplyinfo(airlineid,flightindex)
values(2,11)
insert supplyinfo(airlineid,flightindex)
values(2,12)
--查某代售地某月售出的票数及金额(存储过程)
create proc selectconginmentinfo(@year int,@month int,@airportaddr varchar(50))
as
select cast(year(daytime)as varchar(50))+'-'+cast(month(daytime)as varchar(50)) 时间,addr 地址,ticketnum 售出票数,ticketprice 售出总金额 from corsignmentinfo
join airportinfo on airportinfo.airportid=corsignmentinfo.airportid
where year(daytime)=@year and month(daytime)=@month and addr=@airportaddr
exec selectconginmentinfo 2020,1,'北海成福机场'
--查航空公司拥有多少航班(已修改)3:33(存储过程)
create proc selectairlineinfo(@airlinename varchar(50))
as
select airlinename 公司名称,count(airlinename)/2 航班数量 from supplyinfo join airlineinfo
on supplyinfo.airlineid=airlineinfo.airlineid
group by airlinename
having airlinename=@airlinename
exec selectairlineinfo '北海航空有限公司'
--查某天某航空还剩多少票或座位(已修改)3:37(存储过程)
create proc selectvotenum(@flightid varchar(10),@year int,@month int,@day int)
as
declare @Avotenum int
set @Avotenum=(select sum(votesnum) from seatinfo where seatid in(select seatid from flightinfo where flightid=@flightid))
select distinct(flightid) 航班编号,@Avotenum 座位数量或票数 from flightinfo
where flightid=@flightid and year(begintime)=@year and month(begintime)=@month and day(begintime)=@day
exec selectvotenum '9C8990',2020,1,6
--查某天某航空还剩甲等座位以及乙等座位票价(已修改)3:45(存储过程)
create proc selectvoteprice(@flightid varchar(10),@year int,@month int,@day int)
as
declare @Avoteprice int
declare @Bvoteprice int
set @Avoteprice=(select votesprice from flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid where votestyle='甲等座'
and flightid=@flightid)
set @Bvoteprice=(select votesprice from flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid where votestyle='乙等座'
and flightid=@flightid)
select distinct(flightid) 航班编号,@Avoteprice 甲等座票价,@Bvoteprice 乙等座票价 from flightinfo
where flightid=@flightid and year(begintime)=@year and month(begintime)=@month and day(begintime)=@day
exec selectvoteprice '9C8990',2020,1,6
--查某航天公司拥有多少售票点、某月售出总金额以及某航线售出票数0:42(存储过程)
create proc selectairlineconsignmentnum(@airlinename varchar(50),@year int,@month int,@enginaddr varchar(20),@endaddr varchar(20))
as
declare @num int
set @num=(select count(distinct(airportid)) from corsignmentinfo where airlineid=(select airlineid from airlineinfo where airlinename=@airlinename))
select distinct(airlinename) 公司名称,@num 售票点数量,cast(year(daytime) as varchar(50)) +'-'+cast(month(daytime) as varchar(50)) 时间,ticketprice 总金额,beginaddr+' - '+endaddr 航线,ticketnum 票数
from corsignmentinfo join airlineinfo on corsignmentinfo.numid=airlineinfo.airlineid
,supplyinfo join flightinfo on supplyinfo.flightindex=flightinfo.flightindex
where airlinename=@airlinename and year(daytime)=@year and month(daytime)=@month and beginaddr=@enginaddr
and endaddr=@endaddr
exec selectairlineconsignmentnum '春秋航空有限公司',2020,1,'扬州泰州','天津'
---------------------------------------分割线--------------------------------------------------------------
select*from userinfo
--购票信息4:08
select distinct(flightid) 航班编号,begintime 起飞时间,endtime 结束时间,beginaddr 出发城市,endaddr 到达城市,votesprice 价格,votestyle 座位类型 from flightinfo,seatinfo
where votestyle='甲等座' and beginaddr='扬州泰州' and endaddr='天津'
and year(begintime)='2020' and month(begintime)='1' and day(begintime)='6'
select*from issueticketsinfo
--购买执行的语句21:09
insert issueticketsinfo(userid,flightid)
values(,)
update corsignmentinfo set ticketnum=ticketnum+1
where airportid= (select distinct(airportid) from corsignmentinfo
where airlineid=(select airlineid
from supplyinfo where flightindex=(select flightindex from flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid
where votestyle='甲等座' and flightid='9C8990')))
and airlineid= (select airlineid
from supplyinfo where flightindex=(select flightindex from flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid
where votestyle='甲等座' and flightid='9C8990'))
and year(daytime)=2020
and month(daytime)=1
update corsignmentinfo set ticketprice=ticketprice+189
where airportid= (select distinct(airportid) from corsignmentinfo
where airlineid=(select airlineid
from supplyinfo where flightindex=(select flightindex from flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid
where votestyle='甲等座' and flightid='9C8990')))
and airlineid= (select airlineid
from supplyinfo where flightindex=(select flightindex from flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid
where votestyle='甲等座' and flightid='9C8990'))
and year(daytime)=2020
and month(daytime)=1
update seatinfo set votesnum=votesnum-1 where votestyle='甲等座'
and seatid=(select seatinfo.seatid from flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid
where votestyle='甲等座' and flightid='9C8990')
--22:05
select distinct(cast(year(daytime) as varchar(50))+'-'+ cast(month(daytime) as varchar(50))),*
from corsignmentinfo
where airportid= (select distinct(airportid) from corsignmentinfo
where airlineid=(select airlineid
from supplyinfo where flightindex=(select flightindex from flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid
where votestyle='甲等座' and flightid='9C8990' )))
and airlineid= (select airlineid
from supplyinfo where flightindex=(select flightindex from flightinfo join seatinfo on flightinfo.seatid=seatinfo.seatid
where votestyle='甲等座' and flightid='9C8990'))
and year(daytime)=2020
and month(daytime)=1
--订单功能执行SQL语句7:56
select itid 订单编号,userid 身份证号码,'李四' 真实姓名,
'24151616161' 联系电话,flightid 航班编号,
begintime 出发时间,endtime 结束时间,beginaddr 出发城市,endaddr 到达城市
,votesprice 价格,votestyle 座位类型 from issueticketsinfo join (flightinfo join
seatinfo on flightinfo.seatid=seatinfo.seatid )
on issueticketsinfo.flightindex=flightinfo.flightindex
where userid=4504812341102010
因为数据库是我自己设计的,所以有很多不合理的地方,而且我还多次删库又重新创建,非常麻烦