欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

簡單功能介紹

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

算法構造

鏈表的增刪改查

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

利用尾插法插入新添加的數據

Parking *Addcar(Parking *head) ? ? ?//錄入車輛信息
{
? ? int x;
? ? system("cls"); ?//清屏操作
? ? system("color B"); ? //改變字體顏色
? ? Parking *p = head;
? ? while(p->next!=NULL) ? //利用尾插法插入新用戶信息
? ? {
? ? ? ? p = p->next;
? ? }
? ? printf("輸入需要添加的車輛個數:");
? ? 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輸入車主聯系方式:");
? ? ? ? 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 *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---車主聯系方式 ? ? ? ?%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();
}
  • 修改用戶信息

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

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車主姓名--------車牌號-------車主聯系方式---車位區(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-車主聯系方式 \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車主姓名--------車牌號-------車主聯系方式---車位區(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未找到相應用戶");
? ? ? ? printf("\n按任意鍵返回主頁\n");
? ? ? ? getch();
? ? ? ? return head;
? ? }
? ? printf("\n修改完成!");
? ? F(head); ?//顯示修改后的全部信息
? ? printf("\n按任意鍵返回主頁\n");
? ? getch();
? ? return head;
}

其他鏈表操作

  • 排序(根據用戶姓名排序)
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的下一結點
? ? ? ? ? ? ? ? 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ū)域內車輛信息
{
? ? 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\n",c);
? ? printf("\t---------------------------------------------------------------------\n");
? ? printf("\t車主姓名--------車牌號-------車主聯系方式---車位區(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();
}

文件的讀取與輸入

  • 將數據保存在文件中

之所以用w形式打開文件是因為我在程序運行前已將文件內數據讀出,最后進行保存數據時覆蓋原數據不會導致原數據丟失

void ?Preservation(Parking *head) ? //保存數據在文件中
{
? ? 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() ? //讀取文件內數據
{
? ? 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;
}

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

主菜單

void menu() ? //主菜單
{
? ? Parking *head = (Parking *)malloc(sizeof(Parking));
? ? head->next = Read(); ?//讀取文件信息
? ? system("cls");
? ? HideCursor(); ? //隱藏光標
? ? 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)并保存數據 ? ? ? ? ? ? ?\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); ? //保存數據
}

主函數

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; ? ? //車主聯系方式
? ? char region; ? ? ? ? ?//車位區(qū)域編號
? ? int num; ? ? ? ? ? ? ?//車位編號
? ? struct Parking *next; //指針
}Parking;

void HideCursor() ? ? //隱藏光標
{
?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車主姓名--------車牌號-------車主聯系方式---車位區(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("輸入需要添加的車輛個數:");
? ? 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輸入車主聯系方式:");
? ? ? ? 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車主姓名--------車牌號-------車主聯系方式---車位區(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-車主聯系方式 \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車主姓名--------車牌號-------車主聯系方式---車位區(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未找到相應用戶");
? ? ? ? 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---車主聯系方式 ? ? ? ?%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ū)域內車輛信息
{
? ? 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\n",c);
? ? printf("\t---------------------------------------------------------------------\n");
? ? printf("\t車主姓名--------車牌號-------車主聯系方式---車位區(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) ? //保存數據在文件中
{
? ? 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() ? //讀取文件內數據
{
? ? 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(); ? //隱藏光標
? ? 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)并保存數據 ? ? ? ? ? ? ?\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); ? //保存數據
}

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 深入了解C++智能指針的使用

    深入了解C++智能指針的使用

    智能指針的本質就是使用一個對象來接管一段開辟的空間,在該對象在銷毀的時候,自動調用析構函數來釋放這段內存。本文就來和大家詳細聊聊智能指針的使用,需要的可以參考一下
    2022-10-10
  • C語言超細致講解分支語句

    C語言超細致講解分支語句

    分支結構的執(zhí)行是依據一定的條件選擇執(zhí)行路徑,而不是嚴格按照語句出現的物理順序。分支結構的程序設計方法的關鍵在于構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的分支語句
    2022-05-05
  • C語言超詳細講解循環(huán)與分支語句基礎

    C語言超詳細講解循環(huán)與分支語句基礎

    各位小伙伴們,今天給大家?guī)淼氖茄h(huán)與分支語句,本篇將會向大家介紹這些語句的格式和使用的基本方法,感興趣的朋友來看看吧
    2022-04-04
  • C++ Boost Tokenizer使用詳細講解

    C++ Boost Tokenizer使用詳細講解

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • 深入C++中API的問題詳解

    深入C++中API的問題詳解

    本篇文章是對C++中API的問題進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言編程中統(tǒng)計輸入的行數以及單詞個數的方法

    C語言編程中統(tǒng)計輸入的行數以及單詞個數的方法

    這篇文章主要介紹了C語言編程中統(tǒng)計輸入的行數以及單詞個數的方法,利用最基礎的循環(huán)和判斷語句寫成,需要的朋友可以參考下
    2015-11-11
  • 一篇文章帶你用C語言玩轉結構體

    一篇文章帶你用C語言玩轉結構體

    本文主要介紹C語言 結構體的知識,學習C語言肯定需要學習結構體,這里詳細說明了結構體并附示例代碼,供大家參考學習,有需要的小伙伴可以參考下
    2021-09-09
  • QT實戰(zhàn)之打開最近圖片功能的實現

    QT實戰(zhàn)之打開最近圖片功能的實現

    這篇文章主要為大家詳細介紹了如何利用Qt和QSettings實現打開最近圖片功能,文中的示例代碼講解詳細,對我們學習QT有一定的幫助,感興趣的可以了解一下
    2022-06-06
  • C++堆排序算法實例詳解

    C++堆排序算法實例詳解

    這篇文章主要介紹了C++堆排序算法,簡單分析了堆排序算法的原理并結合實例形式分析了C++實現堆排序的具體操作技巧,需要的朋友可以參考下
    2017-08-08
  • C++共享智能指針shared_ptr的實現

    C++共享智能指針shared_ptr的實現

    在C++中沒有垃圾回收機制,必須自己釋放分配的內存,否則就會造成內存泄露,解決這個問題最有效的方法是使用智能指針,本文主要介紹了C++共享智能指針shared_ptr的實現,感興趣的可以了解一下
    2023-12-12

最新評論