使用C++语言,写一个计算机设计大赛管理系统。
要求如下:(1)能够管理各参赛队的基本信息(包含参赛队编号,参赛作品名称,参赛学校,赛事类别,参赛者,指导老师),赛事类别共11项(参见大赛官网jsjds.blcu.edu.cn);包括增加、删除、修改参赛队伍的信息。
(2)从team.txt中读取参赛队伍的基本信息,实现基于二叉排序树的查找。根据提示输入参赛队编号,若查找成功,输出该赛事类别对应的基本信息(参赛作品名称、参赛学校、赛事类别、参赛者和指导老师信息),同时,输出查找成功时的平均查找长度ASL;否则,输出“查找失败!”。
(3)能够提供按参赛学校查询参赛团队(或根据赛事类别查询参赛团队),即,根据提示输入参赛学校名称(赛事类别),若查找成功,输出该学校参赛的(该赛事类别的)所有团队的基本信息,输出的参赛团队按赛事类别有序输出。(排序算法可从选择排序、插入排序、希尔排序、归并排序、堆排序中任意选择,并为选择算法的原因做出说明。)
(4)为省赛现场设计一个决赛叫号系统。所有参赛队按赛事组织文件中的赛事类别分到9个决赛室,决赛室按顺序叫号,被叫号参赛队进场,比赛结束后,下一参赛队才能进赛场。请模拟决赛叫号系统,演示省赛现场各决赛室的参赛队进场情况。(模拟时,要能直观展示叫号顺序与进场秩序一致)
(5)赛事系统为参赛者提供赛地的校园导游程序,为参赛者提供各种路径导航的查询服务。以我校长山校区提供比赛场地为例,(请为参赛者提供不少于10个目标地的导航。可为参赛者提供校园地图中任意目标地(建筑物)相关信息的查询;提供任意两个目标地(建筑物)的导航查询,即查询任意两个目的地(建筑物)之间的一条最短路径。
1)赛事数据要求存入文件(txt或excel)并能读入查询;
2)赛地目的地查询,需提供目的地(建筑物)名称、代号、简介、两地之间路径长度等信息;
3)输入数据形式和范围:赛事相关数据可从键盘输入,或自文件导入。
4)界面要求:交互设计要合理,每个功能可以设计菜单,用户根据提示,完成相关功能的要求。
文件链接如下:(文件格式是txt,但是这里不好上传所以改成了docx)
[](【腾讯文档】新建 DOCX 文档
https://docs.qq.com/doc/DTlRrSnBvdlJYT0lI
)
图片如下
可以参考下,有问题可以说
int main()
{
insertinformation();
eventCate_separate(teamsall);
while (true) {
cout << "================== 赛事管理系统 ==================" << endl;
cout << "1. 添加参赛队伍" << endl;
cout << "2. 删除参赛队伍" << endl;
cout << "3. 修改参赛队伍" << endl;
cout << "4. 按参赛队编号查询参赛队伍" << endl;
cout << "5. 按参赛学校查询参赛队伍" << endl;
cout << "6. 决赛叫号功能" << endl;
cout<< "7. 地图导航功能" <<endl;
cout << "0. 退出系统" << endl;
cout << "=================================================" << endl;
cout << "请输入操作选项:";
int a;
cin >>a;
switch (a)
{
case 1:
{
string id, project, schoolname, event, participants, teacher;
cout << "请输入参赛队编号:" << endl;
cin >> id;
cout << "请输入参赛作品名称:" << endl;
cin >> project;
cout << "请输入参赛参赛学校:" << endl;
cin >> schoolname;
cout << "请输入参赛的赛事类别:" << endl;
cin >> event;
cout << "请输入参赛者:" << endl;
cin >> participants;
cout << "请输入参赛的指导老师:" << endl;
cin >> teacher;
Team a;
a.insertTeamID(id);
a.insertworkname(project);
a.insertschool(schoolname);
a.inserteventCate(event);
a.insertparticipants(participants);
a.insertteachers(teacher);
addteam(id, project, schoolname, event, participants, teacher);
addteam2(teamsall, a);
break;
}
case 2:
{
cout << "请输入你想删除的参赛队伍编号:" << endl;
string l;
cin >> l;
deleteteam(teamsall, l);
deletfile(l);
break;
}
case 3:
{
cout << "请输入你想修改的参赛队伍编号:" << endl;
string l;
cin >> l;
string id, project, schoolname, event, participants, teacher;
cout << "请输入参赛队编号:" << endl;
cin >> id;
cout << "请输入参赛作品名称:" << endl;
cin >> project;
cout << "请输入参赛参赛学校:" << endl;
cin >> schoolname;
cout << "请输入参赛的赛事类别:" << endl;
cin >> event;
cout << "请输入参赛者:" << endl;
cin >> participants;
cout << "请输入参赛的指导老师:" << endl;
cin >> teacher;
revise(l, id, project, schoolname, event, participants, teacher);
reworkteam(teamsall, l,id, project, schoolname, event, participants, teacher);
break;
}
case 4:
{
cout << "请输入你想查询的参赛队伍编号:" << endl;
string l;
cin >> l;
cout<<"*******查询结果如下:*******" << endl;
searchid(root, l);
break;
}
case 5:
{
cout << "请输入你想查询的参赛队伍的学校:" << endl;
string l;
cin >> l;
sortprint(teamsall, l);
break;
}
case 6:
{
cout << "请输入你想查询的赛区数字:" << endl;
int l;
cin >> l;
cout<<"********你想查询" <<l<<"赛区!******" << endl;
vector<Team> m = search_zone(l);
Approach_sequence(m);
Call_system(m);
break;
}
case 7:
{
Mat image = imread("C:\\Users\\Lenovo\\Desktop\\无标题.png", IMREAD_GRAYSCALE);
namedWindow("image window", WINDOW_NORMAL);
imshow("image window", image);
waitKey(0);
cout << " 0->3号组团" << endl << " 1->西食堂" << endl << " 2->文体中心" << endl << " 3->足球场" << endl << " 4->文理大楼" << endl;
cout << " 5->笃学楼" << endl << " 6->东食堂" << endl << " 7->9号组团" << endl << " 8->图书馆" << endl << " 9->计算机学院" << endl;
string e;
string f;
cout << "请输入你的起始地址:" << endl;
cin >> e;
if (identifyposition(e) < 0)
{
cout<<"输入错误!请重新输入!" << endl;
break;
}
cout << "请输入你要到达的地址:" << endl;
cin >> f;
if (identifyposition(f) < 0)
{
cout << "输入错误!请重新输入!" << endl;
break;
}
searchposition(e, f);
break;
}
case 0:
cout << "感谢使用赛事管理系统!再见!" << endl;
return 0;
default:
cout << "无效的操作选项!请重新输入。" << endl;
break;
}
cout << endl;
}
std::system("PAUSE");
return 0;
}
你好,你的这个问题有些复杂了,实现起来有点凡事,不过你可以参考一下网络上博客的文章,或许能从中得到一些启发,写代码这东西主要是一个灵感
https://blog.csdn.net/qq_52837311/article/details/125041468
https://blog.csdn.net/qq_56004086/article/details/124799979
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
class Project {
public:
int projectCode;
string Name;
int teamnum; //参赛队伍数量
int* jointeam = new int[10]; //参赛队伍编号
int* score = new int[10]; //参赛队伍成绩
};
class School {
public:
int schoolCode; //学校编码
string schoolName; //学校名称
int Teamnum; //参加队伍数量
int sum; //项目总分
};
int m; //项目数量
int n; //学校数量
vector<Project>project(10); //项目信息
vector<School>school(10); //学校信息
void add()
{
string temp;
for (int i = 0; i < m; i++) {
project[i].projectCode = i + 1;
cout << " 请输入第" << i + 1 << "个项目的名称:" << endl;
cin >> temp;
project[i].Name = temp;
cout << " 添加成功!" << endl;
cout << " -------------------------------------------------------" << endl;
}
for (int i = 0; i < m; i++) {
cout << " 项目编号" << project[i].projectCode << "项目名称" << project[i].Name << endl;
cout << " -------------------------------------------------------" << endl;
}
for (int i = 0; i < n; i++) {
school[i].schoolCode = i + 1;
cout << " 请输入第" << i + 1 << "个学校的名称" << endl;
cin >> temp;
school[i].schoolName = temp;
cout << " 添加成功!" << endl;
cout << " =========================================================" << endl;
}
for (int i = 0; i < n; i++) {
cout << " 学校编号 " << school[i].schoolCode << " 学校名称" << school[i].schoolName << endl;
}
for (int i = 0; i < m; i++) {
int a;
do
{
cout << " 请输入大于2的数" << endl;
cout << " 请输入参加** " << project[i].Name << " **的学校数量:" << endl;
cin >> a;
} while (a <= 1);
int b;
project[i].teamnum = a;
cout << " 请依次输入参加** " << project[i].Name << " **的学校编号:" << endl;
for (int j = 0; j < project[i].teamnum; j++) {
cin >> b;
project[i].jointeam[j] = b;
cout << " 输入成功" << endl;
cout << " ==================================================================" << endl;
}
cout << " 参加项目** " << project[i].Name << " **的学校有" << endl;
for (int j = 0; j < project[i].teamnum; j++) {
cout << project[i].jointeam[j] << " " << endl;
}
cout << "========" << endl;
cout << " 请依次输入参加** " << project[i].Name << " **的学校的分数" << endl;
for (int j = 0; j < project[i].teamnum; j++) {
int score;
cout << school[j].schoolName << endl;
cin >> score;
if (score >= 0 && score <= 100) {
project[i].score[j] = score;
cout << "输入成功!" << endl;
}
else {
cout << "您的输入有误!" << endl;
exit(0);
}
}
cout << "========" << endl;
cout << "显示如下:" << endl;
for (int j = 0; j < project[i].teamnum; j++) {
cout << "编号" << project[i].jointeam[j] << "的学校取得的成绩:" << project[i].score[j];
cout << "----------------" << endl;
}
cout << "========" << endl;
}
}
void save()
{
fstream f;
f.open("data.txt", ios::out);
for (int i = 0; i < m; i++)
{
f << project[i].projectCode << ' ' << project[i].Name << ' ' << project[i].Name << endl;
}
f << endl;
for (int i = 0; i < n; i++) {
f << school[i].schoolCode << ' ' << school[i].schoolName << endl;
}
f.close();
}
void read()
{
fstream f;
f.open("data.txt", ios::in);
for (int i = 0; i < m; i++)
{
f >> project[i].projectCode >> project[i].Name >> project[i].Name;
}
for (int i = 0; i < n; i++) { //保存学校信息
f >> school[i].schoolCode >> school[i].schoolName;
}
f.close();
}
void printByCodes() { //学校编号输出
int sum = 0;
for (int i = 0; i < n; i++) {
cout << " ------------------------------------------------------" << endl;
cout << " 学校编号" << school[i].schoolCode << endl;
cout << " 学校名称" << school[i].schoolName << endl;
cout << " ------------------------------------------------------" << endl;
for (int j = 0; j < m; j++) {
for (int k = 0; k < project[j].jointeam[k]; k++) {
if (project[j].jointeam[k] == school[i].schoolCode) {
cout << "参赛项目:" << project[j].Name << endl;
cout << "取得成绩:" << project[j].score[k] << endl;
cout << "=======" << endl;
sum += project[j].score[k];
}
}
}
cout << "学校的总分:" << sum << endl;
school[i].sum = sum;
sum = 0;
cout << " ================================================" << endl;
}
}
void printByScore() { //排序
int temp = 0;
int* temps = new int[n];
for (int i = 0; i < n; i++) {
temps[i] = school[i].sum;
}
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
if (temps[i] > temps[j]) {
temp = temps[i];
temps[i] = temps[j];
temps[j] = temp;
}
}
}
cout << "按照总分排序如下:" << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (temps[i] == school[j].sum) {
cout << "总分第" << n - i << "名的学校是" << school[j].schoolName << endl;
cout << "其总分是:" << school[j].sum << endl;
cout << "===============" << endl;
}
}
}
}
void search() { //按学校编号查询
cout << "请输入查询的学校编号" << endl;
cout << " ";
int scode;
cin >> scode;
cout << "请输入查询的项目编号" << endl;
int pcode;
cin >> pcode;
cout << "========" << endl;
int* temps = new int[project[pcode - 1].teamnum];
int len = sizeof(temps) / sizeof(int);
for (int i = 0; i < len; i++) {
temps[i] = project[pcode - 1].score[i];
}
int temp = 0;
for (int i = 0; i < len; i++) {
for (int j = i; j < len; j++) {
if (temps[i] > temps[j]) {
temp = temps[i];
temps[i] = temps[j];
temps[j] = temp;
}
}
}
cout << "========" << endl;
for (int i = 0; i < len; i++) {
for (int j = 0; j < len; j++) {
if (project[pcode - 1].score[i] == temps[j]) {
cout << "该学校在该项目中排第" << j << "名" << endl;
}
}
}
}
void TopThree() {
//按项目编号查询取得前三名的学校
cout << "========" << endl;
cout << "请输入您想要查询的项目的编号:" << endl;
int code;
cin >> code;
int* temps = new int[project[code - 1].teamnum];
int len = sizeof(temps) / sizeof(int);
for (int i = 0; i < len; i++) {
temps[i] = project[code - 1].score[i];
}
int temp = 0;
for (int i = 0; i < len; i++) {
for (int j = i; j < len; j++) {
if (temps[i] > temps[j]) {
temp = temps[i];
temps[i] = temps[j];
temps[j] = temp;
}
}
}
cout << "========" << endl;
for (int i = 0; i < len; i++) {
for (int j = 0; j < n; j++) {
if (temps[len - 1] == project[code - 1].score[i]) {
if (school[j].schoolCode == project[code - 1].jointeam[i]) {
cout << "第一名的学校是:" << school[j].schoolName << endl;
cout << "========" << endl;
}
}
if (temps[len - 2] == project[code - 1].score[i]) {
if (school[j].schoolCode == project[code - 1].jointeam[i]) {
cout << "第二名的学校是:" << school[j].schoolName << endl;
cout << "========" << endl;
}
}
if (temps[len - 3] == project[code - 1].score[i]) {
if (school[j].schoolCode == project[code - 1].jointeam[i]) {
cout << "第三名的学校是:" << school[j].schoolName << endl;
cout << "========" << endl;
}
}
}
}
}
int main()
{
bool l = true;
do {
l = true;
cout << " -------------------------------------------" << endl;
cout << " * 欢迎使用计算机设计大赛管理系统V1.0" << endl;
cout << " * 请输入项目的个数:";
cin >> m;
if (m <= 3 || m >= 10) {
cout << " * 输入有误,重新输入" << endl;
l = false;
}
} while (l == false);
do {
l = true;
cout << " * 请输入学校的数目:";
cin >> n;
if (n <= 0) {
cout << " * 输入有误,重新输入" << endl;
cout << " ============================================" << endl;
l = false;
}
} while (l == false);
read();
while (true) {
cout << " ****************************************************** " << endl;
cout << " * 计算机设计大赛管理系统 * " << endl;
cout << " * 1.添加信息 * " << endl;
cout << " * 2.按学校编号排序输出 * " << endl;
cout << " * 3.按项目总分排序输出 * " << endl;
cout << " * 4.查询学校某个项目的获奖情况 * " << endl;
cout << " * 5.查询取得前三名的学校 * " << endl;
cout << " * 0.退出 * " << endl;
cout << " ****************************************************** " << endl;
cout << " 请输入选择:" << endl;
int option = -1;
cin >> option;
if (option != 0 && option != 1 && option != 2 && option != 3 && option != 4 && option != 5) {
cout << " 输入有误" << endl;
cout << " ======================================================" << endl;
exit(0);
}
switch (option) {
case 1:
add(); //添加信息
save();
break;
case 2:
printByCodes(); //输出信息
break;
case 3:
printByScore(); //根据分数输出
break;
case 4:
search(); //查询
break;
case 5:
TopThree(); //前三名显示
break;
case 0:
cout << "谢谢使用!" << endl;
cout << "========" << endl;
exit(0);
}
}
return 0;
}
可以参考这个实现:https://blog.csdn.net/feng1790291543/article/details/131073588?spm=1001.2014.3001.5502
这题目可以当一个项目来做了~
这个功能太多了,都可以当项目干了
题目内容太多,连GPT都不干了,没个几百估计都没人写。