C語言實現自行車存放管理系統
本文實例為大傢分享瞭C語言實現自行車存放管理系統的具體代碼,供大傢參考,具體內容如下
系統包括以下內容
1.數據錄入:錄入系統基本數據,用數組或鏈表組織;
2.數據存儲:用文件的形式將錄入的數據存儲;
3.數據讀寫:對文件中的數據可以進行讀寫操作;
4.數據修改:可以對已存在的舊數據進行修改操作;
5.數據插入:可以將新數據插入到任意指定的位置;
6.數據刪除:可以對已存在的舊數據進行刪除操作;
7.數據查詢:按要求對數據進行查詢,至少含兩項
簡單查詢以及一項組合查詢;
8.數據統計:按要求對數據進行統計
含簡單統計及綜合統計;
9.數據排序:按要求對數據進行排序
含升序排序及降序排序;
10.數據報表:按要求對數據打印報表,
依規定的報表格式對數據打印報表;
11.界面:設計總體菜單界面。
附加項目:
登錄、註冊部分;
(密碼設置密碼的隱式輸出、簡單的加密解密)
附代碼:
#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> struct bicycle{ char tele_num[12];//用戶的電話號碼 char name[13];//用戶的姓名 char sex[7];//用戶的性別 char bic_num[12];//自行車的編號 struct bicycle *next; }; int iCount=0; struct bicycle *pHead=NULL; void key(); void menu(); void create(); void print(); void insert(); void search(); void dele(); void modify(); void excheng(struct bicycle *pStra,struct bicycle *Midd); void sort(); int main(){ menu(); printf("123"); return 0; } //密碼管理頁面 void key(){ char key[20],m[20]; FILE *k; k=fopen("key.txt","r"); if(k==NULL) { k=fopen("key.txt","wt"); printf("請創建管理密碼:\n"); scanf("%s",key); fprintf(k,"%s",key); fclose(k); printf("恭喜您創建成功!\n"); getchar(); printf("按任意鍵繼續..."); getchar(); return ; } else { fscanf(k,"%s",m); fclose(k); printf("請輸入管理密碼:"); scanf("%s",key); if(strcmp(m,key)==0) { printf("密碼正確!\n"); getchar(); printf("按任意鍵繼續..."); getchar(); return ; } else { printf("密碼錯誤!\n"); getchar(); printf("按任意鍵繼續..."); getchar(); return ; } } } //顯示景點的信息 void menu(){ key(); int select=-1; while(select!=0){ system("cls"); printf("\n\n\t\t\t\t\t\t\t==============歡迎使用自行車管理系統==============\n"); printf("\t\t\t\t\t\t\t\t=======請選擇功能列表=======\n"); printf("\t\t\t\t\t\t\t\t1.錄入自行車的信息LV5\n"); printf("\t\t\t\t\t\t\t\t2.修改自行車的信息LV5\n"); printf("\t\t\t\t\t\t\t\t3.刪除自行車的信息LV5\n"); printf("\t\t\t\t\t\t\t\t4.查詢自行車的信息LV5\n"); printf("\t\t\t\t\t\t\t\t5.打印自行車的信息LV5\n"); printf("\t\t\t\t\t\t\t\t6.自行車信息的排序LV5\n"); printf("\t\t\t\t\t\t\t\t7.插入自行車的信息LV5\n"); printf("\t\t\t\t\t\t\t\t0.退 出 菜 單LV5\n"); printf("\n請選擇:"); scanf("%d",&select); switch(select){ case 1: create(); break; case 2: modify(); break; case 3: dele(); break; case 4: search(); break; case 5: print(); break; case 6: sort(); break; case 7: insert(); break; case 0:break; default: exit(1); break; } } } //創建鏈表函數 void create(){ //頁面優化 system("cls"); struct bicycle *pEnd,*pNew; struct bicycle *p; pEnd=pNew=(struct bicycle *)malloc(sizeof(struct bicycle)); printf("請輸入存放自行車的信息(退出請按0):\n"); //錄入自行車編號,編號不可以重復 int flag1=1,flag2,n; struct bicycle *pTemp; printf("\n自行車的編號(退出請按0):"); scanf("%s",pNew->bic_num); while(flag1){ if(strcmp(pNew->bic_num,"0")==0) { flag1=1; break; } else{ pTemp=pHead; n=iCount; flag2=1; while(n&&flag2){ if(strcmp(pTemp->bic_num,pNew->bic_num)==0) flag2=0; pTemp=pTemp->next; n=n-1; } if(flag2==0){ printf("請重新輸入,自行車編號%s存在!(退出請按0):\n",pNew->bic_num); printf("自行車的編號:"); scanf("%s",pNew->bic_num); flag1=1; } if(flag2==1) flag1=0; } } //錄入其他信息,如果flag1=0,則表明要退出,那麼其他信息不用再錄 if(flag1!=1){ printf("姓名:"); scanf("%s",pNew->name); //性別隻能輸入female或male,否則是不規范的 while(1){ printf("性別(female或male):"); scanf("%s",pNew->sex); if(strcmp(pNew->sex,"female")==0||strcmp(pNew->sex,"male")==0) break; else printf("性別輸入不規范,請核對後重輸!\n"); } //電話必須11位數,否則是不規范的 while(1){ printf("電話(11位數):"); scanf("%s",pNew->tele_num); if(strlen(pNew->tele_num)==11) break; else printf("電話輸入不規范,必須11位數!\n"); } } while(strcmp(pNew->bic_num,"0")!=0) { iCount++; if(pHead==NULL){ pNew->next=NULL; pEnd=pNew; pHead=pNew; } else{ p=pHead; while(p&&p->next!=NULL) p=p->next; { p->next=pNew; pNew->next=NULL; } } pNew=(struct bicycle *)malloc(sizeof(struct bicycle)); printf("\n自行車的編號(退出請按0):"); scanf("%s",pNew->bic_num); flag1=1;//每次循環結束flag1=1退出;flag1=0則繼續,所以要值0 while(flag1){ if(strcmp(pNew->bic_num,"0")==0){ flag1=1; break; } else{ pTemp=pHead; n=iCount; flag2=1; while(n&&flag2){ if(strcmp(pTemp->bic_num,pNew->bic_num)==0) flag2=0; pTemp=pTemp->next; n=n-1; } if(flag2==0) { printf("請重新輸入,自行車的編號%s存在!(退出請按0):\n",pNew->bic_num); printf("自行車的編號:"); scanf("%s",pNew->bic_num); flag1=1; } if(flag2==1) flag1=0; } } //錄入其他信息,如果flag1=0,則表明要退出,那麼其他信息不用再錄 if(flag1!=1){ printf("姓名:"); scanf("%s",pNew->name); //性別隻能輸入female或male,否則是不規范的 while(1){ printf("性別(female或male):"); scanf("%s",pNew->sex); if(strcmp(pNew->sex,"female")==0||strcmp(pNew->sex,"male")==0) break; else printf("性別輸入不規范,請核對後重輸!\n"); } //電話必須11位數,否則是不規范的 while(1){ printf("電話(11位數):"); scanf("%s",pNew->tele_num); if(strlen(pNew->tele_num)==11) break; else printf("電話輸入不規范,必須11位數!\n"); } } //22 } free(pNew); } //輸出鏈表自行車的信息 void print(){ //頁面優化 system("cls"); printf("\n\n\t\t\t\t===================5.打印自行車的信息===================\n"); struct bicycle *pTemp; int iIndex=1; printf("**********本名單中共有%d個自行車信息,所有的信息如下:**********\n",iCount); printf("序號 姓名 性別 電話 自行車編號 \n"); pTemp=pHead; while(pTemp!=NULL){ printf("%d %s %s %s %s\n",iIndex,pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num); pTemp=pTemp->next; iIndex++; } printf("按任意鍵返回上一級"); getch(); } //插入自行車的信息 void insert(){ //頁面優化 system("cls"); printf("\n\n\t\t\t\t===================7.插入自行車的信息===================\n"); printf("#\n說明:插入任意位置都可以\n#"); create(); printf("插入信息成功,"); printf("按任意鍵返回上一級"); getch(); } //信息查詢函數 void search(){ //頁面優化 printf("\n\n\t\t\t\t===================4.查詢自行車的信息==================="); int select=-1; while(select!=0){ system("cls"); printf("\n\t\t=======請選擇功能列表=======\n"); printf("\t\t\t1.按自行車的編號查詢(lv4)\n"); printf("\t\t\t2.按 姓 名 查 詢 (lv1)\n"); printf("\t\t\t0.退出此頁面(lv4)\n"); printf("請選擇:"); scanf("%d",&select); int flag=1,flag1=1; char number[12]; char name[12]; struct bicycle *pTemp=pHead; //按自行車的編號查詢 if(select==1){ printf("請輸入你要查找的自行車編號:"); scanf("%s",number); while(pTemp!=NULL&&flag) { if(strcmp(pTemp->bic_num,number)==0) { printf("%s找到瞭,具體信息如下:\n\n",number); printf("\t姓名 性別 電話 自行車編號 \n"); printf("\t%s %s %s %s\n",pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num); printf("\n"); flag=0; } pTemp=pTemp->next; } if(flag==1) printf("編號%s不存在!\n",number); } //按姓名查詢 if(select==2){ printf("請輸入你要查找的姓名:"); scanf("%s",name); while(pTemp!=NULL&&flag) { if(strcmp(pTemp->name,name)==0) { printf("%s找到瞭,具體信息如下\n",name); printf("\t姓名 性別 電話 自行車編號 \n"); printf("\t%s %s %s %s\n",pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num); printf("\n"); flag=0; } pTemp=pTemp->next; } if(flag==1) printf("姓名%s不存在!",name); } printf("按任意鍵返回上一級"); getch(); } } //刪除信息函數 void dele(){ //頁面優化 system("cls"); printf("\n\n\t\t\t\t===================3.刪除自行車的信息(按編號)==================="); int select=-1; while(select!=0){ printf("\n\t\t=======請選擇功能列表=======\n"); printf("\t\t\t1.按自行車的編號刪除(lv4)\n"); printf("\t\t\t2.按 姓 名 刪 除 (lv1)\n"); printf("\t\t\t0.退出此頁面(lv4)\n"); printf("請選擇:"); scanf("%d",&select); if(select==0) return; else if(select==1||select==2) break; else printf("輸入有誤請重新輸入\n"); } if(select==1){ if(iCount==0) printf("\n\n暫無數據無法進行此操作,按任意鍵退出!\n"); else { //33 char number[12]; int i,flag=1; char option; struct bicycle *pTemp; struct bicycle *pPre; pTemp=pHead; int iIndex=0; printf("\n請輸入要刪除自行車的編號:"); scanf("%s",number); while(pTemp!=NULL&&flag){ if(strcmp(pTemp->bic_num,number)==0){ printf("\n%s找到瞭,將要刪除的信息如下\n\n",number); //顯示將要刪除人的信息 printf("\t姓名 性別 電話 自行車編號 \n"); printf("\t%s %s %s %s\n",pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num); printf("\n"); flag=0; printf("確認刪除請輸1,否則按任意數字鍵退出\n"); scanf("%d",&option); } pTemp=pTemp->next; iIndex++; } if(flag==1) {printf("編號%s不存在!",number); return;} if(option==1){ pTemp=pHead; pPre=pTemp;//可能多餘 //printf("----------刪除第%d個學生----------\n",iIndex); if(iIndex!=1) { for(i=1;i<iIndex;i++) { pPre=pTemp; pTemp=pTemp->next; } pPre->next=pTemp->next; } if(iIndex==1) pHead=pTemp->next; free(pTemp); iCount--; printf("刪除成功按任意鍵退出!"); } else printf("刪除失敗按任意鍵退出!"); } //33 getch(); } else{ if(iCount==0) printf("\n\n暫無數據無法進行此操作,按任意鍵退出!\n"); else { //33 char name[12]; int i,flag=1; char option; struct bicycle *pTemp; struct bicycle *pPre; pTemp=pHead; int iIndex=0; printf("\n請輸入要刪除自行車對應戶主的姓名:"); scanf("%s",name); while(pTemp!=NULL&&flag){ if(strcmp(pTemp->name,name)==0){ printf("\n%s找到瞭,將要刪除的信息如下\n\n",name); //顯示將要刪除人的信息 printf("\t姓名 性別 電話 自行車編號 \n"); printf("\t%s %s %s %s\n",pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num); printf("\n"); flag=0; printf("確認刪除請輸1,否則按任意數字鍵退出\n"); scanf("%d",&option); } pTemp=pTemp->next; iIndex++; } if(flag==1) {printf("姓名%s不存在!",name); return;} if(option==1){ pTemp=pHead; pPre=pTemp;//可能多餘 //printf("----------刪除第%d個學生----------\n",iIndex); if(iIndex!=1) { for(i=1;i<iIndex;i++) { pPre=pTemp; pTemp=pTemp->next; } pPre->next=pTemp->next; } if(iIndex==1) pHead=pTemp->next; free(pTemp); iCount--; printf("刪除成功按任意鍵退出!"); } else printf("刪除失敗按任意鍵退出!"); } //33 getch(); } } //2.修改自行車的信息 void modify(){ //頁面優化 system("cls"); printf("\n\n\t\t\t\t===================2.修改自行車的信息==================="); int post; int flag=1,flag1; char number[12]; struct bicycle *pTemp=pHead,*pPre=pTemp; printf("\n請輸入你要修改自行車信息對應自行車的編號:"); scanf("%s",number); while(pTemp!=NULL&&flag) { if(strcmp(pTemp->bic_num,number)==0) { printf("將要修改的學號%s具體信息如下\n",number); printf("\t姓名 性別 電話 自行車編號 \n"); printf("\t%s %s %s %s\n",pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num); printf("\n"); flag=0; } pPre=pTemp;//保存pTemp pTemp=pTemp->next; } if(flag==1) printf("你要修改的學號%s不存在!",number); else { printf("確認修改請按1,放棄請按任意數字鍵!\n請選擇:"); scanf("%d",&post); while(post==1) { printf("請選擇你要修改的項目(1.姓名 2.性別 3.電話號碼 4.自行車的編號 5.修改全部)\n"); scanf("%d",&flag1); if(flag1==1) { printf("新姓名:"); scanf("%s",pPre->name); printf("修改完成,按任意鍵退出!"); } else if(flag1==2) { printf("新性別:"); scanf("%s",pPre->sex); printf("修改完成,按任意鍵退出!"); } else if(flag1==3) { while(1){ printf("電話(11位數):"); scanf("%s",pPre->tele_num); if(strlen(pPre->tele_num)==11) break; else printf("電話輸入不規范,必須11位數!\n"); } printf("修改完成,按任意鍵退出!"); } else if(flag1==4) { printf("新編號:"); scanf("%d",&pPre->bic_num); printf("修改完成,按任意鍵退出!"); } else{ printf("新姓名:"); scanf("%s",pPre->name); printf("新性別:"); scanf("%s",pPre->sex); while(1){ printf("電話(11位數):"); scanf("%s",pPre->tele_num); if(strlen(pPre->tele_num)==11) break; else printf("電話輸入不規范,必須11位數!\n"); } printf("新編號:"); scanf("%s",pPre->bic_num); } break; } } printf("修改完成,按任意鍵退出"); getch(); } //交換函數 void excheng(struct bicycle *pStra,struct bicycle *pMidd){ int t; struct bicycle *pTemp; pTemp=(struct bicycle *)malloc(sizeof(struct bicycle)); strcpy(pTemp->tele_num,pStra->tele_num); strcpy(pStra->tele_num,pMidd->tele_num); strcpy(pMidd->tele_num,pTemp->tele_num); strcpy(pTemp->bic_num,pStra->bic_num); strcpy(pStra->bic_num,pMidd->bic_num); strcpy(pMidd->bic_num,pTemp->bic_num); strcpy(pTemp->name,pStra->name); strcpy(pStra->name,pMidd->name); strcpy(pMidd->name,pTemp->name); strcpy(pTemp->sex,pStra->sex); strcpy(pStra->sex,pMidd->sex); strcpy(pMidd->sex,pTemp->sex); free(pTemp); } //6.自行車信息的排序 void sort(){ //頁面優化 printf("\n\n\t\t===================4.排序系統==================="); int i,j; struct bicycle *pStra,*pMidd; int result; int select=-1; while(select!=0) { system("cls"); printf("\n\t\t\t=======請選擇功能列表=======\n"); printf("\t\t\t1.按自行車編號升序排序(lv4)\n"); printf("\t\t\t2.按自行車編號降序排序(lv1)\n"); printf("\t\t\t3.按姓名升序排序(lv4)\n"); printf("\t\t\t4.按姓名降序排序(lv1)\n"); printf("\t\t\t0.退出此頁面(lv4)\n"); printf("請選擇:"); scanf("%d",&select); result=select; if(select!=1&&select!=2&&select!=3&&select!=4) return; pStra=pHead; pMidd=pStra->next; for(i=0;i<iCount;i++) { pStra=pHead; pMidd=pStra->next; for(j=0;j<iCount-i-1&&pMidd!=NULL;j++) { if(result==1) {if(strcmp(pStra->bic_num,pMidd->bic_num)>0) excheng(pStra,pMidd);} else if(result==2) {if(strcmp(pStra->bic_num,pMidd->bic_num)<0) excheng(pStra,pMidd);} else if(result==3) {if(strcmp(pStra->name,pMidd->name)>0) excheng(pStra,pMidd);} else if(result==4) {if(strcmp(pStra->name,pMidd->name)<0) excheng(pStra,pMidd);} pStra=pMidd; pMidd=pMidd->next; } } printf("\t\t\t5.顯示排完序後的結果為:\n\n"); printf("------------------------------------------------------"); struct bicycle *pTemp; int iIndex=1; printf("**********本名單中共有%d個自行車信息,所有的信息如下:**********\n",iCount); printf("序號 姓名 性別 電話 自行車編號 \n"); pTemp=pHead; while(pTemp!=NULL){ printf("%d %s %s %s %s\n",iIndex,pTemp->name,pTemp->sex,pTemp->tele_num,pTemp->bic_num); pTemp=pTemp->next; iIndex++; } printf("------------------------------------------------------"); printf("\n\n排序成功,按任意鍵返回!"); getch(); } }
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。