源码点这里

运行环境:codeblocks

1.引言...

1.1 问题提出...

1.2 本系统涉及的知识点...

1.3 功能要求...

2.总体设计...

2.1 功能模块设计...

2.2 主控main()函数流程设计

2.3 数据结构设计...

2.4 子模块设计...

2.4.1 添加记录模块...

2.4.2 查询记录模块...

2.4.3 更新记录模块...

2.4.4文件读写模块...

2.4.5 其他模块...

2.4.5.1密码模块...

2.4.5.2输出颜色模块...

2.4.5.3背景颜色模块...

2.4.5.4系统时间模块...

2.5 函数功能描述...

3.程序实现...

3.1 主界面...

3.2 子模块界面...

3.2.1密码验证界面(见图表2)...

3.2.2分数录入(见图表3)...

3.2.3分数显示(见图表4)...

3.2.4评委均分(见图表5)...

3.2.5分数排序(见图表6)...

3.2.6分数查找(见图表7)...

3.2.7信息修改(见图表8)...

3.2.8分数删除(见图表9)...

3.2.8密码修改(见图表10)...

3.2.8密码修改(见图表10)...

4 总结...

4.1程序调试情况...

4.2本人在程序设计中感想...

1.1 问题提出

在本实验中,主要实现以下几个问题:

1.输入选手数据(班级,编号,姓名,十个评委评分并储存数据到文件);

2.输出选手数据(班级,编号,姓名,总分,去掉最高分和最低分后的平均分);

3.显示评委均分(排序出十个评委的打分平均分,根据高低判断谁是严厉裁判谁 是温柔裁判);

4.实现选手的排序(按照平均分来排序);

5.成绩查询(按照姓名查询,编号查询,并且查询过后能进行修改 删除等的操作);

6.信息修改(能够修改选手的信息如班级,姓名,编号,某些评委的分数,并且修改了分数后,平均分和总分能够随之刷新);

7.删除分数(能够根据选手的编号或者姓名来删除选手的成绩);

8.修改登录密码(保护程序的安全性,实现登录密码的修改,五次机会输入密码,五次密码输入错误,显示退出程序,并且提醒密码的查看地址。就像app的找回密码功能);

9.进入修改界面想要返回主菜单却没有功能键,新增一个break语句,能够跳出循环

10删除成绩前面应该显示出选手的成绩,不然不知道删除谁

11能够修改输出颜色,让提示更加醒目

12能改变背景颜色而不是单一的黑色

13选择退出会有缓冲的时间

14顶部时间显示,到点就下班

1.2 本系统涉及的知识点

1.结构体变量:struct Student

{

}stu[1000];

struct Student stu[1000],*p=stu; 定义全局p->struct Student stu[];

2.数组:char cla[20]:输入选手班级

Char name[20]输入选手姓名

Float score[10]输入十个评委的打分

char tempname[20]用来定义名字的临时变量

char tempcla[20]用来定义班级的临时变量

char password[20],key[20];初始密码

3.循环:for(i=0;i<count;i++)

if(stu[count].num==stu[i].num)判断输入的选手编号是否重复

if(strcmp(searchname,stu[i].name)==0)查找名字

if(searchnum==stu[i].num)查找编号

for(j=0;j<10;j++)

if(max<stu[count].score[j]);

max=stu[count].score[j];找出分数最大值

for(k=0;k<10;k++)

if(max<stu[count].score[k]);

min=stu[count].score[k];找出分数最小值

for(i=0;i<count;i++)

printf();显示数据;

for(i=searchindex;i<count-1;i++)

strcpy(stu[i].cla,stu[i+1].cla);

stu[i].num=stu[i+1].num;删除相关信息

4.函数

void input(struct Student stu[])选手分数输入

void print(struct Student stu[])选手分数显示

void average(struct Student stu[])评委打的平均分

void sort(struct Student stu[])选手按平均分排序(分数排序子函数)

void projectsort(struct Student stu[])分数排序

void findnum(struct Student stu[])按编号查找(分数查询子函数)

void findname(struct Student stu[])按姓名查找(分数查询子函数)

void find(struct Student stu[])分数查询

void del(struct Student stu[])分数删除

void delnum(struct Student stu[])按照编号删除(分数删除子函数)

void delname(struct Student stu[])按照姓名删除(分数删除子函数)

void change(struct Student stu[])修改信息

void read(struct Student stu[])文件导入

void save(struct Student stu[])文件储存

int up()修改密码

void save_password(char s[])保存密码的修改

void hidepassword(char *pswd, unsigned maxlen)隐藏密码的输入

void color(const unsigned short textColor)颜色输出

5.分支

If语句:

if(stu[count].num==stu[i].num)判断输入是否为重复编号

if(max<stu[count].score[j]);判断最大值

if(min>stu[count].score[k]);判断最小值

if(searchindex==-1)判断输入的数据是否有效

if(strcmp(searchname,stu[i].name)==0)判断名字是否存在

if(count==0)判断是否输入了选手信息

if(fread(&stu[i],sizeof(struct Student),1,fp)!=1)判断文件字节数

if(key[i]!=password[i])判断密码是否正确

if else语句:

if(count==0)

printf("\n\n您尚未录入选手信息,请返回菜单进行录入!\n");

else//否则输出选手信息

switch 语句:

switch(choose)

case 1:  //成绩录入

case 2:  //成绩显示和排序

case 3:  //均科成绩

case 4:  //成绩排序

case 5:  //成绩查找

case 6:  //成绩修改

case 7:  //成绩删除

case 8:  //密码修改

case 0:  //退出系统

6.指针

struct Student stu[1000],*p=stu;

7.goto语句;

1.3 功能要求

  1. 输入选手的班级,编号,姓名,十个评委分数
  2. 输出选手的班级,编号,姓名,十个评委分数,总分以及去掉最高分和最低分的平均分
  3. 显示每个评委打的平均分
  4. 对选手的平均分进行排序,分数高的在前面
  5. 按照编号或者姓名对选手分数进行查找
  6. 能对选手的所有信息进行修改
  7. 能够根据编号或者姓名对选手分数进行删除
  8. 修改登录密码
  9. 退出系统

2.总体设计

2.1 功能模块设计

2.2 主控main()函数流程设计

2.3 数据结构设计

1.struct Student       //定义结构体变量

{

char cla[20];//班级

int num;//编号

char name[20];//姓名

float score[10];//分数

float aver;//平均分

float sum;//总分

}stu[1000];

struct Student stu[1000],*p=stu; //定义全局p->struct Student stu[]

2.int count=0;   //定义全局变量count,录入一个选手信息,count就加一;

3.float min,max,Max,Min;//用来找出十个评委中的最高分和最低分

4.int choose;//用来反馈用户的输入情况

5.int i,j;用来循环输入输出

7 char tempname[20];

char tempcla[20];//定义姓名和班级的临时变量,用来排序

8. int searchnum;//用来查找选手编号

9. char searchname[20];//用来查找学生姓名

10.int sum2=0;//用来循环密码的输入次数

2.4 子模块设计

2.4.1 添加记录模块

2.4.2 查询记录模块

编号查找

姓名查找

全部显示

返回菜单

找到

2.4.3 更新记录模块

2.4.4文件读写模块

2.4.5 其他模块

2.4.5.1密码模块

2.4.5.2输出颜色模块

2.4.5.3背景颜色模块

system("color 3E");蓝色背景

2.4.5.4系统时间模块

time_t timep;    //系统时间

struct tm *p_1;

time (&timep);

p_1=gmtime(&timep);

2.5 函数功能描述

1)输入模块

1)函数原形:void input(struct student stu[ ])

2)功能:

实现选手的班级编号姓名十个评委打分的输入,并保存在文件中

3)变量及类型:

Float min,max:浮点型形参变量,用于找出最大值最小值

Int ij:循环控制变量

void save(struct Student stu[]);保存数据到文件

char tempcla[10]={"-1"};定义临时姓名字符串,用于按(-1)返回菜单

2)输出模块

  1. 函数原型:void print(struct Student stu[])
  2. 功能:

实现选手的信息输出

  1. 变量及类型:

sort(struct Student stu[]);调用排序函数,将信息排序后输出

if(count==0):用全局变量count判断是否录入了数据

3)评委均分模块

  1. 函数原型:void average(struct Student stu[])
  2. 功能:

计算出每个评委打分的平均分

  1. 变量及类型:

Int i:循环控制变量

float aver[10]:均分变量

float total[10]={0}:存放评委打分变量

4)分数排序模块

  1. 函数原型:void sort(struct Student stu[])
  2. 功能:对数据选手数据按照平均分进行排序
  3. 变量及类型:

char tempname[20];

char tempcla[20];字符型临时变量,用于存放班级姓名

int ij:循环控制变量

float t:排序分数的中间变量

int t1;排序编号的中间变量

5)分数查找模块

  1. 函数原型:void findnum(struct Student stu[]):按照编号查询

void findname(struct Student stu[]):按照姓名查询

void find(struct Student stu[]):查询

  1. 功能:实现对数据的查询

按照姓名编号查询

  1. 变量及类型:

int choose,n;整型变量 对下一步操作进行指定

int i;循环控制变量

char searchname[20];字符型变量用来查找名字

int searchnum;整型变量 用来查找编号

6)信息修改

  1. 函数原型:void changescore(struct Student stu[])
  2. 功能:实现选手信息的修改并更新修改后的数据
  3. 变量及类型:

int ij:循环控制变量

int choose:下一步操作变量

int searchnum,tempnum:修改编号的临时变量

7)删除分数模块

  1. 函数原型:

void delnum(struct Student stu[]):按编号删除

void delname(struct Student stu[]):按姓名删除

void dell(struct Student stu[]):删除数据

  1. 功能:实现对数据的删除,能够根据姓名和编号删除,删除后能显示剩下的信息
  2. 变量及类型:

Int i:控制循环变量

Int choose:整型变量,用于进行下一步操作

char tempname[10]={"-1"};字符型变量,用于输入名字和返回操作

8)修改密码

  1. 函数原型:

int up();密码的修改

void save_password(char s[]);修改密码的保存

void yincangpassword(char *pswd, unsigned maxlen);隐藏密码输入

  1. 功能:

实现密码的输入和更改,并保存在文件里面

  1. 变量及类型:

FILE *fp= fopen("password.txt","w+");定义文件指针

char buff = '\0';

4)说明:

参考csdn源代码,并未全懂隐藏密码的输入。

3.程序实现

3.1 主界面

图表 1

3.2 子模块界面

3.2.1密码验证界面(见图表2)

图表 2

3.2.2分数录入(见图表3)

图表 3

3.2.3分数显示(见图表4)

图表 4

3.2.4评委均分(见图表5)

图表 5

3.2.5分数排序(见图表6)

图表 6

3.2.6分数查找(见图表7)

图表 7

3.2.7信息修改(见图表8)

图表 8

3.2.8分数删除(见图表9)

图表 9

3.2.8密码修改(见图表10)

4 总结

4.1程序调试情况

程序运行无误无警告

4.2本人在程序设计中感想

当初选择这个校园歌手比赛系统项目,最初呢是觉得它和学生成绩管理系统版有点相似,做起来会比较轻松。因为我的编程水平不怎么行,所以光是构思框架,我便用了很长时间。为了少走弯路,我还参考了B站的学生成绩管理系统视频,csdn上的学生成绩管理系统源代码,而最主要的模板是书上的学生管理系统系统v2.0。

先说说编程:根据题目的要求要做到输入输出,评委打分,成绩排序,数据查询,追加学生数据,存储,导入,退出。我根据自己的想法,将评委打分包含在输入选手信息中。为了便捷性,我直接将存储功能放在每个操作最后,实现自动存储而不是手动存储,毕竟我在编程的时候经常忘记ctrl+s。另外,为了保护程序的安全性,我设置了用密码来登录系统。用户有五次机会输入密码,一但五次密码输入错误,便会退出程序。后来我又为了用户的体验舒适度,增加了一个如同QQ忘记密码找回密码的超级低配版功能,即提示用户在保存密码的文件里面查看登录密码。

为了程序的健壮性,我并没有用循环来输入数据,而是定义全局变量来记录输入的选手人数。根据现实生活,选手的编号是唯一的,但是可能出现同班同名的情况。因此我仅对编号进行了查重处理。但是在修改信息或者删除信息的时候,需要用独立的编号来删除同名者的信息。最开始我定义的评委分数是整型变量,但是偶然看见电视上的打分有小数,我便改成了浮点型,并且对输入范围进行了提示和规范。输入完成后,便会有继续输入操作和退出操作供用户选择。

我增加了一个评委均分选项,可对每个评委打分的平均分进行显示,进而判断谁是严厉(无情)裁判谁是仁慈(宽松)裁判。

在进行分数查找的测试中,我发现查找选手信息后就不能进行下一步了,仅仅一个光秃秃的显示查找的选手信息,为了完善功能,我在查找成功后增加了修改和删除的选项。

对于信息修改。我实现了对选手的各项信息皆能修改,并且对评委分数修改后,能够刷新平均分和总分并显示。

对于修改密码,我将密码用*隐藏,并且在修改密码的阶段,去掉了验证旧密码的过程,这为开源文件省去了不必要的麻烦(但是极易被他人随意的篡改),进而直接输入新密码并提醒用户退出去重新登陆。

在UI界面,我用自己喜欢的蓝色作为背景色,在登陆界面显示了音乐符号的图案,与歌手比赛更加贴近。对于输错5次密码后,我用红色的输出字体来提示用户查找密码,红色字体更加醒目。

这次项目最大的收获,就是一个人完成了整个项目,并且过程中修改错误没有寻求他人的帮助。当看到程序成功编译并且无警告时,顿感所付出的一切都是值得的。前前后后大概七天时间,有时候遇到障碍就查找资料或者等明天想法出来再弄,过程有些许曲折。

尤其是在参考程序时,才发现原来还可以这样处理,让我大开眼界无比兴奋。这次成功做出项目,使我增强了对编程的信心,强烈提高了我对编程的兴趣,巩固了我所学的知识点并让我学以致用。不仅如此,我还学到了新的知识点,减少了自己的知识盲区。

我感觉全部程序并不是我自己编写出来是我的不足,比如隐藏密码我就是借鉴了csdn的代码。另外程序的功能还是不够完善,比如在退出信息查询的时候 需要点击多次才能回车,信息修改只能修改一次不能重复修改,排序只能按照平均分排序而不能按照编号排序等等等等

但是正因为有不足,才让我有前进的动力,我会不断改进丰富该系统,并且用新知识改善它。在我自身方面,我更会严格要求自己,给自己的人生交上一份满意的答卷!

C语言 校园歌手比赛系统相关推荐

  1. C语言 校园歌手比赛系统源码

    详情点此处 /*实验:校园歌手比赛系统 作者:多庸 学号: 实验要求:输入输出 增添删除 导入储存 */ #include<stdio.h> #include<stdlib.h> ...

  2. C语言作业——歌手比赛系统

    歌手比赛系统 题目 结果图 实现代码 感悟 题目 歌手比赛系统 功能: 对一次歌手比赛的成绩进行管理,功能要求: 1.输入每个选手的数据包括编号.姓 名.十个评委的成绩,根据输入计算出总成绩和平均成绩 ...

  3. 歌手比赛系统c语言程序注释,C语言程序课程设计—歌手比赛系统(20页)-原创力文档...

    淮南师范学院 课程设计报告 歌手比赛系统 姓 名:胡欢欢 学号: 1008010109 专 业:计算机科学与技术 班 级: 10 级( 1)班 指导教师:彭飞 职称: XXX 2013 年 3 月 7 ...

  4. c语言链表做歌手比赛系统,大型实验报告(歌手比赛系统)

    <大型实验报告(歌手比赛系统)>由会员分享,可在线阅读,更多相关<大型实验报告(歌手比赛系统)(5页珍藏版)>请在人人文库网上搜索. 1.呀歩垂不主邂目蜃轨运(Z)SIO乙/讥 ...

  5. 校园歌手大赛10分c语言,校园歌手大赛策划方案5

    为了丰富校园文化生活,提高广大学生的艺术涵养,展现师大学子团结创新.蓬勃向上的精神风貌,举办校园歌唱比赛.校园歌手大赛策划方案怎么写?这里给大家分享一些关于校园歌手大赛策划方案,希望能帮到各位. 校园 ...

  6. 校园歌手大赛10分c语言,校园歌手大赛的活动方案

    校园歌手大赛的活动方案 一.活动目的 为丰富校园文化生活,提高学生的艺术修养,充实校园文化氛围,为同学们提供一块展示自己的舞台,发挥学生特长,培养学生积极向上的心态和良好的竞争意识,让广大同学在提高艺 ...

  7. 校园歌手信息评分系统(C语言),大一新生期末实训

    要求: 在校园歌手比赛中,歌手参加比赛,评委评分,并最后按名次高低输出显示. (1)有10个歌手参加比赛,实现班级,姓名及歌手的分数存储: (2)其中每个歌手的分数有5评委打分: (3)歌手最后得分为 ...

  8. 智慧校园比赛系统-Python+Django

    作者主页:编程指南针 简介:Java领域优质创作者.CSDN博客专家  Java项目.简历模板.学习资料.面试题库.技术互助 文末获取源码 项目编号:BS-Python-002 1.项目说明 项目名称 ...

  9. c语言ktv点歌系统链表,C语言链表实现歌手评分系统

    本文实例为大家分享了C语言链表实现歌手评分系统的具体代码,供大家参考,具体内容如下 此程序可以添加文件操作用于保存歌手得分等信息,此程序实现了链表的增删查和链表冒泡排序交换节点功能 #include ...

最新文章

  1. matlab-高数 find 找到集合中特定元素的位置
  2. FileCoin (1) 初步介绍
  3. list里面的数据按3个字段排序_Python数据分析:探索性分析
  4. HTML转PDF(C#---itextsharp)(转自别人的文章)
  5. java 打包jar文件以在没有安装JDK或JRE的机子上运行
  6. 商业初创公司网站单页模板
  7. 网页上的摄影展:等高响应布局实现
  8. 雇佣K个工人的最小费用 Minimum Cost to Hire K Workers
  9. win2008支持mysql asp.net_Win7、win2008中让IIS7支持asp的方法
  10. java 撤销恢复按钮_再涨个姿势,我们常用的撤销和恢复功能,你知道它们使用了什么设计模式实现吗?...
  11. mysql后台数据库学习报告
  12. 54份运算放大器书籍、文档资料合集(54份 0.46G)
  13. 日语单词记忆方法(正在试用)
  14. 【技术】H5网页调用手机摄像头扫码
  15. 关于IE读取缓存页面不刷新解决方法
  16. ACOUG年会归来(r11笔记第16天)
  17. php封装成应用系统吗,用Portal来集成外部应用程序_php
  18. 旅行青蛙(旅かえる)的最全攻略(不懂日语的可以看看)
  19. 用计算机实现的动画效果,运用PPT编辑动画效果
  20. 笔记 GWAS 操作流程5-2:利用GEMMA软件进行LMM+PCA+协变量

热门文章

  1. Java怎样把时间转成毫秒_如何转换时间格式 java如何把时间格式转为毫秒
  2. android平台opengl es读取纹理数据并保存图片
  3. gtx780有html接口吗,NVIDIA GTX780Ti评测_评测_太平洋电脑网PConline
  4. 如何评价 2021 考研政治题,难度如何?
  5. PROTOTEX: Explaining Model Decisions with Prototype Tensors论文解读
  6. Kitty-Cloud服务搭建过程剖析
  7. html制作图像画廊,创建 Web 照片画廊 (Photoshop)
  8. OSChina 周六乱弹 ——你知道妹子喜欢什么了么?
  9. SAP 工艺路线分配组件 CA02正常显示分配但是CA03不显示分配解决方法
  10. MM配额协议(Quota Arrangement)-阿龙学习MM PA 笔记(3)