java校園一卡通代碼 c#校園一卡通

易上學(xué)學(xué)生一卡通卡號怎么填

填寫銀行卡上的數(shù)字即可。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比環(huán)縣網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式環(huán)縣網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋環(huán)縣地區(qū)。費用合理售后完善,十載實體公司更值得信賴。

智能卡(英語:Smart card或IC Card),又稱智慧卡、聰明卡、集成電路卡及IC卡,是指粘貼或嵌有集成電路芯片的一種便攜式卡片塑料??ㄆ宋⑻幚砥?、I/O接口及存儲器,提供了數(shù)據(jù)的運算、訪問控制及存儲功能,卡片的大小、接點定義目前是由ISO規(guī)范統(tǒng)一,主要規(guī)范在ISO7810中。常見的有電話IC卡、身份IC卡,以及一些交通票證和存儲卡。

運作:

卡片內(nèi)部運作除了硬件之外還有其軟件,通常會需要一個核心COS(Chip Operating System)提供服務(wù),其內(nèi)部軟件系統(tǒng)架構(gòu)如下:硬件→ COS → AP(Application)

有些COS可以提供Java語言的服務(wù),產(chǎn)生一個分支稱為Java Card。Visa國際組織因此利用Java語言,發(fā)展出Visa OpenPlatform之卡片,后來則改稱為Global Platform。MasterCard國際組織則支持另一個MULTOS(MULTti Operating System)平臺。

不管是Global Platform或是MULTOS,應(yīng)用服務(wù)提供者可以隨時在此兩者平臺上開發(fā)新的應(yīng)用程序單元(Applet)去運行特定的功能,不必再經(jīng)過Mask開發(fā)之過程,大大減少了開發(fā)的費用與時間。

校園卡的編碼方式什么?

搞清常用編碼特性是解決字符集編碼問題的基礎(chǔ)。字符集編碼的識別與轉(zhuǎn)換、分析各種亂碼產(chǎn)生的原因、編程操作各種編碼字符串(例如字符數(shù)計算、截斷處理)等都需要弄清楚編碼的特性。

了解一種字符集編碼主要是要了解該編碼的編碼范圍,編碼對應(yīng)的字符集(都包含哪些字符),和其他字符集編碼之間的關(guān)系等。

ASCII

ASCII碼是7位編碼,編碼范圍是0x00-0x7F。ASCII字符集包括英文字母、阿拉伯數(shù)字和標點符號等字符。其中0x00-0x20和0x7F共33個控制字符。

只支持ASCII碼的系統(tǒng)會忽略每個字節(jié)的最高位,只認為低7位是有效位。HZ字符編碼就是早期為了在只支持7位ASCII系統(tǒng)中傳輸中文而設(shè)計的編碼。早期很多郵件系統(tǒng)也只支持ASCII編碼,為了傳輸中文郵件必須使用BASE64或者其他編碼方式。

GB2312

GB2312是基于區(qū)位碼設(shè)計的,區(qū)位碼把編碼表分為94個區(qū),每個區(qū)對應(yīng)94個位,每個字符的區(qū)號和位號組合起來就是該漢字的區(qū)位碼。區(qū)位碼一般 用10進制數(shù)來表示,如1601就表示16區(qū)1位,對應(yīng)的字符是“啊”。在區(qū)位碼的區(qū)號和位號上分別加上0xA0就得到了GB2312編碼。

區(qū)位碼中01-09區(qū)是符號、數(shù)字區(qū),16-87區(qū)是漢字區(qū),10-15和88-94是未定義的空白區(qū)。它將收錄的漢字分成兩級:第一級是常用漢字 計3755個,置于16-55區(qū),按漢語拼音字母/筆形順序排列;第二級漢字是次常用漢字計3008個,置于56-87區(qū),按部首/筆畫順序排列。一級漢 字是按照拼音排序的,這個就可以得到某個拼音在一級漢字區(qū)位中的范圍,很多根據(jù)漢字可以得到拼音的程序就是根據(jù)這個原理編寫的。

GB2312字符集中除常用簡體漢字字符外還包括希臘字母、日文平假名及片假名字母、俄語西里爾字母等字符,未收錄繁體中文漢字和一些生僻字??梢杂梅斌w漢字測試某些系統(tǒng)是不是只支持GB2312編碼。

GB2312的編碼范圍是0xA1A1-0x7E7E,去掉未定義的區(qū)域之后可以理解為實際編碼范圍是0xA1A1-0xF7FE。

EUC-CN可以理解為GB2312的別名,和GB2312完全相同。

區(qū)位碼更應(yīng)該認為是字符集的定義,定義了所收錄的字符和字符位置,而GB2312及EUC-CN是實際計算機環(huán)境中支持這 種字符集的編碼。HZ和ISO-2022-CN是對應(yīng)區(qū)位碼字符集的另外兩種編碼,都是用7位編碼空間來支持漢字。區(qū)位碼和GB2312編碼的關(guān)系有點像 Unicode和UTF-8。

GBK

GBK編碼是GB2312編碼的超集,向下完全兼容GB2312,同時GBK收錄了Unicode基本多文種平面中的所有CJK漢字。同 GB2312一樣,GBK也支持希臘字母、日文假名字母、俄語字母等字符,但不支持韓語中的表音字符(非漢字字符)。GBK還收錄了GB2312不包含的 漢字部首符號、豎排標點符號等字符。

GBK的整體編碼范圍是為0x8140-0xFEFE,不包括低字節(jié)是0×7F的組合。高字節(jié)范圍是0×81-0xFE,低字節(jié)范圍是0x40-7E和0x80-0xFE。

低字節(jié)是0x40-0x7E的GBK字符有一定特殊性,因為這些字符占用了ASCII碼的位置,這樣會給一些系統(tǒng)帶來麻煩。

有些系統(tǒng)中用0x40-0x7E中的字符(如“|”)做特殊符號,在定位這些符號時又沒有判斷這些符號是不是屬于某個 GBK字符的低字節(jié),這樣就會造成錯誤判斷。在支持GB2312的環(huán)境下就不存在這個問題。需要注意的是支持GBK的環(huán)境中小于0x80的某個字節(jié)未必就 是ASCII符號;另外就是最好選用小于0×40的ASCII符號做一些特殊符號,這樣就可以快速定位,且不用擔心是某個漢字的另一半。Big5編碼中也存在相應(yīng)問題。

CP936和GBK的有些許差別,絕大多數(shù)情況下可以把CP936當作GBK的別名。

GB18030

GB18030編碼向下兼容GBK和GB2312,兼容的含義是不僅字符兼容,而且相同字符的編碼也相同。GB18030收錄了所有Unicode3.1中的字符,包括中國少數(shù)民族字符,GBK不支持的韓文字符等等,也可以說是世界大多民族的文字符號都被收錄在內(nèi)。

GBK和GB2312都是雙字節(jié)等寬編碼,如果算上和ASCII兼容所支持的單字節(jié),也可以理解為是單字節(jié)和雙字節(jié)混合的變長編碼。GB18030編碼是變長編碼,有單字節(jié)、雙字節(jié)和四字節(jié)三種方式。

GB18030的單字節(jié)編碼范圍是0x00-0x7F,完全等同與ASCII;雙字節(jié)編碼的范圍和GBK相同,高字節(jié)是0x81-0xFE,低字節(jié) 的編碼范圍是0x40-0x7E和0x80-FE;四字節(jié)編碼中第一、三字節(jié)的編碼范圍是0x81-0xFE,二、四字節(jié)是0x30-0x39。

Windows中CP936代碼頁使用0x80來表示歐元符號,而在GB18030編碼中沒有使用0x80編碼位,用其他位置來表示歐元符號。這可以理解為是GB18030向下兼容性上的一點小問題;也可以理解為0x80是CP936對GBK的擴展,而GB18030只是和GBK兼容良好。

BIG5

Big5是雙字節(jié)編碼,高字節(jié)編碼范圍是0x81-0xFE,低字節(jié)編碼范圍是0x40-0x7E和0xA1-0xFE。和GBK相比,少了低字節(jié)是0x80-0xA0的組合。0x8140-0xA0FE是保留區(qū)域,用于用戶造字區(qū)。

Big5收錄的漢字只包括繁體漢字,不包括簡體漢字,一些生僻的漢字也沒有收錄。GBK收錄的日文假名字符、俄文字符Big5也沒有收錄。因為Big5當中收錄的字符有限,因此有很多在Big5基礎(chǔ)上擴展的編碼,如倚天中文系統(tǒng)。Windows系統(tǒng)上使用的代碼頁CP950也可以理解為是對Big5的擴展,在Big5的基礎(chǔ)上增加了7個漢字和一些符號。Big5編碼對應(yīng)的字符集是GBK字符集的子集,也就是說Big5收錄的字符是GBK收錄字符的一部分,但相同字符的編碼不同。

因為Big5也占用了ASCII的編碼空間(低字節(jié)所使用的0x40-0x7E),所以Big5編碼在一些環(huán)境下存在和GBK編碼相同的問題,即低字節(jié)范圍為0x40-0x7E的字符有可能會被誤處理,尤其是低字節(jié)是0x5C("/")和0x7C("|")的字符??梢詤⒖糋BK一節(jié)相應(yīng)說明。

盡管有些區(qū)別,大多數(shù)情況下可以把CP950當作Big5的別名。

ISO-8859-1

ISO-8859-1編碼是單字節(jié)編碼,向下兼容ASCII,其編碼范圍是0x00-0xFF,0x00-0x7F之間完全和ASCII一致,0x80-0x9F之間是控制字符,0xA0-0xFF之間是文字符號。

ISO-8859-1收錄的字符除ASCII收錄的字符外,還包括西歐語言、希臘語、泰語、阿拉伯語、希伯來語對應(yīng)的文字符號。歐元符號出現(xiàn)的比較晚,沒有被收錄在ISO-8859-1當中。

因為ISO-8859-1編碼范圍使用了單字節(jié)內(nèi)的所有空間,在支持ISO-8859-1的系統(tǒng)中傳輸和存儲其他任何編碼的字節(jié)流都不會被拋棄。換言之,把其他任何編碼的字節(jié)流當作ISO-8859-1編碼看待都沒有問題。這是個很重要的特性,MySQL數(shù)據(jù)庫默認編碼是Latin1就是利用了這個特性。ASCII編碼是一個7位的容器,ISO-8859-1編碼是一個8位的容器。

Latin1是ISO-8859-1的別名,有些環(huán)境下寫作Latin-1。

UCS-2和UTF-16

Unicode組織和ISO組織都試圖定義一個超大字符集,目的是要涵蓋所有語言使用的字符以及其他學(xué)科使用的一些特殊符號,這個字符集就是通用字符集(UCS,Universal Character Set)。這兩個組織經(jīng)過協(xié)調(diào),雖然在各自發(fā)展,但定義的字符位置是完全一致的。ISO相應(yīng)的標準是ISO 10646。Unicode和ISO 10646都在不斷的發(fā)展過程中,所以會有不同的版本號來標明不同的發(fā)展階段,每個Unicode版本號都能找到相對應(yīng)的ISO 10646版本號。

ISO 10646標準定義了一個31位的字符集。前兩個字節(jié)的位置(0x0000-0xFFFD)被稱為基本多語言面(Basic Multilingual Plane, BMP) ,超出兩個字節(jié)的范圍稱作輔助語言面。BMP基本包括了所有語言中絕大多數(shù)字符,所以只要支持BMP就可以支持絕大多數(shù)場合下的應(yīng)用。Unicode 3.0對應(yīng)的字符集在BMP范圍內(nèi)。

UCS字符集為每個字符分配了一個位置,通常用“U”再加上某個字符在UCS中位置的16進制數(shù)作為這個字符的UCS表示,例如“U+0041”表示字符“A”。UCS字符U+0000到U+00FF與ISO-8859-1完全一致。

UCS-2、UTF-16是UCS字符集(或者說是Unicode字符集)實際應(yīng)用中的具體編碼方式。UCS-2是兩個字節(jié)的等寬編碼,因為只是使用了兩個字節(jié)的編碼空間,所以只能對BMP中的字符做編碼。UTF-16是變長編碼,用兩個字節(jié)對BMP內(nèi)的字符編碼,用4個字節(jié)對超出BMP范圍的輔助平面內(nèi)的字符作編碼。

UCS-2不同于GBK和Big5,它是真正的等寬編碼,每個字符都使用兩個字節(jié),這個特性在字符串截斷和字符數(shù)計算時非常方便。

UTF-16是UCS-2的超集,UTF-16編碼的兩字節(jié)編碼方式完全和UCS-2相同,也就是說在BMP的框架內(nèi)UCS-2完全等同與UTF-16。實際情況當中常常把UCS-16當作UCS-2的別名。

UCS-2和UTF-16在存儲和傳輸時會使用兩種不同的字節(jié)序,分別是big endian和little endian(大尾和小尾)。例如“啊”(U+554A)用big endian表示就是0x554A,用little endian表示就是0x4A55。UCS-2和UTF-16默認的字節(jié)序是big endian方式。在傳輸過程中為了說明字節(jié)序需要在字節(jié)流前加上BOM(Byte order Mark),0xFEFF表示是big endian,0xFFFE表示是little endian。UCS-2BE、UCS-2LE是實際應(yīng)用中使用的編碼名稱,對應(yīng)著big endian和little endian,UTF-16BE、UTF-16LE也是如此。因為默認是BE字節(jié)序,所以可以把UCS-2當做是UCS-2BE的別名。

在UCS編碼中有一個叫做“ZERO WIDTH NO-BREAK SPACE”的字符,它的編碼是U+FEFF,是個沒有實際意義的字符。UCS規(guī)范建議我們在傳輸字節(jié)流前,先傳輸字符“ZERO WIDTH NO-BREAK SPACE”,如果傳輸?shù)腪ERO WIDTH NO-BREAK SPACE是0xFEFF就說明是big endian,反之就是little endian。

UCS-2和UTF-16也可以理解為和ASCII以及ISO-8859-1兼容,在ASCII編碼或者ISO-8859-1編碼的每個字節(jié)前加上0x00,就得到相應(yīng)字符的UCS-2編碼。

UCS-2和UTF-16中會使用0x00作為某個字符編碼的一部分,某些系統(tǒng)會把0x00當作字符串結(jié)束的標志,在處理UCS-2或UTF-16編碼時會出現(xiàn)問題。

UTF-8

UTF-8是UCS字符集的另一種編碼方式,UTF-16的每個單元是兩個字節(jié)(16位),而UTF-8的每個單元是一個字節(jié)(8位)。UTF-16中用一個或兩個雙字節(jié)表示一個字符,UTF-8中用一個或幾個單字節(jié)表示一個字符。

可以認為UTF-8編碼是根據(jù)一定規(guī)律從UCS-2轉(zhuǎn)換得到的,從UCS-2到UTF-8之間有以下轉(zhuǎn)換關(guān)系:

UCS-2 UTF-8

U+0000 - U+007F 0xxxxxxx

U+0080 - U+07FF 110xxxxx 10xxxxxx

U+0800 - U+FFFF 1110xxxx 10xxxxxx 10xxxxxx

例如“啊”字的UCS-2編碼是0x554A,對應(yīng)的二進制是0101 0101 0100 1010,轉(zhuǎn)成UTF-8編碼之后的二進制是1110 0101 10 010101 10 001010,對應(yīng)的十六進制是0xE5958A。

UCS-4也是一種UCS字符集的編碼方式,是使用4個字節(jié)的等寬編碼,可以用UCS-4來表示BMP之外的輔助面字符。UCS-2中每兩個字節(jié)前再加上0x0000就得到了BMP字符的UCS-4編碼。從UCS-4到UTF-8也存在轉(zhuǎn)換關(guān)系,根據(jù)這種轉(zhuǎn)換關(guān)系,UTF-8最多可以使用六個字節(jié)來編碼UCS-4。

根據(jù)UTF-8的生成規(guī)律和UCS字符集的特性,可以看到UTF-8具有的特性:

UTF-8完全和ASCII兼容,也就是說ASCII對應(yīng)的字符在UTF-8中和ASCII編碼完全一致。范圍在0x00-0x7F之內(nèi)的字符一定是ASCII字符,不可能是其他字符的一部分。GBK和Big5都存在的缺陷在UTF-8中是不存在的。

大于U+007F的UCS字符,在UTF-8編碼中至少是兩個字節(jié)。

UTF-8中的每個字符編碼的首字節(jié)總在0x00-0xFD之間(不考慮UCS-4支持的情況,首字節(jié)在0x00-0xEF之間)。根據(jù)首字節(jié)就可以判斷之后連續(xù)幾個字節(jié)。

非首字節(jié)的其他字節(jié)都在0x80-0xBF之間;0xFE和0xFF在UTF-8中沒有被用到。

GBK編碼中的漢字字符都在UCS-2中的范圍都在U+0800 - U+FFFF之間,所以每個GBK編碼中的漢字字符的UTF-8編碼都是3個字節(jié)。但GBK中包含的其他字符的UTF-8編碼就不一定是3個字節(jié)了,如GBK中的俄文字符。

在UTF-8的編碼的傳輸過程中即使丟掉一個字節(jié),根據(jù)編碼規(guī)律也很容易定位丟掉的位置,不會影響到其他字符。在其他雙字節(jié)編碼中,一旦損失一個字節(jié),就會影響到此字節(jié)之后的所有字符。從這點可以看出UTF-8編碼非常適合作為傳輸編碼

參考資料:

高分求C語言編寫的校園一卡通程序

------------------------------------------

// Copyright (C) 2009 沈陽工程學(xué)院信息安全工作室

// 版權(quán)所有。

//

// 文件名:模擬停車場問題.cpp

// 文件功能描述:模擬停車場問題

//

//

// 創(chuàng)建標識:20091214

//

// 修改標識:20091218

// 修改描述:完成編碼

//----------------------------------------------------------------*/

//頭文件

#include iostream

#include malloc.h

#include string

#include windows.h

//常量定義

#define MAX_STOP 4 //定義停車場最大停車數(shù)

#define MAX_PLATE 10 //定義車牌號最大長度

#define TIME_COUNT "秒" //定義時間單位

#define TIME_MS_TO_CONUT 1000 //定義時間進制,意為由TIME_COUNT到毫秒的進制

#define UNIT_PRICE 10 //定義單位時間收費標準

using namespace std; //使用std命名空間

//數(shù)據(jù)結(jié)構(gòu)定義

//定義存儲汽車信息的結(jié)構(gòu)體

typedef struct

{

char license_plate[MAX_PLATE]; //汽車牌照號碼,定義為一個字符指針類型

char state; //汽車當前狀態(tài),字符p表示停放在停車位上,字符s表示停放在便道上,每輛車的初始狀態(tài)用字符i來進行表示

int time; //汽車停入停車場時的時間,用來計時收費

}CAR;

//定義模擬停車場的棧結(jié)構(gòu)

typedef struct

{

CAR STOP[MAX_STOP]; //汽車信息的存儲空間

int top; //用來指示棧頂位置的靜態(tài)指針

}SeqStack;

//定義模擬便道的隊列結(jié)構(gòu)

typedef struct node

{

CAR WAIT; //汽車信息的存儲空間

struct node *next; //用來指示隊列位置的動態(tài)指針

}QNode; //鏈隊列節(jié)點的類型

//定義鏈隊列的收尾指針

typedef struct

{

QNode *front,*rear;

}LQueue; //將頭尾指針封裝在一起的鏈隊

//函數(shù)聲明

int Empty_LQueue(LQueue *q); //判隊空

int LeaveCheck(SeqStack parking , char *license_plate); //檢查離開的車是否在停車場中

int QueueLength(LQueue *q); //判隊長度

int Out_LQueue(LQueue *sidewalk , char *license_plate); //出隊操作

int StackEmpty(SeqStack parking); //判斷棧是否為空

int StackFull(SeqStack parking); //判斷棧是否為滿

int StackPop(SeqStack parking); //出棧操作

int StackTop(SeqStack parking , char *license_plate , int time);//取棧頂元素

void Car_come(SeqStack parking , LQueue *sidewalk); //有車到來時的操作

void Car_leave(SeqStack parking , LQueue *sidewalk); //有車離開的操作

void Display(SeqStack parking); //顯示停車場內(nèi)的所有信息 調(diào)試時用

void InitStack(SeqStack parking); //初始化棧

void InitList(LQueue *sidewalk); //初始化隊列

void In_LQueue(LQueue *sidewalk , char *license_plate); //進隊操作

void Input_Check(char *license_plate); ////檢驗輸入的車牌是否合法

void StackPush(SeqStack parking , char *license_plate , int stop_time);//進棧操作

void main()

{

//定義變量

SeqStack parking;

LQueue *sidewalk = NULL;

char *choice = new char;

int flag = 1; //定義一個變量 判斷是否退出

//初始化一個為空的停車場

InitStack(parking);

//初始化一個為空的便道

InitList(sidewalk);

//運行界面及功能選擇

while(flag)

{

cout"\n\t 停車場模擬管理系統(tǒng) \n\n";

cout"\t|--------------------------------------------------|\n\n";

cout"\t|本程序為停車場的模擬管理系統(tǒng),有車到來時請按C鍵。|\n\n";

cout"\t|然后根據(jù)屏幕提示進行相關(guān)操作,有車要走時請按l鍵。|\n\n";

cout"\t|然后根據(jù)屏幕提示進行相關(guān)操作,查看停車場請按D鍵。|\n\n";

cout"\t|然后根據(jù)屏幕提示進行相關(guān)操作,要退出系統(tǒng)請按Q鍵。|\n\n";

cout"\t|--------------------------------------------------|\n\n";

cout"請選擇操作:";

gets(choice);

if(1 != strlen(choice))

{

cout"請正確輸入選項!";

continue;

}

else

{

switch(*choice)

{

case 'c':

case 'C':

{

Car_come(parking,sidewalk);break;

}

case 'l':

case 'L':

{

Car_leave(parking,sidewalk);break;

}

case 'q':

case 'Q':

{

flag=0;break;

}

case 'd':

case 'D':

{

Display(parking);break;

}

default:

cout"選擇不正確!請重新選擇!\n";

}

}

}

}

//有車到來時的操作

void Car_come(SeqStack parking , LQueue *sidewalk)

{

//定義變量

char license_plate[MAX_PLATE];

cout"請輸入車輛的車牌號碼:";

Input_Check(license_plate);

//判斷停車場是否已滿,滿則進入便道,不滿進入停車場

if(StackFull(parking))

{

In_LQueue(sidewalk , license_plate); //進入便道

cout"停車場已滿請在便道等候,您的位置為"QueueLength(sidewalk)

endl;

}

else

{

StackPush(parking , license_plate , GetTickCount()); //進入停車場

cout"請進入停車場中的"parking.top+1"號停車位\n";

}

// Display(parking);

}

//有車離開時的操作

void Car_leave(SeqStack parking , LQueue *sidewalk)

{

//定義變量

SeqStack tmpparking; //定義臨時停車場

char leave_license_plate[MAX_PLATE]; //要離開的車牌號

char license_plate[MAX_PLATE]; //存放從停車場中讀出來的車牌信息

int time;

InitStack(tmpparking); //初始化臨時停車場

//判斷停車場中是否有車

if(StackEmpty(parking))

{

cout"當前停車場中沒有車\n";

return; //退出子函數(shù)

}

cout"請輸入要離開的車牌照:";

Input_Check(leave_license_plate);

cout"當前停車場中有"parking.top+1"輛車\n";

if(LeaveCheck(parking , leave_license_plate)) //判斷車是否在停車場中

{

//車在停車場中

cout"您的車在"LeaveCheck(parking , leave_license_plate)"號車位上\n";

while(StackTop(parking , license_plate , time)

(strcmp(parking.STOP[parking.top].license_plate , leave_license_plate) != 0))

{

strcpy(parking.STOP[parking.top].license_plate , license_plate);

cout"牌照為"license_plate"的車暫時退出停車場"parking.top+1"號位\n";

StackPush(tmpparking , license_plate , time); //停車場中的車暫時退出 進入臨時停車場

StackPop(parking); //出棧

}

cout"牌照為"license_plate"的車離開停車場"parking.top+1"號位\n";

cout"您在停車場中停了"(GetTickCount()-time)/TIME_MS_TO_CONUTTIME_COUNTendl; //輸出所停時間信息

cout"應(yīng)繳費用為"(GetTickCount()-time)/TIME_MS_TO_CONUT*UNIT_PRICE"元\n";; //輸出費用信息

StackPop(parking); //出棧

//將臨時停車場中的車?;赝\噲?/p>

while(StackEmpty(tmpparking) != 1)

{

StackTop(tmpparking , license_plate , time);

StackPush(parking , license_plate , time);

cout"牌照為"license_plate"的車進入停車場"parking.top+1"號位\n";

license_plate[0] = '\0';

StackPop(tmpparking);

}

if(parking.top+1 == MAX_STOP-1) //判斷車離開前停車場是否停滿

if(QueueLength(sidewalk)) //如果停滿則判斷便道上是否有車

{

//便道中有車 則從便道中停入停車場

Out_LQueue(sidewalk , license_plate); //出隊

StackPush(parking , license_plate , GetTickCount()); //入棧

cout"在便道中牌照為"license_plate"的車進入停車場"parking.top+1"號位\n";

}

}

else

//車不在停車場中

cout"您的車不在停車場中!\n";

}

//初始化順序棧

void InitStack(SeqStack parking)

{

parking.top = -1;

}

//判???/p>

int StackEmpty(SeqStack parking)

{

if(parking.top == -1)

return 1;

else

return 0;

}

//判棧滿

int StackFull(SeqStack parking)

{

if(parking.top == MAX_STOP-1)

return 1;

else

return 0;

}

//入棧

void StackPush(SeqStack parking , char *license_plate , int stop_time)

{

parking.top++;

strcpy(parking.STOP[parking.top].license_plate , license_plate);

parking.STOP[parking.top].state = 'p';

parking.STOP[parking.top].time = stop_time;

}

//出棧 返回棧頂指針

int StackPop(SeqStack parking)

{

if(StackEmpty(parking))

return 0;

else

return parking.top--;

}

//取棧頂元素

int StackTop(SeqStack parking , char *license_plate , int time)

{

if(StackEmpty(parking))

return 0;

else

{

strcpy(license_plate , parking.STOP[parking.top].license_plate);

time = parking.STOP[parking.top].time;

return 1;

}

}

//顯示所有

void Display(SeqStack parking)

{

if(parking.top == -1)

printf("停車場為空\n");

else

{

while(parking.top != -1)

{

cout"車牌號為:"parking.STOP[parking.top].license_plate;

cout",停在"parking.top + 1 "號車位上";

cout",已停"(GetTickCount()-parking.STOP[parking.top].time)/TIME_MS_TO_CONUTTIME_COUNTendl;

parking.top--;

}

}

}

//初始化隊列

void InitList(LQueue *sidewalk)

{

sidewalk = (LQueue *)malloc(sizeof(LQueue));

sidewalk-front=sidewalk-rear = NULL;

}

//入隊

void In_LQueue(LQueue *sidewalk,char *license_plate)

{

QNode *car_on_sidewalk;

car_on_sidewalk = (QNode *)malloc(sizeof(QNode)); //為新節(jié)點開辟新空間

strcpy(car_on_sidewalk-WAIT.license_plate , license_plate); //將數(shù)據(jù)寫入節(jié)點

car_on_sidewalk-WAIT.state = 's'; //寫入停車信息

car_on_sidewalk-WAIT.time = GetTickCount(); //寫入停車時間

car_on_sidewalk-next = NULL;

if(Empty_LQueue(sidewalk)) //隊空則創(chuàng)建第一個節(jié)點

sidewalk-front = sidewalk-rear = car_on_sidewalk;

else

{

//隊非空插入隊尾

sidewalk-rear-next = car_on_sidewalk;

sidewalk-rear = car_on_sidewalk;

}

}

//判隊空

int Empty_LQueue(LQueue *q)

{

if(q-front == NULL)

return 1;

else

return 0;

}

//判隊長度 返回隊長

int QueueLength(LQueue *q)

{

QNode *p=q-front;

int i=0;

while(p != NULL)

{

i++;

p=p-next;

}

return i;

}

//出隊 成功返回1 隊空返回0

int Out_LQueue(LQueue *sidewalk,char *license_plate)

{

QNode *car_on_sidewalk;

if(Empty_LQueue(sidewalk)) //如果隊空返回0

return 0;

car_on_sidewalk = sidewalk-front;

strcpy(license_plate , car_on_sidewalk-WAIT.license_plate);//取出隊頭元素

if(sidewalk-front == sidewalk-rear) //隊中只有一個元素

sidewalk-front = sidewalk-rear=NULL; //刪除元素

else

sidewalk-front = sidewalk-front-next; //隊頭指針后移

free(car_on_sidewalk); //釋放指針

return 1;

}

//檢查離開的車是否在停車場中 返回車在停車場中位置 不在則返回0

int LeaveCheck(SeqStack parking,char *license_plate)

{

int flag = parking.top+1; //定義變量記錄當前車在停車場中位置

if(StackEmpty(parking))

return 0;

else

{

//查找離開車所在位置

while(parking.top != -1 strcmp(parking.STOP[parking.top].license_plate , license_plate) != 0)

{

flag--;

parking.top--;

}

return flag;

}

}

//檢驗輸入的車牌是否合法

void Input_Check(char *license_plate)

{

int flag = 1;

int i;

string tmpstr;

while(flag)

{

cintmpstr;

getchar();

if(tmpstr.length()MAX_PLATE)

{

for(i=0;i10;i++)

license_plate[i] = tmpstr.c_str()[i];

flag = 0;

}

else

cout"輸入有誤,請重新輸入:";

}

}

以前的課設(shè) 你看看吧 純手工的~~

另外,站長團上有產(chǎn)品團購,便宜有保證

文章題目:java校園一卡通代碼 c#校園一卡通
文章網(wǎng)址:http://muchs.cn/article4/dophjie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、用戶體驗虛擬主機、網(wǎng)站建設(shè)網(wǎng)站設(shè)計公司、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)