来吧,接下来是各个功能的函数的实现代码。

首先,程序运行时加载读入账户信息和航班信息。接下来就该读取文件了。

我把账户资料和航班信息储存在了.txt文件里

那么问题就来了,挖掘机...额,不对,应该怎么读入账户资料和航班信息?

每一行是结构体的一个成员,我读入的方式是一行一行读入。

两个读入函数代码如下:

 //读入账户信息
BOOL ReadAccountData(HWND hwndDlg){ FILE *fp; passenger = (Passenger *)malloc(sizeof(Passenger)); //为登录账户分配内存
if (!passenger){
MessageBox(hwndDlg, TEXT("内存申请错误!"), TEXT("错误"), MB_OK | MB_ICONERROR);
EndDialog(hwndDlg, );
return FALSE;
}//if psglink.head = NULL;
psglink.tail = NULL;
psglink.PsgNum = ; if ((fp = fopen(".\\AccountData.txt", "r+")) == NULL){ //打开文件
MessageBox(hwndDlg, TEXT("账户文件读入错误!"), TEXT("错误"), MB_OK | MB_ICONERROR);
EndDialog(hwndDlg, );
}//if while (!feof(fp)){
Passenger *p = (Passenger *)malloc(sizeof(Passenger));
if (!p){
MessageBox(hwndDlg, TEXT("内存申请错误!"), TEXT("错误"), MB_OK | MB_ICONERROR);
EndDialog(hwndDlg, );
return FALSE;
}//if //读入账户姓名、身份证号、密码
if (fscanf(fp, "%s%s%s", p->Name, p->IdNum, p->PassWord) == EOF){
free(p); break;
} p->Next = NULL;
if (psglink.head == NULL) //读入第一个账户信息时,头、尾结点均指向p
psglink.head = p;
else
psglink.tail->Next = p; //否则,尾结点Next指向p
psglink.tail = p; //尾结点指向p
psglink.PsgNum++; //已注册账户个数 }//while
fclose(fp); //关闭文件
return TRUE;
}//ReadAccountData(HWND) //读入航班信息
BOOL ReadFlightData(HWND hwndDlg){ int flag = ;
FILE *fp; flightlink.Flight_Number = ;
flightlink.head = NULL;
flightlink.tail = NULL; if ((fp = fopen(".\\FlightData.txt", "r")) == NULL){ //打开文件
MessageBox(hwndDlg, TEXT("账户文件读入错误!"), TEXT("错误"), MB_OK | MB_ICONERROR);
EndDialog(hwndDlg, );
}//if while (!feof(fp)){
Flight *p = (Flight *)malloc(sizeof(Flight));
if (!p){
MessageBox(hwndDlg, TEXT("内存申请错误!"), TEXT("错误"), MB_OK | MB_ICONERROR);
EndDialog(hwndDlg, );
return FALSE;
}//if
//读入航班信息
if (fscanf(fp, "%s%lf%s%d%d%s%s%s%s%s",
p->Flight_Number,
&p->Fare,
p->Discount,
&p->Seat_Number,
&p->Vacant_Seat,
p->Departure,
p->Destination,
p->Date,
p->TakeOff_Time,
p->Landing_Time) == EOF)
{
free(p);
break;
}
p->Next = NULL;
if (flightlink.head == NULL) //添加至链表
flightlink.head = p;
else
flightlink.tail->Next = p;
flightlink.tail = p;
flightlink.Flight_Number++; }//while
fclose(fp); //关闭文件
return TRUE;
}//ReadFlightData()

因为开发环境是vs2013,所以编译时会报错,报错信息是大体是说fopen()函数不安全,根据提示信息,解决办法是在文件头部做如下定义:

#define _CRT_SECURE_NO_WARNINGS

或者是在项目->属性->c/c++->预处理器->预处理器定义,后面加上_CRT_SECURE_NO_WARNINGS就行了。

结下来又遇到问题了:程序退出把数据写入txt文件时每行末尾都会有一个\n,读入数据的时候用的是feof()函数,而feof()返回的其实是"最后一次读操作的内容",与数据库中的eof()不同,eof()读取的是当前指针位置。因此在读到文件末尾的时候,程序会多执行一次循环,为了防止这种情况,我采取的是检查fscanf()返回值的方法,在此以读入账户资料时为例:

 //读入账户姓名、身份证号、密码
if (fscanf(fp, "%s%s%s", p->Name, p->IdNum, p->PassWord) == EOF){
free(p); break;
}

然后是用户登录或注册时所用到的函数:

 //登陆用户验证
BOOL AccountLogIn(HWND hwndDlg){ int flag = ; //flag!=0则该用户已注册,flag==0则该用户尚未注册
Passenger *p; GetDlgItemText(hwndDlg, IDC_IDEDIT, passenger->IdNum, ); //获取用户输入ID
GetDlgItemText(hwndDlg, IDC_PSWEDIT, passenger->PassWord, ); //获取用户输入密码 p = psglink.head;
while (p){ //在用户链表查找登陆用户ID
if (!lstrcmp(passenger->IdNum, p->IdNum)){
flag++; //该用户已注册
if (!lstrcmp(passenger->PassWord, p->PassWord)){ //密码匹配,登陆成功
lstrcpy(passenger->Name, p->Name);
MessageBox(hwndDlg, TEXT("登陆成功,单击确定进入程序主界面"), TEXT("登陆成功"), MB_OK | MB_ICONINFORMATION);
break;
}//if
else{ //密码错误,退出循环
MessageBox(hwndDlg, TEXT("密码错误,请重新输入"), TEXT("密码错误"), MB_OK | MB_ICONERROR);
return FALSE;
}//else
}//if
p = p->Next;
}//while
if (!flag){ //用户尚未注册
if (lstrlen(passenger->PassWord)==)
MessageBox(hwndDlg, TEXT("请输入密码!"), TEXT("信息"), MB_OK | MB_ICONINFORMATION);
else
MessageBox(hwndDlg, TEXT("该账户尚未注册,请先注册"), TEXT("信息"), MB_OK | MB_ICONINFORMATION);
}//if
else{ //关闭登陆界面,弹出主界面
EndDialog(hwndDlg, TRUE);
if (ReadAccountOrder(hwndDlg, passenger)) //读取用户订单
DialogBox(hInst, MAKEINTRESOURCE(IDD_MAINDLG), NULL, (DLGPROC)MainDlgProc);
}//else return TRUE;
}//AccountLogIn(HWND)
 //用户注册
BOOL AccountRegister(HWND hwndDlg){ GetDlgItemText(hwndDlg, IDC_IDEDIT, passenger->IdNum, ); //获取用户输入ID
GetDlgItemText(hwndDlg, IDC_PSWEDIT, passenger->PassWord, ); //获取用户输入密码 if (lstrlen(passenger->PassWord) == ){
MessageBox(hwndDlg, TEXT("请输入注册用户密码!"), TEXT("信息"), MB_OK | MB_ICONINFORMATION);
return FALSE;
} DialogBox(hInst, MAKEINTRESOURCE(IDD_NAMEDLG), NULL, (DLGPROC)NameDlgProc); //获取新注册用户姓名 if (lstrlen(passenger->Name) == )
return FALSE; passenger->Next = NULL; if (psglink.head == NULL) //该注册账户为第一个账户时,头、尾结点均指向passenger
psglink.head = passenger;
else
psglink.tail->Next = passenger; //将新注册账户资料添加至账户链表
psglink.tail = passenger; //链表尾指针指向链表尾
psglink.PsgNum++; //注册用户数目加1
passenger->TicketNum = ;
passenger->OrderLink.head = NULL; //乘客订单链表初始化
passenger->OrderLink.tail = NULL;
passenger->OrderLink.OrderNum = ; MessageBox(hwndDlg, TEXT("注册成功!请单击确定进入主界面"), TEXT("注册成功"), MB_OK | MB_ICONINFORMATION); EndDialog(hwndDlg, TRUE); //关闭登陆界面 DialogBox(hInst, MAKEINTRESOURCE(IDD_MAINDLG), NULL, (DLGPROC)MainDlgProc); //弹出主界面 return TRUE;
}//AccountRegister(HWND)

点击查找、订票、退票、航班录入、修改航班信息按钮都会调用相应的函数。下面来看实现各个功能的代码:

 //查找航班
BOOL SearchFlight(HWND hMainDlg){
int flag1 = ; //if(flag1==0) 出发地、目的地查询航班,else:航班号查航班
int flag2 = ;
Flight *p;
TCHAR szBuffer[] = {TEXT("\0")};
TCHAR szDeparture[], szDestination[], szFltNum[], szDate[]; HWND hEdit = GetDlgItem(hMainDlg, IDC_INFORMATION); GetDlgItemText(hMainDlg, IDC_DEPARTURE, szDeparture, ); //获取用户输入出发地
GetDlgItemText(hMainDlg, IDC_DESTINATION, szDestination, ); //获取用户输入目的地
GetDlgItemText(hMainDlg, IDC_FLIGHTNUM, szFltNum, ); //获取用户输入航班号
GetDlgItemText(hMainDlg, IDC_DATE, szDate, ); //获取用户选择航班时间 SetDlgItemText(hMainDlg, IDC_INFORMATION, szBuffer); //清空航班信息区域文本 if (lstrlen(szFltNum) || (!(lstrlen(szDeparture)) && !(lstrlen(szDestination))))
flag1++;
else if (!(lstrlen(szDeparture))){
MessageBox(hMainDlg, TEXT("请输入出发地!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
return FALSE;
}
else if (!(lstrlen(szDestination))){
MessageBox(hMainDlg, TEXT("请输入目的地!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
return FALSE;
}
if (flag1 && !(lstrlen(szFltNum))){
MessageBox(hMainDlg, TEXT("请输入出发地、目的地或航班号以查询航班!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
return FALSE;
} p = flightlink.head;
while (p){ //查找航班并输出
if (flag1){ //按航班号查找
if (!lstrcmp(p->Flight_Number, szFltNum) && !lstrcmp(p->Date,szDate)){//查找到符合航班,输出
if (!flag2){ //若该航班为第一班符合条件的航班
_stprintf(szBuffer, TEXT("航班号\t出发地\t目的地\t起飞时间\t降落时间\t余座\t价格\t折扣\t出发日期\n"));
SendMessage(hEdit, EM_SETSEL, LOWORD(-), HIWORD(-));
SendMessage(hEdit, EM_REPLACESEL, , (LPARAM)(szBuffer));
}//if
flag2++;
PrintFlight(hMainDlg, p); //输出航班信息
}//if
}//if
else{ //按出发地、目的地查找
if (!lstrcmp(p->Departure, szDeparture) && !lstrcmp(p->Destination, szDestination) && !lstrcmp(p->Date, szDate)){//查找到符合航班,输出
if (!flag2){ //若该航班为第一班符合条件的航班
_stprintf(szBuffer, TEXT("航班号\t出发地\t目的地\t起飞时间\t降落时间\t余座\t价格\t折扣\t出发日期\n"));
SendMessage(hEdit, EM_SETSEL, LOWORD(-), HIWORD(-));
SendMessage(hEdit, EM_REPLACESEL, , (LPARAM)(szBuffer));
}//if
flag2++;
PrintFlight(hMainDlg, p); //输出航班信息
}//if
}//else
p = p->Next;
}//while
if (!flag2)
MessageBox(hMainDlg, TEXT("对不起,没有符合您要求的航班"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
return TRUE;
}//SearchFlight()
 //将所查航班信息输出
BOOL PrintFlight(HWND hwndDlg,Flight *p){
TCHAR szBuffer[];
HWND hEdit = GetDlgItem(hwndDlg, IDC_INFORMATION); _stprintf(szBuffer, TEXT("\n%s\t%s\t%s\t%s\t%s\t%d\t%.2lf\t%s\t%s\n\n"),
p->Flight_Number, //航班号
p->Departure, //出发地
p->Destination, //目的地
p->TakeOff_Time, //起飞时间
p->Landing_Time, //降落时间
p->Vacant_Seat, //余座
p->Fare, //价格
p->Discount, //折扣
p->Date); //出发日期 SendMessage(hEdit, EM_SETSEL, LOWORD(-), HIWORD(-));
SendMessage(hEdit, EM_REPLACESEL, , (LPARAM)(szBuffer)); return TRUE;
}
 //订票
BOOL BookTickets(HWND hMainDlg){
int tickets_num;
Flight *p;
TCHAR szFltNum[], szDate[]; GetDlgItemText(hMainDlg, IDC_FLIGHTNUM, szFltNum, ); //获取用户输入航班号
GetDlgItemText(hMainDlg, IDC_DATE, szDate, ); //获取用户选择航班时间 if (!lstrlen(szFltNum)){
MessageBox(hMainDlg, TEXT("请输入航班号以订票!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
return FALSE;
} DialogBox(hInst, MAKEINTRESOURCE(IDD_FLTNUM), NULL, (DLGPROC)FlightNumDlgProc); //获取订票数目 if (!lstrlen(szBuffer))
return FALSE; tickets_num = _ttoi(szBuffer); //订票数目 p = flightlink.head;
while (p){ //查找航班并订票
if (!lstrcmp(p->Flight_Number, szFltNum) && !lstrcmp(p->Date, szDate)) //查找到符合航班
_Book_Tickets(hMainDlg,p,tickets_num);
p = p->Next;
}//while
return TRUE;
}//BookTickets() //订票
BOOL _Book_Tickets(HWND hwndDlg,Flight *p,int Tickets_Num){
OrderForm *new_order = (OrderForm *)malloc(sizeof(OrderForm));
if (!new_order){
MessageBox(hwndDlg, TEXT("内存申请错误!"), TEXT("错误"), MB_OK | MB_ICONERROR);
return FALSE;
} if (Tickets_Num > p->Vacant_Seat){ //余票不足,给出建议航班
Recommend(hwndDlg,p,Tickets_Num);
return FALSE;
} new_order->Order_Number = ++allorder.AllOrderNum; //新订单信息,总订单数+1
new_order->Tickets_Num = Tickets_Num;
lstrcpy(new_order->IdNum, passenger->IdNum);
lstrcpy(new_order->Flight_Number, p->Flight_Number);
lstrcpy(new_order->Departure, p->Departure);
lstrcpy(new_order->Destination, p->Destination);
lstrcpy(new_order->Date, p->Date);
lstrcpy(new_order->TakeOff_Time, p->TakeOff_Time);
lstrcpy(new_order->Landing_Time, p->Landing_Time);
new_order->Next = NULL;
new_order->psgNext = NULL; if (allorder.head == NULL) //将结点添至订单链表末尾
allorder.head = new_order;
else
allorder.tail->Next = new_order;
allorder.tail = new_order; if (passenger->OrderLink.head == NULL) //将结点添至用户订单链表末尾
passenger->OrderLink.head = new_order;
else
passenger->OrderLink.tail->psgNext = new_order;
passenger->OrderLink.tail = new_order;
passenger->OrderLink.OrderNum++;
passenger->TicketNum += Tickets_Num; p->Vacant_Seat -= Tickets_Num; //航班余票-1 MessageBox(hwndDlg, TEXT("订票成功!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION); return TRUE;
}//_Book_Tickets()
 //给出建议航班
BOOL Recommend(HWND hwndDlg, Flight *p,int Tickets_Num){
SetDlgItemText(hwndDlg, IDC_INFORMATION, TEXT("\0")); //清空航班信息栏 int flag = ;
TCHAR szBuffer[] = {TEXT("\0")};
HWND hEdit = GetDlgItem(hwndDlg, IDC_INFORMATION);
Flight *q; q = flightlink.head;
while (q){
if (!(lstrcmp(p->Departure, q->Departure)) &&
!(lstrcmp(p->Destination, q->Destination)) &&
lstrcmp(p->Flight_Number, q->Flight_Number) &&
Tickets_Num<=q->Vacant_Seat)
{
if (!flag){
wsprintf(szBuffer, TEXT("您所订航班余票不足,以下为建议航班:\n"));
SendMessage(hEdit, EM_SETSEL, LOWORD(-), HIWORD(-));
SendMessage(hEdit, EM_REPLACESEL, , (LPARAM)(szBuffer));
wsprintf(szBuffer, TEXT("\n"));
SendMessage(hEdit, EM_SETSEL, LOWORD(-), HIWORD(-));
SendMessage(hEdit, EM_REPLACESEL, , (LPARAM)(szBuffer));
wsprintf(szBuffer, TEXT("航班号\t出发地\t目的地\t起飞时间\t降落时间\t余座\t价格\t折扣\t出发日期\n"));
SendMessage(hEdit, EM_SETSEL, LOWORD(-), HIWORD(-));
SendMessage(hEdit, EM_REPLACESEL, , (LPARAM)(szBuffer));
++flag;
}//if
PrintFlight(hwndDlg, q);
}//if
q = q->Next;
}//while if (!flag){
wsprintf(szBuffer, TEXT("对不起,您所订航班余票不足,当天也其它没有符合条件的航班...\n"));
SendMessage(hEdit, EM_SETSEL, LOWORD(-), HIWORD(-));
SendMessage(hEdit, EM_REPLACESEL, , (LPARAM)(szBuffer));
}
return TRUE;
}//Recommend()
 //退票
BOOL ReturnTickets(HWND hwndDlg){
int flag = ;
int num=,tickets_num;
Flight *flight;
OrderForm *p,*q,*s,*prePoint;
TCHAR szFltNum[], szDate[]; GetDlgItemText(hwndDlg, IDC_FLIGHTNUM, szFltNum, ); //获取用户输入航班号
GetDlgItemText(hwndDlg, IDC_DATE, szDate, ); //获取用户选择航班时间 if (!lstrlen(szFltNum)){ //未输入航班号
MessageBox(hwndDlg, TEXT("请输入航班号!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
return FALSE;
} DialogBox(hInst, MAKEINTRESOURCE(IDD_FLTNUM), NULL, (DLGPROC)FlightNumDlgProc); //获取退票数目 if (!lstrlen(szBuffer))
return FALSE; tickets_num = _ttoi(szBuffer); //退票数 p = passenger->OrderLink.head;
prePoint = p;
if (!p){ //用户无订单
MessageBox(hwndDlg, TEXT("当前用户没有已订票"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
return FALSE;
} while (p){ //退票航班订票总数
if (!lstrcmp(p->Flight_Number, szFltNum) && !lstrcmp(p->Date, szDate))
num += p->Tickets_Num;
p = p->psgNext;
}
if (tickets_num > num){ //退票数大于该航班已订票数
wsprintf(szBuffer, TEXT("对不起,该航班您只订了%d张机票,请重新填写退票张数"), num);
MessageBox(hwndDlg, szBuffer, TEXT("提示"), MB_OK | MB_ICONINFORMATION);
return FALSE;
}//if p = passenger->OrderLink.head;
while (p){ //退票
if (!lstrcmp(p->Flight_Number, szFltNum) && !lstrcmp(p->Date, szDate) ){
if (tickets_num >= p->Tickets_Num){ //当退票数大于等于当前订单内票数 s = p->psgNext;
passenger->TicketNum -= p->Tickets_Num; //用户订票数减少
allorder.AllOrderNum--; //总订单数减少
passenger->OrderLink.OrderNum--; //用户订单数减少
tickets_num -= p->Tickets_Num; //需要退票数减少 若需要退票数为0,则退出,否则继续循环 if (passenger->OrderLink.head == p){ //若p为头结点,删除头结点
passenger->OrderLink.head = p->psgNext; //头指针指向下一个结点
if (!p->psgNext) //若p同时为尾结点,则尾指针指向NULL
passenger->OrderLink.tail = NULL;
}
else if (!p->psgNext) //若p非头结点但为尾结点,尾指针指向前一个结点
passenger->OrderLink.tail = prePoint;
prePoint->psgNext = p->psgNext; //链表删除结点p flight = flightlink.head;
while (flight){ //航班余座增加
if (!lstrcmp(flight->Flight_Number, szFltNum) && !lstrcmp(flight->Date, szDate)){
flight->Vacant_Seat += p->Tickets_Num;
break;
}
flight = flight->Next;
}//while q = allorder.head;
prePoint = q;
while (q){ //删除订单链表中订单结点
if (q == p){ //找到订单结点
if (allorder.head == p){ //若p为头结点,删除头结点
allorder.head = p->Next; //头指针指向下一个结点
if (!q->Next) //若q同时为尾结点,则尾指针指向NULL
allorder.tail = NULL;
}
else if (!q->Next) //若q非头结点但为尾结点,尾指针指向前一个结点
allorder.tail = prePoint;
prePoint->Next = q->Next; //链表删除结点q
free(p); break; //释放p结点内存
}//if
prePoint = q;
q = q->Next;
}//while if (tickets_num){ //若退票数非0,则继续退票
p = s; continue;
} MessageBox(hwndDlg, TEXT("退票成功!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
return TRUE;
}//if
else{ //退票数小于该订单订票数
p->Tickets_Num -= tickets_num; //订单订票数减少
passenger->TicketNum -= tickets_num; //用户订票数减少 flight = flightlink.head;
while (flight){
if (!lstrcmp(flight->Flight_Number, szFltNum) && !lstrcmp(flight->Date, szDate)){
flight->Vacant_Seat += tickets_num; //航班余票增加
break;
}
flight = flight->Next;
}//while MessageBox(hwndDlg, TEXT("退票成功!"), TEXT("提示"), MB_OK | MB_ICONINFORMATION);
return TRUE; //退票成功
}//else
}//if
prePoint = p;
p = p->psgNext;
}//while wsprintf(szBuffer, TEXT("对不起,您没有订该航班机票,请确认退票航班"));
MessageBox(hwndDlg, szBuffer, TEXT("提示"), MB_OK | MB_ICONINFORMATION);
return FALSE;
}//ReturnTickets()

这篇文章就先到这里吧,其余功能的实现以及头文件、资源文件的代码在下篇文章中给出。

windows API 开发飞机订票系统 图形化界面 (三)的更多相关文章

  1. windows API 开发飞机订票系统 图形化界面 (四)

    接下来的是录入航班.修改航班信息功能的实现: //录入航班 BOOL EntryFlight(HWND hEntryDlg){ TCHAR szDiscount[]; TCHAR szFare[],s ...

  2. windows API 开发飞机订票系统 图形化界面 (一)

    去年数据结构课程设计的作品,c语言实现,图形化界面使用windows API实现. 首发在我csdn博客:http://blog.csdn.net/u013805360/article/details ...

  3. windows API 开发飞机订票系统 图形化界面 (二)

    首先,用到的数据结构的定义.以及全局变量和函数的声明如下: // Flight.c : 定义应用程序的入口点. // #include "stdafx.h" //订单 typede ...

  4. 【性能测试】Loadrunner12.55(二)-飞机订票系统-脚本录制

    1.1 飞机订票系统 Loadrunner 12.55不会自动安装飞机订票系统,要自己手动安装. 我们需要下载Web Tools以及一个小插件strawberry https://marketplac ...

  5. Java版飞机订票系统

    关注微信公众号:Worldhello 回复 飞机订票系统 可获得系统源代码并可加群讨论交流 数据结构课程设计题目:          [飞机订票系统]            通过此系统可以实现如下功能 ...

  6. web类协议脚本-飞机订票系统示例

    以下是LR自带的飞机订票系统的Demo,希望能帮助大家. Action() { int iRand; int iTmp; char *strTmpA; char *strTmpB; char *str ...

  7. loadrunner飞机订票系统从登陆订票退票登出的脚本实现代码调试通过

    在LR自带的飞机订票系统中,完整模拟一个用户从登陆->订票->退票->登出这样一个业务流程,分解每个事务为一个Action: 进入首页->登陆->进入订票页面->选 ...

  8. loadrunner笔记(二):飞机订票系统--客户信息注册

    (一)  几个重要概念说明 集合点:同步虚拟用户,以便同一时间执行任务. 事务:事务是指服务器响应用户请求所用的时间,当然它可以衡量某个操作,如登录所需要的时间,也可以衡量一系列的操作所用的时间,如从 ...

  9. LR自带网站飞机订票系统 启动

    LR自带的网站:飞机订票系统 可是如何启动自带的网站呢?? 一.启动服务:开始-所有程序--HP Software-HP LoadRunner-Samples-Web-Start Web Server ...

随机推荐

  1. Web Storage API : LocalStroage

    这是一篇详细介绍详细介绍详细介绍_(:з」∠)_ 背景: 当你访问一个页面,并不是丢到服务器,等待用户访问就可以了的.从输入网址到显示网页的全过程,可以参考这里 简单来说,在输入url按下回车键后,首 ...

  2. 【温故而知新-Javascript】为DOM元素设置样式

    1. 使用样式表 可以通过document.styleSheets属性访问文档中可用的CSS样式表,它会返回一组对象集合,这些对象代表了与文档管理的各个样式表. 每个样式表 都由一个CSSStyleS ...

  3. 匈牙利算法 cojs.tk 搭配飞行员

    cojs.tk  搭配飞行员 ★★☆   输入文件:flyer.in   输出文件:flyer.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述]     飞行大队有若干个 ...

  4. UVA 12266 Stock prices --优先队列

    优先队列. 做法:维护两个优先队列:quesell  和  quebuy, 一个是小值优先,一个是大值优先.每次push的时候,都取各自的Top元素,比较价格,如果卖的比卖的出价低,则成交,各自的要买 ...

  5. Mango DS Traning #49 ---线段树3 解题手记

    Training address: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=38994#overview B.Xenia and B ...

  6. Android系列之Fragment(三)----Fragment和Activity之间的通信(含接口回调)

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  7. Hibernate出现javax.naming.NoInitialContextException 错误的解决办法

    异常信息: 08:02:56,329 WARN SessionFactoryObjectFactory:123 - Could not unbind factory from JNDI javax.n ...

  8. 通过box盒子模型给元素内容设置居中

    老版本语法 div{ display: -webkit-box;-webkit-box-align:center; //垂直居中-webkit-box-pack:center;//水平居中 } 新版本 ...

  9. 携手K2 BPM,华住酒店完美实现“互联网+”转型

    华住酒店集团,旗下6大品牌酒店,包括商旅品牌—禧玥酒店.全季酒店.星程酒店.汉庭酒店.海友酒店,以及度假品牌—漫心度假酒店.高端大气上档次一气呵成,2013年签约K2,携手成就美好生活. 演讲人:宋洪 ...

  10. js中的预加载与懒加载(延迟加载)

    js中加载分两种:预加载与延迟加载 一.  预加载,增强用户的体验,但会加载服务器的负担.一般会使用多种 CSS(background).JS(Image).HTML(<img />) . ...