C语言课设唱歌比赛评分系统Word下载.docx
《C语言课设唱歌比赛评分系统Word下载.docx》由会员分享,可在线阅读,更多相关《C语言课设唱歌比赛评分系统Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
✧课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩
六、教师评语
一、需求分析
根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统是一个分数录入以及评定系统,其使用者被假定为某歌唱比赛的管理人员,系统应该具有安全、稳定、功能齐全的特点。
1.安全性分析
系统管理的数据涉及到参赛的所有选手,为防止他人恶意修改,所以在进入评分系统前有密码程序,只有掌握了正确的密码才能进入程序进行各项操作。
2.稳定性分析
指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3.主要功能分析
(1)密码程序:
在程序尾端设置好密码,只有掌握密码的管理员才能进入程序进行成绩录入,修改等操作,避免信息被他人修改,造成比赛不公
(2)菜单:
有一个功能强大又清晰明了的菜单能极大程度方便管理员的操作
(3)数据输入:
在每个输入前都有详细分类和提示,简单明了,根据提示输入参赛选手号数,姓名,各个评委打分成绩
(4)数据保存:
对于输入的数据,或被修改的数据应该保存到某个磁盘文件中,实现永久存储。
运用了指针函数后便可实现该功能。
将输入的选手信息存储到自动生成的文件中,以便于程序自动读取或人工阅读
(5)成绩排名:
利用冒泡程序对数组进行排序,删除一个最高与最低然后进行讲剩下的值平均,得出选手最终得分,再根据分数高低排名
(6)数据查询:
用户输入查询条件,系统规则地在界面显示查询结果,不光可以输入号数,查询到该选手信息,每位评委打分;
还可以选择排名查询,显示的数据全面。
二、设计分析
主要有9个功能模块,每个模块对应一个C语言自定义函数。
这些函数原型及其功能简述如下:
1、程序总体结构图(传统流程图或N-S框图)
2、主要功能模块框图(传统流程图或N-S框图)
(1)密码程序plus()
不正确
正确
(2)参赛选手信息录入creat()
Printf参赛选手号数
Printf姓名
Printf7位评委打分
是否继续输入
是
否
重新执行开头
返回主菜单
(3)浏览选手数据browse()
(4)查询选手成绩search()
(5)删除函数del()
(6)查询选手信息print()
(7)菜单函数menu()
(8)修改函数update()
(9)指针函数rank()
(10)保存函数save()
三、主要界面截图
图1进入程序输入密码界面
图2程序主界面
图3选手信息录入
图4选手信息浏览
图5单个选手成绩查询
图6选手排名查询
图7选手信息修改
图8选手信息删除
图9程序退出
四、技术要点
1、冒泡程序应用
运用冒泡程序对各个参赛选手排序,并去除头与尾即最高分和最低分,将剩下的评委得分运算得出选手最终平均分,然后再排序,便能得出选手名次。
for(i=0;
i<
N-1;
i++)xt"
"
w"
);
fprintf(fp,"
--------|--------\n"
编号|姓名\n"
while(p1!
=NULL)
{
fprintf(fp,"
%-9d%-6s\n"
p1->
num,p1->
name);
p1=p1->
next;
}
fclose(fp);
printf("
\n\t文件已将保存到\"
参赛选手名单.txt\"
"
}
3、关于删除算法
实现从系统中删除某位同学的相关信息的算法稍微复杂一些,其实质是对数组某个或某些元素的删除操作。
对数组元素的删除操作完成后,再将数组写入到文件中,就完整地实现了“删除”。
voiddel()
{
S_MESSAGE*node;
/
#include<
>
#defineLENsizeof(S_MESSAGE)
#defineN7
typedefstructsongerf"
grades[i]);
}
printf("
%\n"
ave);
check=1;
getchar();
return;
}
else
{
p1=p1->
}
if(head!
=NULL&
&
check==0)
printf("
\n对不起,你查看的选手成绩不存在!
\n"
getchar();
/*---------------------------search函数-------------------------------*/
voidsearch()
intc;
\n请选择查询内容:
1.选手详细成绩查询2.选手排名查询\n请输入您的选择:
scanf("
%d"
&
c);
switch(c)
case1:
system("
cls"
print();
break;
case2:
rank();
/*-------------------------------save函数------------------------------*/
voidsave()xt"
/*------------------------update函数--------------------------*/
voidupdate()
S_MESSAGE*p1;
手信息浏览2.选手信息录入\n"
\3.选手信息保存4.选手成绩查询\n"
\5.选手信息修改6.选手信息删除\n"
\7.退出系统\n"
\n\***********系统菜单选择界面*************\n"
\t>
请根据您想执行的命令,输入对应功能的数字键<
<
请输入您的选择:
/*----------------menu_select函数------------------------*/
voidmenu_select()
chars[100];
gets(s);
//不管用户输入的是数字键或是字母键使用gets都能将输入作为字符串接收
while
(1)//限定用户输入的数值必须在1-7之间才有效,否则要求重新输入
c=atoi(s);
//利用atoi()函数将所接收的字符串转换成数值,提供给if语句判断
if(c<
1||c>
7)
{
printf("
您的输入有误,请重新输入:
gets(s);
elsebreak;
system("
//清屏
browse();
break;
creat();
case3:
save();
case4:
search();
case5:
update();
case6:
del();
case7:
quit();
return;
default:
system("
menu();
menu_select();
/*--------------------------main函数-----------------------------*/
intplus()
return0;
intmain(void)
{
charc[6];
charm[6];
m[0]='
1'
m[1]='
2'
m[2]='
3'
m[3]='
4'
m[4]='
5'
m[5]='
6'
;
inti;
printf("
请输入您的密码:
for(i=0;
6;
i++)
c[i]=getch();
if(c[i]>
='
0'
||c[i]<
9'
||c[i]>
a'
z'
A'
Z'
)
putchar('
*'
}
if(c[0]==m[0]&
c[1]==m[1]&
c[2]==m[2]&
c[3]==m[3]&
c[4]==m[4]&
c[5]==m[5])
{printf("
\n欢迎进入歌唱比赛评分系统\n"
plus();
else
\n密码错误!
while
(1);
return0;