最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言版停車位管理系統(tǒng)

 更新時間:2022年03月15日 12:02:58   作者:Judicious_x  
這篇文章主要為大家詳細(xì)介紹了C語言版停車位管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)停車位管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

簡單功能介紹

1、錄入車輛信息
2、查找車輛信息
3、刪除車輛信息
4、修改車輛信息
5、查找區(qū)域車輛信息
6、排序(按照車主姓名排序)
7、展示所有車輛信息
8、將錄入的數(shù)據(jù)保存在文件中
9、將文件中的數(shù)據(jù)讀出

算法構(gòu)造

鏈表的增刪改查

  • 結(jié)構(gòu)體的定義
typedef struct Parking
{
? ? char name[20]; ? ? ? ?//車主姓名
? ? char carname[10]; ? ? //車牌號
? ? long information; ? ? //車主聯(lián)系方式
? ? char region; ? ? ? ? ?//車位區(qū)域編號
? ? int num; ? ? ? ? ? ? ?//車位編號
? ? struct Parking *next; //指針
}Parking;
  • 錄入車輛信息

利用尾插法插入新添加的數(shù)據(jù)

Parking *Addcar(Parking *head) ? ? ?//錄入車輛信息
{
? ? int x;
? ? system("cls"); ?//清屏操作
? ? system("color B"); ? //改變字體顏色
? ? Parking *p = head;
? ? while(p->next!=NULL) ? //利用尾插法插入新用戶信息
? ? {
? ? ? ? p = p->next;
? ? }
? ? printf("輸入需要添加的車輛個數(shù):");
? ? scanf("%d", &x);
? ? while(x--) ? //輸入用戶信息
? ? {
? ? ? ? system("cls");
? ? ? ? Parking *Node = (Parking *)malloc(sizeof(Parking));
? ? ? ? printf("\n輸入用戶姓名:");
? ? ? ? scanf("%s",Node->name);
? ? ? ? printf("\n輸入車牌號:");
? ? ? ? scanf("%s",Node->carname);
? ? ? ? printf("\n輸入車主聯(lián)系方式:");
? ? ? ? scanf("%ld",&Node->information);
? ? ? ? printf("\n輸入車位區(qū)域編號:");
? ? ? ? getchar();
? ? ? ? scanf("%c",&Node->region);
? ? ? ? printf("\n輸入車位編號:");
? ? ? ? scanf("%d",&Node->num);
? ? ? ? Node->next=NULL;
? ? ? ? p->next = Node;
? ? ? ? p = p->next;
? ? }
? ? printf("\n輸入完成!");
? ? F(head); ? //打印添加后的用戶信息
? ? printf("\n按任意鍵返回主頁\n");
? ? getch(); ? ?//用來顯示結(jié)果
? ? return head;
}
  • 刪除用戶信息

根據(jù)用戶名匹配查找用戶信息進(jìn)行刪除

Parking *Delete(Parking *head) ? ? ?//刪除用戶信息
{
? ? char name[20];
? ? system("cls");
? ? system("color B");
? ? printf("\n\t\t輸入你要刪除的用戶姓名:");
? ? scanf("%s", name);
? ? Parking *p = head;
? ? Parking *q = p->next;
? ? while(q) ? //找到需要刪除數(shù)據(jù)的前結(jié)點(diǎn)
? ? {
? ? ? ? if(strcmp(q->name,name)==0) ?//判斷字符串是否相等函數(shù)
? ? ? ? {
? ? ? ? ? ? p->next = q->next;
? ? ? ? ? ? free(q); ?//釋放內(nèi)存空間
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? p = q;
? ? ? ? q = p->next;
? ? }
? ? if(p->next==NULL)
? ? {
? ? ? ? printf("\n\t\t未找到該用戶信息!");
? ? }
? ? else
? ? {
? ? ? ? printf("\n\t\t刪除成功??!");
? ? ? ? F(head);
? ? }
? ? printf("\n\t\t按任意鍵返回主菜單");
? ? getch();
? ? return head;
}
  • 查找用戶信息

根據(jù)字符串匹配查找用戶信息

void ?Find(Parking *head) ? ? ?//查找用戶信息
{
? ? system("cls");
? ? system("color B");
? ? char name[20];
? ? printf("\n\t\t輸入你要查找的用戶姓名:");
? ? scanf("%s", name);
? ? Parking *p = head;
? ? while(p->next)
? ? {
? ? ? ? if(strcmp(p->next->name,name)==0)
? ? ? ? {
? ? ? ? ? ? printf("找到了!\n");
? ? ? ? ? ? printf("該用戶的信息如下:");
? ? ? ? ? ? printf("\n\t\t---用戶姓名 ? ? ? ? ? ?%s",p->next->name);
? ? ? ? ? ? printf("\n\t\t---車牌號 ? ? ? ? ? ? ?%s",p->next->carname);
? ? ? ? ? ? printf("\n\t\t---車主聯(lián)系方式 ? ? ? ?%ld",p->next->information);
? ? ? ? ? ? printf("\n\t\t---車位區(qū)域編號 ? ? ? ?%c",p->next->region);
? ? ? ? ? ? printf("\n\t\t---車位編號 ? ? ? ? ? ?%d",p->next->num);
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? p = p->next;
? ? }
? ? if(p->next==NULL)
? ? ? ? printf("\n\t\t沒有找到該用戶信息");
? ? printf("\n\t\t按任意鍵返回主菜單");
? ? getch();
}
  • 修改用戶信息

查找用戶找到后顯示該用戶的信息,根據(jù)用戶選擇修改信息

Parking *Change(Parking *head) ? ? ?//修改用戶信息
{
? ? char name[20];
? ? system("cls");
? ? system("color B");
? ? printf("輸入需要修改的用戶姓名:");
? ? scanf("%s", name);
? ? Parking *p = head->next;
? ? while(p)
? ? {
? ? ? ? if(strcmp(p->name,name)==0)
? ? ? ? {
? ? ? ? ? ? system("cls");
? ? ? ? ? ? system("color B");
? ? ? ? ? ? int x;
? ? ? ? ? ? printf("\n\t\t ? ? ? ? ? ? ? ? ? ? ? ? ? --該用戶信息-- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\n\n");
? ? ? ? ? ? printf("\t---------------------------------------------------------------------\n");
? ? ? ? ? ? printf("\t車主姓名--------車牌號-------車主聯(lián)系方式---車位區(qū)域編號-----車位編號----\n");
? ? ? ? ? ? printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num);
? ? ? ? ? ? printf("\n輸入你要修改的信息編號:\n");
? ? ? ? ? ? printf(" ? ? 1-車主姓名 ? ?\n");
? ? ? ? ? ? printf(" ? ? 2-車牌號 ? ? ?\n");
? ? ? ? ? ? printf(" ? ? 3-車主聯(lián)系方式 \n");
? ? ? ? ? ? printf(" ? ? 4-車位區(qū)域編號 \n");
? ? ? ? ? ? printf(" ? ? 5-車位編號 ? ? \n");
? ? ? ? ? ? scanf("%d", &x);
? ? ? ? ? ? switch(x)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? printf("\n\t輸入修改后的信息");
? ? ? ? ? ? ? ? ? ? scanf("%s", p->name);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? printf("\n\t輸入修改后的信息");
? ? ? ? ? ? ? ? ? ? scanf("%s", p->carname);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? ? ? printf("\n\t輸入修改后的信息");
? ? ? ? ? ? ? ? ? ? scanf("%ld", &p->information);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 4:
? ? ? ? ? ? ? ? ? ? printf("\n\t輸入修改后的信息");
? ? ? ? ? ? ? ? ? ? scanf("%c", &p->region);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 5:
? ? ? ? ? ? ? ? ? ? printf("\n\t輸入修改后的信息");
? ? ? ? ? ? ? ? ? ? scanf("%d", &p->num);
? ? ? ? ? ? ? ? ? ? break; ?
? ? ? ? ? ? }
? ? ? ? ? ? printf("\n\t\t修改后的用戶信息為");
? ? ? ? ? ? printf("\t車主姓名--------車牌號-------車主聯(lián)系方式---車位區(qū)域編號-----車位編號----\n");
? ? ? ? ? ? printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num);
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? p = p->next;
? ? }
? ? if(p==NULL)
? ? {
? ? ? ? printf("\n未找到相應(yīng)用戶");
? ? ? ? printf("\n按任意鍵返回主頁\n");
? ? ? ? getch();
? ? ? ? return head;
? ? }
? ? printf("\n修改完成!");
? ? F(head); ?//顯示修改后的全部信息
? ? printf("\n按任意鍵返回主頁\n");
? ? getch();
? ? return head;
}

其他鏈表操作

  • 排序(根據(jù)用戶姓名排序)
void *Sort(Parking *head) ? //排序
{
? ? Parking *p=head;
? ? Parking *q,*p1=NULL,*p2=NULL;
? ? while(p->next != NULL)
? ? {
? ? ? ? q = p->next;
? ? ? ? while(q->next != NULL)
? ? ? ? {
? ? ? ? ? ? if(strcmp(p->next->name,q->next->name)>0) ?//字符串比較
? ? ? ? ? ? {
? ? ? ? ? ? ? ? p1 = p->next; ?//記錄p與q的下一結(jié)點(diǎn)
? ? ? ? ? ? ? ? p2 = q->next;
? ? ? ? ? ? ? ? q->next = q->next->next;
? ? ? ? ? ? ? ? p->next = p2;
? ? ? ? ? ? ? ? p2->next = p1;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? q = q->next;
? ? ? ? }
? ? ? ? p = p->next;
? ? }
? ? F(head);
? ? printf("\n\t\t按任意鍵返回主菜單");
? ? getch();
}
  • 查找區(qū)域車輛信息
void RegionalVehicles(Parking *head) ? //尋找指定區(qū)域內(nèi)車輛信息
{
? ? system("cls");
? ? system("color B");
? ? char c;
? ? printf("\n\t\t輸入你想要查看的區(qū)域");
? ? getchar();
? ? scanf("%c", &c);
? ? Parking *p = head->next;
? ? printf("\n\t\t ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--%c區(qū)域內(nèi)車輛用戶信息-- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\n\n",c);
? ? printf("\t---------------------------------------------------------------------\n");
? ? printf("\t車主姓名--------車牌號-------車主聯(lián)系方式---車位區(qū)域編號-----車位編號----\n");
? ? while(p)
? ? ? ? {
? ? ? ? ? ? if(p->region==c) ?//判斷區(qū)域字符與輸入字符是否相等,相等則輸出
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num);
? ? ? ? ? ? }
? ? ? ? ? ? p = p->next;
? ? ? ? }
? ? printf("\n\t\t按任意鍵返回主菜單");
? ? getch();
}

文件的讀取與輸入

  • 將數(shù)據(jù)保存在文件中

之所以用w形式打開文件是因為我在程序運(yùn)行前已將文件內(nèi)數(shù)據(jù)讀出,最后進(jìn)行保存數(shù)據(jù)時覆蓋原數(shù)據(jù)不會導(dǎo)致原數(shù)據(jù)丟失

void ?Preservation(Parking *head) ? //保存數(shù)據(jù)在文件中
{
? ? const char* filename1 = "C:/Users/judicious/Desktop/car.text"; ?//文件路徑
? ? FILE *fp = fopen(filename1, "w"); ?//以寫的方式打開文件,若文件不存在,則建立新的文件。若文件內(nèi)有內(nèi)容則會覆蓋原有內(nèi)容
? ? if (fp == NULL) ? //判斷是否成功打開
?? ?{
?? ? ? ?puts("Fail to open file!");
?? ? ? ?exit(1);
?? ?}
? ? Parking * p = head->next;
? ? while(p)
? ? {
? ? ? ? fprintf(fp,"%s %s %ld %c %d\n", p->name, p->carname, p->information, p->region, p->num); ?//向文件內(nèi)輸入數(shù)據(jù)
? ? ? ? p = p->next;
? ? }
? ? fclose(fp); ?//關(guān)閉文件
? ? return;
}
  • 將文件中數(shù)據(jù)讀出

將文件內(nèi)數(shù)據(jù)讀出并保存在鏈表當(dāng)中,方便對數(shù)據(jù)進(jìn)行修改

Parking *Read() ? //讀取文件內(nèi)數(shù)據(jù)
{
? ? const char* filename1 = "C:/Users/judicious/Desktop/car.text";
? ? FILE *fp = fopen(filename1, "rt"); ?//以讀的方式打開文件
? ? if (fp == NULL)
?? ?{
?? ? ? ?puts("Fail to open file!");
?? ? ? ?exit(1); ??
?? ?}
? ? Parking *head = (Parking *)malloc(sizeof(Parking)); ?//為頭指針申請內(nèi)存空間
? ? head->next = NULL; ?
? ? Parking *p1 = (Parking *)malloc(sizeof(Parking)); ?//申請存放數(shù)據(jù)的結(jié)點(diǎn)
? ? p1->next = NULL;
? ? if(fscanf(fp, "%s %s %ld %c %d", p1->name, p1->carname, &p1->information, &p1->region, &p1->num)!=EOF) ?//判斷所讀文件內(nèi)容是否為空
? ? {
? ? ? ? head->next=p1;
? ? ? ? Parking *tmp=head;
? ? ? ? while (tmp->next) ? //利用尾插法插入結(jié)點(diǎn),確保讀出的數(shù)據(jù)安正序輸出
? ? ? ? {
? ? ? ? ? ? tmp=tmp->next;
? ? ? ? }
? ? ? ? while(fgetc(fp)!=EOF) ?//判斷文件是否為空
? ? ? ? {
? ? ? ? ? ??
? ? ? ? ? ? Parking *p = (Parking *)malloc(sizeof(Parking));
? ? ? ? ? ? fscanf(fp, "%s %s %ld %c %d", p->name, p->carname, &p->information, &p->region, &p->num);
? ? ? ? ? ? tmp->next=p;
? ? ? ? ? ? p->next=NULL;
? ? ? ? ? ? tmp = tmp->next;
? ? ? ? }
? ? ? ? Parking *p2 = head; ?//刪除最后一個結(jié)點(diǎn)
? ? ? ? while(p2->next->next)
? ? ? ? {
? ? ? ? ? ? p2 = p2->next;
? ? ? ? }
? ? ? ? p2->next = NULL;
? ? }
? ? else
? ? ? ? return NULL;
? ? fclose(fp);
? ? return head->next;
}

刪除最后一個結(jié)點(diǎn)的原因是我存入數(shù)據(jù)時每行數(shù)據(jù)后有一個換行符,fgetc()將換行符讀走,最后一行時也將換行符讀走。此時判斷文件不為空,繼續(xù)讀取內(nèi)容,所以最后一個結(jié)點(diǎn)內(nèi)的內(nèi)容為隨機(jī)值,因此刪除該結(jié)點(diǎn)。

主菜單

void menu() ? //主菜單
{
? ? Parking *head = (Parking *)malloc(sizeof(Parking));
? ? head->next = Read(); ?//讀取文件信息
? ? system("cls");
? ? HideCursor(); ? //隱藏光標(biāo)
? ? int choice;
? ? do
? ? {
? ? ? ? system("cls"); ?//主頁面
? ? ? ? printf("--------------------------------------------------------------");
? ? ? ? printf("\n\n");
? ? ? ? printf("********************歡迎來到停車位管理系統(tǒng)********************\n");
? ? ? ? printf("\n\n");
? ? ? ? printf("---------------------------------------------------------\n");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 1- 錄入車輛信息 ? ? ? ? ? ? ? ? ? ? ? ?");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 2- 查找車輛信息 ? ? ? ? ? ? ? ? ? ? ? ?");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 3- 移除車輛信息 ? ? ? ? ? ? ? ? ? ? ? ?");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 4- 修改車輛信息 ? ? ? ? ? ? ? ? ? ? ? ?");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 5- 查找區(qū)域車輛信息 ? ? ? ? ? ? ? ? ? ? ");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 6- 展示所有車輛信息 ? ? ? ? ? ? ? ? ? ? ");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 7- 按車主姓名排序 ? ? ? ? ? ? ? ? ? ? ? ");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 0- 退出管理系統(tǒng)并保存數(shù)據(jù) ? ? ? ? ? ? ?\n");
? ? ? ? printf("\n-------------------------------------------------------\n");
? ? ? ? scanf("%d", &choice);
? ? ? ? switch(choice)
? ? ? ? {
? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? head = Addcar(head);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? Find(head);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? head = Delete(head);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 4:
? ? ? ? ? ? ? ? head = Change(head);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 5:
? ? ? ? ? ? ? ? RegionalVehicles(head);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 6:
? ? ? ? ? ? ? ? F(head);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 7:
? ? ? ? ? ? ? ? Sort(head);
? ? ? ? ? ? ? ? break;
? ? ? ? }
? ? } while (choice!=0);
? ? Preservation(head); ? //保存數(shù)據(jù)
}

主函數(shù)

int main()
{
? ? menu();
? ? return 0;
}

完整代碼

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h> //system("cls"):清屏 ?
#include <conio.h> ?//getch()

typedef struct Parking
{
? ? char name[20]; ? ? ? ?//車主姓名
? ? char carname[10]; ? ? //車牌號
? ? long information; ? ? //車主聯(lián)系方式
? ? char region; ? ? ? ? ?//車位區(qū)域編號
? ? int num; ? ? ? ? ? ? ?//車位編號
? ? struct Parking *next; //指針
}Parking;

void HideCursor() ? ? //隱藏光標(biāo)
{
?CONSOLE_CURSOR_INFO cursor_info = {1, 0};?
?SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}

void ?F(Parking *head) ? //打印用戶信息
{ ??
? ? system("cls");
? ? system("color B");
? ? Parking *p = head->next;
? ? printf("\n\t\t ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--停車場用戶信息-- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\n\n");
? ? printf("\t---------------------------------------------------------------------\n");
? ? printf("\t車主姓名--------車牌號-------車主聯(lián)系方式---車位區(qū)域編號-----車位編號----\n");
? ? while (p)
? ? {
? ? ? ? printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num);
? ? ? ? p = p->next;
? ? }
? ? getch();
? ? return;
}

Parking *Addcar(Parking *head) ? ? ?//錄入車輛信息
{
? ? int x;
? ? system("cls");
? ? system("color B");
? ? Parking *p = head;
? ? while(p->next!=NULL)
? ? {
? ? ? ? p = p->next;
? ? }
? ? printf("輸入需要添加的車輛個數(shù):");
? ? scanf("%d", &x);
? ? while(x--)
? ? {
? ? ? ? system("cls");
? ? ? ? Parking *Node = (Parking *)malloc(sizeof(Parking));
? ? ? ? printf("\n輸入用戶姓名:");
? ? ? ? scanf("%s",Node->name);
? ? ? ? printf("\n輸入車牌號:");
? ? ? ? scanf("%s",Node->carname);
? ? ? ? printf("\n輸入車主聯(lián)系方式:");
? ? ? ? scanf("%ld",&Node->information);
? ? ? ? printf("\n輸入車位區(qū)域編號:");
? ? ? ? getchar();
? ? ? ? scanf("%c",&Node->region);
? ? ? ? printf("\n輸入車位編號:");
? ? ? ? scanf("%d",&Node->num);
? ? ? ? Node->next=NULL;
? ? ? ? p->next = Node;
? ? ? ? p = p->next;
? ? }
? ? printf("\n輸入完成!");
? ? F(head);
? ? printf("\n按任意鍵返回主頁\n");
? ? getch();
? ? return head;
}

Parking *Change(Parking *head) ? ? ?//修改用戶信息
{
? ? char name[20];
? ? system("cls");
? ? system("color B");
? ? printf("輸入需要修改的用戶姓名:");
? ? scanf("%s", name);
? ? Parking *p = head->next;
? ? while(p)
? ? {
? ? ? ? if(strcmp(p->name,name)==0)
? ? ? ? {
? ? ? ? ? ? system("cls");
? ? ? ? ? ? system("color B");
? ? ? ? ? ? int x;
? ? ? ? ? ? printf("\n\t\t ? ? ? ? ? ? ? ? ? ? ? ? ? --該用戶信息-- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\n\n");
? ? ? ? ? ? printf("\t---------------------------------------------------------------------\n");
? ? ? ? ? ? printf("\t車主姓名--------車牌號-------車主聯(lián)系方式---車位區(qū)域編號-----車位編號----\n");
? ? ? ? ? ? printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num);
? ? ? ? ? ? printf("\n輸入你要修改的信息編號:\n");
? ? ? ? ? ? printf(" ? ? 1-車主姓名 ? ?\n");
? ? ? ? ? ? printf(" ? ? 2-車牌號 ? ? ?\n");
? ? ? ? ? ? printf(" ? ? 3-車主聯(lián)系方式 \n");
? ? ? ? ? ? printf(" ? ? 4-車位區(qū)域編號 \n");
? ? ? ? ? ? printf(" ? ? 5-車位編號 ? ? \n");
? ? ? ? ? ? scanf("%d", &x);
? ? ? ? ? ? switch(x)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? printf("\n\t輸入修改后的信息");
? ? ? ? ? ? ? ? ? ? scanf("%s", p->name);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? printf("\n\t輸入修改后的信息");
? ? ? ? ? ? ? ? ? ? scanf("%s", p->carname);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? ? ? printf("\n\t輸入修改后的信息");
? ? ? ? ? ? ? ? ? ? scanf("%ld", &p->information);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 4:
? ? ? ? ? ? ? ? ? ? printf("\n\t輸入修改后的信息");
? ? ? ? ? ? ? ? ? ? scanf("%c", &p->region);
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 5:
? ? ? ? ? ? ? ? ? ? printf("\n\t輸入修改后的信息");
? ? ? ? ? ? ? ? ? ? scanf("%d", &p->num);
? ? ? ? ? ? ? ? ? ? break; ?
? ? ? ? ? ? }
? ? ? ? ? ? printf("\n\t\t修改后的用戶信息為");
? ? ? ? ? ? printf("\t車主姓名--------車牌號-------車主聯(lián)系方式---車位區(qū)域編號-----車位編號----\n");
? ? ? ? ? ? printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num);
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? p = p->next;
? ? }
? ? if(p==NULL)
? ? {
? ? ? ? printf("\n未找到相應(yīng)用戶");
? ? ? ? printf("\n按任意鍵返回主頁\n");
? ? ? ? getch();
? ? ? ? return head;
? ? }
? ? printf("\n修改完成!");
? ? F(head);
? ? printf("\n按任意鍵返回主頁\n");
? ? getch();
? ? return head;
}

Parking *Delete(Parking *head) ? ? ?//刪除用戶信息
{
? ? char name[20];
? ? system("cls");
? ? system("color B");
? ? printf("\n\t\t輸入你要刪除的用戶姓名:");
? ? scanf("%s", name);
? ? Parking *p = head;
? ? Parking *q = p->next;
? ? while(q)
? ? {
? ? ? ? if(strcmp(q->name,name)==0)
? ? ? ? {
? ? ? ? ? ? p->next = q->next;
? ? ? ? ? ? free(q);
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? p = q;
? ? ? ? q = p->next;
? ? }
? ? if(p->next==NULL)
? ? {
? ? ? ? printf("\n\t\t未找到該用戶信息!");
? ? }
? ? else
? ? {
? ? ? ? printf("\n\t\t刪除成功?。?);
? ? ? ? F(head);
? ? }
? ? printf("\n\t\t按任意鍵返回主菜單");
? ? getch();
? ? return head;
}

void ?Find(Parking *head) ? ? ?//查找用戶信息
{
? ? system("cls");
? ? system("color B");
? ? char name[20];
? ? printf("\n\t\t輸入你要查找的用戶姓名:");
? ? scanf("%s", name);
? ? Parking *p = head;
? ? while(p->next)
? ? {
? ? ? ? if(strcmp(p->next->name,name)==0)
? ? ? ? {
? ? ? ? ? ? printf("找到了!\n");
? ? ? ? ? ? printf("該用戶的信息如下:");
? ? ? ? ? ? printf("\n\t\t---用戶姓名 ? ? ? ? ? ?%s",p->next->name);
? ? ? ? ? ? printf("\n\t\t---車牌號 ? ? ? ? ? ? ?%s",p->next->carname);
? ? ? ? ? ? printf("\n\t\t---車主聯(lián)系方式 ? ? ? ?%ld",p->next->information);
? ? ? ? ? ? printf("\n\t\t---車位區(qū)域編號 ? ? ? ?%c",p->next->region);
? ? ? ? ? ? printf("\n\t\t---車位編號 ? ? ? ? ? ?%d",p->next->num);
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? p = p->next;
? ? }
? ? if(p->next==NULL)
? ? ? ? printf("\n\t\t沒有找到該用戶信息");
? ? printf("\n\t\t按任意鍵返回主菜單");
? ? getch();
}

void RegionalVehicles(Parking *head) ? //尋找指定區(qū)域內(nèi)車輛信息
{
? ? system("cls");
? ? system("color B");
? ? char c;
? ? printf("\n\t\t輸入你想要查看的區(qū)域");
? ? getchar();
? ? scanf("%c", &c);
? ? Parking *p = head->next;
? ? printf("\n\t\t ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?--%c區(qū)域內(nèi)車輛用戶信息-- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\n\n",c);
? ? printf("\t---------------------------------------------------------------------\n");
? ? printf("\t車主姓名--------車牌號-------車主聯(lián)系方式---車位區(qū)域編號-----車位編號----\n");
? ? while(p)
? ? ? ? {
? ? ? ? ? ? if(p->region==c)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("\t%-17s%-16s%-15ld%-16c%-17d\n", p->name, p->carname, p->information, p->region, p->num);
? ? ? ? ? ? }
? ? ? ? ? ? p = p->next;
? ? ? ? }
? ? printf("\n\t\t按任意鍵返回主菜單");
? ? getch();
}

void *Sort(Parking *head) ? //排序
{
? ? Parking *p=head;
? ? Parking *q,*p1=NULL,*p2=NULL;
? ? while(p->next != NULL)
? ? {
? ? ? ? q = p->next;
? ? ? ? while(q->next != NULL)
? ? ? ? {
? ? ? ? ? ? if(strcmp(p->next->name,q->next->name)>0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? p1 = p->next;
? ? ? ? ? ? ? ? p2 = q->next;
? ? ? ? ? ? ? ? q->next = q->next->next;
? ? ? ? ? ? ? ? p->next = p2;
? ? ? ? ? ? ? ? p2->next = p1;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? q = q->next;
? ? ? ? }
? ? ? ? p = p->next;
? ? }
? ? F(head);
? ? printf("\n\t\t按任意鍵返回主菜單");
? ? getch();
}

void ?Preservation(Parking *head) ? //保存數(shù)據(jù)在文件中
{
? ? const char* filename1 = "C:/Users/judicious/Desktop/car.text";
? ? FILE *fp = fopen(filename1, "w");
? ? if (fp == NULL)
?? ?{
?? ? ? ?puts("Fail to open file!");
?? ? ? ?exit(1);
?? ?}
? ? Parking * p = head->next;
? ? while(p)
? ? {
? ? ? ? fprintf(fp,"%s %s %ld %c %d\n", p->name, p->carname, p->information, p->region, p->num);
? ? ? ? p = p->next;
? ? }
? ? fclose(fp);
? ? return;
}

Parking *Read() ? //讀取文件內(nèi)數(shù)據(jù)
{
? ? const char* filename1 = "C:/Users/judicious/Desktop/car.text";
? ? FILE *fp = fopen(filename1, "rt");
? ? if (fp == NULL)
?? ?{
?? ? ? ?puts("Fail to open file!");
?? ? ? ?exit(1); ??
?? ?}
? ? Parking *head = (Parking *)malloc(sizeof(Parking));
? ? head->next = NULL;
? ? Parking *p1 = (Parking *)malloc(sizeof(Parking));
? ? p1->next = NULL;
? ? if(fscanf(fp, "%s %s %ld %c %d", p1->name, p1->carname, &p1->information, &p1->region, &p1->num)!=EOF)
? ? {
? ? ? ? head->next=p1;
? ? ? ? Parking *tmp=head;
? ? ? ? while (tmp->next)
? ? ? ? {
? ? ? ? ? ? tmp=tmp->next;
? ? ? ? }
? ? ? ? while(fgetc(fp)!=EOF)
? ? ? ? {
? ? ? ? ? ??
? ? ? ? ? ? Parking *p = (Parking *)malloc(sizeof(Parking));
? ? ? ? ? ? fscanf(fp, "%s %s %ld %c %d", p->name, p->carname, &p->information, &p->region, &p->num);
? ? ? ? ? ? tmp->next=p;
? ? ? ? ? ? p->next=NULL;
? ? ? ? ? ? tmp = tmp->next;
? ? ? ? }
? ? ? ? Parking *p2 = head;
? ? ? ? while(p2->next->next)
? ? ? ? {
? ? ? ? ? ? p2 = p2->next;
? ? ? ? }
? ? ? ? p2->next = NULL;
? ? }
? ? else
? ? ? ? return NULL;
? ? fclose(fp);
? ? return head->next;
}

void menu() ? //主菜單
{
? ? Parking *head = (Parking *)malloc(sizeof(Parking));
? ? head->next = Read(); ?//讀取文件信息
? ? system("cls");
? ? HideCursor(); ? //隱藏光標(biāo)
? ? int choice;
? ? do
? ? {
? ? ? ? system("cls");
? ? ? ? printf("--------------------------------------------------------------");
? ? ? ? printf("\n\n");
? ? ? ? printf("********************歡迎來到停車位管理系統(tǒng)********************\n");
? ? ? ? printf("\n\n");
? ? ? ? printf("---------------------------------------------------------\n");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 1- 錄入車輛信息 ? ? ? ? ? ? ? ? ? ? ? ?");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 2- 查找車輛信息 ? ? ? ? ? ? ? ? ? ? ? ?");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 3- 移除車輛信息 ? ? ? ? ? ? ? ? ? ? ? ?");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 4- 修改車輛信息 ? ? ? ? ? ? ? ? ? ? ? ?");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 5- 查找區(qū)域車輛信息 ? ? ? ? ? ? ? ? ? ? ");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 6- 展示所有車輛信息 ? ? ? ? ? ? ? ? ? ? ");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 7- 按車主姓名排序 ? ? ? ? ? ? ? ? ? ? ? ");
? ? ? ? printf("\n ? ? ? ? ? ? ? ? 0- 退出管理系統(tǒng)并保存數(shù)據(jù) ? ? ? ? ? ? ?\n");
? ? ? ? printf("\n-------------------------------------------------------\n");
? ? ? ? scanf("%d", &choice);
? ? ? ? switch(choice)
? ? ? ? {
? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? head = Addcar(head);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? Find(head);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 3:
? ? ? ? ? ? ? ? head = Delete(head);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 4:
? ? ? ? ? ? ? ? head = Change(head);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 5:
? ? ? ? ? ? ? ? RegionalVehicles(head);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 6:
? ? ? ? ? ? ? ? F(head);
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? case 7:
? ? ? ? ? ? ? ? Sort(head);
? ? ? ? ? ? ? ? break;
? ? ? ? }
? ? } while (choice!=0);
? ? Preservation(head); ? //保存數(shù)據(jù)
}

int main()
{
? ? menu();
? ? return 0;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++編寫高性能服務(wù)器實例教程

    C++編寫高性能服務(wù)器實例教程

    這篇文章主要介紹了如何用C++編寫高性能服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)C++有一定的參考價值,需要的朋友們可以了解下
    2020-06-06
  • C語言中對于循環(huán)結(jié)構(gòu)優(yōu)化的一些入門級方法簡介

    C語言中對于循環(huán)結(jié)構(gòu)優(yōu)化的一些入門級方法簡介

    這篇文章主要介紹了C語言中對于循環(huán)結(jié)構(gòu)優(yōu)化的一些入門級方法,包括算法設(shè)計的改進(jìn)來提高一些并行性等方法,要的朋友可以參考下
    2015-12-12
  • C語言數(shù)據(jù)結(jié)構(gòu)之順序表和單鏈表

    C語言數(shù)據(jù)結(jié)構(gòu)之順序表和單鏈表

    在數(shù)據(jù)結(jié)構(gòu)中,線性表是入門級數(shù)據(jù)結(jié)構(gòu),線性表又分為順序表和鏈表,這篇文章主要給大家介紹了關(guān)于C語言數(shù)據(jù)結(jié)構(gòu)之順序表和單鏈表的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • 基于C語言實現(xiàn)點(diǎn)菜系統(tǒng)

    基于C語言實現(xiàn)點(diǎn)菜系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于C語言實現(xiàn)點(diǎn)菜系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C++的數(shù)據(jù)共享與保護(hù)你了解嗎

    C++的數(shù)據(jù)共享與保護(hù)你了解嗎

    這篇文章主要為大家詳細(xì)介紹了C語言零基礎(chǔ)入門的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Linux編程實現(xiàn)制作文件的ed2k鏈

    Linux編程實現(xiàn)制作文件的ed2k鏈

    這篇文章主要介紹了Linux編程實現(xiàn)制作文件的ed2k鏈的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • C++中String的語法及常用接口的底層實現(xiàn)詳解

    C++中String的語法及常用接口的底層實現(xiàn)詳解

    在C語言中,string是一個標(biāo)準(zhǔn)庫類(class),用于處理字符串,它提供了一種更高級、更便捷的字符串操作方式,string 類提供了一系列成員函數(shù)和重載運(yùn)算符,以便于對字符串進(jìn)行操作和處理,本編文章會對C++中的 string 進(jìn)行詳解,希望本篇文章會對你有所幫助
    2023-06-06
  • Qt實現(xiàn)部件透明陰影效果與不規(guī)則窗體詳解

    Qt實現(xiàn)部件透明陰影效果與不規(guī)則窗體詳解

    這篇文章主要為大家詳細(xì)介紹了Qt實現(xiàn)部件透明陰影效果與不規(guī)則窗體的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-01-01
  • C++類的自動轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換的實現(xiàn)示例

    C++類的自動轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換的實現(xiàn)示例

    類的自動轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換是面向?qū)ο缶幊讨刑幚眍愋椭g轉(zhuǎn)換的兩種重要機(jī)制,本文就來介紹一下這兩種方法的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • C++實現(xiàn)LeetCode(157.用Read4來讀取N個字符)

    C++實現(xiàn)LeetCode(157.用Read4來讀取N個字符)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(157.用Read4來讀取N個字符),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評論

镇赉县| 德江县| 沙坪坝区| 卓资县| 驻马店市| 阳东县| 吉林市| 南充市| 怀集县| 玛纳斯县| 固始县| 武定县| 滨州市| 诏安县| 永吉县| 临汾市| 分宜县| 类乌齐县| 浠水县| 鱼台县| 浑源县| 通海县| 射阳县| 石门县| 宣武区| 专栏| 台北县| 平湖市| 垫江县| 双江| 娄烦县| 临沭县| 明光市| 文成县| 汉阴县| 中阳县| 建水县| 轮台县| 玉门市| 彭山县| 台江县|