赞
踩
目录
1.优化内容
2.部分代码
3.完整代码
4.运行截图
ps:如果要实验报告或者ppt可告诉我。
优化内容
1.增加了修改功能
2.文件输入到文本文档为字符流
3.将各个菜单美化
菜单函数
- void menu(int n, int m, int w)
- {//n代表学校数,m代表男子数,w代表女子数
- int c;
- void input(int n, int m, int w);//输入功能
- void output(int n, int m, int w);//输出功能
- void sortput(int n, int m, int w);//排序输出
- void search(int n, int m, int w);//查询功能
- void modify(int n, int m, int w);//修改功能
- cout<<"\t\t***********欢迎使用***********"<<endl;
- cout<< "\t\t******************************" << endl;
- cout<<"\t\t***** 运动会分数统计系统 *****"<<endl;
- cout <<"\t\t** **"<< endl;
- cout<<"\t\t** 1.信息输入 **"<<endl;
- cout<<"\t\t** 2.统计输出 **" << endl;
- cout<<"\t\t** 3.排序输出 **" << endl;
- cout<<"\t\t** 4.信息查询 **"<<endl;
- cout<<"\t\t** 5.修改功能 **"<<endl;
- cout<<"\t\t** 6.退出系统 **"<< endl;
- cout<<"\t\t** **"<< endl;
- cout<<"\t\t******************************" << endl;
- cout<<"\t\t******************************" << endl;
- cout << endl;
- cout<<"======================================================="<<endl;
- cout << endl;
- cout<<"请输入您想要实现的功能(1--6):"<<endl;
- cin >> c;
- switch (c) {
- case 1:
- input(n, m, w);
- break;
- case 2:
- output(n, m, w);
- break;
- case 3:
- sortput(n, m, w);
- break;
- case 4:
- search(n, m, w);
- break;
- case 5:
- modify(n, m, w);
- break;
- case 6:
- cout<<"感谢使用,祝您天天开心!!"<<endl;
- exit(0);//正常退出
- default:
- cout<<"您输入有误,请重新输入!";
- menu(n, m, w);
- }
- }
写入、写出、删除 文件
- //将信息写入文件中
- void savetofile(int n, int w, int m)
- {
- ofstream file("file.txt", ios::app | ios::in | ios::out | ios::binary);
- if (file.fail()) {
- cout << "打开失败" << endl;
- }
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < w + m; j++)
- for (int z = 0; z < 5; z++) {
- {
- file <<"学校编号:" << a[i].snum <<" "<<"学校名字:" << a[i].sname<<" "<<"学校总分:" << a[i].score <<" "<<"男子总分:" <<a[i].mscore <<" " <<"女子总分:" <<a[i].wscore <<" "<<"项目编号:" <<a[i].t[j].inum <<" "<<"项目取前" << a[i].t[j].top <<"名" << " " << "项目名次:" << a[i].t[j].range[z] << " " << "项目总分:" << a[i].t[j].mark[z] << endl;
- }
- }
- }
- file.close();
- }
-
- //将信息从文件里取出
- void readfromfile(int n,int w,int m)
- {
- ifstream file("file.txt", ios::app | ios::in | ios::out | ios::binary);
- }
-
- //将信息从文件里删除
- void deletefile() {
- // string file_path = "file.txt";
- //remove(file_path.c_str());
- ofstream file("file.txt", ios_base::out | ios_base::trunc);
- file << "";
- file.close();
- }
信息输入功能
- //信息输入功能
- void input(int n, int m, int w)
- {
- int i, j, s, k, q = 1;
- for (i = 0; i < n; i++) {
- cout<<"请输入学校的编号和学校的名字:"<<endl;
- cin >> a[i].snum>>a[i].sname;
- for (j = 0; j < m + w; j++) {//总的项目的输入
- cout << "请输入项目编号:";
- cin>> a[i].t[j].inum;
- if (a[i].t[j].inum % 2 == 0) {
- cout<<"编号为偶数取前三" << endl;
- cout << "获得的名次的个数(1--5):";
- }
- else if (a[i].t[j].inum % 2 == 1) {
- cout <<"编号为奇数的项目取前五"<<endl;
- cout << "获得的名次的个数(1--5):";
- }
- else {
- cout << "输入有误!程序退出....";
- return;
- }
- cin >> k;//输入获得名次的个数
- for (s = 0; s < k; s++) {
- if(a[i].t[j].inum % 2 == 0){
- cout<<"请输入获得的名次(1--3):";
- }
- else {
- cout<<"请输入获得的名次(1--5):";
- }
- cin >> a[i].t[j].range[s];//输入所获得的名次的信息
- }
- cout << endl;
- }
- }
- for (i = 0; i < n; i++) {
- //初始化分数
- a[i].score = 0;//学校总分
- a[i].mscore = 0;//男子总分
- a[i].wscore = 0;//女子总分
- }
- for (i = 0; i < n; i++) {
- for (j = 0; j < m + w; j++) {
- if (a[i].t[j].inum % 2 == 1) {
- a[i].t[j].top = 5;
- cout << "项目" << j + 1 << "取得是前:"<< a[i].t[j].top <<"名"<<endl;
- }
- else if (a[i].t[j].inum % 2 == 0) {
- a[i].t[j].top = 3;
- cout << "项目" << j + 1 << "取得是前:" << a[i].t[j].top << "名" << endl;;
- }
- for (s = 0; s < 5; s++) {
- if (a[i].t[j].top == 3) {
- switch (a[i].t[j].range[s]) {
- case 0:
- a[i].t[j].mark[s] = 0;
- break;
- case 1:
- a[i].t[j].mark[s] = 5;
- break;
- case 2:
- a[i].t[j].mark[s] = 3;
- break;
- case 3:
- a[i].t[j].mark[s] = 2;
- break;
- }
- }
- else if (a[i].t[j].top == 5) {
- switch (a[i].t[j].range[s]) {
- case 0:
- a[i].t[j].mark[s] = 0;
- break;
- case 1:
- a[i].t[j].mark[s] = 7;
- break;
- case 2:
- a[i].t[j].mark[s] = 5;
- break;
- case 3:
- a[i].t[j].mark[s] = 3;
- break;
- case 4:
- a[i].t[j].mark[s] = 2;
- break;
- case 5:
- a[i].t[j].mark[s] = 1;
- break;
- }
- }
- a[i].score = a[i].score + a[i].t[j].mark[s];//学校总分
- if (j < m) {
- a[i].mscore = a[i].mscore + a[i].t[j].mark[s];
- }
- else {//女子总分
- a[i].wscore = a[i].wscore + a[i].t[j].mark[s];
- }
- }
- }
- }
- cout<<"输入完毕!(返回菜单请输入1):";
- cin >> q;
- cout << endl;
- if (q != 1) {
- cout<<"不能再添加信息了!";
- }
- cout << endl;
- savetofile(n,w,m);//保存文件
- menu(n, m, w);
- }
信息输出功能
- //信息输出功能
- void output(int n, int m, int w) /*2.统计输出*/
- {
- readfromfile(n,m,w);
- int i, j, s, q = 0;
- for (i = 0; i < n; i++) /*显示结果*/
- {
- cout << "学校编号:" << a[i].snum << " ";
- cout << "学校名字:" << a[i].sname << " ";
- cout << "学校总分:" << a[i].score << endl;
- cout << "男子总分:" << a[i].mscore <<" " << "女子总分:" << a[i].wscore << endl;
- for (j = 0; j < m + w; j++)
- {
- cout << "项目编号:" << a[i].t[j].inum <<" " << "所取名次取前:" << a[i].t[j].top<<"名"<< endl;
- for (s = 0; s < 5; s++)
- {
- if (a[i].t[j].range[s] != 0)
- cout<<"名次:"<< a[i].t[j].range[s] <<" " << "分数:"<< a[i].t[j].mark[s]<<" "<<endl;
- }
- }
- cout << endl;
- }
- cout<<"\n";
- cout<<"统计完毕!返回? 1是 2否"; /*返回菜单*/
- cin >> q;
- cout << endl;
- if (q != 1)
- cout<<"统计已经结束!";
- cout << endl;
- menu(n, m, w);
- }
排序输出
- //排序输出
- void sortput(int n, int m, int w)//n为学校数,m为男子数,w为女子数
- {
- readfromfile(n,m,w);
- int c, i, j, k, q = 0;
- int temp[N]={};
- cout<<"\t\t***** 排序输出系统 *****"<< endl;
- cout<<"\t\t************************"<< endl;
- cout<<"\t\t** **"<< endl;
- cout<<"\t\t** 1.按学校编号输出 **"<< endl;
- cout<<"\t\t** 2.按学校总分输出 **"<<endl;
- cout<<"\t\t** 3.按男子总分输出 **"<<endl;
- cout<<"\t\t** 4.按女子总分输出 **"<<endl;
- cout<<"\t\t** **"<< endl;
- cout<<"\t\t************************"<< endl;
- cout<<"\t\t************************"<< endl;
- cout<<"======================================================="<<endl;
- cout << endl;
- do {
- cout<<"请选择您想实现的功能的编号(1--4):";
- cin >> c;
- switch (c) {
- case 1:
- for (i = 0; i < n; i++) {
- temp[i] = i;
- }
- //用的是冒泡排序输出
- for (i = 0; i < n; i++) {
- for (j = i + 1; j < n; j++) {
- if (a[temp[i]].snum > a[j].snum) {
- k = temp[i];
- temp[i] = temp[j];
- temp[j] = k;
- }
- }
- }
- for (i = 0; i < n; i++) {
- cout << "学校编号:" << a[temp[i]].snum <<" " << "学校名字" << a[temp[i]].sname << " " << "学校总分:" << a[temp[i]].score << endl;
- cout << "男子总分" << a[temp[i]].mscore << " " << "女子总分:" << a[temp[i]].wscore << endl;
- }
- break;
- case 2:
- for (i = 0; i < n; i++) {
- temp[i] = i;
- }
- for (i = 0; i < n; i++) {
- for (j = i + 1; j < n; j++) {
- if (a[temp[i]].score < a[j].score) {
- k = temp[i];
- temp[i] = temp[j];
- temp[j] = k;
- }
- }
- }
- for (i = 0; i < n; i++) {
- cout << "学校编号:" << a[temp[i]].snum << " " << "学校名字" << a[temp[i]].sname <<" " << "学校总分:" << a[temp[i]].score << endl;
- cout << "男子总分" << a[temp[i]].mscore << " " << "女子总分:" << a[temp[i]].wscore << endl;
- }
- break;
- case 3:
- for (i = 0; i < n; i++) {
- temp[i] = i;
- }
- for (i = 0; i < n; i++) {
- for (j = i + 1; j < n; j++) {
- if (a[temp[i]].mscore < a[j].mscore) {
- k = temp[i];
- temp[i] = temp[j];
- temp[j] = k;
- }
- }
- }
- for (i = 0; i < n; i++) {
-
- cout << "学校编号:" << a[temp[i]].snum << " " << "学校名字" << a[temp[i]].sname << " " << "学校总分:" << a[temp[i]].score << endl;
- cout << "男子总分" << a[temp[i]].mscore << " " << "女子总分:" << a[temp[i]].wscore << endl;
- }
- break;
- case 4:
- for (i = 0; i < n; i++) {
- temp[i] = i;
- }
- for (i = 0; i < n; i++) {
- for (j = i + 1; j < n; j++) {
- if (a[temp[i]].wscore < a[j].wscore) {
- k = temp[i];
- temp[i] = temp[j];
- temp[j] = k;
- }
- }
- }
- for (i = 0; i < n; i++) {
- cout << "学校编号:" << a[temp[i]].snum << " " << "学校名字" << a[temp[i]].sname << " " << "学校总分:" << a[temp[i]].score << endl;
- cout << "男子总分" << a[temp[i]].mscore << " " << "女子总分:" << a[temp[i]].wscore << endl;
- }
- break;
- default:
- cout<<"您的输入有误!请从新输入...";
- }
- cout<<"请选择 1.返回主菜单 0.继续";
- cin >> q;
- cout << endl;
- }
- while (0 == q);
- cout << endl;
- if (q != 0) {
- menu(n, m, w);
- }
- }
查询功能
- //查询功能
- void search(int n, int m, int w)
- {
- readfromfile(n,m,w);
- int c, i, j, k, d, l, q = 0;
- cout<<"\t\t********查询系统********"<<endl;
- cout << "\t\t************************"<< endl;
- cout << "\t\t** **"<< endl;
- cout << "\t\t** 1.按学校编号查询 **"<<endl;
- cout << "\t\t** 2.按项目编号查询 **"<< endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t************************"<< endl;
- cout << "\t\t************************"<< endl;
- cout << "=======================================================" << endl;
- cout << endl;
- do
- {
- k = -1; d = -1; l = -1;
- cout << "请选择要实现功能的编号(1--2):";
- cin >> c;
- switch (c) {
- case 1:
- cout << "要查询的学校编号:"; /*查找学校编号下标*/
- cin >> c;
- for (i = 0; i < n; i++) {
- if (c == a[i].snum) {
- k = i;
- }
- }
- if (-1 == k) {
- cout << "错误:这个学校没有参加此次运动会!" << endl;
- }
- else {
- cout << "要查询的项目编号:"; /*查找项目编号下标*/
- cin >> c;
- for (j = 0; j < m + w; j++) {
- if (c == a[k].t[j].inum) {
- d = j;
- }
- }
- if (-1 == d) {
- cout << "此次运动会没有这个项目" << endl;
- }
- else {
- cout << "这个项目取前" << a[k].t[d].top << "名,该学校的成绩如下:" << endl;
- for (i = 0; i < 5; i++) {
- if (a[k].t[d].range[i] != 0) {
- cout << "名次:" << a[k].t[d].range[i];
- }
- }
- }
- }
- break;
- case 2:
- cout << "要查询的项目编号:"; /*查找项目编号下标*/
- cin >> c;
- for (i = 0; i < n; i++) {
- for (j = 0; j < m + w; j++) {
- if (c == a[i].t[j].inum) {
- l = j;
- }
- if (-1 == l) {
- cout << "此次运动会没有该项目";
- }
- else {
- cout << "该项目取前a[0].t[l].top名,取得名次的学校" << endl;
- for (i = 0; i < n; i++) {
- for (j = 0; j < 5; j++) {
- if (a[i].t[l].range[j] != 0) {
- cout << "学校编号:" << a[i].snum << " " << ", 名次:" << a[i].t[l].range[j] << endl;
- }
- }
- }
- }
- }
- }
- break;
- default:
- cout << "输入错误,请重试!" << endl;
- }
- cout << "请选择:1.返回主菜单 0.继续";
- cin >> q;
- cout << endl;
- } while (0 == q);
- cout << endl;
- if (q != 0) {
- menu(n, m, w);
- }
- }
修改功能
- //修改功能
- void modify(int n, int m, int w) {
- int size = sizeof(a) / sizeof(a[0]); // 数组长度
- int c = 0, delete_snum = 0, key1 = 0, key2 = 0, j = 0, i = 0, modify_snum = 0, alter_snum = 0, alter_inum = 0, temp = 0, k = 0;
- string alter_sname;
- readfromfile(n, m, w);
- deletefile(); //将之前的信息从文件里删除
- cout << "\t\t*****************修改系统****************" << endl;
- cout << "\t\t*****************************************" << endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t** 1.利用学校编号删除学校全部信息 **" << endl;
- cout << "\t\t** 2.利用学校和项目编号删除项目信息 **" << endl;
- cout << "\t\t** 3.修改学校信息 **" << endl;
- cout << "\t\t** 4.修改项目信息 **" << endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t*****************************************" << endl;
- cout << "\t\t*****************************************" << endl;
- cout << "=======================================================" << endl;
- cout << endl;
- cout << "请选择要实现功能的编号(1--4):";
- cin >> c;
- switch (c) {
- case 1: //利用学校编号删除学校全部信息
- cout << "要删除的学校编号:"; /*查找学校编号下标*/
- cin >> delete_snum;
- for (int i = 0; i < n; i++) {
- if (delete_snum == a[i].snum) {
- key1 = i;
- }
- }
- if (-1 == key1) {
- cout << "错误:这个学校没有参加此次运动会!" << endl;
- }
- //int size = sizeof(a) / sizeof(int);
- //delete& a[key1];
- //memmove(&arr[key1], &arr[key1 + 1], sizeof(int) * (size - key1 - 1));
- //memmove(&a[key1], &a[key1 + 1], sizeof(int) * (size - key1 - 1));
- //free(&a[key1]);
- for (int i = key1; i < size - 1; i++) {
- a[i] = a[i + 1];
- }
- size--;
- break;
- case 2: //利用学校和项目编号删除项目信息
- cout << "要删除的学校编号:"; /*查找学校编号下标*/
- cin >> delete_snum;
- for (i = 0; i < n; i++) {
- if (delete_snum == a[i].snum) {
- key1 = i;
- }
- }
- if (-1 == key1) {
- cout << "错误:这个学校没有参加此次运动会!" << endl;
- }
- else {
- cout << "要查询的项目编号:"; /*查找项目编号下标*/
- cin >> c;
- for (j = 0; j < m + w; j++) {
- if (delete_snum == a[key1].t[j].inum) {
- key2 = j;
- }
- }
- if (-1 == key2) {
- cout << "此次运动会没有这个项目" << endl;
- }
- }
- delete& a[key1].t[key2];
- break;
- case 3: //修改学校信息
- cout << "要修改的学校编号:"; /*查找学校编号下标*/
- cin >> modify_snum;
- for (i = 0; i < n; i++) {
- if (modify_snum == a[i].snum) {
- key1 = i;
- }
- }
- if (-1 == key1) {
- cout << "错误:这个学校没有参加此次运动会!" << endl;
- }
- cout << "\t\t**************************" << endl;
- cout << "\t\t** 请选择你想修改的信息 **" << endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t** 1. 学校编号 **" << endl;
- cout << "\t\t** 2. 学校名字 **" << endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t***************************" << endl;
- cin >> c;
- if (c == 1) {
- cout << "请输入新的学校编号(1-20):" << endl;
- cin >> alter_snum;
- a[key1].snum = a[alter_snum].snum;
- temp = key1;
- delete& a[key1];
- a[alter_snum] = a[temp];
- cout << "学校编号修改成功!" << endl;
- }
- else if (c == 2) {
- cout << "请输入新的学校名字:" << endl;
- cin >> alter_sname;
- a[alter_snum].sname = alter_sname;
- a[key1].sname = a[alter_snum].sname;
- cout << "学校名字修改成功!" << endl;
- }
- else {
- cout << "请输入1或2!" << endl;
- }
- break;
- case 4: //修改项目信息
- cout << "要修改的学校编号:"; /*查找学校编号下标*/
- cin >> modify_snum;
- for (i = 0; i < n; i++) {
- if (modify_snum == a[i].snum) {
- key1 = i;
- }
- }
- if (-1 == key1) {
- cout << "错误:这个学校没有参加此次运动会!" << endl;
- }
- else {
- cout << "要查询的项目编号:"; /*查找项目编号下标*/
- cin >> c;
- for (j = 0; j < m + w; j++) {
- if (delete_snum == a[key1].t[j].inum) {
- key2 = j;
- }
- }
- if (-1 == key2) {
- cout << "此次运动会没有这个项目" << endl;
- }
- }
- cout << "\t\t**************************" << endl;
- cout << "\t\t**请选择想修改项目的信息**" << endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t** 1. 项目编号 **" << endl;
- cout << "\t\t** 2. 名次 **" << endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t**************************" << endl;
- cout << "\t\t**************************" << endl;
- if (c == 1) {
- cout << "请输入修改后的项目编号:" << endl;
- cin >> alter_inum;
- a[key1].t[key2].inum = alter_inum;
- cout << "修改成功!" << endl;
- }
- else if (c == 2) {
- cout << "请输入修改后的获得项目名次的个数:" << endl;
- cin >> k;//输入获得名次的个数
- for (int s = 0; s < k; s++) {
- if (a[key1].t[key2].inum % 2 == 0) {
- cout << "请输入获得的名次(1--3):";
- }
- else {
- cout << "请输入获得的名次(1--5):";
- }
- cin >> a[key1].t[key2].range[s];//输入所获得的名次的信息
- }
- if (a[key1].t[key2].inum % 2 == 1) {
- k = 5;
- }
- else if (a[key1].t[key2].inum % 2 == 0) {
- k = 3;
- }
- for (int s = 0; s < 5; s++) {
- if (k == 3) {
- switch (a[key1].t[key2].range[s]) {
- case 0:
- a[key1].t[key2].mark[s] = 0;
- break;
- case 1:
- a[key1].t[key2].mark[s] = 5;
- break;
- case 2:
- a[key1].t[key2].mark[s] = 3;
- break;
- case 3:
- a[key1].t[key2].mark[s] = 2;
- break;
- }
- }
- else if (k == 5) {
- switch (a[i].t[j].range[s]) {
- case 0:
- a[key1].t[key2].mark[s] = 0;
- break;
- case 1:
- a[key1].t[key2].mark[s] = 7;
- break;
- case 2:
- a[key1].t[key2].mark[s] = 5;
- break;
- case 3:
- a[key1].t[key2].mark[s] = 3;
- break;
- case 4:
- a[key1].t[key2].mark[s] = 2;
- break;
- case 5:
- a[key1].t[key2].mark[s] = 1;
- break;
- }
- }
- for (int j = 0; j < w + m; j++) {
- for (int s = 0; s < 5; s++) {
- a[key1].score = a[key1].score + a[key1].t[j].mark[s];//学校总分
- if (j < m) {
- a[key1].mscore = a[key1].mscore + a[key1].t[j].mark[s];
- }
- else {//女子总分
- a[key1].wscore = a[key1].wscore + a[key1].t[j].mark[s];
- }
- }
- }
- }
- }
- }
- int q = 0;
- cout << "输入完毕!(返回菜单请输入1):";
- cin >> q;
- cout << endl;
- if (q != 1) {
- cout << "不能再添加信息了!";
- }
- cout << endl;
- savetofile(n, w, m);//保存文件
- menu(n, m, w);
- }
主函数
- //主函数
- int main()
- {
- int n, m, w;//n为学校个数,m为男子数,w为女子数
- char sname[S];
- cout << "\t\t\t欢迎使用\t\t\t\t" << endl;
- cout << endl;
- cout << "\t***********运动会分数统计系统***********" << endl;
- cout << endl;
- cout << "请先输入运动会主要信息" << endl;
- cout << "输入学校个数:";
- cin >> n;
- cout<<"输入男子项目个数:";
- cin >> m;
- cout<<"输入女子项目个数:";
- cin >> w;
- menu(n, m, w);
- }
完整代码
- #include<math.h>
- #include<process.h>
- #include <iostream>
- #include <fstream>
- #define _CRT_SECURE_NO_WARNINGS
- using namespace std;
-
- #define N 20 //学校最大数目
- #define M 30 //男子项目最大数
- #define W 20 //女子项目最大数
- #define S 10000 //学校名字长度最大数
-
- //存放项目信息的结构体
- typedef struct
- {
- int inum;//项目编号
- int top;//取名次的数目
- int range[5];//名次
- int mark[5];//分数
- }itemnode;
-
- //存放学校信息的结构体
- typedef struct
- {
- int snum;//学校编号
- string sname;//学校名字
- int score;//学校总分
- int mscore;//男子总分
- int wscore;//女子总分
- itemnode t[M + W];//项目数组
- }snode;
- snode a[N];//定义一个学校数组
-
- //菜单函数
- void menu(int n, int m, int w)
- {//n代表学校数,m代表男子数,w代表女子数
- int c;
- void input(int n, int m, int w);//输入功能
- void output(int n, int m, int w);//输出功能
- void sortput(int n, int m, int w);//排序输出
- void search(int n, int m, int w);//查询功能
- void modify(int n, int m, int w);//修改功能
- cout<<"\t\t***********欢迎使用***********"<<endl;
- cout<< "\t\t******************************" << endl;
- cout<<"\t\t***** 运动会分数统计系统 *****"<<endl;
- cout <<"\t\t** **"<< endl;
- cout<<"\t\t** 1.信息输入 **"<<endl;
- cout<<"\t\t** 2.统计输出 **" << endl;
- cout<<"\t\t** 3.排序输出 **" << endl;
- cout<<"\t\t** 4.信息查询 **"<<endl;
- cout<<"\t\t** 5.修改功能 **"<<endl;
- cout<<"\t\t** 6.退出系统 **"<< endl;
- cout<<"\t\t** **"<< endl;
- cout<<"\t\t******************************" << endl;
- cout<<"\t\t******************************" << endl;
- cout << endl;
- cout<<"======================================================="<<endl;
- cout << endl;
- cout<<"请输入您想要实现的功能(1--6):"<<endl;
- cin >> c;
- switch (c) {
- case 1:
- input(n, m, w);
- break;
- case 2:
- output(n, m, w);
- break;
- case 3:
- sortput(n, m, w);
- break;
- case 4:
- search(n, m, w);
- break;
- case 5:
- modify(n, m, w);
- break;
- case 6:
- cout<<"感谢使用,祝您天天开心!!"<<endl;
- exit(0);//正常退出
- default:
- cout<<"您输入有误,请重新输入!";
- menu(n, m, w);
- }
- }
-
- //将信息写入文件中
- void savetofile(int n, int w, int m)
- {
- ofstream file("file.txt", ios::app | ios::in | ios::out | ios::binary);
- if (file.fail()) {
- cout << "打开失败" << endl;
- }
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < w + m; j++)
- for (int z = 0; z < 5; z++) {
- {
- file <<"学校编号:" << a[i].snum <<" "<<"学校名字:" << a[i].sname<<" "<<"学校总分:" << a[i].score <<" "<<"男子总分:" <<a[i].mscore <<" " <<"女子总分:" <<a[i].wscore <<" "<<"项目编号:" <<a[i].t[j].inum <<" "<<"项目取前" << a[i].t[j].top <<"名" << " " << "项目名次:" << a[i].t[j].range[z] << " " << "项目总分:" << a[i].t[j].mark[z] << endl;
- }
- }
- }
- file.close();
- }
-
- //将信息从文件里取出
- void readfromfile(int n,int w,int m)
- {
- ifstream file("file.txt", ios::app | ios::in | ios::out | ios::binary);
- }
-
- //将信息从文件里删除
- void deletefile() {
- // string file_path = "file.txt";
- //remove(file_path.c_str());
- ofstream file("file.txt", ios_base::out | ios_base::trunc);
- file << "";
- file.close();
- }
-
- //信息输入功能
- void input(int n, int m, int w)
- {
- int i, j, s, k, q = 1;
- for (i = 0; i < n; i++) {
- cout<<"请输入学校的编号和学校的名字:"<<endl;
- cin >> a[i].snum>>a[i].sname;
- for (j = 0; j < m + w; j++) {//总的项目的输入
- cout << "请输入项目编号:";
- cin>> a[i].t[j].inum;
- if (a[i].t[j].inum % 2 == 0) {
- cout<<"编号为偶数取前三" << endl;
- cout << "获得的名次的个数(1--5):";
- }
- else if (a[i].t[j].inum % 2 == 1) {
- cout <<"编号为奇数的项目取前五"<<endl;
- cout << "获得的名次的个数(1--5):";
- }
- else {
- cout << "输入有误!程序退出....";
- return;
- }
- cin >> k;//输入获得名次的个数
- for (s = 0; s < k; s++) {
- if(a[i].t[j].inum % 2 == 0){
- cout<<"请输入获得的名次(1--3):";
- }
- else {
- cout<<"请输入获得的名次(1--5):";
- }
- cin >> a[i].t[j].range[s];//输入所获得的名次的信息
- }
- cout << endl;
- }
- }
- for (i = 0; i < n; i++) {
- //初始化分数
- a[i].score = 0;//学校总分
- a[i].mscore = 0;//男子总分
- a[i].wscore = 0;//女子总分
- }
- for (i = 0; i < n; i++) {
- for (j = 0; j < m + w; j++) {
- if (a[i].t[j].inum % 2 == 1) {
- a[i].t[j].top = 5;
- cout << "项目" << j + 1 << "取得是前:"<< a[i].t[j].top <<"名"<<endl;
- }
- else if (a[i].t[j].inum % 2 == 0) {
- a[i].t[j].top = 3;
- cout << "项目" << j + 1 << "取得是前:" << a[i].t[j].top << "名" << endl;;
- }
- for (s = 0; s < 5; s++) {
- if (a[i].t[j].top == 3) {
- switch (a[i].t[j].range[s]) {
- case 0:
- a[i].t[j].mark[s] = 0;
- break;
- case 1:
- a[i].t[j].mark[s] = 5;
- break;
- case 2:
- a[i].t[j].mark[s] = 3;
- break;
- case 3:
- a[i].t[j].mark[s] = 2;
- break;
- }
- }
- else if (a[i].t[j].top == 5) {
- switch (a[i].t[j].range[s]) {
- case 0:
- a[i].t[j].mark[s] = 0;
- break;
- case 1:
- a[i].t[j].mark[s] = 7;
- break;
- case 2:
- a[i].t[j].mark[s] = 5;
- break;
- case 3:
- a[i].t[j].mark[s] = 3;
- break;
- case 4:
- a[i].t[j].mark[s] = 2;
- break;
- case 5:
- a[i].t[j].mark[s] = 1;
- break;
- }
- }
- a[i].score = a[i].score + a[i].t[j].mark[s];//学校总分
- if (j < m) {
- a[i].mscore = a[i].mscore + a[i].t[j].mark[s];
- }
- else {//女子总分
- a[i].wscore = a[i].wscore + a[i].t[j].mark[s];
- }
- }
- }
- }
- cout<<"输入完毕!(返回菜单请输入1):";
- cin >> q;
- cout << endl;
- if (q != 1) {
- cout<<"不能再添加信息了!";
- }
- cout << endl;
- savetofile(n,w,m);//保存文件
- menu(n, m, w);
- }
-
- #if(1)//信息输出功能
- void output(int n, int m, int w) /*2.统计输出*/
- {
- readfromfile(n,m,w);
- int i, j, s, q = 0;
- for (i = 0; i < n; i++) /*显示结果*/
- {
- cout << "学校编号:" << a[i].snum << " ";
- cout << "学校名字:" << a[i].sname << " ";
- cout << "学校总分:" << a[i].score << endl;
- cout << "男子总分:" << a[i].mscore <<" " << "女子总分:" << a[i].wscore << endl;
- for (j = 0; j < m + w; j++)
- {
- cout << "项目编号:" << a[i].t[j].inum <<" " << "所取名次取前:" << a[i].t[j].top<<"名"<< endl;
- for (s = 0; s < 5; s++)
- {
- if (a[i].t[j].range[s] != 0)
- cout<<"名次:"<< a[i].t[j].range[s] <<" " << "分数:"<< a[i].t[j].mark[s]<<" "<<endl;
- }
- }
- cout << endl;
- }
- cout<<"\n";
- cout<<"统计完毕!返回? 1是 2否"; /*返回菜单*/
- cin >> q;
- cout << endl;
- if (q != 1)
- cout<<"统计已经结束!";
- cout << endl;
- menu(n, m, w);
- }
- #endif
-
- //排序输出
- void sortput(int n, int m, int w)//n为学校数,m为男子数,w为女子数
- {
- readfromfile(n,m,w);
- int c, i, j, k, q = 0;
- int temp[N]={};
- cout<<"\t\t***** 排序输出系统 *****"<< endl;
- cout<<"\t\t************************"<< endl;
- cout<<"\t\t** **"<< endl;
- cout<<"\t\t** 1.按学校编号输出 **"<< endl;
- cout<<"\t\t** 2.按学校总分输出 **"<<endl;
- cout<<"\t\t** 3.按男子总分输出 **"<<endl;
- cout<<"\t\t** 4.按女子总分输出 **"<<endl;
- cout<<"\t\t** **"<< endl;
- cout<<"\t\t************************"<< endl;
- cout<<"\t\t************************"<< endl;
- cout<<"======================================================="<<endl;
- cout << endl;
- do {
- cout<<"请选择您想实现的功能的编号(1--4):";
- cin >> c;
- switch (c) {
- case 1:
- for (i = 0; i < n; i++) {
- temp[i] = i;
- }
- //用的是冒泡排序输出
- for (i = 0; i < n; i++) {
- for (j = i + 1; j < n; j++) {
- if (a[temp[i]].snum > a[j].snum) {
- k = temp[i];
- temp[i] = temp[j];
- temp[j] = k;
- }
- }
- }
- for (i = 0; i < n; i++) {
- cout << "学校编号:" << a[temp[i]].snum <<" " << "学校名字" << a[temp[i]].sname << " " << "学校总分:" << a[temp[i]].score << endl;
- cout << "男子总分" << a[temp[i]].mscore << " " << "女子总分:" << a[temp[i]].wscore << endl;
- }
- break;
- case 2:
- for (i = 0; i < n; i++) {
- temp[i] = i;
- }
- for (i = 0; i < n; i++) {
- for (j = i + 1; j < n; j++) {
- if (a[temp[i]].score < a[j].score) {
- k = temp[i];
- temp[i] = temp[j];
- temp[j] = k;
- }
- }
- }
- for (i = 0; i < n; i++) {
- cout << "学校编号:" << a[temp[i]].snum << " " << "学校名字" << a[temp[i]].sname <<" " << "学校总分:" << a[temp[i]].score << endl;
- cout << "男子总分" << a[temp[i]].mscore << " " << "女子总分:" << a[temp[i]].wscore << endl;
- }
- break;
- case 3:
- for (i = 0; i < n; i++) {
- temp[i] = i;
- }
- for (i = 0; i < n; i++) {
- for (j = i + 1; j < n; j++) {
- if (a[temp[i]].mscore < a[j].mscore) {
- k = temp[i];
- temp[i] = temp[j];
- temp[j] = k;
- }
- }
- }
- for (i = 0; i < n; i++) {
-
- cout << "学校编号:" << a[temp[i]].snum << " " << "学校名字" << a[temp[i]].sname << " " << "学校总分:" << a[temp[i]].score << endl;
- cout << "男子总分" << a[temp[i]].mscore << " " << "女子总分:" << a[temp[i]].wscore << endl;
- }
- break;
- case 4:
- for (i = 0; i < n; i++) {
- temp[i] = i;
- }
- for (i = 0; i < n; i++) {
- for (j = i + 1; j < n; j++) {
- if (a[temp[i]].wscore < a[j].wscore) {
- k = temp[i];
- temp[i] = temp[j];
- temp[j] = k;
- }
- }
- }
- for (i = 0; i < n; i++) {
- cout << "学校编号:" << a[temp[i]].snum << " " << "学校名字" << a[temp[i]].sname << " " << "学校总分:" << a[temp[i]].score << endl;
- cout << "男子总分" << a[temp[i]].mscore << " " << "女子总分:" << a[temp[i]].wscore << endl;
- }
- break;
- default:
- cout<<"您的输入有误!请从新输入...";
- }
- cout<<"请选择 1.返回主菜单 0.继续";
- cin >> q;
- cout << endl;
- }
- while (0 == q);
- cout << endl;
- if (q != 0) {
- menu(n, m, w);
- }
- }
-
- //查询功能
- void search(int n, int m, int w)
- {
- readfromfile(n,m,w);
- int c, i, j, k, d, l, q = 0;
- cout<<"\t\t********查询系统********"<<endl;
- cout << "\t\t************************"<< endl;
- cout << "\t\t** **"<< endl;
- cout << "\t\t** 1.按学校编号查询 **"<<endl;
- cout << "\t\t** 2.按项目编号查询 **"<< endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t************************"<< endl;
- cout << "\t\t************************"<< endl;
- cout << "=======================================================" << endl;
- cout << endl;
- do
- {
- k = -1; d = -1; l = -1;
- cout << "请选择要实现功能的编号(1--2):";
- cin >> c;
- switch (c) {
- case 1:
- cout << "要查询的学校编号:"; /*查找学校编号下标*/
- cin >> c;
- for (i = 0; i < n; i++) {
- if (c == a[i].snum) {
- k = i;
- }
- }
- if (-1 == k) {
- cout << "错误:这个学校没有参加此次运动会!" << endl;
- }
- else {
- cout << "要查询的项目编号:"; /*查找项目编号下标*/
- cin >> c;
- for (j = 0; j < m + w; j++) {
- if (c == a[k].t[j].inum) {
- d = j;
- }
- }
- if (-1 == d) {
- cout << "此次运动会没有这个项目" << endl;
- }
- else {
- cout << "这个项目取前" << a[k].t[d].top << "名,该学校的成绩如下:" << endl;
- for (i = 0; i < 5; i++) {
- if (a[k].t[d].range[i] != 0) {
- cout << "名次:" << a[k].t[d].range[i];
- }
- }
- }
- }
- break;
- case 2:
- cout << "要查询的项目编号:"; /*查找项目编号下标*/
- cin >> c;
- for (i = 0; i < n; i++) {
- for (j = 0; j < m + w; j++) {
- if (c == a[i].t[j].inum) {
- l = j;
- }
- if (-1 == l) {
- cout << "此次运动会没有该项目";
- }
- else {
- cout << "该项目取前a[0].t[l].top名,取得名次的学校" << endl;
- for (i = 0; i < n; i++) {
- for (j = 0; j < 5; j++) {
- if (a[i].t[l].range[j] != 0) {
- cout << "学校编号:" << a[i].snum << " " << ", 名次:" << a[i].t[l].range[j] << endl;
- }
- }
- }
- }
- }
- }
- break;
- default:
- cout << "输入错误,请重试!" << endl;
- }
- cout << "请选择:1.返回主菜单 0.继续";
- cin >> q;
- cout << endl;
- } while (0 == q);
- cout << endl;
- if (q != 0) {
- menu(n, m, w);
- }
- }
-
- //修改功能
- void modify(int n, int m, int w) {
- int size = sizeof(a) / sizeof(a[0]); // 数组长度
- int c = 0, delete_snum = 0, key1 = 0, key2 = 0, j = 0, i = 0, modify_snum = 0, alter_snum = 0, alter_inum = 0, temp = 0, k = 0;
- string alter_sname;
- readfromfile(n, m, w);
- deletefile(); //将之前的信息从文件里删除
- cout << "\t\t*****************修改系统****************" << endl;
- cout << "\t\t*****************************************" << endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t** 1.利用学校编号删除学校全部信息 **" << endl;
- cout << "\t\t** 2.利用学校和项目编号删除项目信息 **" << endl;
- cout << "\t\t** 3.修改学校信息 **" << endl;
- cout << "\t\t** 4.修改项目信息 **" << endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t*****************************************" << endl;
- cout << "\t\t*****************************************" << endl;
- cout << "=======================================================" << endl;
- cout << endl;
- cout << "请选择要实现功能的编号(1--4):";
- cin >> c;
- switch (c) {
- case 1: //利用学校编号删除学校全部信息
- cout << "要删除的学校编号:"; /*查找学校编号下标*/
- cin >> delete_snum;
- for (int i = 0; i < n; i++) {
- if (delete_snum == a[i].snum) {
- key1 = i;
- }
- }
- if (-1 == key1) {
- cout << "错误:这个学校没有参加此次运动会!" << endl;
- }
- //int size = sizeof(a) / sizeof(int);
- //delete& a[key1];
- //memmove(&arr[key1], &arr[key1 + 1], sizeof(int) * (size - key1 - 1));
- //memmove(&a[key1], &a[key1 + 1], sizeof(int) * (size - key1 - 1));
- //free(&a[key1]);
- for (int i = key1; i < size - 1; i++) {
- a[i] = a[i + 1];
- }
- size--;
- break;
- case 2: //利用学校和项目编号删除项目信息
- cout << "要删除的学校编号:"; /*查找学校编号下标*/
- cin >> delete_snum;
- for (i = 0; i < n; i++) {
- if (delete_snum == a[i].snum) {
- key1 = i;
- }
- }
- if (-1 == key1) {
- cout << "错误:这个学校没有参加此次运动会!" << endl;
- }
- else {
- cout << "要查询的项目编号:"; /*查找项目编号下标*/
- cin >> c;
- for (j = 0; j < m + w; j++) {
- if (delete_snum == a[key1].t[j].inum) {
- key2 = j;
- }
- }
- if (-1 == key2) {
- cout << "此次运动会没有这个项目" << endl;
- }
- }
- delete& a[key1].t[key2];
- break;
- case 3: //修改学校信息
- cout << "要修改的学校编号:"; /*查找学校编号下标*/
- cin >> modify_snum;
- for (i = 0; i < n; i++) {
- if (modify_snum == a[i].snum) {
- key1 = i;
- }
- }
- if (-1 == key1) {
- cout << "错误:这个学校没有参加此次运动会!" << endl;
- }
- cout << "\t\t**************************" << endl;
- cout << "\t\t** 请选择你想修改的信息 **" << endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t** 1. 学校编号 **" << endl;
- cout << "\t\t** 2. 学校名字 **" << endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t***************************" << endl;
- cin >> c;
- if (c == 1) {
- cout << "请输入新的学校编号(1-20):" << endl;
- cin >> alter_snum;
- a[key1].snum = a[alter_snum].snum;
- temp = key1;
- delete& a[key1];
- a[alter_snum] = a[temp];
- cout << "学校编号修改成功!" << endl;
- }
- else if (c == 2) {
- cout << "请输入新的学校名字:" << endl;
- cin >> alter_sname;
- a[alter_snum].sname = alter_sname;
- a[key1].sname = a[alter_snum].sname;
- cout << "学校名字修改成功!" << endl;
- }
- else {
- cout << "请输入1或2!" << endl;
- }
- break;
- case 4: //修改项目信息
- cout << "要修改的学校编号:"; /*查找学校编号下标*/
- cin >> modify_snum;
- for (i = 0; i < n; i++) {
- if (modify_snum == a[i].snum) {
- key1 = i;
- }
- }
- if (-1 == key1) {
- cout << "错误:这个学校没有参加此次运动会!" << endl;
- }
- else {
- cout << "要查询的项目编号:"; /*查找项目编号下标*/
- cin >> c;
- for (j = 0; j < m + w; j++) {
- if (delete_snum == a[key1].t[j].inum) {
- key2 = j;
- }
- }
- if (-1 == key2) {
- cout << "此次运动会没有这个项目" << endl;
- }
- }
- cout << "\t\t**************************" << endl;
- cout << "\t\t**请选择想修改项目的信息**" << endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t** 1. 项目编号 **" << endl;
- cout << "\t\t** 2. 名次 **" << endl;
- cout << "\t\t** **" << endl;
- cout << "\t\t**************************" << endl;
- cout << "\t\t**************************" << endl;
- if (c == 1) {
- cout << "请输入修改后的项目编号:" << endl;
- cin >> alter_inum;
- a[key1].t[key2].inum = alter_inum;
- cout << "修改成功!" << endl;
- }
- else if (c == 2) {
- cout << "请输入修改后的获得项目名次的个数:" << endl;
- cin >> k;//输入获得名次的个数
- for (int s = 0; s < k; s++) {
- if (a[key1].t[key2].inum % 2 == 0) {
- cout << "请输入获得的名次(1--3):";
- }
- else {
- cout << "请输入获得的名次(1--5):";
- }
- cin >> a[key1].t[key2].range[s];//输入所获得的名次的信息
- }
- if (a[key1].t[key2].inum % 2 == 1) {
- k = 5;
- }
- else if (a[key1].t[key2].inum % 2 == 0) {
- k = 3;
- }
- for (int s = 0; s < 5; s++) {
- if (k == 3) {
- switch (a[key1].t[key2].range[s]) {
- case 0:
- a[key1].t[key2].mark[s] = 0;
- break;
- case 1:
- a[key1].t[key2].mark[s] = 5;
- break;
- case 2:
- a[key1].t[key2].mark[s] = 3;
- break;
- case 3:
- a[key1].t[key2].mark[s] = 2;
- break;
- }
- }
- else if (k == 5) {
- switch (a[i].t[j].range[s]) {
- case 0:
- a[key1].t[key2].mark[s] = 0;
- break;
- case 1:
- a[key1].t[key2].mark[s] = 7;
- break;
- case 2:
- a[key1].t[key2].mark[s] = 5;
- break;
- case 3:
- a[key1].t[key2].mark[s] = 3;
- break;
- case 4:
- a[key1].t[key2].mark[s] = 2;
- break;
- case 5:
- a[key1].t[key2].mark[s] = 1;
- break;
- }
- }
- for (int j = 0; j < w + m; j++) {
- for (int s = 0; s < 5; s++) {
- a[key1].score = a[key1].score + a[key1].t[j].mark[s];//学校总分
- if (j < m) {
- a[key1].mscore = a[key1].mscore + a[key1].t[j].mark[s];
- }
- else {//女子总分
- a[key1].wscore = a[key1].wscore + a[key1].t[j].mark[s];
- }
- }
- }
- }
- }
- }
- int q = 0;
- cout << "输入完毕!(返回菜单请输入1):";
- cin >> q;
- cout << endl;
- if (q != 1) {
- cout << "不能再添加信息了!";
- }
- cout << endl;
- savetofile(n, w, m);//保存文件
- menu(n, m, w);
- }
-
- //主函数
- int main()
- {
- int n, m, w;//n为学校个数,m为男子数,w为女子数
- char sname[S];
- cout << "\t\t\t欢迎使用\t\t\t\t" << endl;
- cout << endl;
- cout << "\t***********运动会分数统计系统***********" << endl;
- cout << endl;
- cout << "请先输入运动会主要信息" << endl;
- cout << "输入学校个数:";
- cin >> n;
- cout<<"输入男子项目个数:";
- cin >> m;
- cout<<"输入女子项目个数:";
- cin >> w;
- menu(n, m, w);
- }
运行截图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。