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

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

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

本文實例為大家分享了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ù)用戶名匹配查找用戶信息進行刪除

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é)點
? ? {
? ? ? ? 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é)點
? ? ? ? ? ? ? ? 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形式打開文件是因為我在程序運行前已將文件內(nèi)數(shù)據(jù)讀出,最后進行保存數(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ù)進行修改

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é)點
? ? 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é)點,確保讀出的數(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é)點
? ? ? ? while(p2->next->next)
? ? ? ? {
? ? ? ? ? ? p2 = p2->next;
? ? ? ? }
? ? ? ? p2->next = NULL;
? ? }
? ? else
? ? ? ? return NULL;
? ? fclose(fp);
? ? return head->next;
}

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

主菜單

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)并保存數(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() ? ? //隱藏光標
{
?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(); ? //隱藏光標
? ? 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++智能指針的使用

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

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

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

    分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴格按照語句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ句
    2022-05-05
  • C語言超詳細講解循環(huán)與分支語句基礎(chǔ)

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

    各位小伙伴們,今天給大家?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)計輸入的行數(shù)以及單詞個數(shù)的方法

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

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

    一篇文章帶你用C語言玩轉(zhuǎn)結(jié)構(gòu)體

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

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

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

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

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

    C++共享智能指針shared_ptr的實現(xiàn)

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

最新評論