河南科技大学C语言课程设计选票问题实验报告摘要.doc
河南科技大学
综合程序设计报告
运动员信息管理系统
学 院 电气工程学院 ___________
年级专业 ________________
学生姓名 _________________
指导老师 _________________
题目内容和要求
设计一个选票信息处理系统,从10名优秀运动员中评选出3名超级运动员。要求实现如下系统功能。
(1)输入运动员信息及选票信息
运动员信息包括运动员编号、姓名、运动员得分和运动员得票。运动员按1、2、3…顺序编号。选票信息包括选票编号、所投运动员编号、选票有效标志。选票同样按1、2、3…顺序编号。每张选票可投3个不同的运动员编号;对应位置的运动员编号可以有空缺,但必须用0表示;若编号超出规定的范围,或编号出现重复,则选票无效。从键盘或数据文件输入各运动员信息和选票信息。
(2)统计运动员得分
选票中所列运动员顺序不同,则得分不同,选票中第1位运动员至第3位运动员所得分数依次为3分、2分、1分。根据选票信息中的运动员编号及顺序,统计运动员得分,记入相应的得分数据域;统计运动员得票数,记入相应的得票域。
(3)输出运动员及选票信息
输出所有运动员信息及选票信息至屏幕上。建立一个数据文件,将结构体数组中的运动员信息和选票信息写入数据文件。
(4)查询运动员信息
按运动员编号或姓名查询运动员信息。从键盘输入待查询运动员的编号或姓名,若找到该运动员,则输出其编号、姓名、得分及得票信息;若未找到,则输出提示信息,将查询结果输出至屏幕上。
(5)查询选票信息
从键盘输入待查询选票的编号,若找到该选票,则输出选票信息;若未找到,则输出提示信息将查询结果输出至屏幕上。
(6)评选超级运动员
根据各运动员信息中的得分域,评选出得分最高的三名运动员为超级运动员。若运动员得分相同,则得票多者在前,若果得分与票数都相同,则编号小的在前。输出超级运动员排名,格式如下。
Rank Number Name Score Vote
将超级运动员信息输出至屏幕上,并追加写入数据文件。
(7)系统主界面。
进入选票信息处理系统时,输出系统主界面。在主界面中显示系统各功能的名称及编号,用户根据需要选择执行相应的功能模块。
总体设计
根据系统功能描述和问题分析,可将系统功能划分为若干模块,如图所示:
图1
详细设计
1、函数设计
图1中的各模块分别由下列若干函数实现。
player_in() 运动员信息输入函数;
vote_in() 选票信息输入函数;
in_valid() 选票有效性判断函数;
scoring() 统计选票函数;
orig_to_file() 信息写入文件函数;
load_mod() 信息输入模块函数;
output_player() 运动员信息输出函数;
output_vote() 选票信息输出函数;
search_num_player() 按编号查询运动员函数;
search_name_player() 按姓名查询运动员函数;
search_player() 查询运动员信息函数;
search_num_vote() 按编号查询运动员函数;
super_player() 评选超级运动员函数;
menu() 显示系统主界面函数;
main() 选票信息处理函数。
2、数据结构
#define M 10
#define N 30
struct player
{
int num;
char name[20];
int score;
int votes;
};
struct vote
{
int num;
int top[3];
int valid;
};
源代码
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#define M 5
#define N 5
struct player
{
int num;
char name[20];
int score;
int votes;
};
struct vote
{
int num;
int top[3];
int valid;
};
void menu()
{
printf("\n\t\t\t the voting system\n\n");
printf("\t****************************** MENU ******************************\n\n");
printf("\t 1. input player and vote 2. display all players\n");
printf("