C语言 校园歌手比赛系统

这篇具有很好参考价值的文章主要介绍了C语言 校园歌手比赛系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

源码点这里

运行环境: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 功能模块设计

C语言 校园歌手比赛系统              

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

C语言 校园歌手比赛系统

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 添加记录模块

C语言 校园歌手比赛系统

2.4.2 查询记录模块

C语言 校园歌手比赛系统

编号查找

姓名查找

全部显示

返回菜单

找到

2.4.3 更新记录模块

C语言 校园歌手比赛系统

2.4.4文件读写模块

C语言 校园歌手比赛系统

2.4.5 其他模块

2.4.5.1密码模块

C语言 校园歌手比赛系统

2.4.5.2输出颜色模块

C语言 校园歌手比赛系统

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)输入模块

C语言 校园歌手比赛系统

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

2)功能:

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

3)变量及类型:

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

Int ij:循环控制变量

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

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

  2)输出模块

C语言 校园歌手比赛系统

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

实现选手的信息输出

  1. 变量及类型:

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

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

3)评委均分模块

C语言 校园歌手比赛系统

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

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

  1. 变量及类型:

Int i:循环控制变量

float aver[10]:均分变量

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

4)分数排序模块

C语言 校园歌手比赛系统

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

    char tempname[20];

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

int ij:循环控制变量

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

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

     5)分数查找模块

C语言 校园歌手比赛系统

 C语言 校园歌手比赛系统

 C语言 校园歌手比赛系统

  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)信息修改

C语言 校园歌手比赛系统

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

   int ij:循环控制变量

     int choose:下一步操作变量

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

7)删除分数模块

C语言 校园歌手比赛系统

 C语言 校园歌手比赛系统

 C语言 校园歌手比赛系统

  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)修改密码

C语言 校园歌手比赛系统

 C语言 校园歌手比赛系统

 C语言 校园歌手比赛系统

  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 主界面

C语言 校园歌手比赛系统

图表 1

3.2 子模块界面

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

C语言 校园歌手比赛系统

图表 2

3.2.2分数录入(见图表3)

 C语言 校园歌手比赛系统

图表 3

3.2.3分数显示(见图表4)

C语言 校园歌手比赛系统

图表 4

3.2.4评委均分(见图表5)

C语言 校园歌手比赛系统

图表 5

3.2.5分数排序(见图表6)

C语言 校园歌手比赛系统

图表 6

3.2.6分数查找(见图表7)

C语言 校园歌手比赛系统

图表 7

3.2.7信息修改(见图表8)

C语言 校园歌手比赛系统

图表 8

3.2.8分数删除(见图表9)

C语言 校园歌手比赛系统

图表 9

3.2.8密码修改(见图表10)

C语言 校园歌手比赛系统

 C语言 校园歌手比赛系统

4 总结

4.1程序调试情况

程序运行无误无警告

4.2本人在程序设计中感想

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

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

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

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

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

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

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

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

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

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

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

但是正因为有不足,才让我有前进的动力,我会不断改进丰富该系统,并且用新知识改善它。在我自身方面,我更会严格要求自己,给自己的人生交上一份满意的答卷!文章来源地址https://www.toymoban.com/news/detail-503190.html

到了这里,关于C语言 校园歌手比赛系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023最新独立版校园跑腿校园社区小程序系统源码 | 附教程

    简介: 2023最新独立版校园跑腿校园社区小程序系统源码 | 附教程 测试环境:Nginx+PHP7.2+MySQL5.6 多校版本,多模块,适合跑腿,外卖,表白,二手,快递等校园服务 全新校园跑腿小程序源码+独立后端源码。一款全新的校园跑腿独立版小程序源码上线了,其具备多校支持、多模

    2024年02月07日
    浏览(47)
  • 校园二手商品交易小程序系统源码

    目录 一、整体目录(示范): 文档含项目技术介绍、E-R图、数据字典、项目功能介绍与截图等 二、运行截图 三、代码部分(示范): 四、数据库表(示范): 数据库表有注释,可以导出数据字典及更新数据库时间,欢迎交流学习 五、主要技术介绍: 六、项目调试学习(点击

    2024年02月09日
    浏览(85)
  • ssm+vue校园美食交流系统源码

    ssm+vue校园美食交流系统源码和论文026  开发工具:idea   数据库mysql5.7+  数据库链接工具:navcat,小海豚等   技术:ssm 摘  要 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多 商家 的之中,随之就产生了“ 校园美食交流系统 ”

    2024年02月12日
    浏览(34)
  • 【c++项目】校园导航系统 (附完整源码)

    ​ hello大家好 俺是小冉~ 这是去年c++课程的一个大作业,今天清理文件的时候翻出来了源码哈哈哈哈。 考虑到可能对大家有帮助就把源码分享了出来 。 在写这个系统的时候还没有学习数据结构,所以变量名、函数名等命名都不是非常的规范,如有错误也请大佬批评指正。

    2024年02月03日
    浏览(34)
  • ssm+vue校园教务系统源码和论文

    ssm+vue校园教务系统源码和论文086  开发工具:idea   数据库mysql5.7+  数据库链接工具:navcat,小海豚等   技术:ssm 1、课题背景 信息系统的目的是让人可以高效的进行工作,包括对信息的一-系列操作,如添加信息、修改信息、删除信息、查询信息等;人们将计算机硬件与软件

    2024年02月11日
    浏览(41)
  • SSM+校园网上订餐系统 毕业设计-附源码211510

    校园网上订餐系统 的设计与实现 摘   要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对校园网上订餐系统等问题,对校园网上订

    2023年04月14日
    浏览(48)
  • 基于springboot的校园疫情防控系统【毕业设计,源码,论文】

     想要源码或其他毕设项目,可以私信~  摘  要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,校园疫情防

    2024年02月05日
    浏览(49)
  • 数据结构课设(C语言)——校园导航系统

    校园导航系统不是很难,因为最短路径已经有了Dijkstra算法,这就可以直接用。 我们需要的只是往这个算法里面加参数还有对界面的创作,这些都很简单。不过用算法还得需要了解算法,所以建议大家还是去理解一下这个算法的内涵。实际运行可能和我的运行结果有出入,应

    2024年02月02日
    浏览(38)
  • Java基于 SpringBoot 的高校校园点餐系统,附源码

    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选

    2024年02月19日
    浏览(43)
  • springboot+vue的校园疫情防控系统(附数据库,源码)

    💕💕作者: 程序员徐师兄 个人简介:7 年大厂程序员经历,擅长Java、微信小程序、Python、Android等,大家有这一块的问题可以一起交流! 各类成品java毕设 。javaweb,ssh,ssm,springboot等等项目框架,源码丰富,欢迎咨询。学习资料、程序开发、技术解答、代码讲解、文档报告

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包