Ⅰ c語言程序設計飛機訂票系統
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
#include <malloc.h>
#include <math.h>//overflow
#define ok 1
typedef struct Yidingkehu
{//單鏈表
char name[15];//已訂票的客戶姓名
int dingpiaoshu;//已訂票數量
struct Yidingkehu *next1;//
}Yidingkehu,*Link;
typedef struct Weidingkehu
{//單鏈隊
char name[15];//預訂票的客戶姓名
int yudingpiao;// 要訂票數量
struct Weidingkehu *next2;//下一個鏈隊結點指針
}Weidingkehu,*Qptr;
typedef struct Hangxian
{//創建一個含有六個信息的結構體
char hangbanhao[15];//航班號-
char feijihao[15];//飛機號
int feixingriqi;//起飛時間
int chenkerenshu;//座位數
int yupiao;//余票
char zhongdianzhai[15];//降落城市
struct Hangxian *next;//指向下一個鏈結點的指針
struct Yidingkehu *yiding;//定義一個指向已訂票客戶的頭結點指針
struct Weidingkehu *yudingqueue;
}Hangxian,*Linklist;
Linklist InitLinklist();//01
int InsertLinklist(Linklist &head1);//02
void hbhchaxun();//通過航班號查詢
void mddchaxun();//通過目的地查詢
void lurugongneng();//初始化錄入功能
void chaxungongnen();//查詢功能
void dingpiaogongnen();//訂票功能
void tuipiaogongnen();//退票功能
void main()
{
int n;
do{ //列印主界面
printf("\t 歡迎使用航空客運訂票系統\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t==>1. 錄入功能 ==\n");
printf("\t==>2. 查詢功能 ==\n");
printf("\t==>3. 訂票功能 ==\n");
printf("\t==>4. 退票功能 ==\n");
printf("\t==>5. 退出 ==\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t請選擇:");
scanf("%d",&n);printf("\n");
switch(n)
{
case 1: lurugongneng();//錄入功能
break;
case 2: chaxungongnen();//查詢功能
break;
case 3: dingpiaogongnen();//訂票功能
break;
case 4:tuipiaogongnen();//退票功能
break;
default :exit(0);//退出
}
}while(n==1||n==2||n==3||n==4);
}
void lurugongneng()//初始化的單鏈表*********************************************************錄入功能
{
Linklist p;
//int m,n;
if(!p) exit(OVERFLOW);
printf("\t請依次輸入下面幾項內容:\n\n");//這里的輸入採用一個個單獨輸入,避免了亂賦值的現象
printf("航班號\n");
gets(p->hangbanhao);//這里的二個gets主要是因為在回車鍵的輸入,其中的第一個是來接收上次的回車
gets(p->hangbanhao);
printf("飛機號\n");
gets(p->feijihao);
printf("終點站\n");
gets(p->zhongdianzhai);
printf("飛行日期\n");
scanf("%d",&p->feixingriqi);
printf("乘客總數\n");
scanf("%d",&p->chenkerenshu);
printf("余票數\n");
scanf("%d",&p->yupiao);
}
void chaxungongnen()//******************************************************************查詢功能
{
int n;
printf("\t 查 找 航 線 信 息 \n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t==>1. 通過目的地查詢 ==\n");
printf("\t==>2. 通過航班號查詢 ==\n");
printf("\t+++++++++++++++++++++++++++++\n");
printf("\t請選擇:");
scanf("%d",&n);
printf("\n");//格式化
switch(n)
{
case 1:mddchaxun();
break;
case 2:hbhchaxun();
break;
default :break;
}
}
void mddchaxun()//通過目的地查詢
{
char c[15];
int m;
Linklist p=L;
printf("\t請輸入要查詢的目的地:");
gets(c);
gets(c);//原因同上
do{
p=p->next;
if(p)
{
m=strcmpi((*p).zhongdianzhai,c);//如果==的話則m=0;
if(m==0)
{
printf("\t航班信息:\n");
printf("\t航班號:%s\n",p->hangbanhao);
printf("\t飛機號:%s\n",p->feijihao);
printf("\t飛行時間:周%d\n",p->feixingriqi);
printf("\t余票量:%d\n",p->yupiao);
}
}
else
{//如果不匹配的話就做
printf("\t對不起沒有你要找的目的地:\n\n"); m=0;
}
}while(m!=0);
}
void hbhchaxun()//通過目的地查詢
{
char c[15];
int m;
Linklist p=L;
printf("\t請輸入要查詢的航班號:");
gets(c); gets(c);printf("\n");
do{
p=p->next;
if(p)
{
m=strcmpi((*p).hangbanhao,c);//如果==的話則m=0;這里的(*p).與p->的作用是一樣的
if(m==0)
{
printf("\t航班信息:\n");
printf("\t航班號:%s\n",p->hangbanhao);
printf("\t飛機號:%s\n",p->feijihao);
printf("\t飛行時間:周%d\n",p->feixingriqi);
printf("\t余票量:%d\n\n",p->yupiao);
}
}
else
{//如果不匹配的話就做
printf("\t對不起沒有你要找的航班號:\n"); m=0;
}
}while(m!=0);
}
void dingpiaogongnen()//***************************************************************訂票功能
{
char c[15];
int m=1,piao,ydpiao=0,yd=0,n;//
gets(c);
printf("請輸入終點站名:"); gets(c); printf("\n");
p=L->next;
if(p) {
do{//查找一下,是否有這個航班
if(!p)
{
printf("對不起,沒有你要找的航班:\n\n");
goto loop1;
}
m=strcmpi(p->zhongdianzhai,c);
if(m==0)
{
printf("航班信息:\n");
printf("航班號:%s\n",p->hangbanhao);
printf("飛機號:%s\n",p->feijihao);
printf("飛行時間:周%d\n",p->feixingriqi);
printf("余票量:%d\n",p->yupiao);}
else p=p->next;
}while(m!=0);
if(m==0)
{
do{
printf("\n請輸入你要訂的票數:"); scanf("%d",&piao);
if(piao<=p->yupiao)
{
h=p->yiding;
if(h)
{
h1=h;
h=h->next1;
h=(struct Yidingkehu*)malloc(sizeof(Yidingkehu));
printf("請輸入你的名字:");
gets(h->name);gets(h->name);
h->dingpiaoshu=piao;
h->next1=h1->next1;
h1->next1=h;
p->yupiao=p->yupiao-piao;
printf("訂票成功:\n"); m=2;
}
}
else
{
printf("余票量:%d\n",p->yupiao);
printf("對不起,余票 %d 張不足,不能完成訂票\n\n",p->yupiao);
printf(" 是否要重新訂票?\n");
printf("需要請輸入1 否則請按2 預訂請輸入3 : ");
scanf("%d",&m);
printf("\n");
if(m==3) goto loop3;
}
}while(m==1);
}
}
else if(!p)
{
loop3: struct Weidingkehu *q3;
printf("對不起,該航班的票已售完\n");
q.front=p->yudingqueue;
if(q.front==q.rear) printf("沒有人預訂票,是否要預訂?\n");
else if(q.front!=q.rear) printf("已有人預訂票,是否要預訂?\n");
printf("預訂請輸入1 否則輸入2 : ");
scanf("%d",&n);
printf("\n");
if(n==1)
{
printf("請輸入你的姓名"); gets(q3->name); gets(q3->name);//q3不能指向name???
printf("請輸入訂票數"); scanf("%d",&q3->yudingpiao);
q3->next2=NULL;
q.rear->next2=q3;
q.rear=q3;
printf(" 你已經預訂了 !\n");
}
}
loop1:;
}
void tuipiaogongnen()//***************************************************************退票功能
{
}
請採納答案,支持我一下。
Ⅱ c語言程序設計 航班信息管理
#include
#include
#include
#include
(conio.h不是C標准庫中的頭文件。conio是Console Input/Output(控制台輸入輸出)的簡寫,其中定義了通過控制台進行數據輸入和數據輸出的函數,主要是一些用戶通過按鍵盤產生的對應操作,比如getch()函數等等。)
#define MAXSIZE 4/*定義航線量的最大值*/
typedef struct wat_ros
{ char name[10];/*姓名*/
int req_amt;/*訂票量*/
struct wat_ros *next;
}qnode,*qptr;
typedef struct pqueue
{ qptr front;/*等候替補客戶名單域的頭指針*/
qptr rear;/*等候替補客戶名單域的屬指針*/
}linkqueue;
typedef struct ord_ros
{ char name[10];/*客戶姓名*/
int ord_amt;/*訂票量*/
int grade;/*艙位等級*/
struct ord_ros *next;
}linklist;
struct airline
{ char ter_name[10];/*終點站名*/
char air_num[10];/*航班號*/
char plane_num[10];/*飛機號*/
char date[7];/*飛行日期(星期幾)*/
int tkt_amt;/*乘員定額*/
int tkt_sur;/*余票量*/
linklist *order;/*乘員名單域,指向乘員名單鏈表的頭指針*/
linkqueue wait;/*等候替補的客戶名單域,分別指向排隊等候名單隊頭隊尾的指針*/
}lineinfo;
struct airline *start;
struct airline air[MAXSIZE]={{"北京","1","001","SUN",30,15},
{"上海","2","002","MON",40,10},
{"武漢","3","003","FRI",50,14},
{"天津","4","004","TUE",60,20}};
void display(struct airline *info)
/*列印每條航線的基本信息*/
{printf("%8s\t%3s\t%s\t%4s\t\t%3d\t%10d\n",info->ter_name,info->air_num,info->plane_num,info->date,info->tkt_amt,info->tkt_sur);
}
void list()/*列印全部航線信息*/
{ struct airline *info;
int i=0;
info=start;
printf("終點站名\t航班號\t飛機號\t飛行日期\t乘員定額\t余票量\n");
while(i<MAXSIZE)
{
display(info);
info++;
i++;
}
printf("\n\n");
}
void search()
/*根據客戶提出的終點站名輸出航線信息*/
{ struct airline *info,*find();
char name[10];
int i=0;
info=start;
printf("請輸入終點站名:");
scanf("%s",name);
while(i<MAXSIZE)
{
if(!strcmp(name,info->ter_name)) break;
info++;
i++;
}
if(i>=MAXSIZE)
printf("對不起,該航線未找到!\n");
else
{
printf("終點站名\t航班號\t飛機號\t飛行日期\t乘員定額\t余票量\n");
display(info);
}
}
struct airline *find()
/*根據系統提出的航班號查詢並以指針形式返回*/
{ struct airline *info;
char number[10];
int i=0;
info=start;
printf("請輸入航班號:");
scanf("%s",number);
while(i<MAXSIZE)
{
if(!strcmp(number,info->air_num)) return info;
info++;
i++;
}
printf("對不起,該航線末找到!\n");
return NULL;
}
void prtlink()
/*列印訂票乘員名單域的客戶名單信息*/
{ linklist *p;
struct airline *info;
info=find();
p=info->order;
if(p!=NULL){
printf("客戶姓名 訂票數額 艙位等級\n");
while(p){
printf("%s\t\t%d\t%d\n",p->name,p->ord_amt,p->grade);
p=p->next;
}
}
else
printf("該航線沒有客戶信息!!\n");
}
linklist *insertlink(linklist *head,int amount,char name[],int grade)
/*增加訂票乘員名單域的客戶信息*/
{ linklist *p1,*new1;
p1=head;
new1=(linklist *)malloc(sizeof(linklist));
if(!new1) {printf("\nOut of memory!!\n");return NULL;}
strcpy(new1->name,name);
new1->ord_amt=amount;
new1->grade=grade;
new1->next=NULL;
if(head==NULL)/*若原無訂票客戶信息*/
{head=new1;new1->next=NULL;}
else
head=new1;
new1->next=p1;
return head;
}
linkqueue appendqueue(linkqueue q,char name[],int amount)
/*增加排隊等候的客戶名單域*/
{ qptr new1;
new1=(qptr)malloc(sizeof(qnode));
strcpy(new1->name,name);
new1->req_amt=amount;
new1->next=NULL;
if(q.front==NULL)/*若原排隊等候客戶名單域為空*/
q.front=new1;
else
q.rear->next=new1;
q.rear=new1;
return q;
}
void order()
/*辦理訂票業務*/
{ struct airline *info;
int amount,grade;
char name[10];
info=start;
if(!(info=find())) return;/*根據客戶提供的航班號進行查詢,如為空,退出該模塊*/
printf("請輸入你訂票所需要的數量:");
scanf("%d",&amount);
if(amount>info->tkt_amt)/*若客戶訂票額超過乘員定票總額,退出*/
{ printf("\n對不起,您輸入的票的數量已經超過乘員定額!");
return;
}
if(amounttkt_sur)/*若客戶訂票額末超過余票量,訂票成功並等記信息*/
{
int i;
printf("請輸入您的姓名(訂票客戶):");
scanf("%s",name);
printf("請輸入%s票的艙位等級:",name);
scanf("%d",&grade);
info->order=insertlink(info->order,amount,name,grade);/*在訂票乘員名單域中添加客戶信息*/
for(i=0;i<amount;i++)/*依次輸出該訂票客戶的座位號*/
printf("%s的座位號是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1);
info->tkt_sur-=amount;/*該航線的余票量應減掉該客戶的訂票量*/
printf("\n祝您乘坐愉快!\n");
}
else /*若滿員或余票額少於訂票額,詢問客戶是否需要進行排隊等候*/
{ char r;
printf("\n已經沒有更多的票,您需要排隊等候嗎?(Y/N)");
r=getch();
printf("%c",r);
if(r=='Y'||r=='y')
{ printf("\n請輸入您的姓名(排隊訂票客戶):");
scanf("%s",name);
info->wait=appendqueue(info->wait,name,amount);/*在排隊等候乘員名單域中添加客戶信息*/
printf("\n注冊成功!\n");
}
else printf("\n歡迎您下次再次訂購!\n");
}
}
void return_tkt()
/*退票模塊*/
{ struct airline *info;
qnode *t,*back,*f,*r;
int grade;
linklist *p1,*p2,*head;
char cusname[10];
if(!(info=find())) return;/*調用查詢函數,根據客戶提供的航線進行搜索*/
head=info->order;
p1=head;
printf("請輸入你的姓名(退票客戶):");
scanf("%s",cusname);
while(p1!=NULL) {/*根據客戶提供的姓名到訂票客戶名單域進行查詢*/
if(!strcmp(cusname,p1->name)) break;
p2=p1;p1=p1->next;
}
if(p1==NULL){ printf("對不起,你沒有訂過票!\n");return;}/*若未找到,退出本模塊*/
else
{/*若信息查詢成功,刪除訂票客戶名單域中的信息*/
if(p1==head) head=p1->next;
else p2->next=p1->next;
info->tkt_sur+=p1->ord_amt;
grade=p1->grade;
printf("%s成功退票!\n",p1->name);
free(p1);
}
info->order=head;/*重新將航線名單域指向訂票單鏈表的頭指針*/
f=(info->wait).front;/*f指向排隊等候名單隊列的頭結點*/
r=(info->wait).rear;/*r指向排隊等候名單隊列的尾結點*/
t=f;/*t為當前滿點條件的排隊候補名單域*/
while(t)
{
if(info->tkt_sur=info->wait.front->req_amt)
{/*若滿足條件者為頭結點*/
int i;
info->wait.front=t->next;
printf("%s訂票成功!\n",t->name);
for(i=0;ireq_amt;i++)/*輸出座位號*/
printf("%s的座位號是:%d\n",t->name,(info->tkt_sur)-i);
info->tkt_sur-=t->req_amt;
info->order=insertlink(info->order,t->req_amt,t->name,grade);/*插入到訂票客戶名單鏈表中*/
free(t);
break;
}
back=t;t=t->next;
if((info->tkt_sur)>=(t->req_amt)&&t!=NULL)/*若滿足條件者不為頭結點*/
{ int i;
back->next=t->next;
printf("%s訂票成功!\n",t->name);
for(i=0;ireq_amt;i++)/*輸出座位號*/
printf("
Ⅲ 飛機的C語言程序代碼
我有坦克的
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LENTH 7
#define WIDTH 155
#define SLEEP_TIME 30000
#define ENTER_NUM 20
char fun_ascii[LENTH][WIDTH] = {
" | ",
" _\\--__|_ ",
" II=======OOOOO[/ *02 ___| ",
" ____\\______|/-----.",
" /____________________|",
" \\@@@@@@@@@@@@@@@@@@@/ ",
" ~~~~~~~~~~~~~~~~~~~ "
};
int g_shoot_pos;
int g_shoot_pos_static;
void display_ascii(void);
void print_enter(void);
void move_ascii(void)
{
int i, j;
for (i = 0; i < LENTH; i++) {
for (j = 0; j < WIDTH; j++) {
if (fun_ascii[i][j] != ' ') {
fun_ascii[i][j - 1] = fun_ascii[i][j];
fun_ascii[i][j] = ' ';
}
}
}
}
void shoot_init(void)
{
int i, j;
for (j = 0; j < WIDTH; j++) {
if (fun_ascii[2][j] != ' ')
break;
}
--j;
g_shoot_pos_static = g_shoot_pos = j;
}
void shoot_begin(void)
{
fun_ascii[2][g_shoot_pos] = 'O';
system("clear");
print_enter();
display_ascii();
fun_ascii[2][g_shoot_pos] = ' ';
}
void shoot_ascii(void)
{
int i;
i = WIDTH / 2 - 1;
while (i > 0 && g_shoot_pos > 0) {
shoot_begin();
g_shoot_pos--;
usleep(SLEEP_TIME);
i--;
}
}
void do_shoot_ascii(void)
{
int i = 3;
shoot_init();
while (i > 0) {
shoot_ascii();
g_shoot_pos = g_shoot_pos_static;
i--;
}
}
void display_ascii(void)
{
int i, j;
for (i = 0; i < LENTH; i++) {
for (j = 0; j < WIDTH; j++)
printf("%c", fun_ascii[i][j]);
printf("\n");
}
}
void print_enter(void)
{
int i;
for (i = 0; i < ENTER_NUM; i++)
printf("\n");
}
int main(void)
{
int i = WIDTH;
while (i > 0) {
if (i == (WIDTH / 2)) {
do_shoot_ascii();
i--;
continue;
}
system("clear");
print_enter();
move_ascii();
display_ascii();
i--;
usleep(SLEEP_TIME);
}
return 0;
}
Ⅳ C語言編寫一個簡單的航空管理系統
需要分析:
A.車尋航線:
1.根據旅客提出的起點站,終點站名輸出下列信息:航班號,票價,折扣,最多載客量,是否滿載,起飛時間,降落時間和飛行時間;
2.根據訂票乘客的姓名可以查詢所訂航班的航班號,座位號,飛行日期等信息;
3.根據航班號查詢航班的起點站,中轉站,終點站名,票價,折扣,最多載客量,是否滿載,起飛時間,降落時間和飛行時間;
B.承辦客戶提出的要求(航班號、訂票數額)查詢該航班票額情況,若有餘票,則為客戶辦理訂票手續,輸出座位號,需付款項信息;若已滿員或余票額少於盯票額,則需重新詢問客戶要求。若需要,可登記排隊候補;
C.根據客戶提供的情況(日期、航班),為客戶辦理退票手續。(然後查詢該航班是否有人排隊候補,首先詢問排第一的客戶,若所退票額所能滿足他的要求,則為他辦理訂票手續,否則依次詢問其他排隊候補客戶);
E.內部人員對航班情況的控制:
可以錄入航班信息,刪除航班信息,修改航班信息,查看基本航班信息。
概要設計:
因為每個客戶名單或查詢名單都包括多個數據域,這樣就需要有一個能存儲多個數據域的數據類型來存儲,因此採用單鏈表類型。由於航線的信息是固定的,可選用結構體數組,又因為訂票與預約人數無法預計,可選用鏈表存儲信息。
線性表的單鏈表存儲結構:typedef struct LNode{
ElemType;
Struct Lnode*next;}LNode,*LinkList;
a.抽象數據類型順序表的定義如下:
ADT SqList{
數據對象:D={ai|ai∈數據類型,i=1,2,3...,n}
數據關系:R1={<ai-1,ai>|ai-1,ai∈D,i=1,2,3...,n}
基本操作:
InitList_Sq(&L)
操作結果:創建空的順序表。
CreatList_Sq(&L)
操作結果:建立順序表。
}ADT SqList
b.抽象數據類型單鏈表的定義如下:
ADT LinkList{
數據對象:D={ai|ai∈結構類型,i=1,2,3...,n,n>0}
數據關系:R1={<ai-1,ai>|ai-1,ai∈D,i=1,2,3...,n}
基本操作:
InitList_L(&L)
操作結果:創建空的順序表。
}ADT LinkList
在main()里調用各個函數
2.主程序
void main(){
初始化;
do{
接受命令;
處理命令;
}while(「命令」!=「退出」);
}
3.程序的模塊調用:
三.詳細設計:
1.所有數據類型:
struct plan /*航班數據*/
{
char num[5];/*航班號碼*/
char city[10];/*到達城市*/
char up[8];/*航班起飛時間*/
char down[8];/*航班到達時間*/
int pric ;/*航班價格*/
int rshu ;/*人數*/
int zheg[4];/*價格折扣*/
}
;
struct man/*定票人數據*/
{
char num[10];/*身份證號碼*/
char nam[10];/*姓名*/
int demand ;/*定票數量*/
}
;
typedef struct node/*航班數據結點*/
{
struct plan data ;
struct node*next ;
}
Node,*Link ;
typedef struct people/*乘客數據結點*/
{
struct man data ;
struct people*next ;
}
peo,*LIN ;
2.程序所用函數:
void print()/*界面輸出*/
{
printf("============================System of book ticket===============================\n");
printf("\n");
printf("\t***********************************************************\n");
printf("\t*\t1---Bookticket \t2---Dishonorbill *\n");
printf("\t*\t3---Adding flight\t4---Adding flight *\n");
printf("\t*\t5---Modify \t6---Advice *\n");
printf("\t*\t7---Save \t8---exit *\n");
printf("\t##########################################################\n");
}
添加航班模塊
void add(Link l)/*添加航班數據*/
{
Node*p,*r,*s ;
char num[10];
r=l ;
s=l->next ;
while(r->next!=NULL)
r=r->next ;
while(1)
{
printf("please input the number of the plan(0-return)");/*輸入0就返回*/
scanf("%s",num);
if(strcmp(num,"0")==0)
break ;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====tip:the number'%s'has been born!\n",num);
return ;
}
s=s->next ;
}
p=(Node*)malloc(sizeof(Node));/*航班數據輸入*/
strcpy(p->data.num,num);
printf("Input the city where the plan will reach:");/*飛機到達地城市*/
scanf("%s",p->data.city);
getchar();
printf("Input the time which the plan take off:");/*起飛時間*/
scanf("%s",p->data.up);
getchar();
printf("Input the time which the plan reach:");/*降落時間*/
scanf("%s",&p->data.down);
getchar();
printf("Input the price of ticket:$");/*機票價格*/
scanf("%d",&p->data.pric);
getchar();
printf("Input the number of people who have booked ticket:");/*定票數量*/
scanf("%d",&p->data.rshu);
getchar();
printf("Input the agio of the ticket:");
scanf("%s",&p->data.zheg);
getchar();
p->next=NULL ;
r->next=p ;
r=p ;
shoudsave=1 ;
}
}
輸出模塊
void pri(Node*p)/*輸出函數*/
{
printf("\n\t\t\tThe following is the record you want:\n");
printf("\nnumber of plan: %s",p->data.num);
printf("\ncity the plan will reach: %s",p->data.city);
printf("\nthe time the plan take off: %s\nthe time the plan reach: %s",p->data.up,p->data.down);
printf("\nthe price of the ticket: %d",p->data.pric);
printf("\nthe number of people who have booked ticket: %d",p->data.rshu);
printf("\nthe agio of the ticket:%s",p->data.zheg);
}
退出函數模塊
Node*Locate1(Link l,char findmess[],char numorcity[])
{
Node*r ;
if(strcmp(numorcity,"num")==0)
{
r=l->next ;
while(r)
{
if(strcmp(r->data.num,findmess)==0)
return r ;
r=r->next ;
}
}
else if(strcmp(numorcity,"city")==0)
{
r=l->next ;
while(r)
{
if(strcmp(r->data.city,findmess)==0)
return r ;
r=r->next ;
}
}
return 0 ;
}
航班信息模塊
void qur(Link l)/*航班信息查詢*/
{
Node*p ;
int sel ;
char str1[5],str2[10];
if(!l->next)
{
printf("TIP:there are not any record to be inquired for you!");
return ;
}
printf("Choose the way:(1->according to the number of plan;2->according to the city):");/*選擇航班號查詢和終點城市查詢*/
scanf("%d",&sel);
if(sel==1)
{
printf("Input the the number of plan:");
scanf("%s",str1);
p=Locate1(l,str1,"num");
if(p)
{
printf("the following is what you want:\n");
pri(p);
}
else
{
mark1=1 ;
printf("\nthe file can't be found!");
}
}
else if(sel==2)
{
printf("Input the city:");
scanf("%s",str2);
p=Locate1(l,str2,"city");
if(p)
{
printf("the following is what you want:\n");
pri(p);
}
else
{
mark1=1 ;
printf("\nthe file can't be found!");
}
}
}
定票模塊
void buy(Link l,LIN k)/*定票函數*/
{
Node*r[10],*p ;
int ch,dem ;
peo*v,*h ;
int i=0,t=0 ;
char str[10],str1[10],str2[10];
v=k ;
while(v->next!=NULL)
v=v->next ;
printf("Input the city you want to go: ");/*航班終點站城市*/
scanf("%s",&str);
p=l->next ;
while(p!=NULL)
{
if(strcmp(p->data.city,str)==0)
{
r[i]=p ;
i++;
}
p=p->next ;
}
printf("\n\nthe number of record have %d\n",i);
for(t=0;t<i;t++)
pri(r[t]);
if(i==0)
printf("\n\tSorry!Can't find the plan for you!\n");
else
{
printf("\ndo you want to book it?<1/0>\n");
printf("please choose: ");
scanf("%d",&ch);
if(ch==1)
{
h=(peo*)malloc(sizeof(peo));/*重新分配空間*/
printf("Input your name: ");
scanf("%s",&str1);
strcpy(h->data.nam,str1);
printf("Input your id: ");
scanf("%s",&str2);
strcpy(h->data.num,str2);
printf("Input your demand: ");
scanf("%d",&dem);
h->data.demand=dem ;
h->next=NULL ;
v->next=h ;
v=h ;
printf("\n\tLucky!Success in booking ticket!");
getch();
shoudsave=1 ;
}
}
}
peo*Locate2(LIN k,char findmess[])
{
peo*r ;
r=k->next ;
while(r)
{
if(strcmp(r->data.num,findmess)==0)
{
mark=1 ;
return r ;
}
r=r->next ;
}
return 0 ;
}
退票模塊
void tui(LIN k)/*退票函數*/
{
char str[10];
peo*p,*r ;
int ch2=0 ;
printf("Input your id: ");/*輸入身份證號*/
scanf("%s",&str);
p=Locate2(k,str);
if(mark!=1)
printf("can't find the people!");
else if(mark==1)
{
mark=0 ;
printf("\t\t\tthe following is the record you want:\n");
printf("your id:%s\n",p->data.num);
printf("name:%s\n",p->data.nam);
printf("your denmand:%d",p->data.demand);
printf("\ndo you want to refund the ticket?<1/0>");
scanf("%d",&ch2);
if(ch2==1)
{
if(p)
{
r=k ;
while(r->next!=p)
r=r->next ;
r->next=p->next ;
free(p);
}
count2--;
printf("\nyou have sucessed in refunding ticket!");
shoudsave=1 ;
}
}
}
void Modify(Link l)/*修改航班信息*/
{
Node*p ;
char findmess[20],ch ;
if(!l->next)
{
printf("\n=====tip:there isn't record for you to modify!\n");
return ;
}
else
{
qur(l);
if(mark1==0)
{
printf("\nDo you want to modify it?\n");
getchar();
scanf("%c",&ch);
if(ch=='y');
{
printf("\nInput the number of the plan:");
scanf("%s",findmess);
p=Locate1(l,findmess,"num");
if(p)
{
printf("Input another number of plan:");
scanf("%s",&p->data.num);
getchar();
printf("Input another city the plan will reach:");
scanf("%s",&p->data.city);
getchar();
printf("Input another time the plan take off");
scanf("%s",&p->data.up);
printf("Input another time the plan reach:");
scanf("%s",&p->data.down);
printf("Input another price of the ticket::");
scanf("%d",&p->data.pric);
printf("Input another number of people who have booked ticket:");
scanf("%d",&p->data.rshu);
printf("Input another agio of the ticket:");
scanf("%s",&p->data.zheg);
printf("\n=====>tip:modifying record is sucessful!\n");
shoudsave=1 ;
}
else
printf("\tcan't find the flight!");
}
}
else
mark1=0 ;
}
}
void advice(Link l)/*終點站航班查詢*/
{
Node*r ;
char str[10];
int mar=0 ;
r=l->next ;
printf("Iuput the city you want to go: ");/*輸入終點站城市*/
scanf("%s",str);
while(r)
{
if(strcmp(r->data.city,str)==0&&r->data.rshu<200)
{
mar=1 ;
printf("\nyou can select the following plan!\n");
printf("\n\nplease select the fourth operation to book the ticket!\n");
pri(r);
}
r=r->next ;
}
if(mar==0)
printf("\n\t\t\tyou can't book any ticket now!\n");
}
void save1(Link l)/*保存數據*/
{
FILE*fp ;
Node*p ;
int count=0,flag=1 ;
fp=fopen("g:\\data1","wb");
if(fp==NULL)
{
printf("the file can't be opened!");
return ;
}
p=l->next ;
while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next ;
count++;
}
else
{
flag=0 ;
break ;
}
}
if(flag)
{
printf("the number of the record which have been saved is %d\n",count);
shoudsave=0 ;
}
fclose(fp);
}
void save2(LIN k) /*保存數據*/
{
FILE*fp ;
peo*p ;
int count=0,flag=1 ;
fp=fopen("g:\\data2","wb");/*文件連接*/
if(fp==NULL)
{
printf("the file can't be opened!");
return ;
}
p=k->next ;
while(p)
{
if(fwrite(p,sizeof(peo),1,fp)==1)
{
p=p->next ;
count++;
}
else
{
flag=0 ;
break ;
}
}
if(flag)
{
printf("the number of the record which have been saved is %d\n",count);
shoudsave=0 ;
}
fclose(fp);
}
四.主函數模塊:
main()
{
FILE*fp1,*fp2 ;
Node*p,*r ;
char ch1,ch2 ;
Link l ;
LIN k ;
peo*t,*h ;
int sel ;
l=(Node*)malloc(sizeof(Node));
l->next=NULL ;
r=l ;
k=(peo*)malloc(sizeof(peo));
k->next=NULL ;
h=k ;
fp1=fopen("g:\\data1","ab+");
if((fp1==NULL))
{
printf("can't open the file!");
return 0 ;
}
while(!feof(fp1))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp1)==1)
{
p->next=NULL ;
r->next=p ;
r=p ;
count1++;
}
}
fclose(fp1);
fp2=fopen("g:\\data2","ab+");
if((fp2==NULL))
{
printf("can't open the file!");
return 0 ;
}
while(!feof(fp2))
{
t=(peo*)malloc(sizeof(peo));
if(fread(t,sizeof(peo),1,fp2)==1)
{
t->next=NULL ;
h->next=t ;
h=t ;
count2++;
}
}
fclose(fp2);
while(1)
{
getch();
clrscr();
print();
printf("please choose the operation(1-8): ");
scanf("%d",&sel);
if(sel==8)
{
if(shoudsave==1)
{
getchar();
printf("\n=====tip:the file have been changed!do you want to save it(y/n)?\n");
scanf("%c",&ch1);
if(ch1=='y'||ch1=='Y')
{
save2(k);
save1(l);
}
}
printf("\n\tyou have exited! Happy serve for you");
break ;
}
switch(sel)
{
case 1 :
buy(l,k);
break ;
case 2 :
tui(k);
break ;
case 3 :
qur(l);
break ;
case 4 :
add(l);
break ;
case 5 :
Modify(l);
break ;
case 6 :
advice(l);
break ;
case 7 :
{
save1(l);
save2(k);
break ;
}
case 8 :
exit(0);
}
}
getch();
}
Ⅳ c語言程序設計飛機訂票系統
呵呵 這個也是我在網上搜的 挺不錯 沒有錯誤
#include<stdio.h> //標准輸入、輸出頭文件
#include<string.h> //包含字元串函數處理頭文件
#include<stdlib.h> //包含動態存儲與釋放函數頭文件
#define N 10000
struct air //定義結構體數組
{
int num;
char start[20];
char over[20];
char time[10];
int count;
}s[N];
int i;
int m=0;
#define PRINT "%-d%12s%12s%10s%12d\n",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //定義輸出格式
void input(); //輸入航班信息
void print(); //輸出航班信息
void save(); //保存航班信息
void read(); //讀取航班信息
void search(); //查找航班信息
void shanchu(); //刪除航班信息
void dingpiao(); //訂票信息
void tuipiao(); //退票信息
void xiugai(); //修改信息
void main()
{
int j;
printf(" ★---您好,歡迎進入中國民航管理系統!---★\n");
printf("================================================================================\n");
do
{
printf(" -------- ☆ 1.輸入航班信息 ☆-------- \n\n"
" -------- ☆ 2.瀏覽航班信息 ☆-------- \n\n"
" -------- ☆ 3.修改航班信息 ☆-------- \n\n"
" -------- ☆ 4.查找航班信息 ☆-------- \n\n"
" -------- ☆ 5.刪除航班信息 ☆-------- \n\n"
" -------- ☆ 6.訂票信息 ☆-------- \n\n"
" -------- ☆ 7.退票信息 ☆-------- \n\n"
" -------- ☆ 0.退出 ☆-------- \n\n");
printf("================================================================================\n");
printf("請在0-7中選擇以回車鍵結束:\n\n");
scanf("%d",&j);
switch(j)
{
case 1: input();//調用輸入模塊
break;
case 2:print();//調用列印模塊
break;
case 3:xiugai();//調用修改模塊
break;
case 4:search();//調用查找模塊
break;
case 5:shanchu(); //調用刪除模塊
break;
case 6:dingpiao();//調用訂票模塊
break;
case 7:tuipiao();//調用退票模塊
break;
case 0:;
break;
}
}while(j!=0); //判斷結束
printf("謝謝使用,再見!\n");
}//主函數結束
void input()//列印模塊程序
{
char f[]="2008china"; //設置密碼
int y;
printf("請輸入密碼並以回車鍵結束:\n\n");
scanf("%s",f); //讀取密碼
if(strcmp(f,"2008china")==0)
{
printf("請依次輸入航班信息(機票數位0結束輸入):\n\n"
"完成輸入信息請鍵入w以回車鍵結束\n\n"); //列印提示信息
printf("--------------------------------------------------------------------------\n");
for(i=0;i<N;i++)
{
printf("請輸入航班號:\n");
scanf("%d",&s[i].num); //讀取航班號
printf("請輸入起始站:\n");
scanf("%s",s[i].start);//讀取起始站
printf("請輸入終點站:\n");
scanf("%s",s[i].over);//讀取終點站
printf("請輸入時間:\n");
scanf("%s",s[i].time);//讀取時間
printf("請輸入機票數(機票數為0結束輸入):\n",m);
scanf("%d",&s[i].count);//讀取機票數
m++;
printf("第%d個信息已經輸完是否繼續?按任意鍵繼續,按 0結束",m);
scanf("%d",&y);
if(y==0)
{
save();//將結構體信息存檔
print();//輸出輸入的航班信息
break;
}
}
}
else
printf("輸入密碼錯誤!請檢查您的密碼是否正確!謝謝!再見!\n\n");
}
void save()//保存模塊程序
{
FILE *fp,*fp1;//定義文件指針
if((fp=fopen("chen.dat","wb"))==NULL)//打開文件並判斷是否出錯
{
printf("創建文件失敗!\n\n");//列印出錯提示
getchar();
return;
}
if((fp1=fopen("hao.dat","wb"))==NULL)//打開文件並判斷是否出錯
{
printf("創建文件失敗!\n\n");//列印出錯提示
getchar();
return;
}
for(i=0;i<m;i++)
if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件寫入數據,並判斷是否出錯
printf("向文件輸入數據失敗!\n\n");
fprintf(fp1,"%d",m);
fclose(fp);//關閉文件
fclose(fp1);//關閉文件
}
void read()//從文件讀取信息模塊
{
FILE *fp,*fp1;//定義文件指針
if((fp=fopen("chen.dat","rb"))==NULL)//打開文件,並判斷是否出錯
{
printf("出錯,請檢查文件是否存在,按任意鍵返回住菜單");//列印出錯提示
getchar();
}
if((fp1=fopen("hao.dat","rb"))==NULL)//打開文件並判斷是否出錯
{
printf("創建文件失敗!\n\n");//列印出錯提示
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);//關閉文件
for(i=0;i<m;i++)
{
fread(&s[i],sizeof(air),1,fp);//從文件中讀取信息
}
fclose(fp);//關閉文件
}
void print()//列印模塊
{
char w[10];
read();//調用讀取文件函數
printf("航班號 起始站 終點站 時間 機票數\n");
for(i=0;i<m;i++)
{
printf(PRINT);//列印信息
}
printf("請按任意鍵回車鍵結束返回上層菜單以:\n");
scanf("%s",w);
}
void search()//查詢模塊
{
char name1[20];
char name2[20];
char ii[10];
int n,no;
do
{
printf("請選擇查找方式:\n\n");//列印查詢方式菜單
printf("1.按航班號查找\n\n"
"2.按終點站查找\n\n"
"3.按航線查找\n\n"
"0.返回\n\n");
printf("請在0-3中選擇:\n\n"
"按其他鍵以回車鍵結束返回主菜單:\n\n");
scanf("%d",&n);//讀取查找方式
if(n==0)
break;
switch(n)
{
case 1:
printf("請輸入航班號:\n");
scanf("%d",&no);//航班號
break;
case 2:
printf("請輸入終點站名稱:\n");
scanf("%s",name2);//讀取終點站
break;
case 3:
printf("請輸入起始站名稱:\n");
scanf("%s",name1);//讀取起始站
printf("請輸入終點站名稱:\n");
scanf("%s",name2);//終點站
break;
}
read();//調用讀取函數
for(i=0;i<m;i++)
{
if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)//按終點站起始站判斷輸出條件
{
printf("\n查找航班信息成功!\n");
printf("航班號 起始站 終點站 時間 機票數\n");
printf(PRINT);//列印信息
break;
}
if(s[i].num==no)//按航班號判斷輸出條件
{
printf("\n查找航班信息成功!\n");
printf("航班號 起始站 終點站 時間 機票數\n");
printf(PRINT);//列印信息
break;
}
}
no=0;//將航班號賦值為0
printf("沒有您需要的信息或查找完畢:\n\n"
"是否繼續查找?請鍵入yes或no以回車鍵結束\n");
scanf("%s",ii);
}while(strcmp(ii,"yes")==0);//判斷結束
}
void shanchu()//刪除模塊
{
char name1[20];
char name2[20];
char ii[10];
char f[]="2008china";//設置密碼
int no,n;
printf("請輸入密碼並以回車鍵結束:\n\n");
scanf("%s",f);//讀取密碼
if(strcmp(f,"2008china")==0) //判斷密碼是否正確
{
do
{
printf("請選擇刪除以方式回車鍵結束:\n\n");//列印刪除方式菜單
printf("*1.按航班號刪除\n\n"
"*2.按航線刪除\n\n"
"*0.返回\n\n");
printf("請在0-2中選擇以回車鍵結束:\n");
scanf("%d",&n);//讀取刪除方式
if(n==0)
break; //跳出循環
switch(n)
{
case 1:
printf("請輸入航班號:\n");
scanf("%d",&no);//讀取航班號
read();//調用讀取函數
break;//跳出循環
case 2:
printf("請輸入起始站 名稱:\n");
scanf("%s",name1);//讀取起始站
printf("請輸入終點站名稱:\n");
scanf("%s",name2);//讀取終點站
read();//調用讀取函數
break;//跳出循環
}
for(i=0;i<m;i++)
{
if(s[i].num==no||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)//判斷輸入信息是否存在
{
s[i]=s[m-1];
m--;
}
}
printf("查找完畢或沒有這個信息\n\n");
printf("是否繼續刪除\n");
printf("請鍵入yes或no以回車鍵結束\n");
scanf("%s",ii); //讀取是否繼續信息
save(); //調用讀取函數
if(!strcmp(ii,"yes")) //判斷是否繼續刪除
printf("請按任意鍵以回車鍵結束返回上層菜單:\n");
break;
}while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0); //判斷結束
}
else
printf("對不起密碼錯誤!您不是管理員,不能使用此項功能!謝謝!再見!\n\n");
}
void dingpiao()//訂票模塊
{
int n;
char a[10];
do
{
search();//調用查詢模塊
printf("請輸入您要訂的機票數以回車鍵結束:\n");
scanf("%d",&n);//讀取所訂機票數
if(n<0)
{
printf("請輸入有效的機票數!\n");//判斷機票數是否出錯
break;
}
if(s[i].count!=0&&s[i].count>=n)//判斷是否出錯
{
s[i].count=s[i].count-n;
save();//調用保存函數
printf("訂票成功!\n\n");
break;
}
if(s[i].count<n)//判斷是否出錯
{
printf("請輸入有效的機票數:\n");
break;
}
printf("是否繼續? 請輸入yes或no以回車鍵結束:\n");//判斷是否繼續訂票
scanf("%s",a);
}while(!strcmp(a,"yes"));//判斷結束
}
void tuipiao()//退票模塊
{
int n;
char a[10];
do
{
search();//調用查詢模塊
printf("請輸入您要退的機票數目:\n");
scanf("%d",&n);//輸入所退票數
if(n<0) //判斷票數是否有效
printf("請輸入有效的機票數!\n");
s[i].count=s[i].count+n;
save(); //調用保存模塊
printf("退票成功!\n\n");
printf("是否繼續? 請鍵入yes或no以回車鍵結束:\n\n");//判斷是否繼續退票
scanf("%s",a);
}while(!strcmp(a,"yes"));//判斷並跳出循環
getchar();
}
void xiugai() //修改模塊
{
struct xiu //定義結構體
{
int no;
char name1[20];
char name2[20];
char time[20];
int count;
}x[1];
char j[10];
char f[]="2008china";//設置密碼
int n;
printf("請輸入密碼並以回車鍵結束:\n\n");
scanf("%s",f);//讀取密碼
if(strcmp(f,"2008china")==0)//判斷是否出錯
{
read();//調用讀取模塊
do
{
printf( "請選擇修改方式:\n\n"
"*1,按航班號修改:\n\n"
"*2,按航線修改: \n\n");
printf("請在1---2中修改以回車鍵結束:\n\n");
scanf("%d",&n);//讀取修改方式
switch(n)
{
case 1:printf("請輸入航班號:\n");
scanf("%d",&x[0].no);//讀取航班號
break;
case 2:printf("請輸入起始站:\n");
scanf("%s",x[0].name1);//讀取起始站
printf("請輸入終點站:\n");
scanf("%s",x[0].name2);//讀取終點站
break;
}
for(i=0;i<m;i++)
{
if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)//判斷輸出條件
{
printf("航班號 起始站 終點站 時間 機票數\n");
printf(PRINT);
break;
}
if(s[i].num==x[0].no)//判斷輸出條件
{
printf("航班號 起始站 終點站 時間 機票數\n");
printf(PRINT);
break;
}
}
x[0].no=0; //將結構體中的號為零
printf("請輸入新航班號、起始站、終點站、時間(星期幾)、機票數:\n");
scanf("%d%s%s%s%d",&x[0].no,x[0].name1,x[0].name2,x[0].time,&x[0].count);//定義輸入格式
s[i].num=x[0].no;//替換航班號
strcpy(s[i].start,x[0].name1);//替換其始站
strcpy(s[i].over,x[0].name2);//替換終點站
strcpy(s[i].time,x[0].time);//替換時間
s[i].count=x[0].count;//替換機票數
save();//調用保存模塊
printf("是否繼續?請鍵入yes或no以回車鍵結束:\n\n");
scanf("%s",j);
}while(strcmp(j,"yes")==0); //判斷結束
}
else
printf("對不起密碼錯誤!您不是管理員,不能使用此項功能!謝謝!再見!\n\n");
}
Ⅵ C語言程序設計 飛機訂票管理系統
編制一個航班訂票系統。應具備如下功能:該航班僅有一架100座飛機;該飛機座位分為吸煙區(30個座位)和無煙區(70個);訂票系統界面是選擇菜單:1.選吸煙區座位號;2.選無煙區座位號;用戶輸入自己的選擇後,該區若有空位,則順序地分配一個座號;否則致歉;若吸煙區已滿而無煙區有空位,則徵求顧客意見,是否願意得到無煙區的空位,若願意,則在無煙區分配一個座號,否則致歉退出;顧客不得自主挑選座位號;
#include<cstdio>
#include<stdlib.h>
#include<string.h>
#include<memory.h>
#define LIN 31
#define LIE 71
static int smok[LIN];//吸煙區票
static int nosmoke[LIE];//無煙區票
void Initnosmoke();//初始化
void ASK();void Initsmok();
void nosmok();
void smoke();
int search(int *array,int size);
void show();
int main()
{
Initnosmoke();
Initsmok();show();return 0;}void Initnosmoke()//初始化無煙區票{int sun=0;for(int j=0;j<LIE;j++){sun+=1;nosmoke[j]=sun;}}void Initsmok()//初始化吸煙區票{int k=0;for(int i=0;i<LIN;i++){k+=1;smok[i]=k;}}int search(int *array,int size)/*該函數的作用是用來查看系統中某類票是否賣完,入股賣完了返回1,反之返回的是0*/{int i;for(i=0;i<size;i++){if(array[i]!=0){return 0;}else{;}}return 1;}void nosmok()//購買無煙區票{for(int i=0;i<LIE;i++){if(i<LIE-1){if(nosmoke[i]!=0){printf("你票是:NOSMOKE_%d\n",nosmoke[i]);nosmoke[i]=0;break;}else{;}}else{printf("對不起!NOSMOKE票已售完!");}}}void ASK()/*該函數用來詢問客戶是否需要買NOSMOKE票當SMOKE票賣完的情況下*/{char ask;printf("NOSMOKE票你要嗎?(y/n)\n");ask=getchar();if(ask =='y' || ask=='Y' ){nosmok();}else if(ask=='n' || ask=='N'){printf("謝謝!再見\n");}else{printf("輸入錯誤!\n");}}void smoke()//購買吸煙區票{for(int j=0;j<LIN;j++){if(j<LIN-1){if(smok[j]!=0){printf("你票是: SMOKE_%d\n",smok[j]);smok[j]=0;break;}else{;}}else{printf("對不起!SMOKE票已售完!");{fflush(stdin);int rec=search(nosmoke,LIE);if(rec==0){ASK();}else{printf("謝謝!\n");}}}}}void window(){printf("\t\t歡迎使用航班訂票系統\n");printf("\t\t1.吸煙區座位\n");printf("\t\t2.無煙區座位\n");printf("\t\t3.退出系統\n");printf("\t\t請選擇(1~3)進行操作:\n");}void show(){system("color 4a");char ch=' ';window();while(ch!='3'){fflush(stdin);ch=getchar();switch(ch){case '1':{smoke();break;}case '2':{nosmok();break;}case '3':{break;}default:break;}window();ch=getchar();}}
Ⅶ 求大神解決。C語言程序設計課題,飛機訂票系統
這就是最簡單的一個sturct或者class應運啊!自己定義下,慢慢理順就好了!很簡單的
Ⅷ 求C語言的大項目
朋友我這有幾個哈。你可以看看 一. 設計題目: 圖書管理系統 1. 新書入庫: 圖書信息包括書名, 書號, 庫存量, 現存量共4項. 首先輸入3本書的信息, 並將其存入文件 」book.dat」 中. 當有新書入庫時, 先判斷文件中是否有此書( 即比較書名 ), 若有則修改庫存量, 現存量的信息; 若無此書, 則將該書的信息添加到文件中. 2. 圖書查詢: 輸入一個書號, 在文件中查找此書, 若找到則輸出此書的全部信息; 若找不到則輸出查找失敗的信息. 3. 借閱管理 (1) 每個讀者的信息包括姓名, 編號, 1張借書卡( 限借一本書 ), 輸入3個讀者的信息存入文件 「reader . dat」 中. (2) 借書登記: 輸入讀者的姓名, 所借圖書的書號, 先判斷姓名是否在文件」reader.dat」 中, 若有則將書號存入一張借書卡上( 注: 初始時借書卡的信息都為零, 借書後借書卡的信息改為所借書的書號), 並修改文件」reader.dat」的相應內容, 同時修改文件」book.dat」中此書的現存量. 若」reader.dat」無此姓名, 則應提示錯誤 (3) 還書管理: 輸入讀者的姓名, 所還圖書的書號, 將借書卡的信息置為零, 並修改文件」reader.dat」的相應內容, 同時修改文件」book.dat」中此書的現存量. 4. 輸出全部圖書信息和全部讀者信息 5. 退出系統. 二. 設計題目: 航空訂票系統 1. 航線信息: 每條航線信息包括航班號, 飛機號, 目的地, 訂票數, 余票數共5項. 假設現在有3條航線, 目的地分別是北京, 上海, 廣州, 飛機上可乘坐100人( 即初始訂票數為0, 余票數為100) , 將這3條航線信息存入文件」airline.dat」 中. 2. 訂票業務 (1) 客戶信息包括姓名, 航班號, 座位號(初始為0), 假設已有3個客戶信息存入文件」customer.dat」中. (2) 有新客戶訂票時, 先輸入客戶的姓名和他提出的航班號, 查詢該航線的訂票情況, 若有餘票, 則為客戶辦理訂票手續, 分配給客戶一個座位號, 然後將新客戶的信息添加到文件」customer.dat」中, 並修改文件」airline.dat」中該航線的訂票數和余票數. 若無余票, 則輸出客滿信息. 3. 退票業務: 根據客戶提出的航班號, 辦理退票, 從文件」customer.dat」中刪除該客戶的信息, 並修改文件」airline.dat」中相應航線的訂票數和余票數. 4. 輸出全部航線信息和全部客戶信息. 5. 退出系統. 三. 設計題目: 銷售管理系統 1. 銷售員信息: 每個銷售員包括姓名, 編號, 產品1銷售額, 產品2銷售額, 總銷售額共5項信息. 首先輸入3個銷售員的信息存入文件」sailer.dat」中. 2. 排序: 按產品1的銷售額進行排序, 將排序後的信息存入文件 」sailer1.dat」中, 按產品2的銷售額進行排序, 將排序後的信息存入文件」sailer2.dat」中, 按總銷售額進行排序, 將排序後的信息存入文件 」sailer3.dat」 中 3. 統計: 分別統計產品1的總銷售額和產品2的總銷售額並進行輸出 4. 銷售員的增加: 增加一個銷售員的信息, 先將其添加到文件」sailer.dat」中, 然後按其總銷售額進行插入排序, 排序後的信息仍存入文件」sailer3.dat」中. 5. 銷售員的減少: 輸入一個銷售員的姓名, 從文件」sailer.dat」中將其刪除. 6. 輸出全部銷售員的信息 7. 退出系統 四. 設計題目: 停車場管理 1.有一個兩層的停車場, 每層有6個車位, 當第一層車停滿後才允許使用第二層. ( 停車場可用一個二維數組實現, 每個數組元素存放一個車牌號 ) 每輛車的信息包括車牌號, 層號, 車位號, 停車時間共4項. 其中停車時間按分鍾計算 2. 假設停車場初始狀態為第一層已經停有4輛車, 其車位號依次為1—4 , 停車時間依次為20, 15, 10 , 5 . 即先將這四輛車的信息存入文件」car.dat」中( 數組的對應元素也要進行賦值 ) 3. 停車操作: 當一輛車進入停車場時, 先輸入其車牌號, 再為它分配一個層號和一個車位號(分配前先查詢車位的使用情況, 如果第一層有空則必須停在第一層), 停車時間設為5 , 最後將新停入的汽車的信息添加文件」car.dat」中, 並將在此之前的所有車的停車時間加5. 4. 收費管理(取車): 當有車離開時, 輸入其車牌號, 先按其停車時間計算費用, 每5分鍾0.2元. (停車費用可設置一個變數進行保存), 同時從文件」car.dat」中刪除該車的信息, 並將該車對應的車位設置為可使用狀態(即二維數組對應元素清零). 按用戶的選擇來判斷是否要輸出停車收費的總計. 5. 輸出停車場中全部車輛的信息. 6. 退出系統. 五. 為小型會議設計一個參會人員管理程序。 要求: (1)登錄參會人員的下列信息: ·姓名(name); ·性別(sex); ·年齡(age); ·單位(department) ·房間號(room-num)(設每個房間只住一人,房間號為101#—120#,…..,501#—520#)。 (2)主菜單應至少包括以下幾個菜單項: 人員登錄、顯示報到人員信息、查詢、統計、修改、刪除 (3)程序應分別用幾個個函數實現以上功能: ·隨時對報到人員進行登錄(login),來客登記的房間是根據客人要求分配的;如果客人申請的房間已有人登記了,可以讓客人重新申請;如果所有的房間都已經住滿,則拒絕再進行人員登錄; ·隨時按所住房間號(由小到大)輸出(print)已報到人員信息; ·能夠根據姓名實現對人員信息的查詢; ·能夠根據單位對與會人員進行分類統計,並輸出統計結果; ·能夠修改與會人員的信息; ·能夠刪除某個參會人員,並清空其所住房間; (4)程序中的變數要使用題中給定的英文名詞。 六、 設計題目:建通訊錄,並對它進行增加、查詢、修改、刪除、顯示記錄等操作。 第一個模塊——主函數main()的功能是:根據選單的選項調用各函數,並完成相應的功能。 第二個模塊——Menu()的功能是:顯示英文提示選單。 第三個模塊——Quit()的功能是:退出選單。 第四個模塊——Create()的功能是:創建新的通訊錄。 第五個模塊——Add()的功能是:在通訊錄的末尾,寫入新的信息,並返回選單。 第六個模塊——Find()的功能是:查詢某人的信息,如果找到了,則顯示該人的信息,如果未找到,則提示通訊錄中沒有此人的信息,並返回選單。 第七個模塊——Alter()的功能是:修改某人的信息,如果未找到要修改的人,則提示通訊錄中沒有此人的信息,並返回選單。 第八個模塊——Delete()的功能是:刪除某人的信息,如果未找到要刪除的人,則提示通訊錄中沒有此人的信息,並返回選單。 第九個模塊——List()的功能是:顯示通訊錄中的所有記錄。 七、設計題目:動態演示漢諾塔問題的解決過程。(或用C語言設計一個動畫程序) 要求:在圖形模式下,能將每一次盤子的移動用動畫演示出來。 八、設計題目:迷宮問題。 要求: (1) 用戶可以自己建立一個大小隨意的迷宮。 (2) 從入口出發,找出所有出路。(最好用圖形化的方式演示) 九、題目:設計一個摸擬時鍾轉動的程序。 (一)、基本要求:設計的時鍾要美觀大方,既能摸擬機械鍾錶行走(有時針、分針和秒針),還要准確地利用數字顯示日期和時間。 (三)、創新要求:在基本要求達到後,進行創新設計,如增加整點報時功能,定時功能等。 (四)、設計方法 基本原理:在圖形模式下繪出時鍾的外表,利用dos.h中的gettime和getdate得到系統的時間和日期,然後利用繪圖函數顯示在屏幕上。 十、設計題目:編寫一個文本編輯器(記事本)。 要求:要有文本編輯器的基本功能,如打開、編輯、保存、修改等。 十一、設計題目:俄羅斯方塊游戲實現。 用戶的鍵盤控制如下: 左右箭頭(「<」和「>」:控制方塊的左右運動。 向下方的箭頭:控制方塊的加速運動,可以使方塊迅速下落到底部。 空格鍵:控制方塊的旋轉變換。 Esc鍵:退出遊戲。 設計總要求: 1. 有些題目要製作字元形式的菜單. 2. 不同的功能使用不同的函數實現. 3. 對程序進行必要的注釋. 4. 按下列要求書寫課程設計報告(必須要有) (1) 給出相關數據結構及說明; (2) 給出程序的結構流程; (3) 調試過程中出現的問題和解決方法; (4) 編程體會。 (5) 要有磁碟稿。