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

C語言實(shí)現(xiàn)自行車管理系統(tǒng)

 更新時間:2022年08月31日 10:53:44   作者:Coding_Fly_  
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)自行車管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

在大家學(xué)完C語言后,經(jīng)常會被學(xué)校要求做很多管理系統(tǒng),主流做法當(dāng)選鏈表,但是很多問題就來了,在學(xué)習(xí)階段寫過最多基本上就是50行代碼左右了,一下子做個小型管理系統(tǒng)問題就比較多。小編當(dāng)然也是在學(xué)完初階C語言之后過了半年才完整做出來。

所以分享一下經(jīng)驗(yàn)。

1:首先數(shù)據(jù)結(jié)構(gòu):鏈表要會,而且要熟練掌握其增刪查改;
2:調(diào)試代碼要會,很多代碼一行一行的看到最后真的是很讓人頭大;

不會調(diào)試和監(jiān)控變量是個很痛苦的過程,就算寫出來bug多到炸也是很繁瑣的;

3:最關(guān)鍵的就是這個框架問題了,如果框架不好,這個代碼量會數(shù)倍上升,最后就是很多重疊的語句,很不美觀,并且代碼質(zhì)量不是很好,在寫系統(tǒng)之前一定要多看點(diǎn)小型管理系統(tǒng)的代碼,主要是學(xué)習(xí)框架如何建立,然后再根據(jù)自己的系統(tǒng)情況進(jìn)行改進(jìn)。

首先我們來看頭文件,先將能夠用到的頭文件一一羅列出來創(chuàng)建在 

common.h文件里面。

#define _CRT_SECURE_NO_WARNINGS?
#define Space 1000
#include<stdio.h>
#include<Windows.h>
#include<stdlib.h>
#include<assert.h>//斷言
#include<stdbool.h>
#include<string.h>

將定義宏等包含進(jìn)去。
其次就是這個框架了

#include"system.h"

int main()
{
?? ?CycleList myCycleList;
?? ?CycleListInit(&myCycleList);
?? ?int input = 0;
?? ?do
?? ?{
?? ??? ?menu();
?? ??? ?printf("請選擇->");
?? ??? ?scanf("%d", &input);
?? ??? ?switch (input)
?? ??? ?{
?? ??? ?case 1:
?? ??? ??? ?system("cls");
?? ??? ??? ?LoginCycle(&myCycleList);
?? ??? ??? ?break;
?? ??? ?case 0:
?? ??? ??? ?system("cls");
?? ??? ??? ?printf("自行車管理系統(tǒng)已經(jīng)退出\n");
?? ??? ??? ?break;
?? ??? ?case 2:
?? ??? ??? ?system("cls");
?? ??? ??? ?SearchCycle(&myCycleList);
?? ??? ??? ?break;
?? ??? ?case 3:
?? ??? ??? ?system("cls");
?? ??? ??? ?ChangeCycle(&myCycleList);
?? ??? ??? ?break;
?? ??? ?case 4:
?? ??? ??? ?system("cls");
?? ??? ??? ?PickUpCycle(&myCycleList);
?? ??? ??? ?_flushall();
?? ??? ??? ?FileWrite(&myCycleList);
?? ??? ??? ?_flushall();
?? ??? ??? ?break;
?? ??? ?case 5:
?? ??? ??? ?system("cls");
?? ??? ??? ?PrintResSpace(&myCycleList);
?? ??? ??? ?break;

?? ??? ?default:
?? ??? ??? ?system("cls");
?? ??? ??? ?printf("輸入有誤請重新選擇\n");
?? ??? ??? ?break;
?? ??? ?}
?? ?} while (input);


?? ??? ?system("pause");
?? ??? ?return 0;
?? ?}

再看各個功能的實(shí)現(xiàn)
為了避免函數(shù)代碼在一個文件里面十分的繁瑣,可以先創(chuàng)建一個.h文件將函數(shù)名和節(jié)點(diǎn)定義放進(jìn)去,看代碼。

#include"common.h"
typedef struct Time
{
?? ?int year;
?? ?int month;
?? ?int day;
?? ?int hour;
}Time;
typedef struct Cycle
{
?? ?char CycleHoster[20];//自行車主名字
?? ?int Sex;
?? ?int Age;
?? ?char IDcard[18];//身份證號
?? ?Time partingTime; ? ? ?//存放時間
?? ?int number;//自行車車位號
?? ?struct Cycle* next;
}CycleNode;

typedef struct CycleList
{
?? ?CycleNode *first;
?? ?CycleNode *last;
?? ?size_t ?space;
}CycleList;

void menu();
void LoginCycle(CycleList *plist);//登記自行車函數(shù)
bool SearchCycle(CycleList* myBycycleList);//按照車位號查詢自行車
void ChangeCycle(CycleList* myBycycleList);
void PickUpCycle(CycleList* myBycycleList);
void PrintResSpace(CycleList* myBycycleList);
void CycleListInit(CycleList *plist);
CycleNode*_Buynode(char* p, int sex, int age, char* number, int Pnumber, int year, int month, int day, int hour);
bool CycleListIsFull(CycleList *plist);
CycleNode* SearchCycle1(CycleList* myBycycleList);
void FileWrite(CycleList* myBycycleList);
void DeleteCyNode(CycleList* myBycycleList,int key);

最后就是代碼函數(shù)功能的實(shí)現(xiàn)了。

#include"system.h"


void menu()
{
?? ?system("color 4");
?? ?printf(" ? ? *********************************************************************** ? ? \n");
?? ?printf(" ?************************歡迎使用自行車存放管理系統(tǒng)******************************* ? \n");
?? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ?自行車停車收費(fèi)標(biāo)準(zhǔn)2元一小時 ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("|\t1.--登記自行車停放位信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("|\t2.--查詢自行車停車位信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("|\t3.--修改自行車信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("|\t4.--用戶取車管理 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("|\t5.--顯示當(dāng)前空余自行車位信息 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("|\t0.--退出自行車管理系統(tǒng) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |\n");
?? ?printf("|*******************************************************************************|\n");
?? ?printf("|********************>>>>楊天喆-計科(02)班-20190101134<<<<********************|\n");
?? ?printf("|*******************************************************************************|\n\n");

}

void LoginCycle(CycleList *plist)
{
?? ?
?? ?if (!CycleListIsFull(plist))
?? ?{
?? ??? ?char name[20];
?? ??? ?int age;
?? ??? ?int sex;
?? ??? ?char IDcard[18];
?? ??? ?int hour;
?? ??? ?int Number;
?? ??? ?int year;
?? ??? ?int month;
?? ??? ?int day;
?? ??? ?printf("請輸入自行車主姓名\n");
?? ??? ?scanf("%s",name);
?? ??? ?_flushall();
?? ??? ?printf("請輸入性別(0代表男,1代表女)");
?? ??? ?scanf("%d", &sex);
?? ??? ?printf("請輸入車主年齡");
?? ??? ?scanf("%d", &age);
?? ??? ?printf("請輸入身份證號");
?? ??? ?scanf("%s", IDcard);
?? ??? ?_flushall();
?? ??? ?printf("請輸入停車時間(年,月,日,時)");
?? ??? ?scanf("%d,%d,%d,%d",&year,&month,&day,&hour);
?? ??? ?printf("請輸入要停的位號(位號為1到2000)");
?? ??? ?scanf("%d", &Number);
?? ??? ?plist->space++;
?? ??? ?plist->last->next = _Buynode(name, sex, age, IDcard, Number,year,month,day,hour);
?? ??? ?plist->last = _Buynode(name, sex, age, IDcard, Number, year, month, day, hour);
?? ??? ?FILE *fp = fopen("Test.txt", "a");
?? ??? ?fprintf(fp, "%s %d %d %s %d %d %d %d %d %d\n", name,age,sex,IDcard,hour,Number,year,month,day,hour);
?? ??? ?fclose(fp);

?? ??? ?printf("登記成功\n");
?? ??? ?printf("\n");
?? ?}
?? ?else
?? ?{
?? ??? ?printf("自行車位已滿,不能繼續(xù)停車");
?? ?}
}

CycleNode* _Buynode(char* p, int sex, int age, char* number, int Pnumber, int year, int month, int day, int hour)
{
?? ?CycleNode *s = (CycleNode*)malloc(sizeof(CycleNode));
?? ?size_t sz = strlen(p)+1;
?? ?size_t sz1 = strlen(number)+1;
?? ?if (s == NULL)
?? ??? ?return NULL;
?? ?else
?? ?{
?? ??? ?memcpy(s->CycleHoster,p,sz);
?? ??? ?s->Age = age;
?? ??? ?s->Sex = sex;
?? ??? ?s->partingTime.year = year;
?? ??? ?s->partingTime.month = month;
?? ??? ?s->partingTime.hour = hour;
?? ??? ?s->partingTime.day = day;
?? ??? ?memcpy(s->IDcard,number,sz1);
?? ??? ?s->number = Pnumber;
?? ??? ?s->next = NULL;
?? ??? ?return s;
?? ?}
}
void CycleListInit(CycleList *plist)
{
?? ?char qname[20] = "姓名初始化";
?? ?char qnumber[18] = "身份證初始化";
?? ?CycleNode* p = _Buynode(qname, 0, 0, qnumber, 0, 0,0,0,0);
?? ?plist->first = plist->last = p;
?? ?plist->space = 0;
}
bool CycleListIsFull(CycleList *plist)
{
?? ?if (plist->space > Space)
?? ??? ?return true;
?? ?return false;
}
bool SearchCycle(CycleList* myBycycleList)
{
?? ?int num;
?? ?printf(" ? ? ?查詢客房信息\n");
?? ?printf("請輸入要查詢自行車位號:\n");
?? ?scanf("%d", &num);
?? ?CycleNode* p = myBycycleList->first->next;
?? ?while ((p) != NULL)
?? ?{
?? ??? ?if (p->number == num)
?? ??? ?{
?? ??? ??? ?printf("車主姓名:%s\n", p->CycleHoster);
?? ??? ??? ?(p)->Sex == 0 ? printf("男") : printf("女");
?? ??? ??? ?printf("車主年齡 %d\n", p->Age);
?? ??? ??? ?printf("車主的身份證號為%s \n", p->IDcard);
?? ??? ??? ?printf("停車時間是 %d 年 %d ?月 ?%d 日 ?%d時\n", p->partingTime.year,p->partingTime.month,p->partingTime.day,p->partingTime.hour);
?? ??? ??? ?printf("停車位號為%d \n", p->number);
?? ??? ??? ?printf("查詢成功\n");
?? ??? ??? ?printf("\n");
?? ??? ??? ?return true;
?? ??? ?}
?? ??? ?p = p->next;
?? ?}
?? ?system("cls");
?? ?printf("查詢失敗,此車位還未被停車\n");
?? ?return false;
}

void ChangeCycle(CycleList* myBycycleList)
{
?? ?int num;
?? ?int temp;
?? ?char Name[20];
?? ?char Number[18];
?? ?size_t sz1;
?? ?size_t sz2;
?? ?FILE *fp = fopen("Test.txt", "wt");
?? ?int SEX;
?? ?int AGE;
?? ?printf("請輸入你要更改的信息的自行車位號\n");
?? ?scanf("%d", &num);
?? ?CycleNode *p = myBycycleList->first;
?? ?while (p != NULL)
?? ?{
?? ??? ?if (p->number == num)
?? ??? ?{
?? ??? ??? ?printf("您所查詢的信息如下\n");
?? ??? ??? ?SearchCycle(myBycycleList);
?? ??? ??? ?printf("請輸入你要更改的信息\n");
?? ??? ??? ?printf("1:更改姓名\n");
?? ??? ??? ?printf("2:更改性別\n");?? ??? ?
?? ??? ??? ?printf("3:更改年齡\n");
?? ??? ??? ?printf("4:更改身份證號\n");
?? ??? ??? ?scanf("%d", &temp);
?? ??? ??? ?switch (temp)
?? ??? ??? ?{
?? ??? ??? ?case ?1:
?? ??? ??? ??? ?_flushall();
?? ??? ??? ??? ?printf("請輸入新的姓名\n");
?? ??? ??? ??? ?scanf("%s", Name);
?? ??? ??? ??? ?_flushall();
?? ??? ??? ??? ?sz1 = strlen(Name)+1;
?? ??? ??? ??? ?memcpy(p->CycleHoster, Name, sz1);
?? ??? ??? ??? ?printf("更改成功,返回主菜單");
?? ??? ??? ??? ?printf("\n");
?? ??? ??? ??? ?return;
?? ??? ??? ?case 2:
?? ??? ??? ??? ?printf("請輸入性別:(0代表男)\n");
?? ??? ??? ??? ??? ?scanf("%d", &SEX);
?? ??? ??? ??? ??? ?p->Sex = num;
?? ??? ??? ??? ??? ?printf("更改成功,返回主菜單");
?? ??? ??? ??? ??? ?printf("\n");
?? ??? ??? ??? ??? ?return;
?? ??? ??? ?case 3:
?? ??? ??? ??? ?printf("請輸入年齡\n");
?? ??? ??? ??? ?scanf("%d", &AGE);
?? ??? ??? ??? ?p->Age = AGE;
?? ??? ??? ??? ?printf("更改成功,返回主菜單");
?? ??? ??? ??? ?printf("\n");
?? ??? ??? ??? ?return;
?? ??? ??? ?case 4:
?? ??? ??? ??? ?printf("請輸入身份證號\n");
?? ??? ??? ??? ?scanf("%s", Number);
?? ??? ??? ??? ?_flushall();
?? ??? ??? ??? ?sz2 = strlen(Number)+1;
?? ??? ??? ??? ?memcpy(p->IDcard, Number, sz2);
?? ??? ??? ??? ?printf("更改成功,返回主菜單");
?? ??? ??? ??? ?printf("\n");
?? ??? ??? ??? ?return;
?? ??? ??? ?default:
?? ??? ??? ??? ?printf("輸入有誤,返回主菜單\n");
?? ??? ??? ??? ?return;
?? ??? ??? ?}
?? ??? ?}
?? ??? ?p = p->next;
?? ?}
?? ?if(p == NULL)
?? ?{
?? ?printf("輸入有誤,返回主菜單");
?? ?printf("\n");
?? ?}
?? ?fclose(fp);
}

void PickUpCycle(CycleList* myBycycleList)//取車
{
?? ?int Year;
?? ?int Month;
?? ?int Day;
?? ?int Hour;
?? ?int FEE;
?? ?CycleNode*p = SearchCycle1(myBycycleList);
?? ?CycleNode* q = p->next;
?? ?assert(p != NULL);
?? ?printf("請輸入取車(年,月,日,時)");
?? ?scanf("%d,%d,%d,%d", &Year, &Month, &Day, &Hour);
?? ?printf("您存車的時間是 %d年 %d月 %d日 %d時", (*p).partingTime.year, (*p).partingTime.month, (*p).partingTime.day, (*p).partingTime.hour);
?? ?FEE = (((Year - (*p).partingTime.year) * 365 * 24 + (Month - (*p).partingTime.month) * 30 + (Day - (*p).partingTime.day) * 24 + (Hour - (*p).partingTime.hour)))*2;
?? ?printf("您需要繳納的費(fèi)用為%d\n\n", FEE);
?? ?DeleteCyNode(myBycycleList, p->number);
?? ?printf("取車成功,返回主菜單\n");
?? ?printf("\n");
}
CycleNode* SearchCycle1(CycleList* myBycycleList)
{
?? ?int num;
?? ?printf("請輸入要查詢自行車位號:\n");
?? ?scanf("%d", &num);
?? ?CycleNode* p = myBycycleList->first;
?? ?while (p != NULL)
?? ?{
?? ??? ?if (p->number == num)
?? ??? ?{
?? ??? ??? ?return p;
?? ??? ?}
?? ??? ?p = p->next;
?? ?}
?? ?return NULL;
}

void PrintResSpace(CycleList* myBycycleList)
{
?? ?printf("=============查詢剩余車位===================\n");
?? ?CycleNode* p = myBycycleList->first->next;
?? ?assert(p != NULL);
?? ?while (p != NULL)
?? ?{
?? ??? ?printf("當(dāng)前使用中的車位號是 %d\n", p->number);
?? ??? ?p = p->next;
?? ?}

?? ?printf("剩余車位數(shù)為: %zu \n",Space - myBycycleList->space);
?? ?printf("=============================================\n");
}
void FileWrite(CycleList* myBycycleList)
{
?? ?FILE *fp = fopen("Test.txt", "w");
?? ?CycleNode *p = myBycycleList->first;
?? ?assert(p != NULL);
?? ?while (p != NULL)
?? ?{
?? ??? ?fprintf("%s %d %d %s %d %d %d %d %d ",p->CycleHoster, p->Age,p->Sex,p->IDcard,p->number,p->partingTime.year,p->partingTime.month,p->partingTime.day, p->partingTime.hour);
?? ??? ?p = p->next;
?? ?}
?? ?fclose(fp);
}
void DeleteCyNode(CycleList* myBycycleList, int key)
{
?? ?CycleNode *s;//q
?? ?CycleNode *t = myBycycleList->first;//p
?? ?while (t->next != NULL && t->next->number != key)
?? ??? ?t = t->next;
?? ?if (t->next == NULL)
?? ??? ?return;

?? ?s = t->next;
?? ?if (t->next == myBycycleList->last)
?? ??? ?myBycycleList->last = t;
?? ?t->next = s->next;
?? ?free(t);
?? ?myBycycleList->space--;
?? ?return;
}

實(shí)際上用C寫出來的這種系統(tǒng)只能說是應(yīng)付學(xué)校檢測,實(shí)際上沒有人愿意用這種系統(tǒng),操作性不好,界面不美觀,魯棒性也不好,但是C真的是基礎(chǔ)編程學(xué)科,掌握這些方法的底層實(shí)現(xiàn)有助于很多其他編程語言的學(xué)習(xí),所以,底層的方法我們還是要學(xué)一學(xué)。

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

相關(guān)文章

最新評論