system("cls"); std::cout << "读取完成" << endl; std::cout << "请选择最短路径要求" << endl; std::cout << "时间:1 " << endl; std::cout << "价格:2 " << endl; cin >> p; system("cls"); switch (p) { case 1: std::cout << "以时间为基准:" << endl; TimeShortPath(graph, s, way, D); for (int i = 0; i < 199; ++i) { if (way[e][i] == n) { c[n - 1] = i; std::cout << cities[i].city << ' '; n++; i = -1; } } std::cout << std::endl; std::cout << "时间:" << D[e] << " h "; TxtWriting(graph, c, n); case 2: std::cout << "以价格为基准:" << endl; CostShortPath(graph, s, way, D); for (int i = 0; i < 199; ++i) { if (way[e][i] == n) { c[n - 1] = i; std::cout << cities[i].city << ' '; n++; i = -1; } } std::cout << std::endl; std::cout << "价格:$" << D[e]; TxtWriting(graph, c, n); }
时间: 2023-10-30 09:59:38 浏览: 129
这段代码实现了一个简单的控制台界面,让用户输入最短路径的要求(时间或价格),并调用相应的函数求解最短路径,并输出路径信息和路径花费。具体来说,该代码先清空控制台屏幕,然后输出提示信息,让用户选择最短路径要求。根据用户的选择,使用switch语句调用TimeShortPath或CostShortPath函数求解最短路径,并将路径保存在数组c中。然后遍历数组c,输出路径信息,并调用TxtWriting函数将路径信息输出到文本文件中。最后,根据用户选择的最短路径要求输出路径的时间或价格。
相关问题
以#include <iostream> #include <windows.h> #include <iomanip> #define N 1000 using namespace std; struct person { int age char function[12] char gender[10] }; struct staff { int number; char name[12] person per;开头写一篇关于员工信息管理的小系统
员工信息管理系统
本系统旨在帮助企业或机构管理员工信息,包括员工基本信息、工作信息等。本系统使用 C++ 语言编写,采用结构体和文件存储方式实现员工信息的管理和查询。
系统功能
1. 添加员工信息
2. 查询员工信息
3. 修改员工信息
4. 删除员工信息
5. 显示所有员工信息
6. 退出系统
系统实现
1. 添加员工信息
当用户选择添加员工信息时,系统会要求用户输入员工的基本信息,包括员工编号、姓名、年龄、性别、职务等。在输入完毕后,系统将员工信息保存到文件中,以便后续查询和修改。
2. 查询员工信息
当用户选择查询员工信息时,系统会要求用户输入员工编号或姓名,并根据用户的输入在文件中查找员工信息。如果找到了对应的员工信息,系统将显示该员工的基本信息、工作信息等;否则,系统将提示用户未找到对应的员工信息。
3. 修改员工信息
当用户选择修改员工信息时,系统会要求用户输入员工编号或姓名,并根据用户的输入在文件中查找员工信息。如果找到了对应的员工信息,系统将允许用户修改员工的基本信息、工作信息等;否则,系统将提示用户未找到对应的员工信息。
4. 删除员工信息
当用户选择删除员工信息时,系统会要求用户输入员工编号或姓名,并根据用户的输入在文件中查找员工信息。如果找到了对应的员工信息,系统将提示用户确认是否删除该员工信息;否则,系统将提示用户未找到对应的员工信息。
5. 显示所有员工信息
当用户选择显示所有员工信息时,系统将从文件中读取所有员工信息,并将其显示在屏幕上,包括员工的基本信息、工作信息等。
6. 退出系统
当用户选择退出系统时,系统将保存所有员工信息,并退出程序。
源码实现
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <windows.h>
#include <iomanip>
using namespace std;
#define N 1000
struct Person {
int age;
char function[12];
char gender[10];
};
struct Staff {
int number;
char name[12];
Person per;
};
void add_staff(Staff staffs[], int& count) {
cout << "请输入员工编号:";
cin >> staffs[count].number;
cout << "请输入员工姓名:";
cin >> staffs[count].name;
cout << "请输入员工年龄:";
cin >> staffs[count].per.age;
cout << "请输入员工性别:";
cin >> staffs[count].per.gender;
cout << "请输入员工职务:";
cin >> staffs[count].per.function;
count++;
cout << "添加成功!" << endl;
}
void search_staff(Staff staffs[], int count) {
int choice;
string name;
int number;
cout << "请选择查询方式(1.按编号查询,2.按姓名查询):";
cin >> choice;
if (choice == 1) {
cout << "请输入员工编号:";
cin >> number;
for (int i = 0; i < count; i++) {
if (staffs[i].number == number) {
cout << "员工编号:" << staffs[i].number << endl;
cout << "员工姓名:" << staffs[i].name << endl;
cout << "员工年龄:" << staffs[i].per.age << endl;
cout << "员工性别:" << staffs[i].per.gender << endl;
cout << "员工职务:" << staffs[i].per.function << endl;
return;
}
}
}
else if (choice == 2) {
cout << "请输入员工姓名:";
cin >> name;
for (int i = 0; i < count; i++) {
if (strcmp(staffs[i].name, name.c_str()) == 0) {
cout << "员工编号:" << staffs[i].number << endl;
cout << "员工姓名:" << staffs[i].name << endl;
cout << "员工年龄:" << staffs[i].per.age << endl;
cout << "员工性别:" << staffs[i].per.gender << endl;
cout << "员工职务:" << staffs[i].per.function << endl;
return;
}
}
}
cout << "未找到对应的员工信息!" << endl;
}
void modify_staff(Staff staffs[], int count) {
int choice;
string name;
int number;
cout << "请选择修改方式(1.按编号修改,2.按姓名修改):";
cin >> choice;
if (choice == 1) {
cout << "请输入员工编号:";
cin >> number;
for (int i = 0; i < count; i++) {
if (staffs[i].number == number) {
cout << "请输入员工姓名:";
cin >> staffs[i].name;
cout << "请输入员工年龄:";
cin >> staffs[i].per.age;
cout << "请输入员工性别:";
cin >> staffs[i].per.gender;
cout << "请输入员工职务:";
cin >> staffs[i].per.function;
cout << "修改成功!" << endl;
return;
}
}
}
else if (choice == 2) {
cout << "请输入员工姓名:";
cin >> name;
for (int i = 0; i < count; i++) {
if (strcmp(staffs[i].name, name.c_str()) == 0) {
cout << "请输入员工编号:";
cin >> staffs[i].number;
cout << "请输入员工年龄:";
cin >> staffs[i].per.age;
cout << "请输入员工性别:";
cin >> staffs[i].per.gender;
cout << "请输入员工职务:";
cin >> staffs[i].per.function;
cout << "修改成功!" << endl;
return;
}
}
}
cout << "未找到对应的员工信息!" << endl;
}
void delete_staff(Staff staffs[], int& count) {
int choice;
string name;
int number;
cout << "请选择删除方式(1.按编号删除,2.按姓名删除):";
cin >> choice;
if (choice == 1) {
cout << "请输入员工编号:";
cin >> number;
for (int i = 0; i < count; i++) {
if (staffs[i].number == number) {
for (int j = i; j < count - 1; j++) {
staffs[j] = staffs[j + 1];
}
count--;
cout << "删除成功!" << endl;
return;
}
}
}
else if (choice == 2) {
cout << "请输入员工姓名:";
cin >> name;
for (int i = 0; i < count; i++) {
if (strcmp(staffs[i].name, name.c_str()) == 0) {
for (int j = i; j < count - 1; j++) {
staffs[j] = staffs[j + 1];
}
count--;
cout << "删除成功!" << endl;
return;
}
}
}
cout << "未找到对应的员工信息!" << endl;
}
void display_staff(Staff staffs[], int count) {
cout << "员工编号\t员工姓名\t员工年龄\t员工性别\t员工职务" << endl;
for (int i = 0; i < count; i++) {
cout << staffs[i].number << "\t\t" << staffs[i].name << "\t\t" << staffs[i].per.age << "\t\t" << staffs[i].per.gender << "\t\t" << staffs[i].per.function << endl;
}
}
int main() {
Staff staffs[N];
int count = 0;
int choice;
ifstream infile("staffs.txt");
if (infile.is_open()) {
while (!infile.eof() && count < N) {
infile >> staffs[count].number;
infile >> staffs[count].name;
infile >> staffs[count].per.age;
infile >> staffs[count].per.gender;
infile >> staffs[count].per.function;
count++;
}
infile.close();
}
while (true) {
cout << "-------------------员工信息管理系统-------------------" << endl;
cout << "1.添加员工信息" << endl;
cout << "2.查询员工信息" << endl;
cout << "3.修改员工信息" << endl;
cout << "4.删除员工信息" << endl;
cout << "5.显示所有员工信息" << endl;
cout << "6.退出系统" << endl;
cout << "请选择操作(1-6):";
cin >> choice;
switch (choice) {
case 1:
add_staff(staffs, count);
break;
case 2:
search_staff(staffs, count);
break;
case 3:
modify_staff(staffs, count);
break;
case 4:
delete_staff(staffs, count);
break;
case 5:
display_staff(staffs, count);
break;
case 6:
ofstream outfile("staffs.txt");
for (int i = 0; i < count; i++) {
outfile << staffs[i].number << " ";
outfile << staffs[i].name << " ";
outfile << staffs[i].per.age << " ";
outfile << staffs[i].per.gender << " ";
outfile << staffs[i].per.function << endl;
}
outfile.close();
cout << "感谢使用员工信息管理系统,再见!" << endl;
Sleep(2000);
exit(0);
default:
cout << "无效操作,请重新选择!" << endl;
break;
}
system("pause");
system("cls");
}
return 0;
}
```
系统说明
本系统使用了文件存储方式,将员工信息保存到文本文件中。在程序运行时,系统会从文件中读取已有的员工信息,并将修改后的员工信息保存到文件中。由于本系统仅为演示程序,没有进行输入检查和异常处理,实际使用时需要进行相应的改进。
你需要设计一个控制台地图游戏,玩家需要通过控制台输入来移动自己的角色,并在地图上寻找宝藏。玩家可以通过键盘控制小球向上、向下、向左或向右移动。当小球移动到宝藏处时,游戏结束,输出恭喜信息。 要求: 1. 可以通过输入行数和列数调整地图的大小; 2. 可以随机生成宝藏位置和角色起始位置,注意两者不能相同,借助rand()函数生成; 提示:可以采用w、s、a、d表示键盘控制的方向。游戏开始时用O表示角色起始位置,X表示宝藏所在位置。当到达目的地后,即X和O符号重合时变成“$”符号。在地图上增加障碍物和怪物等阻挡玩家前进的障碍,其中障碍物表示玩家无法通过,可以用“#”来表示,玩家如果碰到怪物游戏就会结束,怪物可以采用“@”符号来表示。玩家需要躲避这些障碍和怪物,并到达宝藏的位置,以完成游戏。 要求: 1. 设计一个地图,地图中包含障碍物、怪物和宝藏等元素,可以使用特定的字符来代表不同元素,地图大小不小于10 x 10。 2. 玩家可以通过输入 W、A、S、D 来分别向上、向左、向下、向右移动,如果移动的位置上有障碍物,则玩家不能通过。 3. 玩家遇到怪物时,需要躲避,如果不小心撞上了,游戏结束。 4. 玩家到达宝藏的位置即可完成游戏。 5. 玩家可以通过指令保存游戏进度,下次进入游戏时可以继续游戏。 6. 游戏支持不同难度的设计,使得游戏过程有趣。 7. 采用函数对整个游戏进行解构,原则上函数功能尽量单一,main函数进行函数调用,保证main函数尽量清晰。尽量以此写一份代码
好的,以下是一份基于C++的控制台地图游戏代码:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
#include <fstream>
using namespace std;
const int MAX_SIZE = 100;
int map[MAX_SIZE][MAX_SIZE];
int row, col;
int player_x, player_y, treasure_x, treasure_y;
bool is_saved = false;
bool is_game_over = false;
void init_map() {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
map[i][j] = 0;
}
}
}
void print_map() {
system("cls");
cout << "Map size: " << row << " x " << col << endl;
cout << "W: Up, S: Down, A: Left, D: Right" << endl;
cout << "O: player, X: treasure, #: obstacle, @: monster" << endl;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (i == player_x && j == player_y) {
cout << "O ";
} else if (i == treasure_x && j == treasure_y) {
cout << "X ";
} else if (map[i][j] == 1) {
cout << "# ";
} else if (map[i][j] == 2) {
cout << "@ ";
} else if (i == treasure_x && j == treasure_y && player_x == treasure_x && player_y == treasure_y) {
cout << "$ ";
} else {
cout << " ";
}
}
cout << endl;
}
}
bool is_valid_move(int x, int y) {
if (x < 0 || x >= row || y < 0 || y >= col) {
return false;
}
if (map[x][y] == 1) {
return false;
}
return true;
}
void move_up() {
if (is_valid_move(player_x - 1, player_y)) {
player_x--;
}
}
void move_down() {
if (is_valid_move(player_x + 1, player_y)) {
player_x++;
}
}
void move_left() {
if (is_valid_move(player_x, player_y - 1)) {
player_y--;
}
}
void move_right() {
if (is_valid_move(player_x, player_y + 1)) {
player_y++;
}
}
void move_player(char direction) {
switch (direction) {
case 'w':
case 'W':
move_up();
break;
case 's':
case 'S':
move_down();
break;
case 'a':
case 'A':
move_left();
break;
case 'd':
case 'D':
move_right();
break;
default:
break;
}
}
void generate_obstacles(int num_obstacles) {
srand(time(NULL));
for (int i = 0; i < num_obstacles; i++) {
int x = rand() % row;
int y = rand() % col;
if (x == player_x && y == player_y) {
continue;
}
if (x == treasure_x && y == treasure_y) {
continue;
}
map[x][y] = 1;
}
}
void generate_monsters(int num_monsters) {
srand(time(NULL));
for (int i = 0; i < num_monsters; i++) {
int x = rand() % row;
int y = rand() % col;
if (x == player_x && y == player_y) {
continue;
}
if (x == treasure_x && y == treasure_y) {
continue;
}
if (map[x][y] == 1) {
continue;
}
map[x][y] = 2;
}
}
void generate_treasure() {
srand(time(NULL));
while (true) {
int x = rand() % row;
int y = rand() % col;
if (x == player_x && y == player_y) {
continue;
}
if (map[x][y] == 1) {
continue;
}
if (map[x][y] == 2) {
continue;
}
treasure_x = x;
treasure_y = y;
break;
}
}
void generate_player() {
srand(time(NULL));
while (true) {
int x = rand() % row;
int y = rand() % col;
if (x == treasure_x && y == treasure_y) {
continue;
}
if (map[x][y] == 1) {
continue;
}
if (map[x][y] == 2) {
continue;
}
player_x = x;
player_y = y;
break;
}
}
void save_game() {
ofstream fout("save.txt");
if (!fout) {
cout << "Failed to save game!" << endl;
return;
}
fout << row << " " << col << endl;
fout << player_x << " " << player_y << endl;
fout << treasure_x << " " << treasure_y << endl;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
fout << map[i][j] << " ";
}
fout << endl;
}
fout.close();
cout << "Game saved!" << endl;
is_saved = true;
}
void load_game() {
ifstream fin("save.txt");
if (!fin) {
cout << "No saved game found!" << endl;
return;
}
fin >> row >> col;
fin >> player_x >> player_y;
fin >> treasure_x >> treasure_y;
init_map();
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
fin >> map[i][j];
}
}
fin.close();
is_game_over = false;
is_saved = true;
cout << "Game loaded!" << endl;
}
void play_game() {
char input;
while (!is_game_over) {
print_map();
cout << "Enter a direction (WASD): ";
input = getch();
move_player(input);
if (player_x == treasure_x && player_y == treasure_y) {
map[player_x][player_y] = 3;
print_map();
cout << "Congratulations! You have found the treasure!" << endl;
is_game_over = true;
}
if (map[player_x][player_y] == 2) {
print_map();
cout << "You have encountered a monster! Game over." << endl;
is_game_over = true;
}
if (input == 'q' || input == 'Q') {
save_game();
}
}
}
int main() {
char choice;
cout << "Welcome to the Treasure Hunt Game!" << endl;
while (true) {
cout << "1: New Game" << endl;
cout << "2: Load Game" << endl;
cout << "3: Exit" << endl;
cout << "Enter your choice: ";
choice = getch();
cout << endl;
switch (choice) {
case '1':
is_game_over = false;
is_saved = false;
cout << "Enter map size (row x col): ";
cin >> row >> col;
init_map();
generate_obstacles(row * col / 10);
generate_monsters(row * col / 20);
generate_treasure();
generate_player();
play_game();
break;
case '2':
load_game();
if (is_saved) {
play_game();
}
break;
case '3':
cout << "Thanks for playing! Goodbye." << endl;
return 0;
default:
cout << "Invalid choice. Please try again." << endl;
break;
}
}
}
```
这份代码实现了一个控制台地图游戏,包括以下功能:
1. 新游戏、读取保存的游戏、退出游戏三个选项。
2. 可以通过输入行数和列数调整地图的大小。
3. 可以随机生成宝藏位置和角色起始位置,注意两者不能相同,借助rand()函数生成。
4. 可以通过键盘输入来控制角色的移动,例如按下“W”键可以让角色向上移动一个格子,以此类推。在移动之前需要检查目标位置上是否有障碍物或怪物,如果有则不能移动,否则可以移动。
5. 如果玩家移动到了怪物所在的位置,游戏结束。
6. 如果玩家移动到了宝藏所在的位置,游戏结束并输出恭喜信息。
7. 可以通过指令保存游戏进度,下次进入游戏时可以继续游戏。
8. 支持不同难度的设计,使得游戏过程有趣。
9.
阅读全文