C语言实现歌手比赛打分系统

版权申诉
0 下载量 173 浏览量 更新于2024-06-28 1 收藏 983KB DOCX 举报
"C语言程序课程设计-歌手比赛系统" 这篇文档是关于使用C语言进行课程设计的一个项目,名为“歌手比赛系统”。该系统旨在模拟一个歌手比赛的评分过程,包含生成菜单、输入选手数据、评委打分、成绩排序、数据查询、追加选手数据、写入数据文件以及退出系统等功能。项目旨在提升学生的程序设计和编程能力,特别是对C语言动态内存分配和数据结构的理解。 在C语言中,动态内存分配允许在程序运行时分配和释放内存,这对于处理不确定数量的数据(如在这个案例中的选手和评委打分)非常有用。数据结构,尤其是链表,是这个项目的核心,因为它们允许高效地存储和操作一系列相关数据,比如选手信息和评分记录。 设计分析部分详细介绍了项目的需求。首先,系统应能显示一个字符界面的菜单供用户选择操作。用户可以选择输入选手信息,这可能涉及到创建和操作链表来存储选手数据。评委打分功能则需要读取评委的评分并计算平均值,这里可能会用到数组和链表数据结构来存储评分。成绩排序功能可能使用到排序算法,如冒泡排序、插入排序或更高效的排序算法。数据查询和追加功能涉及读取和修改已存储的数据,而写入数据文件则需要文件I/O操作。 在系统实现阶段,每个模块都需要编写相应的C语言代码来实现这些功能。例如,选手数据的输入和存储可能需要用到`malloc()`函数动态分配内存,`struct`类型定义选手数据结构,以及链表操作函数如`insert()`和`append()`。评委打分可能需要读取用户输入并存储到数组,然后去除最高分和最低分后计算平均值。成绩排序可能使用某种排序算法对包含所有选手得分的数组进行排序。数据查询可能涉及遍历链表找到特定选手的信息,而追加数据则是在链表尾部添加新的元素。最后,写入数据文件可能使用`fopen()`, `fprintf()`, 和`fclose()`等函数将数据保存到磁盘。 在设计体会部分,作者可能会分享在项目过程中遇到的挑战、解决问题的方法以及对C语言和数据结构更深入的理解。参考文献部分则列出在项目设计过程中参考的相关资料。源程序代码章节会包含实现这些功能的所有C语言代码。 这个项目为学生提供了一个实际应用C语言和数据结构的机会,同时也锻炼了他们的程序设计思维和问题解决能力。通过这个系统,学生可以更好地理解和掌握C语言的特性,以及如何在实际项目中应用这些知识。
2023-05-29 上传
XXXXX大学 本 科 课 程 设 计 课程:C语言程序设计 题目:歌手比赛系统 学院:xxxxxxxxxx 专业班级:xxxxxxx 学号:xxxxxxxx 学生姓名:xxxxxxx 指导教师:庞茂群 2011年10月15日 目录 1、引言····································································· 2、系统设计································································· 2.1、设计分析····························································· 2.1.1、项目描述······················································· 2.2、程序结构····························································· 2.2.1、程序划分······················································· 2.2.2、程序结构流程图················································· 3、系统实现································································· 3.1、各模块的功能及程序说明··············································· 3.2、系统各模块的运行效果图··············································· 4、设计体会································································· 5、参考文献········································· 6、系统完整源程序··························································· 引言 C语言是一门计算机高级语言,它在Microsoft开发的软件Visual C++ 6.0中执行,C语言具有很多优点: 1.C语言具有丰富的数据类型,众多的运算符,体现结构化程序设计的优良控制结构,具 有抽象功能及体现信息隐蔽思想的函数。 2.C语言的应用几乎遍及了程序的各个领域,如科学家,系统程序设计,字处理软件和电 子表格软件的开发,信息管理,计算机辅助设计,等方面。 3.C语言简洁,为完成某一功能所写的源程序代码往往比其他语言写得短,便利程序输入 工作量减少。 4.若程序员在书写过程时严格遵循ANSI C标准,则其源代码可不作修改,即可用于各种型号的计算机和各种操作系统,因此,C 语言具有良好的可移植性。 本次实践我们选择了使用C语言编写基于链表的程序,不仅使大家对程序设计、编程方法 有了进一步提高,而且掌握了使用C语言动态内存分配及数据结构等方面的知识。 一、系统设计 2.1设计分析 2.1.1 项目描述 1.项目名称:歌手打分系统 2.功能描述: (1)生成字符界面的功能菜单 ************************************** * 1.输入歌手成绩 * * 2.插入新歌手 * * 3.删除退赛歌手 * * 4.歌手成绩排名 * * 5.输出歌手分数 * * 6.输出歌手排名 * * 7.退出系统 * ************************************** (2)通过输入菜单项的序号启动相应模块的功能 1. 能够根据输入的选手人数创建链表; 2. 录入9名评委给选手的打分,并存储到文件singerOriginal.dat中; 3. 按照去掉一个最高分和去掉一个最低分的原则求每名选手的平均分; 4. 按平均分由高到低的顺序对选手进行排序; 5. 把排名后的数据存储到文件singerFianl.dat中; 6. 把原始数据和最终的结果输出到屏幕; 7. 在第 步中保存singerOriginal.dat文件之前,可根据情况修改数据,例如:插入或 删除歌手。 2.2 程序结构 2.2.1程序划分 将歌手打分系统程序进行系统模块划分,共分为九部分,分别是: 1.定义结构体 2.创建链表函数 3.输入数据函数 4.计算函数 5.排序函数 6.输出数据函数 7.输出最终数据 8.删除函数 9.插入函数 10.主函数 2.2.2 程序结构流程图 三、