其實C語言的話靠胜,做出來的東西,各種系統(tǒng)挺多的毕源,需要的是不斷地去挖掘浪漠,有人說,C語言學(xué)了不就是一些簡單的語法霎褐,函數(shù)址愿,數(shù)據(jù)結(jié)構(gòu)什么的嘛,就一些知識點會了不就行了冻璃。
在我看來這個只是大學(xué)里面需要掌握的一些响谓,其實C語言很強大的,可以做的東西省艳,項目挺多的娘纷,各種小游戲,管理系統(tǒng)什么的拍埠,所以說不要說會了那些C語言的知識點就說失驶,C很簡單很會了,其實當(dāng)我們?nèi)邮肿鲰椖康臅r候就是一臉懵逼的枣购,大學(xué)時候我想問問嬉探,有多少人動手去做過什么項目,或許嘗試做個推箱子或者貪吃蛇有可能棉圈,但是這肯定只局限于百分之十五的大學(xué)生吧涩堤。
前面有人說,要我用C語言做個火車訂票系統(tǒng)分瘾,這不很簡單麼胎围,主要是好笑的,下面有人說只能Java才能做德召,這也太逗比了吧白魂,Java本身就是C C++開發(fā)出來的好麼。而且這個火車訂票系統(tǒng)也是很容易的上岗,下面的話我發(fā)一下代碼吧福荸,代碼的話也有好幾百行,我就發(fā)一部分肴掷,后面的各個點思路我就總結(jié)一下在下面吧敬锐,
#include
#include
#include
#include
#include
#include
#define HEADER1 " -------------------------------BOOK TICKET----------------------------------"
#define HEADER2 " | number |start city|reach city|takeofftime|receivetime|price|ticketnumber|"
#define HEADER3 " |----------|----------|----------|-----------|-----------|-----|------------|"
#define FORMAT " |%-10s|%-10s|%-10s|%-10s |%-10s |%5d| %5d |"
#define DATA p->data.num,p->data.startcity,p->data.reachcity,p->data.takeofftime,p->data.receivetime,p->data.price,p->data.ticketnum
int saveflag = 0;
/*定義存儲火車信息的結(jié)構(gòu)體*/
struct train
{
char num[10];/*列車號*/
char startcity[10];/*出發(fā)城市*/
char reachcity[10];/*目的城市*/
char takeofftime[10];/*發(fā)車時間*/
char receivetime[10];/*到達(dá)時間*/
int price;/*票價*/
int ticketnum;/*票數(shù)*/
};
/*訂票人的信息*/
struct man
{
char num[10];/*ID*/
char name[10];/*姓名*/
int bookNum;/*訂的票數(shù)*/
};
/*定義火車信息鏈表的結(jié)點結(jié)構(gòu)*/
typedef struct node
{
struct train data;
struct node * next;
}Node, *Link;
/*定義訂票人鏈表的結(jié)點結(jié)構(gòu)*/
typedef struct Man
{
struct man data;
struct Man *next;
}book, *bookLink;
/* 初始界面*/
void menu()
{
puts("");
puts(" |--------------------------------------------------------|");
puts(" | Booking Tickets |");
puts(" |--------------------------------------------------------|");
puts(" |0:退出系統(tǒng) |");
puts(" |1:加入火車信息 |");
puts(" |2:查找火車信息 |");
puts(" |3:訂購火車票 |");
puts(" |4:修改火車信息 |");
puts(" |5:瀏覽火車信息 |");
puts(" |6:保存火車信息 |");
puts(" |--------------------------------------------------------|");
}
/*添加一個火車信息*/
void Traininfo(Link linkhead)
{
struct node *p, *r, *s;
char num[10];
r = linkhead;
s = linkhead->next;
while (r->next != NULL)
r = r->next;
while (1)
{
printf("請輸入車次(0-return)");
scanf("%s", num);
if (strcmp(num, "0") == 0)
break;
/*判斷是否已經(jīng)存在*/
while (s)
{
if (strcmp(s->data.num, num) == 0)
{
printf("車次 '%s'已經(jīng)存在背传!", num);
return;
}
s = s->next;
}
p = (struct node*)malloc(sizeof(struct node));
strcpy(p->data.num, num);/*輸入車號*/
printf("請輸入出發(fā)城市:");
scanf("%s", p->data.startcity);/*輸入出發(fā)城市*/
printf("請輸入到達(dá)城市:");
scanf("%s", p->data.reachcity);/*輸入到站城市*/
printf("請輸入出發(fā)時間:");
scanf("%s", p->data.takeofftime);/*輸入出發(fā)時間*/
printf("請輸入到達(dá)時間:");
scanf("%s", &p->data.receivetime);/*輸入到站時間*/
printf("請輸入票價:");
scanf("%d", &p->data.price);/*輸入火車票價*/
printf("請輸入訂購數(shù)量:");
scanf("%d", &p->data.ticketnum);/*輸入預(yù)定票數(shù)*/
p->next = NULL;
r->next = p;/*插入到鏈表中*/
r = p;
saveflag = 1;
}
}
/*打印火車票信息*/
void printheader() /*格式化輸出表頭*/
{
printf(HEADER1);
printf(HEADER2);
printf(HEADER3);
}
void printdata(Node *q) /*格式化輸出表中數(shù)據(jù)*/
{
Node* p;
p = q;
printf(FORMAT, DATA);
}
/*查詢火車信息*/
void searchtrain(Link l)
{
Node *s[10], *r;
int sel, k, i = 0;
char str1[5], str2[10];
if (!l->next)
{
printf("沒有信息!");
return;
}
printf("請選擇:1:按車次查詢;2:按城市查詢");
scanf("%d", &sel);/*輸入選擇的序號*/
if (sel == 1)
{
printf("請輸入車次:");
scanf("%s", str1);
r = l->next;
while (r != NULL)
if (strcmp(r->data.num, str1) == 0)/*檢索是否有與輸入的車號相匹配的*/
{
s[i] = r;
i++;
break;
}
else
r = r->next;
}
else if (sel == 2)
{
printf("請輸入到達(dá)城市:");
scanf("%s", str2);
r = l->next;
while (r != NULL)
if (strcmp(r->data.reachcity, str2) == 0)/*檢索是否有與輸入的城市相匹配的火車*/
{
s[i] = r;
i++;
r = r->next;
}
else
r = r->next;
}
if (i == 0)
printf("沒有信息!");
else
{
printheader();
for (k = 0; k
printdata(s[k]);
}
}
后面的話還有幾個功能沒發(fā)出來,分別是:1台夺、訂票子模塊 2径玖、修改火車信息 3、保存火車信息 4颤介、保存訂票人信息梳星。 下面我發(fā)一下界面,效果圖滚朵。
涉及到的C語言的知識點也不是很多丰泊,也就是:C語言的基本語法+三大控制結(jié)構(gòu)+數(shù)據(jù)結(jié)構(gòu)鏈表+文件操作,所以說不要小看C語言始绍,它是很強大的,其實什么Java话侄,Python我不是反感它們亏推,當(dāng)有人說,現(xiàn)在Java很強大年堆,什么做個小小的火車訂票系統(tǒng)都不能用C語言吞杭,我只想站出來說下自己的觀點,最好的改正這個觀點就是自己去把這個系統(tǒng)用C語言去做出來变丧,我覺得才是最好的芽狗!這個的話代碼也有一些,思路也寫了痒蓬,所以說童擎,希望各位能自己摸索出來吧,實在覺得有難度的攻晒,可以一起學(xué)習(xí)交流探討顾复,打手不易,勿噴哈鲁捏,這個知識點里面有我自己的說法芯砸,全屬個人的見解,蟹蟹大家给梅。