中国地质大学本科生课程论文封面
课程名称C语言课程设计
教师姓名邵老师
本科生姓名赵鸿
本科生学号20091000477
本科生专业应用化学
所在院系材化学院
类别: C.本科生
日期: 2010 年7 月5 日
课程设计评语
注:1、无评阅人签名成绩无效;
2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;
3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
目录
课程设计评语 (2)
目录 (3)
1.课程论文题目 (4)
2.程序设计思路 (4)
3.功能模块图 (4)
4.数据结构设计 (5)
5.算法设计 (7)
6.程序代码 (11)
7.程序运行结果 (20)
8.编程中遇到的困难及解决方法 (23)
9.总结心得及良好建议 (23)
10.致谢 (24)
课程论文题目
1.校际运动会管理系统
一、题目要求
(1)信息初始化
输入:N─参赛学校总数,M─男子竞赛项目数,W─女子竞赛项目数;
各项目名次取法有如下几种:
取前5名:第一名得分7,第二名得分5,第三名得分3,第四名得分2,第五名得分1;
取前3名:第一名得分5,第二名得分3,第三名得分2;
用户自定义:各名次权值由用户指定。
(2)提醒用户填写比赛结果,输入各项目获奖运动员信息。
(3)所有信息记录完毕后,用户可以查询各个学校的比赛成绩,生成团体总分报表,察看参赛学校信息和比赛项目信息等。
2.程序设计思路
根据题目要求应提供键盘式菜单实现功能选择,还应提供信息的输入操作,由于在程序中提供查询功能所以应有显示、查找等操作。根据上面的需求分析,可以将这个系统的设计分为1、信息输入模块2、比赛结果录入模块3、查询模块。具体校际运动会管理系统分为信息的输入、结果的输入、学校各个项目的得分的查寻、总体报表的生成。
3.功能模块图
(每个功能模块都标注函数名称,如右图)
4.数据结构设计
数据结构采用结构体的形式,包括学校、项目、运动员三个结构体。比如学校结构体成员包括学校校名、竞赛项目、得分;项目结构体成员包括项目名、权值。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];
5.算法设计
1.主函数一般设计的较为简洁,只提供输入、功能处理和输出部分的函数调用。其中各功能模块用菜单方式选择。另外菜单部分也可以写成函数。
[程序]
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)
N
图2 主函数流程图
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);
}
}
2.各功能模块设计
(1)信息输入模块
一是参赛学校信息,二是参赛运动员信息,三是比赛项目信息,分别输入并保存
图3信息输入模块流程图
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******** 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);
}
}
(2)结果录入模块
图4比赛结果录入模块流程图
(3)查询信息模块
[分析]
查询信息模块提供按不同方式查询各种信息机返回功能,其中各功能模块用菜单方式选择。菜单部分也可写成函数。
图6查询信息模块流程图
图8 查询学校名流程图
6.程序代码
// 杨雪.cpp : Defines the entry point for the console application. //
#include
#include
#include
#include
#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];
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******** 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 { printf("\n请输入第%d个运动员的信息:\n",i+1); printf("姓名:"); scanf("%s",at[i].name); printf("学校:"); scanf("%s",at[i].univ); printf("名次:"); scanf("%s",at[i].mingci); printf("得分:"); scanf("%d",&at[i].score); } fp1=fopen("ath","w"); for(i=0;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 { 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 { printf("\n请输入第%d个学校的信息:\n",i+1); printf("学校:"); scanf("%s",xx[i].univ); scanf("%d",&xx[i].num_athlete); } fp3=fopen("xxiao","w"); for(i=0;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 { 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); scanf("%s",pro[i].univ2); } fp4=fopen("pr","w"); for(i=0;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 { 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("得分:"); 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 { 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) 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 { 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"); { 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 { 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******** 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); } } 7.程序运行结果【 (1)主菜单函数