一个简单的航班管理系统。主要包括用户管理和航班管理两个模块。
用户管理模块:
1. 定义了用户结构体,包括用户名和密码。
2. 创建了用户管理结构体,包括用户链表的头指针。
3. 实现了注册用户和用户登录的函数,通过输入用户名和密码来创建用户并添加到用户链表中,并通过输入用户名和密码来验证用户登录。
航班管理模块:
1. 定义了航班结构体,包括航班号、出发地、目的地、起飞时间、到达时间和价格。
2. 创建了航班管理结构体,包括航班链表的头指针。
3. 实现了添加航班、查询航班、显示航班和排序航班的函数。
- 添加航班函数通过输入航班信息创建航班并添加到航班链表中。
- 查询航班函数通过输入航班号来查找并显示匹配的航班信息。
- 显示航班函数遍历航班链表并显示所有航班信息。
- 排序航班函数通过冒泡排序算法按照航班价格对航班链表进行排序。
主程序:
1. 创建了用户管理结构体和航班管理结构体。
2. 注册用户并进行用户登录,如果登录成功则显示登录成功的用户名。
3. 提供菜单选项供用户选择操作。
4. 根据用户选择调用相应的航班管理函数进行航班信息的录入、查询、显示和排序。
5. 当用户选择退出时,程序结束。
整个代码的设计思路是将用户管理和航班管理分开,通过不同的结构体和函数来实现不同的功能。用户管理模块负责用户的注册和登录,航班管理模块负责航班信息的录入、查询、显示和排序。主程序负责用户交互和调用相应的函数来完成相应的操作。
user.h
//user.h #ifndef USER_H #define USER_H //用户管理结构体 typedef struct user { char username[32]; char password[32]; struct user* next; } User_t; typedef struct userManagement { User_t* head; } UserManagement_t; UserManagement_t* createUserManagement(); void registerUser(UserManagement_t* userManagement); User_t* login(UserManagement_t* userManagement); #endif
讯享网
user.c
讯享网#include <stdio.h> #include <stdlib.h> #include <string.h> #include "user.h" UserManagement_t* createUserManagement() { UserManagement_t* userManagement = (UserManagement_t*)malloc(sizeof(UserManagement_t)); userManagement->head = NULL; return userManagement; } //注册 void registerUser(UserManagement_t* userManagement) { char username[32]; char password[32]; printf("请输入用户名:"); scanf("%s", username); printf("请输入密码:"); scanf("%s", password); User_t* newUser = (User_t*)malloc(sizeof(User_t)); strcpy(newUser->username, username); strcpy(newUser->password, password); newUser->next = NULL; if (userManagement->head == NULL) { userManagement->head = newUser; } else { User_t* current = userManagement->head; while (current->next != NULL) { current = current->next; } current->next = newUser; } printf("用户注册成功\n"); } //登录 User_t* login(UserManagement_t* userManagement) { char username[32]; char password[32]; int attempts = 0; printf("请输入用户名:"); scanf("%s", username); printf("请输入密码:"); scanf("%s", password); User_t* current = userManagement->head; while (current != NULL) { if (strcmp(current->username, username) == 0 && strcmp(current->password, password) == 0) { return current; } attempts++; if (attempts >= 3) { printf("密码错误次数超过限制,登录失败\n"); return NULL; } printf("密码错误,请重新输入密码:"); scanf("%s", password); current = current->next; } return NULL; }
flight.h
#ifndef FLIGHT_H #define FLIGHT_H //航班管理结构体 typedef struct Flight { char flightNumber[10];//航班号 char departurePlace[20];//出发地址 char destination[20];//到达地址 char departureTime[20];//出发时间 char arrivalTime[20];//到达时间 int price; struct Flight* next; } Flight_t; typedef struct FlightManagement { Flight_t* head; } FlightManagement_t; FlightManagement_t* createFlightManagement(); void addFlight(FlightManagement_t* flightManagement); void searchFlight(FlightManagement_t* flightManagement); void displayFlights(FlightManagement_t* flightManagement); void sortFlights(FlightManagement_t* flightManagement); #endif
flight.c
讯享网#include <stdio.h> #include <stdlib.h> #include <string.h> #include "flight.h" FlightManagement_t* createFlightManagement() { FlightManagement_t* flightManagement = (FlightManagement_t*)malloc(sizeof(FlightManagement_t)); flightManagement->head = NULL; return flightManagement; } //录入航班信息 void addFlight(FlightManagement_t* flightManagement) { Flight_t* newFlight = (Flight_t*)malloc(sizeof(Flight_t)); printf("请输入航班号:"); scanf("%s", newFlight->flightNumber); printf("请输入出发地:"); scanf("%s", newFlight->departurePlace); printf("请输入目的地:"); scanf("%s", newFlight->destination); printf("请输入起飞时间:"); scanf("%s", newFlight->departureTime); printf("请输入到达时间:"); scanf("%s", newFlight->arrivalTime); printf("请输入价格:"); scanf("%d", &(newFlight->price)); newFlight->next = NULL; if (flightManagement->head == NULL) { flightManagement->head = newFlight; } else { Flight_t* current = flightManagement->head; while (current->next != NULL) { current = current->next; } current->next = newFlight; } printf("航班信息录入成功\n"); } //查询航班 void searchFlight(FlightManagement_t* flightManagement) { char flightNumber[10]; printf("请输入要查询的航班号:"); scanf("%s", flightNumber); Flight_t* current = flightManagement->head; while (current != NULL) { if (strcmp(current->flightNumber, flightNumber) == 0) { printf("航班号:%s\n", current->flightNumber); printf("出发地:%s\n", current->departurePlace); printf("目的地:%s\n", current->destination); printf("起飞时间:%s\n", current->departureTime); printf("到达时间:%s\n", current->arrivalTime); printf("价格:%d\n", current->price); return; } current = current->next; } printf("未找到匹配的航班信息\n"); } void displayFlights(FlightManagement_t* flightManagement) { Flight_t* current = flightManagement->head; if (current == NULL) { printf("没有航班信息\n"); return; } printf("航班信息如下:\n"); while (current != NULL) { printf("航班号:%s\n", current->flightNumber); printf("出发地:%s\n", current->departurePlace); printf("目的地:%s\n", current->destination); printf("起飞时间:%s\n", current->departureTime); printf("到达时间:%s\n", current->arrivalTime); printf("价格:%d\n", current->price); printf("\n"); current = current->next; } } //按票价排序 void sortFlights(FlightManagement_t* flightManagement) { int swapped; Flight_t* current; Flight_t* last = NULL; if (flightManagement->head == NULL) { return; } do { swapped = 0; current = flightManagement->head; while (current->next != last) { if (current->price > current->next->price) { int tempPrice = current->price; current->price = current->next->price; current->next->price = tempPrice; swapped = 1; } current = current->next; } last = current; } while (swapped); }
main.c
#include <stdio.h> #include <stdlib.h> #include "user.h" #include "flight.h" int main() { UserManagement_t* userManagement = createUserManagement(); FlightManagement_t* flightManagement = createFlightManagement(); // 注册用户 registerUser(userManagement); // 用户登录 User_t* user = login(userManagement); if (user == NULL) { printf("登录失败\n"); return 0; } printf("登录成功,用户名:%s\n", user->username); int choice; do { printf("\n请选择操作:\n"); printf("1. 录入航班信息\n"); printf("2. 查询航班信息\n"); printf("3. 显示航班信息\n"); printf("4. 排序航班信息\n"); printf("0. 退出\n"); printf("请输入选择:"); scanf("%d", &choice); switch (choice) { case 1: addFlight(flightManagement); break; case 2: searchFlight(flightManagement); break; case 3: displayFlights(flightManagement); break; case 4: sortFlights(flightManagement); printf("航班信息已排序\n"); break; case 0: printf("程序已退出\n"); break; default: printf("无效的选择,请重新输入\n"); break; } } while (choice != 0); return 0; }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/53931.html