资源描述
广 东 工 业 大 学
C语言程序设计报告
课程名称 C语言程序设计
学生姓名 伍鹏辉
学生学号 3115001128
学生专业 电气工程及其自动化
学生班级 15级(4)班
所在院系 自动化学院
指导教师 孟安波
日期 2015 年 12 月 12 日
1.课程论文题目:校际运动会管理系统
要求:
完成校际运动会成绩管理功能,包括输入项目及参赛成绩,输入参赛学校,统计各校成绩并排序。
各项目名次取法有如下几种:
取前5名:第1名得分7,第2名得分5,第3名得分3,第4名得分2,第5名得分1; 取前3名:第1名得分5,第2名得分3,第3名得分2;用户自定义分数选择,并有查错功能(名次靠前的得分要高于名次靠后的得分)
2.设计思路
(1)信息初始化
输入:N─参赛学校总数,M─男子竞赛项目数, W─女子竞赛项目数;
各项目名次取法有如下几种:
取前5名:第一名得分 7,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3,第三名得分2;用户自定义:各名次权值由用户指定。
(2)提醒用户填写比赛结果,输入各项目获奖运动员信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,察看参赛学校信息和比赛项目信息等。
3.算法设计流程图
1.主函数设计
提供输入、功能处理和输出部分的函数调用,其中各功能模块用菜单方式选择,另外菜单部分也可以写成函数。显示一系列功能选项
输入n,判断n是否是1-4
N
根据n的值调用各功能模块函数
图1 主函数流程图
Y
2. 各功能模块设计
(1) 信息输入模块
一是参赛学校信息,二是参赛运动员信息,三是比赛项目信息,分别输入并保存
信息输入
读入、显示参赛学校
读入、显示运动员
读入比赛项目
图2.1 信息输入模块流程图
(2) 结果录入模块
录入运动员比赛得分
图2.2 比赛结果录入模块流程图
分析计算各学校总分
(3)查询信息模块
查询信息模块提供按不同方式查询各种信息机返回功能,其中各功能模块用菜单方式选择。菜单部分也可写成函数。
查询信息模块
查询学校
查询运动员
查询项目
返回主菜单
图3 查询信息模块流程图
(4)查询学校名模块
定义结构体指针UNI*next
输入学校名字
判断输入名字与结构体中学校名是否相同
指针变量值向下一组数据
调用输出函数
Y
N
图4 查询学校名流程图
4.程序代码
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 9
#define N 3
#define WM 3
void bsxm();
void csxx();
void Information();
void main();
void menu();
void printf_back();
void saveathlete();
void saveprogram();
void saveschool();
void savescore();
void Search();
void ttzf() ;
int i;
FILE *fp1,*fp2,*fp3,*fp4;
struct athlete //定义运动员信息
{
char univ[5];
char name[8];
char prog[15];
char mingci[5];
int score;
}at[SIZE];
struct xuexiao //定义学校信息
{
char univ[5];
char prog[15];
int num_athlete;
}xx[N];
struct program //定义项目信息
{
char prog[5];
int quming;
char ath1[5];
char ath2[5];
char univ1[5];
char univ2[5];
}pro[WM];
struct zongfen //定义学校得分信息
{
char univ[5];
char prog1[5];
char prog2[5];
char prog3[5];
int score1;
int score2;
int score3;
int total_score;
}zf[N];
void Information()
{
int n,w ;
do {
puts("\n\n\n");
puts("\t\t***^__^ Welcome to load 信息录入 system! ^__^***\n");
puts("\t\t*************************MENU*************************\n");
puts("\t\t******** 1.saveathlete **********\n");
puts("\t\t******** 2.saveschool **********\n");
puts("\t\t******** 3.saveprogram() **********\n");
puts("\t\t******** 4.back **********\n");
puts("\t\t***************************************\n");
printf("Choic your number(1-4):[ ]\b\b");
scanf("%d",&n);
if (n<1||n>4)
{
w=1;
getchar();
}
else w=0;
}
while (w==1);
switch(n)
{
case 1 : saveathlete(); break;// 保存运动员信息子函数
case 2 : saveschool(); break;//保存学校信息子函数
case 3 : saveprogram();break;//保存项目比赛信息子函数
case 4 : exit(0);
}
}
void saveathlete() //保存运动员信息子函数
{
printf("\n请输入各项目获奖运动员的信息:");
for(i=0;i<SIZE;i++)
{
printf("\n请输入第%d个运动员的信息:\n",i+1);
printf("姓名:");
scanf("%s",at[i].name);
printf("学校:");
scanf("%s",at[i].univ);
printf("参赛项目:");
scanf("%s",at[i].prog);
printf("名次:");
scanf("%s",at[i].mingci);
printf("得分:");
scanf("%d",&at[i].score);
}
fp1=fopen("ath","w");
for(i=0;i<SIZE;i++)
{
if(fwrite(&at[i],sizeof(struct athlete),1,fp1)!=1)
printf("File write error!\n");
}
fclose(fp1);
fp1=fopen("ath","r");
printf("\n现在各运动员的信息如下:\n\n");
printf("姓名 学校 项目 名次 得分\n");
for(i=0;i<SIZE;i++)
{
fread(&at[i],sizeof(struct athlete),1,fp1);
printf("%-10s%-10s%-18s%-10s%d\n",at[i].name,at[i].univ,at[i].prog,at[i].mingci,at[i].score);
}
fclose(fp1);
printf_back();
}
void saveschool() //保存学校信息子函数
{
printf("\n请输入各参赛学校的信息:");
for(i=0;i<N;i++)
{
printf("\n请输入第%d个学校的信息:\n",i+1);
printf("学校:");
scanf("%s",xx[i].univ);
printf("参赛的项目:");
scanf("%s",xx[i].prog);
printf("参赛者数:");
scanf("%d",&xx[i].num_athlete);
}
fp3=fopen("xxiao","w");
for(i=0;i<N;i++)
{
if(fwrite(&xx[i],sizeof(struct xuexiao),1,fp3)!=1)
printf("File write error!\n");
}
fclose(fp3);
printf_back();
}
void saveprogram() //保存项目比赛信息子函数
{
printf("\n请输入关于比赛项目的信息:");
for(i=0;i<WM;i++)
{
printf("\n请输入第%d项比赛的信息:\n",i+1);
printf("项目:");
scanf("%s",pro[i].prog);
printf("取分情况:");
scanf("%d",&pro[i].quming);
printf("参赛者1:");
scanf("%s",pro[i].ath1);
printf("所属学校:");
scanf("%s",pro[i].univ1);
printf("参赛者2:");
scanf("%s",pro[i].ath2);
printf("所属学校:");
scanf("%s",pro[i].univ2);
}
fp4=fopen("pr","w");
for(i=0;i<N;i++)
{
if(fwrite(&pro[i],sizeof(struct program),1,fp4)!=1)
printf("File write error!\n");
}
fclose(fp4);
printf_back();
}
void savescore() //保存学校得分情况子函数
{
printf("N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数。\n");
printf("W.100-女子一百米比赛,M.100-男子一百米,M.200-男子两百米。\n");
printf("\n各项名次得分权值如下:\n");
printf("取前三名:第一名5分 第二名3分 第三名2分\n");
printf("\n请输入各学校的得分情况:");
for(i=0;i<N;i++)
{
printf("\n请输入第%d个学校的得分情况:\n",i+1);
printf("学校:");
scanf("%s",zf[i].univ);
printf("参赛项目1:");
scanf("%s",zf[i].prog1);
printf("得分:");
scanf("%d",&zf[i].score1);
printf("参赛项目2:");
scanf("%s",zf[i].prog2);
printf("得分:");
scanf("%d",&zf[i].score2);
printf("参赛项目3:");
scanf("%s",zf[i].prog3);
printf("得分:");
scanf("%d",&zf[i].score3);
zf[i].total_score=zf[i].score1+zf[i].score2+zf[i].score3;
}
fp2=fopen("zfen","w");
for(i=0;i<N;i++)
{
if(fwrite(&zf[i],sizeof(struct zongfen),1,fp2)!=1)
printf("File write error!\n");
}
fclose(fp2);
printf_back();
}
void Search()
{
int n,w2;
do
{
puts("\t\t***^__^ Welcome to load search system! ^__^***\n");
puts("\t\t*************************MENU*************************\n");
puts("\t\t******** 1.search ttzf **************\n");//查看团体总分
puts("\t\t******** 2.search csxx **************\n");//查看参赛学校信息!
puts("\t\t******** 3.search bsxm **************\n");//查看比赛项目信息!
puts("\t\t******** 4.Exit **************\n");//退出
puts("\t\t***************************************\n");
printf("Choice your number(1-4):[ ]\b\b");
scanf("%d",&n);
if (n<1||n>4)
{
w2=1;
getchar();
}
else w2=0;
}
while (w2==1);
switch(n)
{ case 1: ttzf();break;
case 2: csxx();break;
case 3: bsxm();break;
case 4: exit(0);break;
default: printf("未进行任何操作!");
}
}
void ttzf() //查看学校团体总分子函数
{
fp2=fopen("zfen","r");
printf("\n各学校的团体总分情况如下:\n\n");
printf("学校 参赛项目 总分\n");
for(i=0;i<N;i++)
{
fread(&zf[i],sizeof(struct zongfen),1,fp2);
printf("%-8s%s,%s,%-12s%-12d\n",zf[i].univ,zf[i].prog1,zf[i].prog2,zf[i].prog3,zf[i].total_score);
}
fclose(fp2);
printf_back();
}
void csxx() //查看参赛学校信息子函数
{
fp3=fopen("xxiao","r");
printf("\n各参赛学校的情况如下:\n\n");
printf("学校 参赛项目 参赛者数\n");
for(i=0;i<N;i++)
{
fread(&xx[i],sizeof(struct xuexiao),1,fp3);
printf("%-8s%-20s%-12d\n",xx[i].univ,xx[i].prog,xx[i].num_athlete);
}
fclose(fp3);
printf_back();
}
void bsxm() //查看比赛项目子函数
{
fp4=fopen("pr","r");
printf("\n各比赛项目的信息如下:\n\n");
printf("项目 取分情况 参赛者1 所属学校 参赛者2 所属学校\n");
for(i=0;i<N;i++)
{
fread(&pro[i],sizeof(struct program),1,fp4);
printf("%-12s%-10d%-10s%-12s%-10s%-12s\n",pro[i].prog,pro[i].quming,pro[i].ath1,pro[i].univ1,pro[i].ath2,pro[i].univ2);
}
fclose(fp4);
printf_back();
}
void main()
{
menu();
}
void menu()
{
int n,w1;
do
{
puts("\t\t***^__^ Welcome to load sports system! ^__^***\n");
puts("\t\t*************************MENU*************************\n");
puts("\t\t******** 1.Enter the information **************\n");
puts("\t\t******** 2.Score 比赛结果录入 **************\n");
puts("\t\t******** 3.Search **************\n");
puts("\t\t******** 4.Exit **************\n");
puts("\t\t******************************************************\n");
printf("Choice your number(1-4):[ ]\b\b");
scanf("%d",&n);
if (n<1||n>4)
{
w1=1;
getchar();
}
else w1=0;
}
while (w1==1);
switch(n)
{case 1:Information();break; //输入信息
case 2:savescore();break;//比赛结果录入
case 3:Search();break;//查询模块
case 4:exit(0);
}
5.运算结果
(一)主函数菜单
(二)信息输入模块
(三)结果录入模块
(四)查询模块
6.总结
通过此次C语言课程设计,我收获颇多。书中的题目差不多都大同小异,只要一题会做,其他题目也就迎刃而解,只要对指导书里的例题熟练掌握,就能将各功能模块融会贯通并加以适当调整。
我知道,这只是一个小小的开端,以后的路还很长,还要继续坚持学习下去,才能具备一定的编程能力。
13
展开阅读全文