“航班订票系统”程序的说明如下: 1.用户分为admin和普通用户两种,admin可以进行航班信息的录入、删除、修改,普通用户可以进行查询、订票、退票。 2.启动程序时,输入的用户名如果以前没有,则系统自动完成注册,如果有,则进行密码比较以判断是否允许登录。同时运行结果显示为: 请输入用户名: 请输入密码: (如果之前的用户存在就显示登录成功,否则直接注册成功进入菜单,如果密码不匹配则显示密码错误) 3. 无论是admin还是普通用户,他们操作的结果都要存盘,以便在以后运行本系统时还能使用那些数据。 4.程序必须对一切用户的输入都进行严格的合法性检查。 5.不能发生违背常理的错误(例如应该阻止admin删除某个已经存在订单的航班,或阻止他将航班座位数修改成小于订单的数目,等等)。 6.程序一定要尽量地简洁,包含文字 7.要求运行结果直接显示为用户注册登录部分(请输入用户名: 请输入密码:) 登录成功后则清屏进入菜单: 航班订票系统 欢迎您,用户名 请选择您要办理的业务: 1.列出所有航班 2.查询航班余票 3.订票 4.退票 5.列出我的订单 6.退出 (注:运行结果直接显示为 请输入用户名: 请输入密码: 清屏进入菜单后每选择一项都要清屏再进入) 并说出代码的中心及重点
时间: 2024-04-05 14:29:35 浏览: 25
中心:航班订票系统的实现。其中包括用户身份管理、航班信息的录入、删除、修改、查询、订票、退票和订单管理等功能。
重点:合法性检查、数据存储和用户界面设计。
合法性检查是确保用户输入的数据符合规范,避免程序出错或数据异常。数据存储是保证系统能在多次运行中保存和读取之前的数据,实现持久化存储。用户界面设计是让用户能够直观地使用系统,提高用户体验。
相关问题
Python设计一个程序,程序功能如下:1.用户登录界面,进行用户信息验证。2.主界面包含一个主菜单(即顶级菜单)和一个快捷菜单。
好的,以下是 Python 程序的实现:
```python
# 用户信息验证函数
def user_login():
# 假设用户名为 admin,密码为 123456
username = input("请输入用户名:")
password = input("请输入密码:")
if username == "admin" and password == "123456":
print("登录成功!")
return True
else:
print("用户名或密码错误,请重新输入!")
return False
# 主菜单函数
def main_menu():
print("欢迎进入主菜单!")
print("1.选项一")
print("2.选项二")
print("3.选项三")
print("4.退出")
# 快捷菜单函数
def quick_menu():
print("欢迎进入快捷菜单!")
print("1.选项一")
print("2.选项二")
print("3.选项三")
# 程序入口
if __name__ == "__main__":
# 用户登录验证
while not user_login():
pass
# 进入主界面
while True:
print("=" * 20)
print("请选择您要进入的菜单:")
print("1.主菜单")
print("2.快捷菜单")
print("3.退出")
choice = input("请输入选项:")
if choice == "1":
main_menu()
elif choice == "2":
quick_menu()
elif choice == "3":
print("程序已退出!")
break
else:
print("输入有误,请重新输入!")
```
程序说明:
1. `user_login` 函数用于实现用户登录验证,输入正确的用户名和密码后返回 `True`,否则返回 `False`。
2. `main_menu` 函数用于显示主菜单,可以根据需要修改菜单选项。
3. `quick_menu` 函数用于显示快捷菜单,可以根据需要修改菜单选项。
4. 在程序入口处,先进行用户登录验证,如果验证不通过,则一直重复验证,直到验证通过为止。
5. 进入主界面后,根据用户的选择进入相应的菜单,如果选择退出,则程序结束。
注意:为了保证程序的安全性,建议将用户名和密码存储在配置文件或数据库中,而不要直接写在代码中。
用c语言写航班订票系统,要求如下用户分为admin和普通用户两种,admin可以进行航班信息的录入、删除、修改,普通用户可以进行查询、订票、退票。 启动程序时,输入的用户名如果以前没有,则系统自动完成注册,如果有,则进行密码比较以判断是否允许登录。不能发生违背常理的错误(例如应该阻止admin删除某个已经存在订单的航班,或阻止他将航班座位数修改成小于订单的数目,等等)。
以下是一个简单的航班订票系统的C语言代码,实现了管理员和普通用户的功能要求:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define MAX_FLIGHTS 100
#define MAX_USERS 100
#define MAX_TICKETS 1000
struct Flight {
int id;
char from[20];
char to[20];
char date[20];
int seats;
int price;
};
struct User {
char name[20];
char password[20];
int isAdmin;
};
struct Ticket {
int flightId;
char userName[20];
};
struct Flight flights[MAX_FLIGHTS];
int nFlights = 0;
struct User users[MAX_USERS];
int nUsers = 0;
struct Ticket tickets[MAX_TICKETS];
int nTickets = 0;
void addUser(char *name, char *password, int isAdmin)
{
strcpy(users[nUsers].name, name);
strcpy(users[nUsers].password, password);
users[nUsers].isAdmin = isAdmin;
nUsers++;
}
void addFlight(char *from, char *to, char *date, int seats, int price)
{
flights[nFlights].id = nFlights + 1;
strcpy(flights[nFlights].from, from);
strcpy(flights[nFlights].to, to);
strcpy(flights[nFlights].date, date);
flights[nFlights].seats = seats;
flights[nFlights].price = price;
nFlights++;
}
void printFlights()
{
printf("ID\tFrom\tTo\tDate\tSeats\tPrice\n");
for (int i = 0; i < nFlights; i++)
{
printf("%d\t%s\t%s\t%s\t%d\t%d\n", flights[i].id, flights[i].from, flights[i].to, flights[i].date, flights[i].seats, flights[i].price);
}
}
int login(char *name, char *password)
{
for (int i = 0; i < nUsers; i++)
{
if (strcmp(users[i].name, name) == 0 && strcmp(users[i].password, password) == 0)
return i;
}
return -1;
}
void bookTicket(int userId, int flightId)
{
if (flights[flightId - 1].seats <= 0)
{
printf("Sorry, this flight is fully booked.\n");
return;
}
for (int i = 0; i < nTickets; i++)
{
if (tickets[i].flightId == flightId && strcmp(tickets[i].userName, users[userId].name) == 0)
{
printf("You have already booked this flight.\n");
return;
}
}
flights[flightId - 1].seats--;
strcpy(tickets[nTickets].userName, users[userId].name);
tickets[nTickets].flightId = flightId;
nTickets++;
printf("Ticket booked successfully!\n");
}
void cancelTicket(int userId, int flightId)
{
int ticketIndex = -1;
for (int i = 0; i < nTickets; i++)
{
if (tickets[i].flightId == flightId && strcmp(tickets[i].userName, users[userId].name) == 0)
{
ticketIndex = i;
break;
}
}
if (ticketIndex == -1)
{
printf("You have not booked this flight.\n");
return;
}
flights[flightId - 1].seats++;
for (int i = ticketIndex; i < nTickets - 1; i++)
{
tickets[i] = tickets[i + 1];
}
nTickets--;
printf("Ticket cancelled successfully!\n");
}
void deleteFlight(int flightId)
{
for (int i = 0; i < nTickets; i++)
{
if (tickets[i].flightId == flightId)
{
printf("Cannot delete this flight because there are tickets booked for it.\n");
return;
}
}
for (int i = flightId - 1; i < nFlights - 1; i++)
{
flights[i] = flights[i + 1];
}
nFlights--;
printf("Flight deleted successfully!\n");
}
void modifyFlight(int flightId, int seats, int price)
{
for (int i = 0; i < nTickets; i++)
{
if (tickets[i].flightId == flightId && flights[flightId - 1].seats < seats)
{
printf("Cannot modify this flight because there are more tickets booked than the new number of seats.\n");
return;
}
}
flights[flightId - 1].seats = seats;
flights[flightId - 1].price = price;
printf("Flight modified successfully!\n");
}
int main()
{
addUser("admin", "admin123", 1);
addUser("user1", "user123", 0);
addUser("user2", "user123", 0);
addFlight("Beijing", "Shanghai", "2021-07-01", 100, 500);
addFlight("Shanghai", "Beijing", "2021-07-02", 100, 500);
addFlight("Beijing", "Guangzhou", "2021-07-03", 100, 800);
addFlight("Guangzhou", "Beijing", "2021-07-04", 100, 800);
int userId = -1;
char name[20], password[20];
printf("Enter your name: ");
scanf("%s", name);
printf("Enter your password: ");
scanf("%s", password);
userId = login(name, password);
if (userId == -1)
{
printf("User not found or password incorrect. Please try again.\n");
return 0;
}
printf("Welcome, %s!\n", users[userId].name);
while (1)
{
if (users[userId].isAdmin)
{
printf("1. Add flight\n");
printf("2. Delete flight\n");
printf("3. Modify flight\n");
printf("4. Print flights\n");
printf("5. Exit\n");
int choice;
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice)
{
case 1:
{
char from[20], to[20], date[20];
int seats, price;
printf("Enter from: ");
scanf("%s", from);
printf("Enter to: ");
scanf("%s", to);
printf("Enter date (yyyy-mm-dd): ");
scanf("%s", date);
printf("Enter number of seats: ");
scanf("%d", &seats);
printf("Enter price: ");
scanf("%d", &price);
addFlight(from, to, date, seats, price);
printf("Flight added successfully!\n");
break;
}
case 2:
{
int flightId;
printf("Enter flight ID: ");
scanf("%d", &flightId);
if (flightId <= 0 || flightId > nFlights)
{
printf("Invalid flight ID. Please try again.\n");
break;
}
deleteFlight(flightId);
break;
}
case 3:
{
int flightId, seats, price;
printf("Enter flight ID: ");
scanf("%d", &flightId);
if (flightId <= 0 || flightId > nFlights)
{
printf("Invalid flight ID. Please try again.\n");
break;
}
printf("Enter number of seats: ");
scanf("%d", &seats);
printf("Enter price: ");
scanf("%d", &price);
modifyFlight(flightId, seats, price);
break;
}
case 4:
printFlights();
break;
case 5:
return 0;
default:
printf("Invalid choice. Please try again.\n");
break;
}
}
else
{
printf("1. Book ticket\n");
printf("2. Cancel ticket\n");
printf("3. Print flights\n");
printf("4. Exit\n");
int choice;
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice)
{
case 1:
{
int flightId;
printf("Enter flight ID: ");
scanf("%d", &flightId);
if (flightId <= 0 || flightId > nFlights)
{
printf("Invalid flight ID. Please try again.\n");
break;
}
bookTicket(userId, flightId);
break;
}
case 2:
{
int flightId;
printf("Enter flight ID: ");
scanf("%d", &flightId);
if (flightId <= 0 || flightId > nFlights)
{
printf("Invalid flight ID. Please try again.\n");
break;
}
cancelTicket(userId, flightId);
break;
}
case 3:
printFlights();
break;
case 4:
return 0;
default:
printf("Invalid choice. Please try again.\n");
break;
}
}
}
return 0;
}
```
在这个程序中,我们定义了航班、用户和订单的结构体,并定义了相应的数组来存储它们。在主函数中,我们首先添加了一些默认的管理员和航班信息,然后让用户输入用户名和密码进行登录。如果输入的用户名不存在,则自动完成注册。之后,我们根据用户的身份不同,分别提供管理员和普通用户的功能。管理员可以添加、删除和修改航班信息,以及查看所有航班信息。普通用户可以查询、订票和退票。在订票和退票时,我们检查航班的剩余座位数和订单情况,防止出现不合理的操作。如果用户输入了无效的选项,则程序会给出相应的提示。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)