运动会积分系统(C语言)_第1页
运动会积分系统(C语言)_第2页
运动会积分系统(C语言)_第3页
运动会积分系统(C语言)_第4页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品文档程序设计报告( 2014 / 2015学年 第 2 学期)题目:运动会积分系统专业组长学号姓名组员学号姓名指导教师指导单位日期.精品文档组长()成员组员()分工组员()评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力评团队合作精神分细课题功能实现情况则算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简短评语教师签名:年月日评查柯丞贾世恩分等级备注评分等级共五种:优秀、良好、中等、及格、不及格.精品文档运动会积分系统一、课题内容和要求学生运动会成绩数据库系统记录某校运动会上全部运动项目,各系获得的分数及排名的情况,包括

2、50、100、200, 400,1500 米,跳高,跳远,标枪,铅球铁饼等。请设计一个积分系统 ,方便学校对比赛成绩进行统计管理。二、需求分析运动会积分系统的功能框架图如图1 所示。运动会积分系统录入模块统计总分按项目编号按院系编号按男团体总按女团体总按院系总分按院系编号查询排序分排序分排序查询院系某个项目情况图 1 功能框架图管理员:1)以管理员身份登录, 预先设定参加运动会的系院数目,男子项目数女子项目数,(每项目取前三名,分别为10,5,2 分)2)管理员凭密码进入录入成绩状态,填写比赛结果,输入各项目获奖运动员的信息,但录入完成后不得修改成绩。可以按各系院编号输出总分;按总分排序;按男

3、团体总分排序 ;按系院编号查询;按项目编号查询;按女团体总分排序。3)审核各院系提交的复核申请,予以批准后修改成绩。普通用户:1) 普通用户可以查询各个比赛成绩,生成团体总分报表,查看参赛院系的成绩和各比赛项目最终名次等。2) 允许提交复核申请,提请管理员修改成绩。.精品文档三、概要设计1 主要结构体typedef struct node1int school;/* 院系编号 */int record;/* 项目成绩 */struct node1 *next;/* 链域 */Schools;typedef struct int item;/* 项目编号 */Schools *firstscho

4、ol; /* 链域指向链表中第一个结点*/ITEM;typedef struct int z; /*项目总数*/ITEM aMAX;ALLitems;typedef struct node2 int item;/* 该院系获奖的项目 */int record;/* 项目成绩 */struct node2 *next;/* 链域 */Items;typedef struct int school;/* 院系编号 */int score;/* 院系总分 */int boys;/* 男团体总分 */int girls;/* 女团体总分 */Items *firstitem; /* 链域指向链表中第一

5、个获奖项目的结点*/SCHNode;typedef struct int n; /*院系总数*/SCHNode bMAX;.ALLNode;ALLitems *g1;ALLNode *g2;2 主要函数流程图开始初始化用户名和密码输入密码N密码是否正确Y进入菜单操作结束图 2 登录函数四、源程序代码#include <stdio.h>#include <stdlib.h>#include <string.h>精品文档开始是否管理员YN登录普通管用理户员界界面面选择功能返回菜单N是否结束Y结束图 3 主函数流程.精品文档#include <io.h>

6、;/#include <conio.h> /* 屏幕操作函数 */#define MAX50/#define NULL 0struct userchar user_Name6;char user_Pass6;stu1 = "admin" , "admin" ; /初始化用户名和对应密码void print_Passwd(void )int i = 0;/ 当前账号标记int flag1 = 0; / 登录成功标记int flag = 0; /密码正确标记char p6; / 临时用户名char s6;/临时密码char num = 0; /密

7、码次数char temp;/ 登录后改密码printf( " 请输入登录名:n" );scanf("%s" , p);if (strcmp(stui.user_Name, p) = 0)flag = 1;if (1 = flag)printf( "请输入密码 :n" );scanf("%s" , s);elseprintf( "没有此用户 :n" );exit(0);while (strcmp(stui.user_Pass, s) != 0)printf( "密码错误 !n"

8、 );printf( "请重新输入密码:n" );scanf("%s" , s);printf( " 登录成功 !n" );printf( " 注 :你是管理员 !n" );typedef struct node1int school;/* 院系编号 */.精品文档int record;/* 项目成绩 */struct node1 *next;/* 链域 */ Schools;typedef struct int item;/* 项目编号 */Schools *firstschool; /* 链域指向链表中第一个结

9、点*/ ITEM ; typedef struct int z; /* 项目总数 */ ITEM aMAX ; ALLitems ;typedefstruct node2 intitem;/* 该院系获奖的项目 */intrecord;/* 项目成绩 */struct node2 *next; /* 链域 */ Items;typedef struct intschool;/* 院系编号 */intscore;/* 院系总分 */intboys;/* 男团体总分 */intgirls;/* 女团体总分 */Items *firstitem; /* 链域指向链表中第一个获奖项目的结点 */ SC

10、HNode;typedef struct int n; /*院系总数*/SCHNode bMAX ; ALLNode ;ALLitems*g1;ALLNode*g2;void funct1( ALLitems* g1, ALLNode * g2)Schools *p1;Items *p2;int i = 1, j, k, m, w, h, x;p1 = ( Schools *)malloc( sizeof(Schools);p2 = ( Items *)malloc( sizeof(Items);if (!p1 | !p2)exit(1);printf( "n*输入各个项目信息*nn

11、" );.精品文档printf( "输入男子项目总数m:" );scanf("%d" , &m);if (m < 0 | m>20)printf( "输入有误 ,m是 20以内的整数 ,请重新输入 :");scanf("%d" , &m);printf( "输入女子项目总数w:" );scanf("%d" , &w);if (w < 0 | w>20)printf( "输入有误 ,w 是20以内的整数 ,请重

12、新输入 :");scanf("%d" , &w);printf( "输入参加运动会的院系总数n:");scanf("%d" , & g2->n);if (g2->n < 0 | g2->n>20)printf( "输入有误 ,n是 20以内的整数 ,请重新输入 :" );scanf("%d" , & g2->n);g1->z = m + w;printf( "则项目编号为男子1-%d, 女子 %d-%d&quo

13、t; , m, m + 1, g1->z);printf( "nn* 记录运动会成绩*" );printf( "nn(输入 0标志结束 )n" );printf( "t 项目 1:50米、项目 2:100米、项目 3:200米、项目 4:400米、项目 5:1500米、 n" );printf( "t 项目 6:跳高、项目 7:跳远 、项目 8:标枪 、项目 9:铅球 、项目 10:铁饼 n"); for (k = 1; k <= g1->z; k+)g1->ak.item = k;g1-&

14、gt;ak.firstschool =NULL ;for (k = 1; k <= g2->n; k+)g2->bk.school = k;g2->bk.firstitem = 0;g2->bk.score = 0;g2->bk.boys = 0;g2->bk.girls = 0;g2->b0.score = 0;g2->b0.boys = 0;g2->b0.girls = 0;while (i != 0).精品文档printf( "n项目 :");scanf("%d" , &i);if

15、 (i != 0)printf( "请输入前三名:n");h = 3;doprintf( "第 %d名 :院系 (院系编号为数字)", h);scanf("%d" , &x);p1 = ( Schools *)malloc( sizeof( Schools);p1->school = x;p2 = ( Items *)malloc( sizeof( Items);p2->item = i;if (h = 3) p2->record = p1->record = 2;if (h = 2) p2->r

16、ecord = p1->record = 5;if (h = 1) p2->record = p1->record = 10;p1->next = g1->ai.firstschool;g1->ai.firstschool = p1;p2->next = g2->bx.firstitem;g2->bx.firstitem = p2;g2->bx.score = g2->bx.score + p2->record;/*累计总分*/if (i <= m) g2->bx.boys = g2->bx.boys +

17、 p2->record;/* 累计男团体总分*/elseg2->bx.girls =g2->bx.girls + p2->record;/* 累计女团体总分*/h-; while (x != 0 && h != 0);void save()FILE *fp1, *fp2;fp1 = ( FILE *)malloc( sizeof(FILE );fp2 = ( FILE *)malloc( sizeof(FILE );if (fp1 = fopen( "sports1" , "wb" ) = NULL )printf

18、( "cannot open file.n" );return;if (fwrite(g1, sizeof( ALLitems ), 1, fp1) != 1)printf( "file write error.n");fclose(fp1);if (fp2 = fopen( "sports2" , "wb" ) = NULL )printf( "cannot open file.n" );.精品文档return;if (fwrite(g2, sizeof( ALLNode ), 1, fp2)

19、 != 1)printf( "file write error.n");fclose(fp2);void funct2( ALLNode* g2)/*输出各院系总分*/int k;printf( "nn*输出各院系总分*n");printf( "院系编号 t总分n" );for (k = 1; k <= g2->n; k+)printf( "%dttt %dn" , k, g2->bk.score);printf( "n" );system("pause")

20、;printf( "按任意键返回主菜单.");getchar();void funct3( ALLNode* g2)/* 按院系编号排序输出*/int k;Items *p2;p2 = ( Items *)malloc( sizeof(Items);printf( "nn*按院系编号排序输出*n");printf( "院系编号 ttt 获奖情况n" );scanf("%d" , &k);for (k = 1; k <= g2->n; k+)printf( "ttt%dt" ,

21、 k);p2 = g2->bk.firstitem;while (p2 != NULL )printf( "tt 项目 %d: 得%d分 ", p2->item, p2->record);p2 = p2->next;printf( "n" );printf( "n" );system("pause");printf( " 按任意键返回主菜单.");getchar();void funct4( ALLNode* g2)/*按院系总分排序输出*/.精品文档int i, j,

22、k;Items *p2;printf( "nn*按院系总分排序输出*n");printf( "院系编号 tt总分n" );scanf("%d" , &k);/printf(" 输入要查询的项目编号:");for (i = 2; i <= g2->n; i+)printf( "%dt" , k);p2 = g2->bk.firstitem;while (p2 != NULL )printf( "%d tt%dn" , g2->bk.school,

23、 g2->bk.score);p2 = p2->next;printf( "n" );g2->b0.score = g2->bi.score;g2->b0.boys = g2->bi.boys;g2->b0.girls =g2->bi.girls;g2->b0.school = g2->bi.school;j = i - 1;while (g2->b0.score< g2->bj.score&&j>0)g2->bj + 1.score =g2->bj.score;

24、g2->bj + 1.boys =g2->bj.boys;g2->bj + 1.girls =g2->bj.girls;g2->bj + 1.school =g2->bj.school;j-;g2->bj + 1.score = g2->b0.score;g2->bj + 1.boys =g2->b0.boys;g2->bj + 1.girls =g2->b0.girls;g2->bj + 1.school =g2->b0.school;for (k = 1; k <= g2->n; k+)prin

25、tf( "%d tt%dn" , g2->bk.school, g2->bk.score);system("pause");printf( " 按任意键返回主菜单.");getchar();void funct5( ALLNode* g2)/*按男团体总分排序输出*/int i, j, k;.精品文档Items *p2;p2 = ( Items *)malloc( sizeof(Items);printf( "nn*按男团体总分排序输出*n");printf( " 院系编号 tt 男团体总分n

26、" );scanf("%d" , &k);/printf(" 输入要查询的院系编号:");for (i = 2; i <= g2->n; i+)printf( "%dt" , k);p2 = g2->bk.firstitem;while (p2 != NULL )printf( "%dtt%dn" , g2->bk.school, g2->bk.boys);p2 = p2->next;printf( "n" );g2->b0.score

27、 = g2->bi.score;g2->b0.boys = g2->bi.boys;g2->b0.girls =g2->bi.girls;g2->b0.school = g2->bi.school;j = i - 1;while (g2->b0.boys< g2->bj.boys&&j>0)g2->bj + 1.score =g2->bj.score;g2->bj + 1.boys =g2->bj.boys;g2->bj + 1.girls =g2->bj.girls;g2-&

28、gt;bj + 1.school =g2->bj.school;j-;g2->bj + 1.score = g2->b0.score;g2->bj + 1.boys =g2->b0.boys;g2->bj + 1.girls =g2->b0.girls;g2->bj + 1.school =g2->b0.school;for (k = 1; k <= g2->n; k+)printf( "%dtt%dn" , g2->bk.school, g2->bk.boys);system("pau

29、se");/暂停等待printf( " 按任意键返回主菜单.");getchar();void funct6( ALLNode* g2)/*按女团体总分排序输出*/int i, j, k;Items *p2;.精品文档p2 = ( Items *)malloc( sizeof(Items);printf( "nn*按女团体总分排序输出*n");printf( " 院系编号 tt 女团体总分n" );scanf("%d" , &k);/ printf(" 输入要查询的项目编号:"

30、);for (i = 2; i <= g2->n; i+)printf( "%dt" , k);p2 = g2->bk.firstitem;while (p2 != NULL )printf( "%dtt%dn" , g2->bk.school, g2->bk.girls);p2 = p2->next;printf( "n" );g2->b0.score = g2->bi.score;g2->b0.boys = g2->bi.boys;g2->b0.girls =g2-

31、>bi.girls;g2->b0.school = g2->bi.school;j = i - 1;while (g2->b0.girls< g2->bj.girls&&j>0)g2->bj + 1.score =g2->bj.score;g2->bj + 1.boys =g2->bj.boys;g2->bj + 1.girls =g2->bj.girls;g2->bj + 1.school =g2->bj.school;j-;g2->bj + 1.score = g2->b0

32、.score;g2->bj + 1.boys =g2->b0.boys;g2->bj + 1.girls =g2->b0.girls;g2->bj + 1.school =g2->b0.school;for (k = 1; k <= g2->n; k+)printf( "%dtt%dn" , g2->bk.school, g2->bk.girls);system("pause");printf( " 按任意键返回主菜单.");getchar();void funct7( AL

33、LNode* g2)/* 按院系编号查询院系某个项目情况*/.精品文档int i, j;Items *p2;printf( "n*按院系编号查询院系某个项目情况*n");printf( "输入要查询的院系编号:" );scanf("%d" , &i);printf( "t 项目 1:50米、项目 2:100米、项目 3:200米、项目 4:400米、项目 5:1500米、 n" );printf( "t 项目 6:跳高、项目 7:跳远、项目 8:标枪 、项目 9:铅球、项目 10:铁饼 n&quo

34、t;);printf( "输入要查询的项目编号:" );scanf("%d" , &j);p2 = g2->bi.firstitem;while (p2 != NULL )if (p2->item = j)printf( "院系编号 :%dt 项目 %d:得 %d分 n", i, p2->item,p2->record);p2 = p2->next;printf( "n" );system("pause");printf( "按任意键返回主菜单.&

35、quot;);getchar();void funct8( ALLitems* g1)/* 按项目编号查询取得名次的院系*/int i;Schools *p1;printf( "n*按项目编号查询取得名次的院系*n" );printf( " 输入要查询的项目编号:");scanf("%d" , &i);printf( " 项目编号 ttt 取得名次的院系n" );printf( "%dt" , i);p1 = g1->ai.firstschool;while (p1 != NULL

36、 )printf( " 学校 %d:得 %d分", p1->school, p1->record);p1 = p1->next;printf( "nn" );system("pause");printf( " 按任意键返回主菜单.");getchar();void main().精品文档int temp;printf( " 管理员请按 1,普通用户请按 2n" );scanf("%d" , &temp);if (1 = temp)int t;void

37、 print_Passwd(void );while (1)print_Passwd();break;g2 = ( ALLNode *)malloc( sizeof( ALLNode );g1 = ( ALLitems *)malloc( sizeof( ALLitems );if (!g2 | !g1)exit(1);/textcolor(WHITE);/textbackground(BLUE);/clrscr();system("cls" );for (;)printf( "tt* * * * * * * * * * * * * * * * * * * * *

38、 * *n");printf( "tt运动会分数统计系统n" );printf( "tt* * * * * * * * * * * * * * * * * * * * * * *n");printf( "tt*1.输入各个项目成绩并存储文件*tn" );printf( "tt*2.统计各院系总分*tn" );printf( "tt*3.按院系编号排序输出*tn" );printf( "tt*4.按院系总分排序输出*tn" );printf( "tt*5.按

39、男团体总分排序输出*tn" );printf( "tt*6.按女团体总分排序输出*tn" );printf( "tt*7.按院系编号查询院系某个项目情况*tn" );printf( "tt*8.按项目编号查询取得名次的院系*n" );printf( "tt*0.退出*n" );printf( "tt* * * * * * * * * * * * * * * * * * * * * * *n");printf( "ttn");printf( "ttn&quo

40、t;);printf( "ttn");printf( "tt请选择 (0-8):" );loop1:scanf( "%d" , &t);system("cls" );switch (t).精品文档case 1:funct1(g1, g2); save(); break;case 2:funct2(g2); break;case 3:funct3(g2); break;case 4:funct4(g2); break;case 5:funct5(g2); break;case 6:funct6(g2); br

41、eak;case 7:funct7(g2); break;case 8:funct8(g1); break;case 0:exit(0);default : printf( " 输入有误 ,请重新选择 :");goto loop1; /clrscr(); system("cls" );elseint u;g2 = ( ALLNode *)malloc( sizeof( ALLNode );g1 = ( ALLitems *)malloc( sizeof( ALLitems );if (!g2 | !g1)exit(1);/textcolor(WHITE)

42、;/textbackground(BLUE);/clrscr();system("cls" );for (;)printf( "tt* * * * * * * * * * * * * * * * * * * * * * *n");printf( "tt运动会分数统计系统n" );printf( "tt* * * * * * * * * * * * * * * * * * * * * * *n");printf( "tt*1.统计各院系总分*tn" );printf( "tt*2.按院系

43、编号排序输出*tn" );printf( "tt*3.按院系总分排序输出*tn" );printf( "tt*4.按院系编号查询学校某个项目情况*tn" );printf( "tt*5.按项目编号查询取得名次的院系*n" );printf( "tt*0.退出*n" );printf( "tt* * * * * * * * * * * * * * * * * * * * * * *n");printf( "ttn");printf( "ttn");

44、printf("ttn");printf("tt请选择 (0-5):" );loop2:scanf( "%d" , &u);.精品文档system("cls" );switch (u)case 1:funct2(g2); break;case 2:funct3(g2); break;case 3:funct4(g2); break;case 4:funct7(g2); break;case 5:funct8(g1); break;case 0:exit(0);default : printf( "

45、 输入有误 ,请重新选择 :");goto loop2; /clrscr(); system("cls" );五、测试数据及其结果分析图一 登录界面图二 管理员界面.精品文档图三 普通用户界面图四 输入信息图五 男团体总分排序.精品文档图六 查询院系某个项目结果分析( 1)进入管理员界面需要正确输入密码,普通用户不需要输入密码,但管理员界面的功能更多( 2)输入信息时项目和院系编号必须输入数字且不能超过预先设定的项目总数和院系总数( 3)总分排序和团体总分排序要先输入项目编号,进行查询和排序时也需要输入正确的院系编号和项目编号六、调试过程中的问题(1)运行时出现 runtime check failure #2或 runtime check failure#3说明有变量越界或有变量没有初始化,需要扩大变量范围或给变量赋值(2)调试时出现乱码或程序终止则很有可能输入了错误的数据类型,需要重启程序并正确输入数据类型(3)选择普通用户后无法显示菜单界面只有光标但输入数字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论