首頁 > 軟體

C語言實現共用單車管理系統

2022-08-31 14:00:41

本文範例為大家分享了C語言實現共用單車管理系統的具體程式碼,供大家參考,具體內容如下

1.功能模組圖;

2.各個模組詳細的功能描述。

1.登陸:登陸分為使用者登陸,管理員登陸以及維修員登入,登陸後不同的使用者所執行的操作不同,許可權不同。

(1)管理員登入:管理員登陸之後,可使用鍵盤的上下鍵來控制選單上的選項,管理員許可權不多,可執行最多的操作,可以對單車進行投放,刪除,修改,查詢,車牌號排序,檢視所有單車資訊,所有使用者資訊,管理員能通過或駁回正在申請註冊的維修員,還可以檢視完全通過認證的維修員。   

(2)使用者登入:使用者登入時需要輸入註冊時的賬號和密碼,或者是之前註冊的有效賬號及密碼,使用者可以檢視自己附近的車,立即用車當車密碼出現的時候就開始計時了,還車後停止計時,一個時間段內沒有還車不能再借車了,另外還有報修,報修的資訊會上傳到維修員那裡,還可以檢視自己的資訊修改自己的資訊,當用戶賬號不足100元時不能再借車了,所以還有充值這一項功能。

(3)維修員登入:維修員登入時也需要賬戶和密碼(管理員認證的),維修員許可權較大,只可以檢視自己的資訊,修改自己的資訊,以及檢視使用者報修的單車資訊。

2.註冊:註冊有使用者註冊和維修員註冊。

(1)使用者註冊:使用者註冊時,手機號即為登入賬戶,有查重的功能,每個手機號只能註冊一個使用者,設定密碼時,系統會對你的密碼的安全係數進行評分,以及需要確認密碼,兩次不一致註冊失敗,輸入年齡,年齡不滿10歲不可註冊,註冊成功後需要起一個使用者名稱,需要繫結充值卡,首次充值200元,即可登入。

(2)維修員註冊:維修員註冊時,手機號即為登入賬戶,也有查重的功能,每個手機號只能註冊一個使用者,設定密碼時,系統會對你的密碼的安全係數進行評分,以及需要確認密碼,兩次不一致註冊失敗,後需要起一個使用者名稱,輸入年齡,年齡不滿18歲不可註冊,但此時並沒有註冊成功,只是完成了申請,不可登入,等待管理員認證,通過,註冊成功,即可登入,駁回,註冊失敗。

3.增加:增加單車資訊到檔案 中。

4.修改:修改單車資訊,修改使用者個人資訊,修改維修員個人資訊。

5.刪除:刪除單車。

6.查詢:查詢單車並按所選順序檢視。

3.詳細設計

(1).功能函數的呼叫關係圖

(2).各功能函數的資料流程圖

a.(查詢單車)

b.(增加單車)

c.(刪除單車)

d.(修改單車資訊)

e.(檢視所有使用者資訊)

f.(檢視所有維修員資訊)

g.(註冊)

h.(登陸)

3.程式碼:

#include<stdio.h>
#include<string.h> 
#include<stdlib.h>
#include<conio.h>
#include<windows.h> 
#include<time.h>
#include<process.h>
#define Up 0x48
#define Down 0x50
#define LEN sizeof(struct node)
#define LEN_ sizeof(struct node_user)
#define LEN_1 sizeof(struct node_repairman)
typedef struct node
{    
    char number[100];
    char mima[100];
    char address[100];
    char profit[100];
    struct node *next;    
}NODE;
typedef struct node_user
{    
    char number_user[200];
    char mima_user[100];
    char mima_user2[100];
    char name_user[200];
    char bank_card[200];
    int age;
    int h;
    int purse;
    struct node_user *next;    
}NODE_USER;
typedef struct node_repairman
{    
    char number_repairman[100];
    char mima_repairman[100];
    char mima_repairman2[100];
    char name_repairman[100];
    int age;
    struct node_repairman *next;    
}NODE_REPAIRMAN;
int icount,j,w=1,k;
//**********************函數宣告**************************
void Gotoxy(int x, int y); 
NODE *input ();    
void show ();                             //管理員建立單車資訊 
NODE * add_node (NODE *phead);                  //管理員增加單車資訊 
void delete_node ();                      //管理員刪除單車資訊 
void print ();
void print_user(NODE_USER *m);
void print_repairman_(NODE_REPAIRMAN *m);
void print_repairman_1(NODE_REPAIRMAN *m);               //輸出 
void modify ();       //修改 
NODE *look_for ();
void look_for2 (NODE_USER *n);
NODE_REPAIRMAN *look_for3 ();
void look_for_bike (NODE *a);
NODE *look_for_repetition (char a[20]);                 //查詢 
void savefile(NODE *phead);       //寫檔案(A+) 
void savefile_(NODE *phead);
void savefile_user(NODE *phead);
void savefile_user_(NODE_USER *m);
void savefile_repairman_check_1();            //寫檔案(W) 
NODE *readfile();
NODE_USER *readfile_user();    
NODE_REPAIRMAN *readfile_repairman();
void user (NODE_USER *l);
void repairman_ (NODE_REPAIRMAN *l);
void admin ();      //讀檔案 
void welcome();               //歡迎函數 
void send_back (NODE *d); 
void sort_num();
void sign_in ();                                                            
void menu_1 ();           //選單 
void choice ();
void goodbye(); 
//********************************************************
void Gotoxy(int x, int y)  //遊標移動
{
    HANDLE hout;//定義控制程式碼變數
    COORD coord;//定義結構體
    coord.X = x;
    coord.Y = y;
    hout = GetStdHandle(STD_OUTPUT_HANDLE);//獲得標準輸出控制程式碼
    SetConsoleCursorPosition(hout, coord);//移動遊標
    return;
}
NODE *input ()       //管理員建立單車資訊 
{
    char s[100];
    NODE *phead,*pnew,*pend;
    phead=NULL;
    icount=0;
    pend=pnew=(NODE *)malloc(LEN);
    for(;;)
    {
        printf("ttt共用單車的車牌號(數位):");
        scanf("%s",pnew->number);
        strcpy(s,pnew->number);
        if(strlen(pnew->number)>8) 
        {
            printf("請輸入少於8位元的車牌號!n");
        }     
        for(j=0;(size_t)j<strlen(s);j++)
        {
            if(s[j]<'0'||s[j]>'9')
            {
                   printf("車牌號只能為數位!重新輸入!n");
                break;
            }         
        }
        if(strlen(pnew->number)<=8&&(size_t)j==strlen(s))
        {
            break;
        }
    }
    printf("nnttt請為該共用單車設定密碼:");
    scanf("%s",pnew->mima);
    for(;;)
    {
        loop2:
        menu_1();
    //    system("color 07");
        printf("請選擇該共用單車的初始投放地點:");
        scanf("%s",pnew->address);
        strcpy(s,pnew->address);
        for(j=0;(size_t)j<strlen(s);j++)
        {
            if(s[j]<'0'||s[j]>'7')
            {
                system("cls");
                printf("a");
          //      system("color 0A");
                   printf("nnnnntttt抱歉,目前只有這幾個投放地點呦! ^_^ n");
                   Sleep(500);
                   system("cls");
                   goto loop2;
            }         
        }
        if(strlen(pnew->address)<=8&&(size_t)j==strlen(s))
        {
            break;
        } 
    }
    while(strcmp(pnew->number,"0")==1)
    {
        system("cls");
        icount++;
        if(icount==1)
        {
            pnew->next=NULL;
            phead=pnew;
        } 
        else
        {
            pnew->next=NULL;
            pend->next=pnew;
            pend=pnew;
        }
        pnew=(NODE *)malloc(LEN);
        for(;;)
        {
            printf("共用單車的車牌號(數位):");
            scanf("%s",pnew->number);
            strcpy(s,pnew->number);
            if(strlen(pnew->number)>8) 
            {
                printf("請輸入少於8位元的車牌號!n");
            }     
            for(j=0;(size_t)j<strlen(s);j++)
            {
                if(s[j]<'0'||s[j]>'9')
                {
                       printf("車牌號只能為數位!重新輸入!n");
                    break;
                }         
            }
            if(strlen(pnew->number)<=8&&(size_t)j==strlen(s))
            {
                break;
            }
        }
        printf("請為該共用單車設定密碼:");
        scanf("%s",pnew->mima);
        for(;;)
        {
            loop3:
            menu_1();
        //    system("color 07");
            printf("請選擇該共用單車的初始投放地點:");
            scanf("%s",pnew->address);
            strcpy(s,pnew->address);
            for(j=0;(size_t)j<strlen(s);j++)
            {
                if(s[j]<'0'||s[j]>'7')
                {
                    system("cls");
                    printf("a");
            //        system("color 0A");
                       printf("nnnnntttt抱歉,目前只有這幾個投放地點呦! ^_^  n");
                       Sleep(500);
                       system("cls");
                       goto loop3;
                }         
            }
            if(strlen(pnew->address)<=8&&(size_t)j==strlen(s))
            {
                break;
            } 
        }
    }
    printf("正在儲存!");
    savefile(phead);
    free(pnew);
    return phead;
}
void delete_node ()     //管理員刪除單車資訊 
{
    NODE *l,*n,*m;
    char s[100];
    m=l=readfile();
    printf("tttt請輸入您要刪除的共用單車的車牌號:n");
    scanf("%s",s);
    while(l!=NULL)
    {
        if(strcmp(m->number,s)==0)
        {
            m=m->next;
            printf("刪除成功!n");    
            break;
        } 
        if(strcmp(l->next->number,s)==0)
        {
            n=l;
            n=n->next;
            l->next=n->next;
            printf("刪除成功!n");
            break;
        } 
        l=l->next;
        if(l->next==NULL)
        {
            printf("tttt無刪除項n");
            break;
        } 
    } 
    free(n);
    savefile_(m);
} 
void modify ()    //管理員修改單車資訊 
{
    NODE *ma,*m;
    char z[100];
    m=ma=readfile();
    printf("tttt請輸入您要修改共用單車的車牌號:n");
    scanf("%s",z);
    while(ma!=NULL)
    {
        if(strcmp(ma->number,z)==0)
        {
            printf("請修改該共用單車的密碼:");
            scanf("%s",ma->mima);
            break;
        }
        ma=ma->next;
        if(ma->next==NULL)
        {
            printf("無修改項!n");
            break;
        }    
    }
    savefile_(m);
}

NODE *look_for (NODE_USER *l)            //管理員查詢單車資訊  
{
    NODE *m;
    char q[100];
    m=readfile();
    if(l->purse <=100)
    {
        printf("您的金額已經不足100元!請儘快充值!nn");
        Sleep(500);
        return NULL;
    }
    printf("tttt請輸入你要查詢的共用單車的車牌號:n");
    scanf("%s",q);
    while(m!=NULL)
    {
        if(strcmp(m->number,q)==0)
        {
            l->h=1;
            printf("車牌號        密碼      停放地點nn");
            printf("%st  t",m->number);
            printf("%st  ",m->mima);
            if(strcmp(m->address,"0")==0)
                printf("長安廣場");
            if(strcmp(m->address,"1")==0)
                printf("南大學城");
            if(strcmp(m->address,"2")==0)
                printf("三森");
            if(strcmp(m->address,"3")==0)
                printf("紫薇都市");
            if(strcmp(m->address,"4")==0)
                printf("韋曲西街");
            if(strcmp(m->address,"5")==0)
                printf("航天城");
            if(strcmp(m->address,"6")==0)
                printf("韋曲南站"); 
            if(strcmp(m->address,"7")==0)
                printf("秦嶺沿線"); 
            break;
        }
        m=m->next;
    }
    if(m==NULL)
        printf("n還沒有投放該編號的車哦!"); 
    printf("n");
    return m;
} 
NODE *look_for_0 ()      //管理員查詢單車資訊  
{
    NODE *m,*n;
    int a,b=0;
    char q[100],p[100];
    n=m=readfile();
    int flag;
    int l = 8;
    printf("n");
    printf("-->管理員端"); 
    while (1)
    {
        b=0;
        Gotoxy(53, 8);
        printf("1.按車牌號查詢");
        Gotoxy(53, 10); 
        printf("2.按停放地點查詢");
        Gotoxy(53, 12);
        printf("3.按車號和地點查詢");
        Gotoxy(53, 14);
        printf("4.退出查詢");
        Gotoxy(52, l);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            l=l+2;
            if (l == 16)
                l = 8;
        }
        if (flag == Up)
        {
            l=l-2;
            if (l == 6)
                l = 14;
        }
        if (flag == 13)
        {
            if (l == 8)   
            {
                system("cls");
                printf("n->請輸入您要查詢的車的車牌號:");
                scanf("%s",q);
                while(n!=NULL)
                {
                    if(strcmp(n->number,q)==0)
                    {
                        b++;
                    }    
                    n=n->next;
                }
                if(b!=0)
                    printf("車牌號        密碼      停放地點nn");
                while(m!=NULL)
                {
                    if(strcmp(m->number,q)==0)
                    {
                        printf("%st  t",m->number);
                        printf("%st  ",m->mima);
                        if(strcmp(m->address,"0")==0)
                            printf("長安廣場");
                        if(strcmp(m->address,"1")==0)
                            printf("南大學城");
                        if(strcmp(m->address,"2")==0)
                            printf("三森");
                        if(strcmp(m->address,"3")==0)
                            printf("紫薇都市");
                        if(strcmp(m->address,"4")==0)
                            printf("韋曲西街");
                        if(strcmp(m->address,"5")==0)
                            printf("航天城");
                        if(strcmp(m->address,"6")==0)
                            printf("韋曲南站"); 
                        if(strcmp(m->address,"7")==0)
                            printf("秦嶺沿線"); 
                        break;
                    }
                    m=m->next;
                }
                if(m==NULL)
                    printf("n還沒有投放該編號的車哦!"); 
                printf("n");
                _getch();
            }
            if (l == 10)
            {
                system("cls");
                menu_1();
                printf("n->請輸入您要查詢在該停放位置的車:");
                scanf("%s",q);
                while(n!=NULL)
                {
                    if(strcmp(n->address,q)==0)
                    {
                        b++;
                    }    
                    n=n->next;
                }
                if(b!=0)
                    printf("車牌號        密碼      停放地點nn");
                while(m!=NULL)
                {
                    if(strcmp(m->address,q)==0)
                    {
                        printf("%st  t",m->number);
                        printf("%st  ",m->mima);
                        if(strcmp(m->address,"0")==0)
                            printf("長安廣場");
                        if(strcmp(m->address,"1")==0)
                            printf("南大學城");
                        if(strcmp(m->address,"2")==0)
                            printf("三森");
                        if(strcmp(m->address,"3")==0)
                            printf("紫薇都市");
                        if(strcmp(m->address,"4")==0)
                            printf("韋曲西街");
                        if(strcmp(m->address,"5")==0)
                            printf("航天城");
                        if(strcmp(m->address,"6")==0)
                            printf("韋曲南站"); 
                        if(strcmp(m->address,"7")==0)
                            printf("秦嶺沿線"); 
                        a=1;
                        printf("n");
                    }
                    m=m->next;
                }
                if(a!=1)
                {
                    printf("nnn->該停放點的車都被騎走了喲!");
                }
                _getch();
            }
            if (l == 12)
            {
                system("cls");
                printf("n->請輸入您要查詢的車的車牌號:");
                scanf("%s",q);
                menu_1();
                printf("n->請輸入您要查詢在該停放位置的車:");
                scanf("%s",p);
                while(m!=NULL)
                {
                    if(strcmp(m->number,q)==0 && strcmp(m->address,p)==0)
                    {
                        printf("車牌號        密碼      停放地點nn");
                        printf("%st  t",m->number);
                        printf("%st  ",m->mima);
                        if(strcmp(m->address,"0")==0)
                            printf("長安廣場");
                        if(strcmp(m->address,"1")==0)
                            printf("南大學城");
                        if(strcmp(m->address,"2")==0)
                            printf("三森");
                        if(strcmp(m->address,"3")==0)
                            printf("紫薇都市");
                        if(strcmp(m->address,"4")==0)
                            printf("韋曲西街");
                        if(strcmp(m->address,"5")==0)
                            printf("航天城");
                        if(strcmp(m->address,"6")==0)
                            printf("韋曲南站"); 
                        if(strcmp(m->address,"7")==0)
                            printf("秦嶺沿線"); 
                    }
                    m=m->next;
                }
                if(m==NULL)
                    printf("n沒有符合條件的車哦!"); 
                printf("n");
                _getch();
            }
            if(l == 14)
            {
                return NULL;
            } 
            return m;
        }
    }        
} 
NODE *look_for_bike (char a[100])           //報修時查詢單車資訊  
{
    NODE *m;
    m=readfile();
    while(m!=NULL)
    {
        if(strcmp(m->number,a)==0)
        {
            break;
        }
        m=m->next;
    }
    if(m==NULL)
        printf("n親!報修資訊有誤!還沒有投放該編號的車哦!"); 
    printf("n");
    return m;
} 
void send_back (NODE *d)      //使用者歸還共用單車 
{
    NODE *m,*l;
    char s[100];
    l=m=readfile();
    while(m!=NULL)
    {
        if(strcmp(m->number,d->number)==0)
        {
            menu_1 ();
            printf("ttt請選擇您歸還的地點:"); 
            scanf("%s",m->address); 
            strcpy(s,m->address);
            for(j=0;(size_t)j<strlen(s);j++)
            {
                if(s[j]<'0'||s[j]>'7')
                {
                    system("cls");
                    printf("a");
                       printf("nnnnntttt抱歉,目前只有這幾個投放地點呦! ^_^ n");
                       Sleep(500);
                       system("cls");
                }         
            }
            if(strlen(m->address)<=8&&(size_t)j==strlen(s))
            {
                break;
            } 
        }
        m=m->next;
    }
    if(m==NULL)
        printf("n還沒有投放該編號的車哦!"); 
    printf("n");
    savefile_(l);        
} 
NODE_USER *look_for2 ()       //登入 
{ 
    loop_:
    NODE_USER *m,*n;
    int i=0;
    char c,a[100],b[100];
    char x[100],password[100],p[100];
    int l = 8;
    system("cls");
    n=m=readfile_user();
    printf("-->請輸入正確的賬號和密碼n"); 
    printf("nnnn");
    printf("ttttt╔════════════════╗tttn");
    printf("ttttt║☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆║tttn");
    printf("ttttt║┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄║tttn");
    printf("ttttt║                                ║tttn");
    printf("ttttt║                                ║tttn");
    printf("ttttt║                                ║tttn");
    printf("ttttt╚════════════════╝tttn");
    while (1)
    {
        Gotoxy(44, 8);
        printf("★我的賬號:");
        Gotoxy(44, 10); 
        printf("★我的密碼:");
        Gotoxy(44, l);
        if(l == 8)
        {
            printf("☆");
            Gotoxy(56,8);
            scanf("%s",x);
            Gotoxy(44,10);
            printf("☆");
            Gotoxy(56,10);
            while((c=getch())!=13)
            {
                if(c==8)
                {
                    printf("b b");
                    i--;
                    continue;
                }
                password[i++]=c;
                putchar('*');
            }
            password[i]='';
            printf("n");
        }
        break;
    }
    while(m!=NULL)
    {
        if(strcmp(m->number_user,x)==0&&strcmp(m->mima_user,password)==0)
        {
            system("cls");
            printf("登陸成功!"); 
            break;
        }
        m=m->next;
    }
    if(m==NULL)
    {
        mm:
        printf("nnnttttt 賬號或密碼錯誤!請重新輸入!n");
        Sleep(500);
        printf("是否忘記密碼,需要找回?"); 
        scanf("%s",p);
        for(;;)
        {
            if(strcmp(p,"y")==0||strcmp(p,"Y")==0)
            {
                printf("n->請輸入賬號:");
                scanf("%s",a);
                printf("n->請輸入充值卡號:");
                scanf("%s",b);
                while(n!=NULL)
                {
                    if(strcmp(n->number_user,a)==0 && strcmp(n->bank_card,b)==0)
                    {
                        system("cls");
                        printf("nn->成功找回!下次可別忘了喲!"); 
                        printf("nn我的使用者名稱:%s",n->name_user);
                        printf("nn我的賬號:%st",n->number_user);
                        printf("nn我的密碼:%st",n->mima_user);
                        printf("nn我的錢包:¥ %d",n->purse);
                        getch();
                        break;
                    }
                    n=n->next;
                }
                break;
            }
            else if(strcmp(p,"n")==0||strcmp(p,"N")==0)
            {
                printf("->已取消操作!n");
                Sleep(500);
                system("cls");
                break;
            }
            else if(strcmp(p,"y")!=0 && strcmp(p,"Y")!=0 && strcmp(p,"n")!=0 && strcmp(p,"N")!=0)
            {
                printf("親!只能輸入y/n哦!手誤的話重新輸入吧!^_^n");
                Sleep(500);
                system("cls");
                goto mm;
            }
        }
        goto loop_; 
    }    
    printf("n");
    return m;
}
NODE_REPAIRMAN *look_for3 ()      //登入 
{ 
    loop_:
    int i=0;
    char c;
    char x[100],password[100];
    int l = 8;
    NODE_REPAIRMAN *m;
    system("cls");
    m=readfile_repairman();
    printf("-->請輸入正確的賬號和密碼n"); 
    printf("nnnn");
    printf("ttttt╔════════════════╗tttn");
    printf("ttttt║☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆║tttn");
    printf("ttttt║┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄║tttn");
    printf("ttttt║                                ║tttn");
    printf("ttttt║                                ║tttn");
    printf("ttttt║                                ║tttn");
    printf("ttttt╚════════════════╝tttn");
    while (1)
    {
        Gotoxy(44, 8);
        printf("★我的賬號:");
        Gotoxy(44, 10); 
        printf("★我的密碼:");
        Gotoxy(44, l);
        if(l == 8)
        {
            printf("☆");
            Gotoxy(56,8);
            scanf("%s",x);
            Gotoxy(44,10);
            printf("☆");
            Gotoxy(56,10);
            while((c=getch())!=13)
            {
                if(c==8)
                {
                    printf("b b");
                    i--;
                    continue;
                }
                password[i++]=c;
                putchar('*');
            }
            password[i]='';
            printf("n");
        }
        break;
    }
    while(m!=NULL)
    {
        if(strcmp(m->number_repairman,x)==0&&strcmp(m->mima_repairman,password)==0)
        {
            system("cls");
            printf("登陸成功!"); 
            break;
        }
        m=m->next;
    }
    if(m==NULL)
    {
        printf("nnttttt 賬號或密碼錯誤!請重新輸入!n");
        goto loop_; 
    }    
    printf("n");
    return m;
}
void look_for_user (NODE_USER *m)            //查詢 
{ 
    NODE_USER *n;
    n=readfile_user();
    while(n!=NULL)
    {
        if(strcmp(n->number_user,m->number_user)==0)
        {
            system("cls");
            printf("****我的資訊->n"); 
            printf("使用者名稱:%sn",n->name_user);
            printf("賬號:%sn",n->number_user);
            printf("密碼:%sn",n->mima_user);
            break;
        }
        n=n->next;
    }    
    printf("n");
}
void look_for_repairman (NODE_REPAIRMAN *m)                //查詢 
{ 
    NODE_REPAIRMAN *n;
    n=readfile_repairman();
    while(n!=NULL)
    {
        if(strcmp(n->number_repairman,m->number_repairman)==0)
        {
            system("cls");
            printf("****我的資訊->n"); 
            printf("使用者名稱:%sn",n->name_repairman);
            printf("賬號:%sn",n->number_repairman);
            printf("密碼:%sn",n->mima_repairman);
            break;
        }
        n=n->next;
    }    
    printf("n");
}
void savefile(NODE *phead)          //寫檔案 
{
    FILE *fp;
    NODE *p;
    if((fp = fopen("bike.txt", "a+"))==NULL)
        printf("a error! Can not open the file!");
//    fputs("車牌號 密碼 停車點n",fp); 
    for(p=phead;p!=NULL;p=p->next)
    {
        fprintf(fp,"%s %s %s n",p->number,p->mima,p->address);
    }
    printf("nn->按任意鍵返回!n");
    fclose(fp);
}
void savefile_(NODE *phead)    //寫檔案 
{
    FILE *fp;
    NODE *p;
    if((fp = fopen("bike.txt", "w"))==NULL)
        printf("a error! Can not open the file!");
    for(p=phead;p!=NULL;p=p->next)
    {
        fprintf(fp,"%s %s %s n",p->number,p->mima,p->address);
    }
    fclose(fp);
}
void savefile_user_bike(NODE *m)      //寫檔案 
{
    FILE *fp;
    if((fp = fopen("repairman_.txt", "a+"))==NULL)
        printf("a error! Can not open the file!");
    fprintf(fp,"%s %s %s n",m->number,m->mima,m->address);
    printf("nn->按任意鍵返回!n");
    fclose(fp);
}
void savefile_user(NODE_USER *m)      //寫檔案 
{
    FILE *fp;
    if((fp = fopen("user.txt", "a+"))==NULL)
        printf("a error! Can not open the file!");
        fprintf(fp,"%s %s %s %s %d n",m->name_user,m->number_user,m->mima_user,m->bank_card,m->purse);
    printf("nn->按任意鍵返回!n");
    fclose(fp);
}
void savefile_user_(NODE_USER *n)     //寫檔案 
{
    NODE_USER *m;
    FILE *fp;
    if((fp = fopen("user.txt", "w"))==NULL)
        printf("a error! Can not open the file!");
    for(m=n;m!=NULL;m=m->next)
    {
        fprintf(fp,"%s %s %s %s %d n",m->name_user,m->number_user,m->mima_user,m->bank_card,m->purse);
    }
    printf("nn->按任意鍵返回!n");
    fclose(fp);
}
void savefile_repairman(NODE_REPAIRMAN *m)            //寫檔案 
{
    FILE *fp;
    if((fp = fopen("repairman.txt", "a+"))==NULL)
        printf("a error! Can not open the file!");
        fprintf(fp,"%s %s %s n",m->name_repairman,m->number_repairman,m->mima_repairman);
    printf("nn->按任意鍵返回!n");
    fclose(fp);
}
void savefile_repairman_check(NODE_REPAIRMAN *m)                                                         //寫檔案 
{
    FILE *fp;
    if((fp = fopen("repairman_check.txt", "a+"))==NULL)
        printf("a error! Can not open the file!");
    fprintf(fp," %s %s %s n",m->name_repairman,m->number_repairman,m->mima_repairman);
/*    fprintf(fp,"%sn",m->name_repairman);
    fprintf(fp,"%sn",m->number_repairman);
    fprintf(fp,"%sn",m->mima_repairman);*/
    printf("nn->按任意鍵返回!n");
    fclose(fp);
}
void savefile_repairman_check_1()  //寫檔案 
{
    FILE *fp;
    fp = fopen("repairman_check.txt", "w");
    fclose(fp);
}
NODE *readfile()            //讀檔案 
{ 
    NODE *head,*u;
    FILE *fp;
    head=(NODE *)malloc(LEN);
    head->next=NULL;
    fp=fopen("bike.txt","a+");
    fclose(fp);
    if((fp=fopen("bike.txt","r"))==NULL)  
    {  
        printf("n--->沒有找到檔案!n");  
        Sleep(1000);
        exit(0);
    } 
  /*  else
    {
        rewind(fp); 
        fgets(a,66,fp);
    } 
    */
    while(!feof(fp))
    {
        u=(NODE *)malloc(LEN);
        u->next=NULL;
        fscanf(fp,"%s %s %s n",u->number,u->mima,u->address);
        u->next=head->next;
        head->next=u;
    }
    fclose(fp);
    return (head->next);
} 
NODE_USER *readfile_user()        //讀檔案 
{ 
    NODE_USER *head,*m;
    FILE *fp;
    head=(NODE_USER *)malloc(LEN_);
    head->next=NULL;
    fp=fopen("user.txt","a+");
    fclose(fp);
    if((fp=fopen("user.txt","r"))==NULL)  
    {  
        printf("n--->沒有找到檔案!n");  
        Sleep(1000);
        exit(0);
    }
    while(!feof(fp))
    {
        m=(NODE_USER *)malloc(LEN_);
        m->next=NULL;
        fscanf(fp,"%s %s %s %s %d n",m->name_user,m->number_user,m->mima_user,m->bank_card,&m->purse);
        m->next=head->next;
        head->next=m;
    }
    fclose(fp);
    return (head->next);
} 
NODE *readfile_user_bike()
{
    char ch;
    NODE *head,*m;
    FILE *fp;
    head=(NODE *)malloc(LEN);
    head->next=NULL;
    fp=fopen("repairman_.txt","a+");
    fclose(fp);
    if((fp=fopen("repairman_.txt","r"))==NULL)  
    {  
        printf("n--->沒有找到檔案!n");  
        Sleep(1000);
        exit(0);
    }
    ch=fgetc(fp);
    if(ch==EOF)
    {
        printf("還沒有人報修呢!可以休息等等哦!nn");
        k=1;
        return NULL;
    }
    while(!feof(fp))
    {
        m=(NODE *)malloc(LEN);
        m->next=NULL;
        fscanf(fp,"%s %s %s n",m->number,m->mima,m->address);
        m->next=head->next;
        head->next=m;
    }
    fclose(fp);
    return (head->next);
}
NODE_REPAIRMAN *readfile_repairman()   //讀檔案 
{ 
    NODE_REPAIRMAN *head,*m;
    FILE *fp;
    head=(NODE_REPAIRMAN *)malloc(LEN_);
    head->next=NULL;
    fp=fopen("repairman.txt","a+");
    fclose(fp);
    if((fp=fopen("repairman.txt","r"))==NULL)  
    {  
        printf("n--->沒有找到檔案!n");  
        Sleep(1000);
        exit(0);
    }
    while(!feof(fp))
    {
        m=(NODE_REPAIRMAN *)malloc(LEN_);
        m->next=NULL;
        fscanf(fp,"%s %s %s n",m->name_repairman,m->number_repairman,m->mima_repairman);
        m->next=head->next;
        head->next=m;
    }
    fclose(fp);
    return (head->next);
}
NODE_REPAIRMAN *readfile_repairman_check()      //讀檔案 
{ 
    char ch;
    NODE_REPAIRMAN *head,*m;
    FILE *fp;
    head=(NODE_REPAIRMAN *)malloc(LEN_);
    head->next=NULL;
    fp=fopen("repairman_check.txt","a+");
    fclose(fp);
    if((fp=fopen("repairman_check.txt","r"))==NULL)  
    {  
        printf("n--->沒有找到檔案!n");  
        Sleep(1000);
        exit(0);
    }
    ch=fgetc(fp);
    if(ch==EOF)
    {
        w=0;
    }
    while(!feof(fp))
    {
        m=(NODE_REPAIRMAN *)malloc(LEN_);
        m->next=NULL;
        fscanf(fp," %s %s %s n",m->name_repairman,m->number_repairman,m->mima_repairman);
        m->next=head->next;
        head->next=m;
    }
    fclose(fp);
    return (head->next);
} 
void submit()
{
    int i; 
    system("cls");   
    printf("nnnntttt");
       printf("★正在提交您的資訊!★");
       printf("nttt     ");
      for(i=0;i<7;i++)
       {
        printf("->  ");
        Sleep(300);
    }
    system("cls");
}
void goodbye()
{
    int i; 
    system("cls");   
    printf("nnnntttt");
       printf("★正在退出!★");
       printf("nttt     ");
      for(i=0;i<5;i++)
       {
        printf("->  ");
        Sleep(300);
    }
    system("cls");
}
void show ()
{
    printf("-->使用指南!nn");
    printf("    歡迎使用共用單車系統!該管理系統面向大眾,可使用手機號自nn");
    Sleep(500);
    printf("行註冊使用者端以及維修員,使用者完成註冊後即可使用,維修員需要等nn");
    Sleep(500);
    printf("待管理員稽核通過即可工作,每個手機號只能註冊一次。nnn");
    Sleep(500);
    printf("    使用者租車收費:每半個小時1元,不滿半小時按照一小時計算。nnnnnnn");
    Sleep(500);
    printf("感謝您的閱讀。按任意鍵進入系統 ^_^ ");
    getch();
}
void check ()
{
    NODE_REPAIRMAN *d;
    int flag;
    int l = 8;
    printf("n");
    printf("-->管理員端"); 
    while (1)
    {
        Gotoxy(53, 8);
        printf("1.待認證的維修員 ");
        Gotoxy(53, 10); 
        printf("2.已註冊的維修員");
        Gotoxy(53, 12);
        printf("3.返回上一層");
        Gotoxy(52, l);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            l=l+2;
            if (l == 14)
                l = 8;
        }
        if (flag == Up)
        {
            l=l-2;
            if (l == 6)
                l = 12;
        }
        if (flag == 13)
        {
            if (l == 8)   
            {
                system("cls");
                d=readfile_repairman_check();
                print_repairman_(d);
                _getch();
            }
            if (l == 10)
            {
                system("cls");
                d=readfile_repairman();
                print_repairman_1(d);
                printf("nn->按任意鍵繼續!");
                getch();
                system("cls");
                _getch();
            }
            if (l == 12)
            {
                system("cls");
                return;
            }
        }
    }
}
void menu_1 ()
{
    printf("tt ----------------------------------------------------------- tttn");
    printf("tt|                  共用單車 長安區停放地點                  |tttn");
    printf("tt|-----------------------------------------------------------|tttn");
    printf("tt|  【0】:長安廣場      【1】:南大學城      【2】:三森    |tttn");
    printf("tt|                                                           |tttn");
    printf("tt|  【3】:紫薇都市      【4】:韋曲西街      【5】:航天城  |tttn");
    printf("tt|                                                           |tttn");
    printf("tt|  【6】:韋曲南站      【7】:秦嶺沿線                     |tttn");
    printf("tt ----------------------------------------------------------- tttn");
} 
void sign_in ()
{
    NODE_USER *n;
    NODE_REPAIRMAN *l;
    int flag;
    int z = 8;
    system("cls");
    while (1)
    {
        Gotoxy(53, 8);
        printf("1.管理員登陸");
        Gotoxy(53, 10); 
        printf("2.使用者登陸");
        Gotoxy(53, 12);
        printf("3.維修員登陸");
        Gotoxy(53, 14);
        printf("0.退出登入");
        Gotoxy(52, z);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            z=z+2;
            if (z == 16)
                z = 8;
        }
        if (flag == Up)
        {
            z=z-2;
            if (z == 6)
                z = 14;
        }
        if (flag == 13)
        {
            if (z == 8)
            {
                system("cls");
                admin();
                _getch();
            }
            if (z == 10)
            {
                    n=look_for2();
                    user (n);
                    system("cls");
                    _getch();
            }
            if (z == 12)   //許可權在老師端之上才能註冊
            {
                    l=look_for3();
                    repairman_(l);
                    _getch();
            }
            if (z == 14)
            {
                system("cls");
                return;
            }
        }
    }
}
void print ()           //輸出單車資訊 
{
    NODE *m;
    m=readfile();
    printf("車牌號           密碼       停放地點nn");
    while(m!=NULL)
    {
        printf("%stt",m->number);
        printf("%st  ",m->mima);
        if(strcmp(m->address,"0")==0)
            printf("長安廣場");
        if(strcmp(m->address,"1")==0)
            printf("南大學城");
        if(strcmp(m->address,"2")==0)
            printf("三森");
        if(strcmp(m->address,"3")==0)
            printf("紫薇都市");
        if(strcmp(m->address,"4")==0)
            printf("韋曲西街");
        if(strcmp(m->address,"5")==0)
            printf("航天城");
        if(strcmp(m->address,"6")==0)
            printf("韋曲南站"); 
        if(strcmp(m->address,"7")==0)
            printf("秦嶺沿線"); 
        m=m->next;
        printf("nn");
    }    
} 
void print_user(NODE_USER *m)
{
    int i=0;
    while(m!=NULL)
    {
        i++;
        printf("第%d個使用者:t",i);
        printf("使用者名稱:%-16s",m->name_user);
        printf("賬號:%-16st",m->number_user);
        printf("密碼:%-16st",m->mima_user);
        printf("賬戶餘額:¥ %d",m->purse);
        m=m->next;
        printf("nn");
    }
    printf("->按任意鍵繼續!");
    getch();
}
void print_repairman_(NODE_REPAIRMAN *m)
{
    int i=0;
    char n[10];
    if(w==0)
    {
        printf("n-->還沒有人申請哦!n");
        printf("n->請按任意鍵繼續。"); 
        return;
    }
    printf("-->正等待認證通過nnn"); 
    while(m!=NULL)
    {
        i++;
        printf("第%d個申報維修人員:t",i);
        printf("使用者名稱:%stt",m->name_repairman);
        printf("賬號:%stt",m->number_repairman);
        printf("密碼:%stt",m->mima_repairman);
        printf("nn是否通過?(y/n):"); 
        scanf("%s",n);
        if(strcmp(n,"y")==0 || strcmp(n,"Y")==0)
        {
            printf("nn->已通過認證!n");
            savefile_repairman(m); 
        }
        if(strcmp(n,"n")==0 || strcmp(n,"N")==0)
        {
            printf("nn->已駁回申訴!n");
        }
        m=m->next;
        printf("nn");
    }
    savefile_repairman_check_1();
}
void print_repairman_1(NODE_REPAIRMAN *m)
{
    int i=0;
    while(m!=NULL)
    {
        i++;
        printf("第%d個維修人員:",i);
        printf("使用者名稱:%-15s",m->name_repairman);
        printf("賬號:%-18s",m->number_repairman);
        printf("密碼:%s",m->mima_repairman);
        m=m->next;
        printf("nn");
    }
}
void print_repairman ()     //輸出報修單車資訊 
{
    NODE *m;
    m=readfile_user_bike();
    if(k==0)
        printf("車牌號           密碼       停放地點nn");
    while(m!=NULL)
    {
        printf("%stt",m->number);
        printf("%st  ",m->mima);
        if(strcmp(m->address,"0")==0)
            printf("長安廣場");
        if(strcmp(m->address,"1")==0)
            printf("南大學城");
        if(strcmp(m->address,"2")==0)
            printf("三森");
        if(strcmp(m->address,"3")==0)
            printf("紫薇都市");
        if(strcmp(m->address,"4")==0)
            printf("韋曲西街");
        if(strcmp(m->address,"5")==0)
            printf("航天城");
        if(strcmp(m->address,"6")==0)
            printf("韋曲南站"); 
        if(strcmp(m->address,"7")==0)
            printf("秦嶺沿線"); 
        m=m->next;
        printf("nn");
    }    
}
void welcome()         //輸入金鑰進入管理員 
{ 
    int i=0;
    char c;
    char password[100];
    char num[100];
    strcpy(num,"152323");
    loopback3:
    system("cls");
    printf(" nnnnnnnn");
    printf("tttt歡迎使用共用單車管理系統!nnn");
    printf("tttt請輸入管理員密碼:");
    while((c=getch())!=13)
    {
        if(c==8)
        {
            printf("b b");
            i--;
            continue;
        }
        password[i++]=c;
        putchar('*');
    }
    password[i]='';
    if(strcmp(password,num)==0)
    {  
        system("cls");
    }
    else
    {
        printf("tttt 密碼錯誤!");         //密碼錯誤重新輸出 
        Sleep(100);
        system("cls");
        goto loopback3;
    } 
}
void user (NODE_USER *l)
{
    time_t first,second;
    double s;
    int p=1,q=0,t=0;
    char n[100],yn[100],h[100]; 
    NODE *m,*g,*v,*y;
    NODE_USER *o,*k,*f;
    int flag;
    int z = 4,d;
    f=k=o=readfile_user();
    while(k!=NULL)
    {
        if(strcmp(l->number_user,k->number_user)==0)
            break;
        k=k->next;
    }
    printf("n");
    printf("-->使用者端"); 
    while (1)
    {
        q=0;
        Gotoxy(53, 4); 
        printf("1.附近的車");
        Gotoxy(53, 6);
        printf("2.立即用車");
        Gotoxy(53, 8); 
        printf("3.立即還車");
        Gotoxy(53, 10);
        printf("4.我要報修");
        Gotoxy(53, 12);
        printf("5.我的資訊");
        Gotoxy(53, 14);
        printf("6.我去充值");
        Gotoxy(53, 16); 
        printf("0.退出登入");
        Gotoxy(52, z);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            z=z+2;
            if (z == 18)
                z = 4;
        }
        if (flag == Up)
        {
            z=z-2;
            if (z == 2)
                z = 16;
        }
        if (flag == 13)
        {
            if(z == 4)
            {
                system("cls");
                menu_1();
                printf("請選擇您所在的地點代號:"); 
                scanf("%s",h);
                y=v=readfile();
                while(y!=NULL)
                {
                    if(strcmp(y->address,h)==0)
                    {
                        t++;
                    }
                    y=y->next;
                }
                if(t!=0)
                    printf("車牌號        密碼      停放地點nn");
                while(v!=NULL)
                {
                    if(strcmp(v->address,h)==0)
                    {
                        q=1;
                        printf("%st  t",v->number);
                        printf("%st  ",v->mima);
                        if(strcmp(v->address,"0")==0)
                            printf("長安廣場");
                        if(strcmp(v->address,"1")==0)
                            printf("南大學城");
                        if(strcmp(v->address,"2")==0)
                            printf("三森");
                        if(strcmp(v->address,"3")==0)
                            printf("紫薇都市");
                        if(strcmp(v->address,"4")==0)
                            printf("韋曲西街");
                        if(strcmp(v->address,"5")==0)
                            printf("航天城");
                        if(strcmp(v->address,"6")==0)
                            printf("韋曲南站"); 
                        if(strcmp(v->address,"7")==0)
                            printf("秦嶺沿線");
                        printf("n"); 
                    }
                    v=v->next;
                }
                if(q==0)
                {
                    printf("nn->這裡的小車都被騎走啦!"); 
                    Sleep(500);
                }
                printf("n");
                getch();
                system("cls");
            } 
            if (z == 6)   
            {
                system("cls");
                if(k->h==1)
                {
                    printf("->您已經在使用共用單車了!一個賬號只能同時租一個哦!n");
                    printf("->按任意鍵繼續。。。n");
                    getch();
                }
                else
                {
                    system("cls");
                    g=look_for (k);
                    first=time(NULL);
                    printf("->按任意鍵繼續。。。n");
                    getch();
                }
                _getch();
            }
            if (z == 8)
            {
                system("cls");
                if(k->h==1)
                {
                    send_back(g);
                    second=time(NULL);
                    s=difftime(second,first);
                    k->h=0;
                } 
                else
                {
                    printf("還沒有借車吶!快去騎共用單車哦!nn");
                    goto mn;
                     
                }
                while(1)
                {
                    if(s > 1800.0)
                    {
                        s=s-1800.0;
                        p++;
                    }
                    else
                        break;
                }
                system("cls");
                if(p==1)
                {
                    k->purse=k->purse-1;
                    printf("您總共騎行%0.1f秒,您需要支付 $1 yuann",s);
                    printf("nn賬戶餘額%d元",k->purse);
                    savefile_user_(o);    
                }    
                else
                    printf("您總共騎行%0.1f秒,您需要支付 $%d yuann",s,p);
                mn:
                _getch();
            }
            if (z == 10)
            {
                system("cls");
                loop__1:
                while(1)
                {
                    printf("請輸入您要報修的共用單車的車牌號:");
                    scanf("%s",n);
                    m=look_for_bike (n);
                    if(m!=0)
                    {
                        break;
                    }
                }
                printf("您確定要報修嗎?(y/n)");
                scanf("%s",yn);
                for(;;)
                {
                    if(strcmp(yn,"y")==0||strcmp(yn,"Y")==0)
                    {
                        printf("感謝您的反饋!如果我們確認申報無誤的話,會給您加分哦!n");
                        savefile_user_bike(m);
                        break;
                    }
                    else if(strcmp(yn,"n")==0||strcmp(yn,"N")==0)
                    {
                        printf("->已取消操作!n");
                        Sleep(500);
                        system("cls");
                        break;
                    }
                    else if(strcmp(yn,"y")!=0 && strcmp(yn,"Y")!=0 && strcmp(yn,"n")!=0 && strcmp(yn,"N")!=0)
                    {
                        printf("親!只能輸入y/n哦!手誤的話重新輸入吧!^_^n");
                        Sleep(500);
                        system("cls");
                        goto loop__1;
                    }
                }
                _getch();
            }
            if (z == 12)
            {
                system("cls");
                look_for_user (l);
                printf("瀏覽完畢後,按任意鍵繼續!n");
                _getch();
            }
            if (z == 14)
            {
                system("cls");
                printf("您已係結充值卡!請輸入充值金額:");
                scanf("%d",&d);
                while(f!=NULL)
                {
                    if(strcmp(l->number_user,f->number_user)==0)
                        break;
                    f=f->next;
                } 
                printf("n當前餘額%d元,充值後為%d元",f->purse,f->purse+d);
                f->purse=f->purse+d;
                savefile_user_(o);
                printf("nn->充值成功!"); 
                Sleep(1000);
                system("cls");
            }
            if (z == 16)
            {
                return;
            }
        }
    }
}
void repairman_ (NODE_REPAIRMAN *l)
{
    int flag;
    int z = 8;
    system("cls");
    printf("n->維修員端");
    while (1)
    {
        Gotoxy(53, 8);
        printf("1.我的資訊");
        Gotoxy(53, 10); 
        printf("2.使用者報修車輛");
        Gotoxy(53, 12);
        printf("0.返回上一層");
        Gotoxy(52, z);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            z=z+2;
            if (z == 14)
                z = 8;
        }
        if (flag == Up)
        {
            z=z-2;
            if (z == 6)
                z = 12;
        }
        if (flag == 13)
        {
            if (z == 8)
            {
                system("cls");
                look_for_repairman (l);
                _getch();
            }
            if (z == 10)
            {
                    system("cls");
                    print_repairman ();
                    _getch();
            }
            if (z == 12)   //許可權在老師端之上才能註冊
            {
                system("cls");
                return; 
            }
        }
    }    
}
void admin ()
{
    NODE_USER *m;
    welcome(); 
    NODE *phead;
    int flag;
    int l = 4;
    printf("n");
    printf("-->管理員端"); 
    while (1)
    {
        Gotoxy(53, 4);
        printf("1.新增單車");
        Gotoxy(53, 6); 
        printf("2.刪除單車");
        Gotoxy(53, 8);
        printf("3.修改單車密碼");
        Gotoxy(53, 10); 
        printf("4.查詢單車");
        Gotoxy(53, 12);
        printf("5.所有單車及其盈利");
        Gotoxy(53, 14);
        printf("6.使用者資訊");
        Gotoxy(53, 16);
        printf("7.維修員資訊");
        Gotoxy(53, 18); 
        printf("0.退出登入");
        Gotoxy(52, l);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            l=l+2;
            if (l == 20)
                l = 4;
        }
        if (flag == Up)
        {
            l=l-2;
            if (l == 2)
                l = 18;
        }
        if (flag == 13)
        {
            if (l == 4)
            {
                system("cls");
                phead=input ();
                printf("a 儲存成功!");
                Sleep(500);
                system("cls");
                _getch();
            }
            if (l == 6)
            {
                system("cls");
                delete_node ();
                system("cls");
                _getch();
            }
            if (l == 8)   
            {
                system("cls");
                modify ();
                system("cls");
                _getch();
            }
            if (l == 10)
            {
                system("cls");
                look_for_0();
                system("cls");
                _getch();
            }
            if (l == 12)
            {
                system("cls");
                printf("--->讀取成功!nn");
                print() ;
                getch();
            //    system("cls");
                _getch();
            }
            if (l == 14)
            {
                system("cls");
                m=readfile_user();
                print_user(m);
                system("cls");
                _getch();
            }
            if (l == 16)
            {
                system("cls");
                check();
                system("cls");
                _getch();
            }
            if (l == 18)
            {
                system("cls");
                return;
            }
        }
    }    
}
void choice()
{
    char c[5];
    int flag;
    int z = 8;
    while (1)
    {
        Gotoxy(53, 8);
        printf("1.登入");
        Gotoxy(53, 10); 
        printf("2.註冊");
        Gotoxy(53, 12);
        printf("3.退出");
        Gotoxy(52, z);
        printf("★");
        flag = _getch();
        if (flag == Down)
        {
            z=z+2;
            if (z == 14)
                z = 8;
        }
        if (flag == Up)
        {
            z=z-2;
            if (z == 6)
                z = 12;
        }
        if (flag == 13)
        {
            if (z == 8)
            {
                sign_in ();
            }
            if (z == 10)
            {
                    NODE_USER *m,*n;
                    m=(NODE_USER *)malloc(LEN_);
                    m->next=NULL;
                    NODE_REPAIRMAN *k,*l;
                    k=(NODE_REPAIRMAN *)malloc(LEN_1);
                    k->next=NULL;
                    system("cls");
                    printf("註冊使用者請按1t註冊維修員請按2(需要等待稽核)nn");
                    printf("請選擇:");
                    scanf("%s",c);
                    if(strcmp(c,"1")==0)
                    {
                        printf("★親!請按照指示操作完成使用者註冊哦!n");
                        for(;;)
                        {
                            printf("nn請輸入繫結的手機號(賬號):");
                            scanf("%s",m->number_user);          //報修時查詢單車資訊  
                            n=readfile_user();
                            while(n!=NULL)
                            {
                                if(strcmp(n->number_user,m->number_user)==0)
                                {
                                    printf("親!這個手機號已經被註冊過了呦!");
                                    break;
                                }
                                n=n->next;
                            }
                            if(n==NULL)
                            {
                                printf("ttttt-------這個賬號還沒有人註冊過呢!");
                                break;    
                            }
                            printf("n");
                        } 
                        for(;;)
                        {
                            printf("nn請設定密碼:");
                            scanf("%s",m->mima_user);
                            if(strlen(m->mima_user)<=2)
                                printf("ttttt安全係數★★,很不安全哦!");
                            if(strlen(m->mima_user)<=6&&strlen(m->mima_user)>2)
                                printf("ttttt安全係數★★★,一般安全!");
                            if(strlen(m->mima_user)>7)
                                printf("ttttt安全係數★★★★★,非常安全!");    
                            printf("nn請確認密碼:"); 
                            scanf("%s",m->mima_user2);
                            printf("nn請輸入您的年齡:");
                            scanf("%d",&m->age);
                            if(m->age <= 10)
                            {
                                printf("年齡過小哦!長大再騎吧!共用單車伴你成長!n");
                                system("cls");
                                break;
                            }
                            if(m->age >= 65)
                            {
                                printf("您已超過使用年限!抱歉!n");
                                system("cls");
                                break;
                            }
                            if(strcmp(m->mima_user,m->mima_user2)==0)
                            {
                                system("cls");
                                submit();
                                printf("n->註冊成功!");
                                printf("nn快為自己起一個霸氣的使用者名稱吧!n");
                                scanf("%s",m->name_user);
                                printf("nn請先給自己錢包充值哦!(200元)");
                                printf("nn請輸入充值卡號(系統將自動為您扣除):"); 
                                scanf("%s",m->bank_card);
                                m->purse=200;
                                savefile_user(m); 
                                break;
                            }
                            if(strcmp(m->mima_user,m->mima_user2)!=0)
                            {
                                printf("a親,兩次輸入密碼不一樣哦!n");
                                Sleep(500);
                            }    
                        }
                    }
                    if(strcmp(c,"2")==0)
                    {
                        printf("★親!請按照指示操作完成維修員註冊哦!n");
                        for(;;)
                        {
                            printf("nn請輸入繫結的手機號(賬號):");
                            scanf("%s",k->number_repairman);
                            getchar();
                            l=readfile_repairman();
                            while(l!=NULL)
                            {
                                if(strcmp(l->number_repairman,k->number_repairman)==0)
                                {
                                    printf("親!這個手機號已經被註冊過了呦!");
                                    break;
                                }
                                l=l->next;
                            }
                            if(l==NULL)
                            {
                                printf("ttttt-------這個賬號還沒有人註冊過呢!");
                                break;    
                            }
                            printf("n");
                        } 
                        for(;;)
                        {
                            printf("nn請設定密碼:");
                            scanf("%s",k->mima_repairman);
                            getchar();
                            if(strlen(k->mima_repairman)<=2)
                                printf("ttttt安全係數★★,很不安全哦!");
                            if(strlen(k->mima_repairman)<=6&&strlen(k->mima_repairman)>2)
                                printf("ttttt安全係數★★★,一般安全!");
                            if(strlen(k->mima_repairman)>7)
                                printf("ttttt安全係數★★★★★,非常安全!");    
                            printf("nn請確認密碼:"); 
                            scanf("%s",k->mima_repairman2);
                            printf("nn請輸入您的年齡:");
                            scanf("%d",&k->age);
                            getchar();
                            if(k->age <= 10)
                            {
                                printf("年齡過小哦!不能註冊維修員,共用單車伴你成長!n");
                                system("cls");
                                break;
                            }
                            if(k->age >= 65)
                            {
                                printf("您已超過使用年限!抱歉!n");
                                system("cls");
                                break;
                            }
                            if(strcmp(k->mima_repairman,k->mima_repairman2)==0)
                            {
                                system("cls");
                                submit();
                                printf("n->申請成功!等待管理員稽核!");
                                printf("nn快為自己起一個霸氣的使用者名稱吧!n");
                                scanf("%s",k->name_repairman);
                                savefile_repairman_check(k); 
                                break;
                            }
                            if(strcmp(k->mima_repairman,k->mima_repairman2)!=0)
                            {
                                printf("a親,兩次輸入密碼不一樣哦!n");
                                Sleep(500);
                            }    
                        }
                    }
                    _getch();
            }
            if (z == 12)  
            {
                goodbye();
                exit(0);
            }
        }
    }
}
//    admin();        //管理員
//    user();      //使用者
//repairman();      //維修員 
int main (void)
{
    system("color F1");
    show ();
    system("cls");
    choice();
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com