『壹』 飛機訂票系統設計 c語言
(已修改,請用最新的代碼)代碼說明:
1級菜單:選擇購買的航班號,並顯示對應座位狀態。
(我只做測試,所以初始化initFlight函數中我只初始了2個航班,需要自己按照我的代碼添)
(注意:實際開發軟體,鏈表數據是從資料庫中讀取的,需要實時同步,如果要多次調用initFlight函數,記得自己寫一個釋放內存的函數,把所有鏈表「SINFO和FLINFO」節點都釋放掉,釋放函數我沒寫,需要你自己寫!!!)
2級菜單:選擇購買對應座位號,完成購買,並實時顯示購買結果。
位置編號、座位最大排數、艙室類型、折扣等參數均由常量參數空值,需要修改自行改常量。
注意:艙室類型(我默認3個類型頭等艙、公務艙、經濟艙)對應折扣參數:tDiscount二維數組。如要如要添加新的艙室類型,必須將參數常量TYPESIZE、typeName、types、tDiscount這4個同時修改,具體看代碼備注!!
座位票價=基礎票價*類型折扣*時段折扣。
因為飛機不讓吸煙,所以我沒做吸煙區(笑),如果你需要,可以作為類型自行添加!
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<malloc.h>
#include<time.h>
//-----------------------相關參數,想改變,在這里修改!!!!!!!-----------------------------
constfloattimeDiscount=1;//時段折扣,影響所有航班最終價格,默認1
constcharcID[5]="ABCD";//位置編號
constintmaxRow=20;//位置最大排號
//注意:如果修改類型數量,types和tDiscount必須同時修改!!!
#defineTYPESIZE3//類型數量
constchartypeName[TYPESIZE][10]={"頭等艙","公務艙","經濟艙"};
constinttypes[TYPESIZE][2]={{1,2},{3,4},{5,20}};//排號對應類型。1~2排頭等艙,3~4排公務艙,5~20排經濟艙
constfloattDiscount[TYPESIZE]={1.5,1.3,1};//類型折扣。頭等艙1.5倍,公務艙1.3倍,經濟艙1倍
//-------------------------------------------------------------------------------
typedefstructseatInfo//座位信息,一條鏈表對應一個航班信息,鏈表順序從第一排左邊第一個開始往後A1~D1,A2~D2。。。
{
charcloID;//位置編號A、B、C、D
introw;//位置排號
inttype;//座位所屬類型:0:頭等艙、1:公務艙、2:經濟艙,不同類型對應不同的類型折扣tDiscount
intsell;//出售狀態,0:未出售;1:已出售
structseatInfo*next;
}SINFO;
typedefstructflightInfo//航班信息
{
charfid[10];//航班號
time_ttfTime;//起飛時間
time_tldTime;//降落時間
chartoCity[20];//抵達城市
floattPrice;//基礎票價,不同位置具有不同折扣,座位票價=基礎票價*類型折扣*時段折扣
structflightInfo*next;
structseatInfo*sHead;//對應座位鏈表的頭節點
}FLINFO;
voidmeError(void*p);
SINFO*getSINFO();//獲取座位鏈表
//addFLINFO:添加航班信息鏈表的節點flinfoHead:頭節點(第一次傳NULL會自動生成),flinfoTail:尾節點,fNew:要添加的結構信息(成員指針無需賦值)
FLINFO*addFLINFO(FLINFO**ffHead,FLINFO*flinfoTail,FLINFOfNew);//返回尾節點
time_tgetTime_tfromStr(char*sTime);//將YYYY-MM-DDhh:mm:ss格式的時間字元串轉換成time_t型數值
FLINFO*initFlight();//初始化航班信息,返回航班鏈表頭節點,如果想手動輸入,請在這里添加!!!正常軟體開發,這一步應該是從資料庫讀取!
char*getTString(structtm*tm0);//通過tm獲取時間字元串
voidshowSinfo(FLINFO*flinfo);//顯示航班對應座位信息
voidprintfFlinfo(FLINFO*flinfoHead);
FLINFO*selectFlinfo(FLINFO*flinfoHead,char*fid);//選擇航班號,返回節點
voidshowSinfo(FLINFO*flinfo);//顯示航班對應座位信息
SINFO*selectSinfo(FLINFO*flinfo,char*sid);//選擇座位,返回節點
intmain()
{
FLINFO*flinfoHead=initFlight(),*ffSelect=NULL;
SINFO*sfSelect=NULL;
charfid[10]={0},sid[10]={10};
while(1)
{
ffSelect=NULL;
sfSelect=NULL;
memset(fid,0,10);
memset(sid,0,10);
printfFlinfo(flinfoHead);
printf("請輸入要購買的航班號:");
scanf("%s",fid);
ffSelect=selectFlinfo(flinfoHead,fid);
if(!ffSelect)
{
printf("未找到對應航班,按任意鍵繼續-----
");
getch();
system("cls");
continue;
}
system("cls");
printf("航班號:%s座位信息如下:
",ffSelect->fid);
showSinfo(ffSelect);
printf("請輸入要購買的座位編號(輸入0返回主菜單):");
scanf("%s",sid);
if(!strcmp(sid,"0"))
{
system("cls");
continue;
}
else
{
sfSelect=selectSinfo(ffSelect,sid);
if(!sfSelect||sfSelect->sell)
{
printf("未找到對應座位或該座位已出售,請重新輸入!按任意鍵繼續-----
");
getch();
system("cls");
continue;
}
printf("購買成功!按任意鍵繼續-----");
sfSelect->sell=1;
getch();
system("cls");
}
}
return0;
}
SINFO*selectSinfo(FLINFO*flinfo,char*sid)//選擇座位,返回節點
{
SINFO*sinfoHead=flinfo->sHead;
while(sinfoHead->next)
{
if(sinfoHead->next->cloID==sid[0]&&sinfoHead->next->row==atoi(sid+1))
returnsinfoHead->next;
sinfoHead=sinfoHead->next;
}
returnNULL;
}
voidshowSinfo(FLINFO*flinfo)//顯示航班對應座位信息
{
SINFO*sinfoHead=flinfo->sHead,*sfp=NULL;
inti,j,k,row=maxRow,clo=strlen(cID);
chartypeStr[10]={0};
for(i=0;i<row;i++)
{
//---------讀取座位所屬艙室------------
memset(typeStr,0,10);
for(k=0;k<TYPESIZE;k++)
if(i+1>=types[k][0]&&i+1<=types[k][1])
strcpy(typeStr,typeName[k]);
//--------------------------------------
printf("
");
for(j=0;j<clo;j++)
printf("-------------");
printf("
");
sfp=sinfoHead;
for(j=0;j<clo;j++)
{
printf("|%c%02d|",sfp->next->cloID,sfp->next->row);
sfp=sfp->next;
}
printf("
");
sfp=sinfoHead;
for(j=0;j<clo;j++)
{
printf("|%c|",sfp->next->sell?2:1);
sfp=sfp->next;
}
printf("
");
sfp=sinfoHead;
for(j=0;j<clo;j++)
{
printf("|%6s:%4.0f|",typeStr,flinfo->tPrice*tDiscount[sfp->next->type]*timeDiscount);
sfp=sfp->next;
}
printf("
");
sinfoHead=sfp;
}
for(j=0;i<clo;j++)
printf("-------");
printf("
");
}
FLINFO*selectFlinfo(FLINFO*flinfoHead,char*fid)//選擇航班號,返回節點
{
while(flinfoHead->next)
{
if(!strcmp(flinfoHead->next->fid,fid))
returnflinfoHead->next;
flinfoHead=flinfoHead->next;
}
returnNULL;
}
voidprintfFlinfo(FLINFO*flinfoHead)
{
while(flinfoHead->next)
{
printf("目的地:%s,航班號:%s
----起飛時間:%s,抵達時間:%s
",flinfoHead->next->toCity,flinfoHead->next->fid,getTString(localtime(&flinfoHead->next->tfTime)),getTString(localtime(&flinfoHead->next->ldTime)));
flinfoHead=flinfoHead->next;
}
}
char*getTString(structtm*tm0)//通過tm獲取時間字元串
{
char*str=(char*)malloc(sizeof(char)*20),num[5]={0};
meError(str);
memset(str,0,20);
sprintf(num,"%4d",tm0->tm_year+1900);
strcat(str,num);
strcat(str,"-");
memset(num,0,5);
sprintf(num,"%02d",tm0->tm_mon);
strcat(str,num);
strcat(str,"-");
memset(num,0,5);
sprintf(num,"%02d",tm0->tm_mday);
strcat(str,num);
strcat(str,"");
memset(num,0,5);
sprintf(num,"%02d",tm0->tm_hour);
strcat(str,num);
strcat(str,":");
memset(num,0,5);
sprintf(num,"%02d",tm0->tm_min);
strcat(str,num);
strcat(str,":");
memset(num,0,5);
sprintf(num,"%02d",tm0->tm_sec);
strcat(str,num);
returnstr;
}
time_tgetTime_tfromStr(char*sTime)//將YYYY-MM-DDhh:mm:ss格式的時間字元串轉換成time_t型數值
{
time_trt;
structtm*tm1=NULL;
rt=time(NULL);
tm1=localtime(&rt);
sscanf(sTime,("%4d-%2d-%2d%2d:%2d:%2d"),&tm1->tm_year,&tm1->tm_mon,&tm1->tm_mday,&tm1->tm_hour,&tm1->tm_min,&tm1->tm_sec);
tm1->tm_year-=1900;
tm1->tm_mon--;
rt=mktime(tm1);
returnrt;
}
FLINFO*initFlight()//初始化航班信息,返回航班鏈表頭節點,如果想手動輸入,請在這里添加!!!正常軟體開發,這一步應該是從資料庫讀取!
{
FLINFO*ffHead=NULL,*flinfoTail=NULL,fNew;
//--------添加一個航班信息----需要增加按照我下面調用方式寫--------------------------------
strcpy(fNew.fid,"CI502");
fNew.tfTime=getTime_tfromStr("2019-02-2003:30:30");
fNew.ldTime=getTime_tfromStr("2019-02-2005:20:30");
strcpy(fNew.toCity,"台北");
fNew.tPrice=1000;
fNew.next=NULL;
flinfoTail=addFLINFO(&ffHead,flinfoTail,fNew);
//--------------------------------------------------------------------------------------------
strcpy(fNew.fid,"9C8921");
fNew.tfTime=getTime_tfromStr("2019-02-2014:30:30");
fNew.ldTime=getTime_tfromStr("2019-02-2016:40:30");
strcpy(fNew.toCity,"香港");
fNew.tPrice=500;
fNew.next=NULL;
flinfoTail=addFLINFO(&ffHead,flinfoTail,fNew);
returnffHead;
}
FLINFO*addFLINFO(FLINFO**ffHead,FLINFO*flinfoTail,FLINFOfNew)//返回尾節點
//添加航班信息鏈表的節點flinfoHead:頭節點(第一次傳NULL會自動生成),flinfoTail:尾節點,fNew:要添加的結構信息(成員指針無需賦值)
{
FLINFO*flinfoHead=*ffHead;
if(flinfoHead==NULL)
{
*ffHead=(FLINFO*)malloc(sizeof(FLINFO));
flinfoHead=*ffHead;
meError(flinfoHead);
flinfoHead->next=NULL;
}
FLINFO*flinfoNew=(FLINFO*)malloc(sizeof(FLINFO));
meError(flinfoNew);
flinfoNew->next=NULL;
flinfoNew->fid[0]=0;
strcpy(flinfoNew->fid,fNew.fid);
flinfoNew->ldTime=fNew.ldTime;
flinfoNew->tfTime=fNew.tfTime;
flinfoNew->toCity[0]=0;
strcpy(flinfoNew->toCity,fNew.toCity);
flinfoNew->tPrice=fNew.tPrice;
flinfoNew->sHead=getSINFO();
if(flinfoHead->next==NULL)
flinfoHead->next=flinfoNew;
else
flinfoTail->next=flinfoNew;
flinfoTail=flinfoNew;
returnflinfoTail;
}
SINFO*getSINFO()//獲取座位鏈表
{
intmaxClo=strlen(cID),cnt=maxClo*maxRow,clo=0,row=1,i;
SINFO*sinfoHead=(SINFO*)malloc(sizeof(SINFO)),*sinfoTail=NULL;
meError(sinfoHead);
sinfoHead->next=NULL;
SINFO*sinfoNew=NULL;
while(cnt--)//按順序生成對應數量的座位鏈表
{
if(clo==maxClo)
clo=0,row++;
if(row==maxRow+1)
row=1;
sinfoNew=(SINFO*)malloc(sizeof(SINFO));
meError(sinfoNew);
sinfoNew->cloID=cID[clo];
sinfoNew->row=row;
for(i=0;i<TYPESIZE;i++)
if(row>=types[i][0]&&row<=types[i][1])
{
sinfoNew->type=i;
break;
}
sinfoNew->sell=0;
sinfoNew->next=NULL;
if(sinfoHead->next==NULL)
sinfoHead->next=sinfoNew;
else
sinfoTail->next=sinfoNew;
sinfoTail=sinfoNew;
clo++;
}
returnsinfoHead;
}
voidmeError(void*p)//內存申請失敗
{
if(p==NULL)
{
printf("
異常:內存申請失敗!回車結束程序!
");
while(getch()!='
');
exit(0);
}
}
『貳』 自助繳費系統 是b/s 還是C/S,比如移動營業廳的自助繳費系統是什麼語言寫的用B/S可以實現這樣的功能不
可以 asp jsp php 都可以
『叄』 什麼是自助繳費系統
簡單說好不
在字眼上面的看法 就是自動繳費的一個軟體或者機器
舉個例子:收費停車場
它包括IC會員卡、會員管理軟體、刷卡進入\出自動門(用詞不準確 參考)
會管理軟體上面可以開通會員IC卡、設置收費標准、充值繳費
而IC卡在進入停車場的時候要刷卡進入,出門的時候也要刷卡。進門是記錄時間,出門是統計時間並結合會員管理軟體上面設定的收費標准來扣費。
像這類在很多場所都可以看到 如:停車場、網吧、公交車、POS機、自動櫃員機
你是需要這樣的代碼嗎?
你是需要B/S模式的還是C/S模式的?
這些功能寫起來比較簡單,在後台連個資料庫,做些數據的處理就可以了。不過要我這沒有現成的,要自己的寫的話估計沒有時間了。如果你是在學習java的話,建議你自己動手寫寫,這個小系統能用到好多東西。
簡單點的話直接用JDBC邊資料庫,要是好點可以考慮使用Hibernate,如果寫成B/S模式的話,還可以考慮使用一些MVC的框架,struts或者spring,前台還能使用到ajax.當然,你還需要列印報表的功能,這個也是一個難點。
『伍』 模擬自助繳費查詢系統 1.問題描述 系統可以進行相關費用的查詢及繳費 2 設計要求 系統提供相應
介個需要專業人才吧。天下沒有免費的午餐
『陸』 c語言課程設計高速公路計費系統
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#define N 10
// 定義三個入口到出口的路程分別是l1 l2 l3
struct vehicle//車輛信息
{
char num[8];//車牌號
char variety[4];//車輛類型a,b,c(大,中,小)
int entime;//進入時間
char enter[2];//進入口1,2,3……分別為各個入口
}ve[N];
int count=0;
FILE *fp;
//函數聲明//
void menu();//主菜單
void input();//輸入函數
void show();
void all();
void readfile();//從文件導入
void writefile();//寫入
void main()
{
readfile();
while(1)
{
menu();
}
}
void readfile()//從文件導入
{
if((fp=fopen("vehicle.txt","r"))==NULL)
{
printf("\n\t\t\t\t文件為空,請添加信息");
if((fp=fopen("vehicle.txt","w"))==NULL)
{
printf("\n\t\t\t建立失敗");
exit(0);
}
else
{
printf("\n\t\t文件已建立");
printf("\n\t\tPress any key to get to mainmenu!");
getch();
return;
}
exit(0);
}
fseek(fp,0,2); /*文件指針fp指到到文件末尾*/
if(ftell(fp)>0) /*文件不為空*/
{
fseek(fp,0,0); /*文件指針指到文件開始位置*/
for(count=0;!feof(fp)&&fread(&ve[count],sizeof(struct vehicle),1,fp);count++);
printf("\n\t\t文件導入成功");
printf("\n\t\t按任意鍵進入系統");
getch();
return;
}
printf("\n\t\t\t已成功打開文件!");
printf("\n\t\t\tPress anykey to get back to mainmenu");
getch();
return;
}
void menu()
{system("cls");//清屏
char n;
printf("\n\n\n\n");
printf("\t\t☆★☆★☆★歡迎使用高速公路收費系統☆★☆★☆★\n");
printf("\t\t◇◇◇§§§◇◇◇◇主菜單◇◇◇◇§§§◇◇◇\n");
printf(" *********1.輸入車輛信息*********\n");
printf(" *********2.顯示車輛信息*********\n");
printf(" *********3.顯示車輛總數*********\n");
printf(" *********4.保存退出系統 *********\n");
printf(" 請輸入數字選擇操作類型:\n");
n=getch();
switch(n)
{
case '1': input();break;
case '2': show();break;
case '3': all();break;
case '4': writefile();break;
default: break;
}
}
void input()
{ system("cls");
printf("請輸入車輛信息\n");
printf("車牌號:\n");
scanf("%s",&ve[count].num);
printf("車輛類型(a,b,c分別代表大,中,小):\n");
scanf("%s",ve[count].variety);
printf("進入時間:\n");
scanf("%d",&ve[count].entime);
printf("入口(1,2,3代表三個入口):\n");
scanf("%s",&ve[count].enter);
count++;
printf("是否繼續添加(Y/N)\n");
if(getch()=='y'||getch()=='Y')
input();
}
void show()
{ system("cls");
char num[8];
char enter[2];
int i;
double a,b,c,l1=200,l2=300,l3=400;// 定義三個入口到出口的路程分別是l1 l2 l3(200 300 400)公里
printf("請輸入車牌號:\n");
scanf("%s",num);
for(i=0;i<count;i++)
{if(strcmp(ve[i].num,num)==0)
{
printf("車輛信息:");
printf("車輛類型:%s\n",ve[i].variety);
printf("入口站:%s\n",ve[i].enter);
printf("進入時間:%d\n",ve[i].entime);
printf("車牌號:%s",ve[i].num);
}
}
for(i=0;i<count;i++)
{ if(strcmp(ve[i].variety,"a")==0&&strcmp(ve[i].enter,"1")==0)
{
a=0.5*l1;
printf("此車應繳費%f元",a);
}
else if(strcmp(ve[i].variety,"a")==0&&strcmp(ve[i].enter,"2")==0)
{
a=0.5*l2;
printf("此車應繳費%f元",a);
}
else if(strcmp(ve[i].variety,"a")==0&&strcmp(ve[i].enter,"3")==0)
{
a=0.5*l3;
printf("此車應繳費%f元",a);
}
else if(strcmp(ve[i].variety,"b")==0&&strcmp(ve[i].enter,"1")==0)
{
b=0.4*l1;
printf("此車應繳費%f元",b);
}
else if(strcmp(ve[i].variety,"b")==0&&strcmp(ve[i].enter,"2")==0)
{
b=0.4*l2;
printf("此車應繳費%f元",b);
}
else if(strcmp(ve[i].variety,"b")==0&&strcmp(ve[i].enter,"3")==0)
{
b=0.4*l3;
printf("此車應繳費%f元",b);
}
else if(strcmp(ve[i].variety,"c")==0&&strcmp(ve[i].enter,"1")==0)
{
c=0.3*l1;
printf("此車應繳費%f元",c);
}
else if(strcmp(ve[i].variety,"c")==0&&strcmp(ve[i].enter,"2")==0)
{
c=0.3*l2;
printf("此車應繳費%f元",c);
}
else if(strcmp(ve[i].variety,"c")==0&&strcmp(ve[i].enter,"3")==0)
{
c=0.3*l3;
printf("此車應繳費%f元",c);
}
}
getch();
return;
}
void writefile()
{
int i;
if((fp=fopen("vehicle.txt","w"))==NULL)
{
printf("\n\t\t文件打開失敗");
}
for (i=0;i<count;i++)
{
if(fwrite(&ve[i],sizeof(struct vehicle),1,fp)!=1)
{
printf("\n\t\t寫入文件錯誤!\n");
}
}
fclose(fp);
printf("\n\t\t通訊錄文件已保存");
printf("\n\t\t按任意鍵退出程序\n\t\t");
exit(0);
}
void all()
{ system("cls");
printf("車輛總數為:%d",count);
getch();
return;
}
『柒』 要求用C語言編寫一個會員卡計費管理系統。
可以購買個現成的系統,一卡易連鎖會員卡系統
我們公司做這方面系統有5、6年經驗了,全國客戶超過萬家門店
『捌』 數據結構,設計一個學生信息管理系統,鏈式存儲結構。C語言代碼。要源代碼。
摘要 #include
『玖』 系統開發:開發一個自助終端系統(類似於聯通自助繳話費的自助機所使用的系統)應使用什麼開發環境、軟體
最簡單就是定製化的瀏覽器模式,觸摸操作。
『拾』 智慧繳費系統方案怎麼做
智慧繳費在於方便,不像傳統的繳費方式需要排隊等待。在現在的技術發展下,智慧繳費的方式是可以實現的。
在英唐眾創的智慧繳費系統方案里,主要是分為教育繳費、物業繳費、企業員工繳費、違章繳費等多種繳費場景。通過多種支付方式來實現快速繳費,而不需要到達繳費現場。