竞技比赛打分系统C语言程序设计报告

时间:2024.4.7

C语言程序设计

设计题目:竞赛比赛打分系统

专业:     ……………………….          

        班级:            …………….            

        姓名:          ……………              

        学号:    …………………..               

目      录

一  总体设计(包含几大功能模块)............................... 1

二 详细设计(各功能模块的具体实现算法——流程图)         4

三  调试分析(包含各模块的测试用例,及测试结果) 6

3.1源程序........................................................................ 6

3.2调试与测试.............................................................. 12

四 总结................................................................................ 15

  总体设计(包含几大功能模块)

I.insert record to a file

N .search record by name

C. search record by code

L. list all the records

S.sort  the records by total

二、详细设计(各功能模块的具体实现算法——流程图)

2.1各函数的功能和实现

I.insert record to a file:输入田径记录分数文件。可用函数void input来实现此操作

N .search record by name输入田径运动员的名字

C. search record by code输入田径运动员号码

可用void find()来实现

L. list all the records分数列表

S.sort  the records by total计算总分数

Q.quit退出可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。

流程图 

          

详见A4纸上手绘

三  调试分析(包含各模块的测试用例,及测试结果)

3.1源程序

#include <stdio.h>

#define    JUDEGNUM  3       /* 裁判数 */

#define NAMELEN              20    /* 姓名最大字符数 */

#define CODELEN       10    /* 号码最大字符数 */

#define FNAMELEN     80    /* 文件名最大字符数 */

#define BUFFSIZE 128  /* 缓冲区最大字符数 */

char judgement[JUDEGNUM][NAMELEN+1] = {"judgementA","judgementB","judgementC"};

struct AthleteScore

{

       char name[NAMELEN+1];   /* 姓名 */

       char       code[CODELEN+1];     /* 学号 */

       int   score[JUDEGNUM];     /* 各裁判给的成绩 */

       int   total;                                  /* 总成级 */

};

struct LinkNode

{

       char name[NAMELEN+1];   /* 姓名 */

       char       code[CODELEN+1];     /* 号码 */

       int   score[JUDEGNUM];     /* 各裁判给的成绩 */

       int   total;                           /* 总成级 */

       struct      LinkNode *next;   

}*head;   /* 链表首指针 */

int total[JUDEGNUM];        /* 各裁判给的总成绩 */

FILE *filepoint;                          /* 文件指针 */

char filename[FNAMELEN];/* 文件名 */

/* 从指定文件读入一个记录 */

int GetRecord(FILE *fpt,struct AthleteScore *sturecord)

{

       char buf[BUFFSIZE];

       int i;

       if(fscanf(fpt,"%s",buf)!=1)

              return 0;  /* 文件结束 */

       strncpy(sturecord->name,buf,NAMELEN);

       fscanf(fpt,"%s",buf);

       strncpy(sturecord->code,buf,CODELEN);

       for(i=0;i<JUDEGNUM;i++)

              fscanf(fpt,"%d",&sturecord->score[i]);

       for(sturecord->total=0,i=0;i<JUDEGNUM;i++)

              sturecord->total+=sturecord->score[i];

       return 1;

}

/* 对指定文件写入一个记录 */

void PutRecord(FILE *fpt,struct AthleteScore *sturecord)

{

       int i;

       fprintf(fpt,"%s\n",sturecord->name);

       fprintf(fpt,"%s\n",sturecord->code);

       for(i=0;i<JUDEGNUM;i++)

              fprintf(fpt,"%d\n",sturecord->score[i]);

       return ;

}

/* 显示运动员记录 */

void ShowAthleteRecord(struct AthleteScore *rpt)

{

       int i;

       printf("\nName   : %s\n",rpt->name);

       printf("Code   : %s\n",rpt->code);

       printf("score  :\n");

       for(i=0;i<JUDEGNUM;i++)

              printf("       %-15s : %4d\n",judgement[i],rpt->score[i]);

       printf("Total  : %4d\n",rpt->total);

}

/* 列表显示运动员成绩 */

void Listathleteinfo(char *fname)

{

       FILE *fp;

       struct AthleteScore s;

       clrscr();

       if((fp=fopen(fname,"r"))==NULL)

       {

              printf("Can't open file %s.\n",fname);

              return ;

       }

       while(GetRecord(fp,&s)!=0)

       {

              ShowAthleteRecord(&s);

       }

       fclose(fp);

       return;

}

/* 构造链表 */

struct LinkNode *CreatLinklist(char *fname)

{

       FILE *fp;

       struct AthleteScore s;

       struct LinkNode *p,*u,*v,*h;

       int i;

       if((fp=fopen(fname,"r"))==NULL)

       {

              printf("Can't open file %s.\n",fname);

              return NULL;

       }

       h=NULL;

       p=(struct LinkNode *)malloc(sizeof(struct LinkNode));

       while(GetRecord(fp,(struct AthleteScore *)p)!=0)

       {

              v=h;

              while(v&&p->total<=v->total)

              {

                     u=v;

                     v=v->next;

              }

              if(v==h)

                     h=p;

              else

                     u->next=p;

              p->next=v;

              p=(struct LinkNode *)malloc(sizeof(struct LinkNode));

       }

       free(p);

       fclose(fp);

       return h;

}

/* 顺序显示链表各表元 */

void OutputLinklist(struct LinkNode *h)

{

       clrscr();

       while(h!=NULL)

       {

              ShowAthleteRecord((struct AthleteScore *)h);

              printf("\n");

              while(getchar()!='\n');

              h=h->next;

       }

       return;

}

/* 按运动员姓名查找记录 */

int SearchbyName(char *fname, char *key)

{

       FILE *fp;

       int c;

       struct AthleteScore s;

       clrscr();

       if((fp=fopen(fname,"r"))==NULL)

       {

              printf("Can't open file %s.\n",fname);

              return 0;

       }

       c=0;

       while(GetRecord(fp,&s)!=0)

       {

              if(strcmp(s.name,key)==0)

              {

                     ShowAthleteRecord(&s);

                     c++;

              }

       }

       fclose(fp);

       if(c==0)

              printf("The athlete %s is not in the file %s.\n",key,fname);

       return 1;

}

/* 按运动员号码查找记录 */

int SearchbyCode(char *fname, char *key)

{

       FILE *fp;

       int c;

       struct AthleteScore s;

       clrscr();

       if((fp=fopen(fname,"r"))==NULL)

       {

              printf("Can't open file %s.\n",fname);

              return 0;

       }

       c=0;

       while(GetRecord(fp,&s)!=0)

       {

              if(strcmp(s.code,key)==0)

              {

                     ShowAthleteRecord(&s);

                     c++;

                     break;

              }

       }

       fclose(fp);

       if(c==0)

              printf("The athlete %s is not in the file %s.\n",key,fname);

       return 1;

}

void InsertRecord()

{

       FILE *fp;

       char c,i,j,n;

       struct AthleteScore s;

       clrscr();

       printf("Please input the athletes score record file's name: \n");

       scanf("%s",filename);

       if((fp=fopen(filename,"r"))==NULL)

       {

              printf("The file %s doesn't exit.\ndo you want to creat it? (Y/N) ",filename);

              getchar();

              c=getchar();

              if(c=='Y'||c=='y')

              {

                     fp=fopen(filename,"w");

                     printf("Please input the record number : ");

                     scanf("%d",&n);

                     for(i=0;i<n;i++)

                     {

                            printf("Input the athlete's name: ");

                            scanf("%s",&s.name);

                            printf("Input the athlete's code: ");

                            scanf("%s",&s.code);

                            for(j=0;j<JUDEGNUM;j++)

                            {

                                   printf("Input the %s mark: ",judgement[j]);

                                   scanf("%d",&s.score[j]);

                            }

                            PutRecord(fp,&s);

                     }

                     fclose(fp);

              }

       }

       fclose(fp);

       return;

}

int main()

{

       int i,j,n;

       char c;

       char buf[BUFFSIZE];

       while(1)

       {

              clrscr();

              printf("\n-------------- Input a command -----------\n");

              printf("|  i : insert record to a file.           |\n");

              printf("|  n : search record by name.             |\n");

              printf("|  c : search record by code.             |\n");

              printf("|  l : list all the records.              |\n");

              printf("|  s : sort the records by total.         |\n");

              printf("|  q : quit.                              |\n");

              printf("------------------------------------------\n");

              printf("Please input a command:\n");

              scanf("%c",&c);            /* 输入选择命令 */

              switch(c)

              {

                     case 'i':

                            InsertRecord();

                            getch();

                            break;

                     case 'n': /* 按运动员的姓名寻找记录 */

                            printf("Please input the athlete's name:\n"); 

                            scanf("%s",buf);

                            SearchbyName(filename,buf);

                            getch();

                            break;

                     case 'c': /* 按运动员的号码寻找记录 */

                            printf("Please input the athlete's code:\n");  

                            scanf("%s",buf);

                            SearchbyCode(filename,buf);

                            getch();

                            break;

                     case 'l': /* 列出所有运动员记录 */

                            Listathleteinfo(filename);

                            getch();

                            break;

                     case 's': /* 按总分从高到低排列显示 */

                            if((head=CreatLinklist(filename))!=NULL)

                                   OutputLinklist(head);

                            getch();

                            break;

                     case 'q':

                            return 1;

                     default:

                            break;

              }

       }

       return 1;

}

3.2调试与测试

主要程序运行结果:运行开始

I.insert record to a file

N .search record by name

C. search record by code

L. list all the records

S.sort  the records by total

五.设计总结

经过一周的课程设计,我学到了很多东西:
①巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。
②培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。
③过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
④够按要求编写课程设计报告书,能正确阐述设计和实验结果,正确绘制系统和程序框图。
⑤通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。
课程设计是把我们所学的理论知识进行系统的总结并应用于实践的良好机会,有利于加强我们用知识理论来分析实际问题的能力,进而加强了我们对知识认识的实践度,巩固了我们的理论知识,深化了对知识的认识,并为走向社会打下一个良好的基础。
在这次课程设计中我遇到许多问题和麻烦,得到了老师的帮助和指导,才能够使得这次课程设计顺利的进行下去,另外,在程序调试过程中,也得到很多同学的帮助,给我及时指出错误,提出许多宝贵意见。在此对老师和同学们表示感谢!

更多相关推荐:
《C语言程序设计》课程设计报告(小组)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:电子工程学院专业:电子信息工程年级:20##班别:2班指导教师:##组长:##同组成员:##目录一、目的....................…

c语言课程设计报告

C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体设计四详细设计五运行结果六课程设计体会一实验目的1通过课程设计加深对结构化程序设...

C语言课程设计报告

河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机07-2班指导教师20XX年9月12日目录1.设计任务书21.…

C语言课程设计报告范例

C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的难点及解决办法四小结五附录原程序2一课程设计题目及所涉及知识点一课程设计题目1基...

厦门理工学院11级C语言C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求1二方案实现与调试221掷骰子游戏222射击游戏323汽车...

C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期专业计算机科学与技术班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求3二方案实现与调试321掷骰子游戏322汽车加...

c语言程序贪吃蛇课程设计报告

山东工商学院信电学院自动111班第一组贪吃蛇课程设计报告高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称高级语言程序设计英文名称CProgramExperimentDe...

C语言课程设计报告(约瑟夫环)胡存夫

沈阳航空航天大学课程设计报告课程设计名称C语言课程设计课程设计题目约瑟夫环院系计算机学院专业计算机科学与技术班级3410301学号20xx040103023姓名胡存夫指导教师丁一军沈阳航空航天大学课程设计报告目...

c语言程序设计报告

课程设计报告课程名称C语言程序设计课题名称运动会分数统计系统专业机械设计及其自动化班级1185班学号***姓名**指导教师**20XX年6月22日湖南工程学院课程设计任务书课程名称C语言程序设计课题运动会分数统…

C语言程序设计报告—学生选修课程系统

C语言程序设计学校:中国地址大学学院:工程学院班级序号:学号:姓名:指导老师:C语言程序设计报告一、C语言课程设计的目的:高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。其目的…

C语言课程设计报告书样本

海南大学三亚学院C语言程序设计课程设计贪吃蛇算法专业计算机科学与技术班级计科1001姓名杨凯文题目学号指导老师李春林目录C语言程序设计课程设计11程序要求32程序分析与设计33流程图44源程序清单45调试过程1...

C语言程序设计报告

二一一年九月设计要求题目三通讯录管理系统任务自学C语言中相关知识设计出通讯录管理系统要求如下所述建立通讯录信息信息至少包含编号姓名年龄电话通讯地址电子邮箱等能够提供添加删除和修改通讯录信息的功能并给出确认是否保...

c语言程序设计课程设计报告(34篇)