<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了C語言實現共用單車管理系統的具體程式碼,供大家參考,具體內容如下
1.登陸:登陸分為使用者登陸,管理員登陸以及維修員登入,登陸後不同的使用者所執行的操作不同,許可權不同。
(1)管理員登入:管理員登陸之後,可使用鍵盤的上下鍵來控制選單上的選項,管理員許可權不多,可執行最多的操作,可以對單車進行投放,刪除,修改,查詢,車牌號排序,檢視所有單車資訊,所有使用者資訊,管理員能通過或駁回正在申請註冊的維修員,還可以檢視完全通過認證的維修員。
(2)使用者登入:使用者登入時需要輸入註冊時的賬號和密碼,或者是之前註冊的有效賬號及密碼,使用者可以檢視自己附近的車,立即用車當車密碼出現的時候就開始計時了,還車後停止計時,一個時間段內沒有還車不能再借車了,另外還有報修,報修的資訊會上傳到維修員那裡,還可以檢視自己的資訊修改自己的資訊,當用戶賬號不足100元時不能再借車了,所以還有充值這一項功能。
(3)維修員登入:維修員登入時也需要賬戶和密碼(管理員認證的),維修員許可權較大,只可以檢視自己的資訊,修改自己的資訊,以及檢視使用者報修的單車資訊。
2.註冊:註冊有使用者註冊和維修員註冊。
(1)使用者註冊:使用者註冊時,手機號即為登入賬戶,有查重的功能,每個手機號只能註冊一個使用者,設定密碼時,系統會對你的密碼的安全係數進行評分,以及需要確認密碼,兩次不一致註冊失敗,輸入年齡,年齡不滿10歲不可註冊,註冊成功後需要起一個使用者名稱,需要繫結充值卡,首次充值200元,即可登入。
(2)維修員註冊:維修員註冊時,手機號即為登入賬戶,也有查重的功能,每個手機號只能註冊一個使用者,設定密碼時,系統會對你的密碼的安全係數進行評分,以及需要確認密碼,兩次不一致註冊失敗,後需要起一個使用者名稱,輸入年齡,年齡不滿18歲不可註冊,但此時並沒有註冊成功,只是完成了申請,不可登入,等待管理員認證,通過,註冊成功,即可登入,駁回,註冊失敗。
3.增加:增加單車資訊到檔案 中。
4.修改:修改單車資訊,修改使用者個人資訊,修改維修員個人資訊。
5.刪除:刪除單車。
6.查詢:查詢單車並按所選順序檢視。
(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。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45