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

下载本文档

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

文档简介

_程序设计报告( 2014 / 2015 学年 第 2 学期)题 目:运动会积分系统 专 业 组长 学号姓名 组员 学号姓名 指 导 教 师 指 导 单 位 日 期 成员分工组长( ) 组员( ) 组员()评分细则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简短评语 教师签名: 年 月 日评分等级查柯丞贾世恩备注评分等级共五种:优秀、良好、中等、及格、不及格运动会积分系统一、 课题内容和要求学生运动会成绩数据库系统记录某校运动会上全部运动项目,各系获得的分数及排名的情况,包括50、100、200,400,1500米,跳高,跳远,标枪,铅球铁饼等。请设计一个积分系统,方便学校对比赛成绩进行统计管理。二、 需求分析运动会积分系统的功能框架图如图1所示。运动会积分系统录入模块按院系编号排序按男团体总分排序按女团体总分排序按院系总分按院系编号查询院系某个项目情况统计总分按项目编号查询图1 功能框架图 管理员:1)以管理员身份登录,预先设定参加运动会的系院数目,男子项目数女子项目数,(每项目取前三名,分别为10,5,2分)2)管理员凭密码进入录入成绩状态,填写比赛结果,输入各项目获奖运动员的信息,但录入完成后不得修改成绩。可以按各系院编号输出总分;按总分排序;按男团体总分排序 ;按系院编号查询;按项目编号查询;按女团体总分排序。3)审核各院系提交的复核申请,予以批准后修改成绩。普通用户:1)普通用户可以查询各个比赛成绩,生成团体总分报表,查看参赛院系的成绩和各比赛项目最终名次等。2)允许提交复核申请,提请管理员修改成绩。三、概要设计 1 主要结构体typedef struct node1int school; /*院系编号*/int record; /*项目成绩*/struct node1 *next; /*链域*/Schools;typedef struct int item; /*项目编号*/Schools *firstschool; /*链域指向链表中第一个结点*/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; /*链域指向链表中第一个获奖项目的结点*/SCHNode;typedef struct int n; /* 院系总数 */SCHNode bMAX;ALLNode;ALLitems *g1;ALLNode *g2;2 主要函数流程图开始开始 是否管理员初始化用户名和密码NY输入密码普通用户界面登录N密码是否正确管理员界面Y进入菜单操作选择功能结束N返回菜单图2登录函数 是否结束Y结束图3主函数流程四、源程序代码 #include #include #include #include /#include /*屏幕操作函数*/ #define MAX 50 /#define NULL 0 struct 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;/密码次数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);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; /*链域指向链表中第一个结点*/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; /*链域指向链表中第一个获奖项目的结点*/SCHNode;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);printf( 输入男子项目总数m:);scanf(%d, &m);if (m 20)printf( 输入有误,m是20以内的整数,请重新输入:);scanf(%d, &m);printf( 输入女子项目总数w:);scanf(%d, &w);if (w 20)printf( 输入有误,w是20以内的整数,请重新输入:);scanf(%d, &w);printf( 输入参加运动会的院系总数n:);scanf(%d, &g2-n);if (g2-n n20)printf( 输入有误,n是20以内的整数,请重新输入:);scanf(%d, &g2-n);g1-z = m + w;printf( 则项目编号为男子1-%d,女子%d-%d, 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 z; k+)g1-ak.item = k;g1-ak.firstschool = NULL;for (k = 1; k 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 (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-record = 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 bx.boys = g2-bx.boys + p2-record; /* 累计男团体总分 */else g2-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(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) != 1)printf(file write error.n);fclose(fp2);void funct2(ALLNode *g2) /* 输出各院系总分 */int k;printf(nn * 输出各院系总分 *n);printf( 院系编号t 总分 n);for (k = 1; k n; k+)printf( %dttt %dn, k, g2-bk.score);printf(n);system(pause);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 n; k+)printf(ttt%dt, 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, k;Items *p2;printf(nn * 按院系总分排序输出 *n);printf( 院系编号tt总分 n);scanf(%d, &k);/printf(输入要查询的项目编号:);for (i = 2; i n; i+)printf(%dt, k);p2 = g2-bk.firstitem;while (p2 != NULL)printf(%d tt%dn, g2-bk.school, 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.scorebj.score&j0)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.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 n; k+)printf(%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);scanf(%d, &k);/printf(输入要查询的院系编号:);for (i = 2; i 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 = 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.boysbj.boys&j0)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.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 n; k+)printf(%dtt %dn, g2-bk.school, g2-bk.boys);system(pause); / 暂停等待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(输入要查询的项目编号:);for (i = 2; i 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-bi.girls;g2-b0.school = g2-bi.school;j = i - 1;while (g2-b0.girlsbj.girls&j0)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.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 n; k+)printf(%dtt %dn, g2-bk.school, g2-bk.girls);system(pause);printf(按任意键返回主菜单.);getchar();void funct7(ALLNode *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);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( 按任意键返回主菜单.);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)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 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* * * * * * * * * * * * * * * * * * * * * * *n);printf(tt 运动会分数统计系统 n);printf(tt* * * * * * * * * * * * * * * * * * * * * * *n);printf(tt* 1.输入各个项目成绩并存储文件 *t n);printf(tt* 2.统计各院系总分 *t n);printf(tt* 3.按院系编号排序输出 *t n);printf(tt* 4.按院系总分排序输出 *t n);printf(tt* 5.按男团体总分排序输出 *t n);printf(tt* 6.按女团体总分排序输出 *t n);printf(tt* 7.按院系编号查询院系某个项目情况 *t n);printf(tt* 8.按项目编号查询取得名次的院系 *n);printf(tt* 0.退出 *n);printf(tt* * * * * * * * * * * * * * * * * * * * * * *n);printf(tt n);printf(tt n);printf(tt n);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); break;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); /textbackground(BLUE); /clrscr(); system(cls);for (;)printf(tt* * * * * * * * * * * * * * * * * * * * * * *n);printf(tt 运动会分数统计系统 n);printf(tt* * * * * * * * * * * * * * * * * * * * * * *n);printf(tt* 1.统计各院系总分 *t n);printf(tt* 2.按院系编号排序输出 *t n);printf(tt* 3.按院系总分排序输出 *t n);printf(tt* 4.按院系编号查询学校某个项目情况 *t n);printf(tt* 5.按项目编号查询取得名次的院系 *n);printf(tt* 0.退出 *n);printf(tt* * * * * * * * * * * * * * * * * * * * * * *n);printf(tt n);printf(tt n);printf(tt n);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(输入有误,请重新选择:);goto loop2; /clrscr(); system(cls);五、测试数据及其结果分析 图一 登录界面图二 管理员界面图三 普通用户界面图四 输入信息图五 男团体总分排序图六 查询院系某个项目结果分析(1)进入管理员界面需要正确输入密码,普通用户不需要输入密码,但管理员界面的功能更多(2)输入信息时项目和院系编号必须输入数字且不能超过预先设定的项目总数和院系总数(3)总分排序和团体总分排序要先输入项目编号,进行查询和排序时也需要输入正确的院系编号和项目编号六、调试过程中的问题此处至少写5点。(1)运行时出现runtime check failure #2或runtime check failure#3说明有变量越界或有变量没有初始化,需要扩大变量范围或给变量赋值(2)调试时出现乱码或程序终止则很有可能输入了错误的数据类型,需要重启程序并正确输入数据类型(3)选择普通用户后无法显示菜单界面只有光标但输入数字可以选择功能,问题是system(”cls”)函数放在了选择之前导致了清屏(4)结构体定义时缺最后的分号,struct node1 应改为struct node1 ;(5)在定义字符串变量时要指定数据长度七、课程设计总结从经验、个人感悟、建议等方面总结程序设计,要求600字以上,语句通顺、逻辑清晰,不得从网上拷贝。经过一个星期的C语言上机实验我学到了很多,也对C语言的特点和用法有了进一步的了解和体会,C语言与其他语言相比有着独有的特点,主要体现在以下几个方面:1. 简洁紧凑、灵活方便、2. 运算符丰富、3. 数据结构丰富、4.C语法限制不太严格、程序设计自由度大、5.C语言适用范围大,可移植性好。C语言虽然运算符和控制语句不算很多,但程序书写自由,它把高级语言的基本结构和语句与低级语言的实用性结合起来

温馨提示

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

评论

0/150

提交评论