C语言程序专业课程设计歌手比赛系统
C语言是一门计算机高级语言,它在Microsoft开发的软件Visual C++ 6.0中执行,C语言具有很多优点:丰富的数据类型、众多的运算符、体现结构化程序设计的优良控制结构、具有抽象功能及体现信息隐蔽思想的函数。C语言的应用几乎遍及了程序的各个领域,如科学家、系统程序设计、字处理软件和电子表格软件的开发、信息管理、计算机辅助设计等方面。C语言简洁,为完成某一功能所写的源程序代码往往比其他语言写得短,便利程序输入工作量减少。若程序员在书写过程时严格遵循ANSI C标准,则其源代码可不作修改,即可用于各种型号的计算机和各种操作系统,因此,C语言具有良好的可移植性。
本次实践我们选择了使用C语言编写基于链表的程序,不仅使大家对程序设计、编程方法有了进一步提高,而且掌握了使用C语言动态内存分配及数据结构等方面的知识。
系统设计
系统设计是指根据需求和目标,设计一个完整的系统架构和详细设计的过程。在这个歌手比赛系统中,我们首先要设计一个菜单界面,供用户选择不同的功能模块。然后,我们需要设计一个链表结构来存储选手的信息,包括选手的姓名、成绩等信息。接着,我们需要设计一个计算模块来计算选手的平均分,一个排序模块来对选手进行排名,一个输出模块来输出最终的结果。
系统实现
系统实现是指根据系统设计的结果,使用C语言编写出相应的代码来实现系统的功能。在这个歌手比赛系统中,我们首先需要编写一个菜单界面,以供用户选择不同的功能模块。然后,我们需要编写一个链表结构来存储选手的信息,包括选手的姓名、成绩等信息。接着,我们需要编写一个计算模块来计算选手的平均分,一个排序模块来对选手进行排名,一个输出模块来输出最终的结果。
系统测试
系统测试是指对系统的功能和性能进行测试,以确保系统能够正确地运行。在这个歌手比赛系统中,我们需要对系统的每个模块进行测试,以确保它们能够正确地工作。例如,我们需要测试链表结构是否能够正确地存储选手的信息,计算模块是否能够正确地计算选手的平均分,排序模块是否能够正确地对选手进行排名等。
设计体会
在这个歌手比赛系统的设计和实现过程中,我们学到了很多东西。我们学习了C语言的基本语法和数据结构,例如链表、数组等。我们学习了如何设计一个完整的系统架构和详细设计的过程。我们学习了如何使用C语言编写出相应的代码来实现系统的功能。
参考文献
[1] ANSI C标准
[2] Visual C++ 6.0软件手册
源程序代码
在这个歌手比赛系统中,我们编写了以下源程序代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义结构体
typedef struct {
char name[20];
int score;
} Singer;
// 创建链表
Singer* createList() {
Singer* head = (Singer*)malloc(sizeof(Singer));
head->next = NULL;
return head;
}
// 输入数据
void inputData(Singer* head) {
int n;
printf("请输入选手人数:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
Singer* node = (Singer*)malloc(sizeof(Singer));
printf("请输入选手姓名:");
scanf("%s", node->name);
printf("请输入选手成绩:");
scanf("%d", &node->score);
node->next = head->next;
head->next = node;
}
}
// 计算函数
void calculateScore(Singer* head) {
Singer* node = head->next;
while (node != NULL) {
int sum = 0;
int count = 0;
while (node != NULL) {
sum += node->score;
count++;
node = node->next;
}
node = head->next;
while (node != NULL) {
node->score = sum / count;
node = node->next;
}
}
}
// 排序函数
void sort(Singer* head) {
Singer* node = head->next;
while (node != NULL) {
Singer* minNode = node;
Singer* temp = node->next;
while (temp != NULL) {
if (temp->score < minNode->score) {
minNode = temp;
}
temp = temp->next;
}
int tempScore = node->score;
node->score = minNode->score;
minNode->score = tempScore;
node = node->next;
}
}
// 输出数据
void outputData(Singer* head) {
Singer* node = head->next;
while (node != NULL) {
printf("%s:%d\n", node->name, node->score);
node = node->next;
}
}
int main() {
Singer* head = createList();
inputData(head);
calculateScore(head);
sort(head);
outputData(head);
return 0;
}
```
这个源程序代码使用C语言编写,实现了一个基于链表的歌手比赛系统。它可以输入选手的信息,计算选手的平均分,排序选手的排名,并输出最终的结果。