运动会分数统计
数据结构课程设计任务书 |
学生姓名:xxx 专业班级:软件工程 指导教师: 工作单位: |
题 目: 运动会分数统计 基础要求: 要求具有C语言的理论基础,能够完成课程设计的独立设计和编码 实践可以写具有良好的(C语言等)方面的的代码书写能力,数据结构的专业知识,能够完成编码以及测试工作 主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)任务内容 运动会分数统计 (2)完成要求 对系统进行功能模块分析、控制模块分析;系统设计要能完成题目所要求的功能;编程简练,可用,尽可能的使系统的功能更加完善和全面;说明书、流程图要清楚;提高学生的论文写作能力;特别要求自己独立完成;在基本要求达到后,可进行创新设计,如改善算法性能、友好的人机界面。 (3)撰写课程设计报告 报告格式按附件要求打印与写课程设计报告;论文包括目录、正文、小结、参考文献、附录等;课程设计论文装订按学校的统一要求完成。 |
时间安排: 内容 天数 地点 构思及收集资料 1 机房 编码与调试 3 机房 撰写论文 1 图书馆、机房 |
指导教师签名: 2023年 3月 23 日 |
完整资源一键获取私信我
- 问题分析和任务定义
【问题描述】
参加运动会的n个学校编号为1~k。比赛分成n个男子项目和m个女子项目,项目编号分别为1~n和n+1~n+m。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。
【基本要求】
-
- 可以输入各个项目的前三名或前五名的成绩;
- 能统计各学校总分,
- 可以按学校编号或名称、学校总分、男女团体总分排序输出;
- 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
- 数据存入文件并能随时查询
- 输入数据形式和范围:可以输入学校的名称,运动项目的名称
输出形式:有中文提示,各学校分数为整型。
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生根据系统功能要求自己设计,但要求运动会的相关数据要存储在数据文件中。
- 数据结构的选择和概要设计
本课设要求输入信息, 统计分数,执行排序与查找功能, 在要求中没有在建立数据之后进行插入和删除操作,而在排序和查找过程中有许多的随机读取数据操作,因此使用顺序结构而不用链表。由于各个要求属性具有一定的联系,在定义数据时使用结构体和结构体数组来存储信息数据。
- 详细设计和编码
int main()
{
MESSAGE SG = {0}, *message = &SG;
int i, j, k, select, choice, now, next;
if (read(message,fp))
{
printf("请按任意键进行下一步\n");
getch();
}
do
{
system("cls");
select = xianshi();
if (select == 1)
record(message->xuexiao, message->xiangmu, message->b, message);
else if (message->b[0])
{
if (select >= 2 && select <= 4)
{
fp = fopen(wenjian, "a+");
paixu(message, select - 2,fp);
fclose(fp);
}
else if (select == 5)
{
fp = fopen(wenjian, "a+");
for (k = 0; k < message->b[0]; k++) //输出学校名称选项 每五个一行
printf("%d:%-13s%c", k + 1, message->xuexiao[k], (k + 1) % H ? ' ' : '\n');
printf("\n输入学校前的编号[1,%d]:", message->b[0]);
choice = gainint(&choice, 1, message->b[0]) - 1;
next = 0;
while (next < message->b[1])
{
now = next;
if ((next + H) < (message->b[1]))
next = next + H;
else
next = message->b[1];
for (i = now; i < next; i++)
{
fprintf(fp,"(%s-%d)%-8s ", sex[message->sex[i]], message->junction[i], message->xiangmu[i]);
printf("(%s-%d)%-8s ", sex[message->sex[i]], message->junction[i], message->xiangmu[i]);
} //输出项目信息
fprintf(fp,"\n");
printf("\n");
for (j = 0; j < 3; j++)
{
fprintf(fp,"%-s: ", fenlei[j]);
printf("%-s: ", fenlei[j]);
for (k = now; k < next; k++)
{
if (j == message->sex[k] || j == 2)
{
fprintf(fp,"%02d分 \t", (message->spot + choice)->gram[j][k]);
printf("%02d分 \t", (message->spot + choice)->gram[j][k]);
}
else
{
fprintf(fp,"****** \t");
printf("****** \t");
}
}
fprintf(fp,"\n");
printf("\n");
}
fprintf(fp,"\n");
printf("\n");
}
fclose(fp);
}
else if (select == 6)
{
fp = fopen(wenjian, "a+");
for (i = 0; i < message->b[1]; i++)
{
printf("\t\t第%d个比赛项目: %-13s<%s子> 只录入前%d名\n", i + 1, message->xiangmu[i], sex[message->sex[i]], message->junction[i]);
fprintf(fp,"\t\t第%d个比赛项目: %-13s<%s子> 只录入前%d名\n", i + 1, message->xiangmu[i], sex[message->sex[i]], message->junction[i]);
for (j = 0; j < message->junction[i]; j++)
{
fprintf(fp,"\t第%d名:%-13s%02d分", j + 1, message->xuexiao[message->count[i][j]], junction[(message->junction[i]) / 4][j]);
printf("\t第%d名:%-13s%02d分", j + 1, message->xuexiao[message->count[i][j]], junction[(message->junction[i]) / 4][j]);
}
printf("\n\n");
fprintf(fp,"\n\n");
}
fclose(fp);
}
else if (select == 9)
{
printf("确认清空请按1 否则请按0:");
if (gainint(&choice, 0, 1))
for (k = 0; k < NUMP; k++) //对申请出来的结构体中的所有项目初始化
for (i = 0; i < 3; i++)
{
(message->spot + k)->sum[i] = 0; // sum[]初始化
for (j = 0; j < NUMP; j++)
(message->spot +
{
int B, C;
do
{
A[max] = B = C = 0;
while ((A[B++] = getchar()) != '\n' && B < max)
;
if (A[B - 1] != '\n')
while (getchar() != '\n' && ++C)
;//如果输入的最后一个字符不是回车,那么将剩余长度计到C
else
A[--B] = 0;//否则把录进数组的回车删掉,即为成功输入字符。
if (C || B && B < min)
printf("录入的字符串长度为%d字节\n只录入(%d--%d)个字符!\n", B + C, min, max);
} while (C || B < min);
return B;//返回录入成功字符数量
}
int jianyan(char b[], int T) //检验b[]是否符合实际
{
int d = 0, i, LEN = -1, F;
while (b[++LEN])
;
for (i = 0; i < LEN; i++)
if (b[i] > 0) //汉字ascll编码每一个字节为负数
return printf("输入中含有非中文字符!");
for (i = 0; key[i][0]; i++)
{
F = bijiao(b, key[i]); //匹配中文标点符号
if (F && F % 2)
return printf("输入中含有非汉字中文字符!");
}
if (T == 1) //检验学校的名称
{
for (i = 0; school[i][0]; i++)
{
F = bijiao(b, school[i]);
if (F && F % 2)
d++;
}
if (!d)
return printf("查无此校~学校名称输入可能存在错误!");
}
if (T == 2) //检验比赛的名称
{
for (i = 0; program[i][0]; i++)
{
F = bijiao(b, program[i]);
if (F && F % 2)
d++;
}
if (!d)
return printf("没有发现相关比赛~项目名称输入可能存在错误!");
}
return 0;
}
for (i = 0; program[i][0]; i++)
{
F = bijiao(b, program[i]);
if (F )
d++;
}
k)->gram[i][j] = 0; //项目初始化
message->b[i] = 0;
}
/*if (write(message,fp))
return 0;*/
read(message,fp);
}
else if(select==7)
{
system(wenjian);
}
}
printf("\n请按任意键继续…\n");
getch();
} while (select != 8);
}
- 上机调试过程
1.按男子总分排名
2.按学校总分排名
3.按比赛项目排名
- 测试结果及其分析
测试取学校数为5,男子项目数2,女子项目数0
编号 | 学校名称 | 名次 |
1 | 经济学院 | 1 |
3 | 理工学院 | 2 |
2 | 医药学院 | 3 |
- 用户使用说明
system("mode con cols=130 lines=30"); //控制台 宽度130 高度30
printf("\t\t\t\t运动会分数统计\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t* 功 能 表 积 分 规 则\n");
printf("\t* 1.添加学校及项目 *取前三名(1,2,3)\n");
printf("\t* 2.按男子团体总分排序输出 *积分分别为--5,3,2\n");
printf("\t* 3.按女子团体总分排序输出 \n");
printf("\t* 4.按学校总分排序输出 *取前五名(1,2,3,4,5)\n");
printf("\t* 5.按编号或名称查询学校情况 *积分分别为--7,5,3,2,1\n");
printf("\t* 6.显示比赛项目各学校名次情况 \n");
printf("\t* 7.读取文件 \n");
printf("\t* 8.保存信息并退出 \n");
printf("\t* 9.清空并恢复初始化界面 \n");
printf("\n");
printf("\t*注意:一个汉字占两个字符!!!\n");
printf("\t*注意:功能1可分多次选择!!!\n");
printf("\t*注意:录入项目时默认先男后女!!!\n");
printf("\t*注意:初次使用请先使用功能1录入数据!!!\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * *\n\t");
printf("请输入您的选择(1-9):");
七丶参考文献
[1]严蔚敏.数据结构C语言版[M].清华大学出版社,2007.
[2]逯鹏,张赞.数据结构课程教学方法的研究和实践[J].教育教学论坛,2015(18):121-123.
[3]贾丹,周军.基于创新应用型人才培养模式的数据结构课程教学改革[J].辽宁工业大学学报:社会科学版,2015(2):132-134.
[4]郭艳燕,童向荣,孙雪姣,等.程序设计基础与数据结构两门课程的'教学衔接[J].计算机教育,2014(10):47-50.
[5]高贤强,化希耀,陈立平.引入计算思维的《数据结构》教学改革研究[J].现代计算机:专业版,2015(7):16-19.
[6]严太山,郭观七,李文彬.课堂设问的技巧及其在《数据结构》课程教学中的应用[J].湖南理工学院学报:自然科学版,2015(1):81-83.
[7]南淑萍.电子商务专业数据结构教学方法探讨[J].湖北科技学院学报,2014(10):13-14.
[8]谌林,郑泓楠.分布式数据库查询处理和优化算法[J].中外企业家,2020(15):145.
[9]方木云,赵长鲜,张祝梦.两种非匀质Excel表转换成关系数据库表的方法[J].软件工程,2020,23(05):31 -34.
[10]熊光华.计算机数据库系统在企业管理中的应用[J].计算机产品与流通,2020(05):14.