《c语言程序设计~用高级语言实现篮球联赛个人技术数据处理系统.doc》由会员分享,可在线阅读,更多相关《c语言程序设计~用高级语言实现篮球联赛个人技术数据处理系统.doc(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、题目:篮球赛个人技术统计系统设某篮球联赛要统计20名著名球员个人技术数据。要求用高级语言实现篮球联赛个人技术数据处理系统。该系统在磁盘上存储如下信息:1。每场球赛的个人技术数据。一场球一个人的技术数据包括:姓名,所属球队,三分球个数,篮板球个数,扣篮成功次数,抢断次数,得分,比赛日期。2。个人技术数据汇总表。表中反映了每个人的技术数据的累计结果。表羡为:姓名,三分球总数,篮板球总数,扣篮成功总次数,抢断总次数,得分总数,比赛场数。本系统功能如下:1。创建存储每常球赛个人技术数据的存储系统(第一次输入个人技术数据时),然后自动创建存储个人技术数据汇总表的存储系统。2。每场比赛后,添加个人技术数据
2、,然后自动修改个人技术数据汇总表3。能输出当前的个人技术数据汇总表4。能输出指定技术项目平均每场数据较高的前三名运动员的姓名,所在队名和平均每场的单项数据。程序:/* * Basketball Statistic Information System * Write By: Yan Yi Ling; * Date: 2008-09-10 */#define MAX_PLAYER 100#define P3 0#define SD 1#define RB 2#define CT 3#define CO 4#define MAX_TOP 3#define false 0#define true 1
3、struct basketball char name20; /* players name */ char team20; /* players team */ short point_3; /* three pointer */ short rebound; /* rebound */ short sd; /* slam dunk */ short cut; /* cut */ short course; /* couese */ char date11; /* race date */playerMAX_PLAYER;substr(char *p_from, char *p_to, in
4、t p_start, int p_len) int index = 0, stop = p_start + p_len; while(p_start stop) p_toindex+ = p_fromp_start+; p_toindex = 0;str2int(char *p_str) int res = 0, index, len; for(index = 0, len = strlen(p_str); index len; index+) if(p_strindex 9 ) continue; res = res * 10 + (int)p_strindex - 48; return r
5、es;split(char *p_str, char p_chr) int index; for(index = 0; p_strindex != p_chr & p_strindex != 0; +index) /* do nothing here */ return index;#include stdio.h#include conio.hshort player_len = 0; /* how many players in the system current */main() short op_type, op_skill; char tmp20; loadInfo(); whil
6、e(1) showMenu(); scanf(%d , &op_type); switch(op_type) case 1: inputPlayerInfo(); break; case 2: printf(Please input players name: ); scanf(%s, tmp); displayPlayerInfo(tmp); break; case 3: displayPlayerInfo(); break; case 4: printf(Please input players name: ); scanf(%s, tmp); displayPlayerCount(tmp
7、); break; case 5: printf(%d = three pointn, P3); printf(%d = slam dunkn, SD); printf(%d = reboundn, RB); printf(%d = cutn, CT); printf(%d = coursen, CO); puts(Please choose one of the skill you want to order: ); scanf(%d, &op_skill); displayTopInfo(op_skill); break; case 6: puts(Thank you to use thi
8、s system!); puts(Bye!); return; default: puts(Input error! You must input number between 1 and 5!); break; printf(Enter to continue!); getchar(); getchar(); puts(nnnnnnnnnnnnnnnn); /* * show menu and return users operation */int showMenu() showTab(3); puts(Basketball Statistic Information System); s
9、howTab(7); puts(Write By: Yan Yi Ling); puts(1: Input player information); puts(2: Display player information); puts(3: Display all of the player information); puts(4: Display players count information); printf(5: Display TOP %d informaionn, MAX_TOP); puts(6: Exitn); printf(Choose one of the functio
10、n you want: );/* * show tab in the screen * param p_tab: show many tab will print to the screen */showTab(int p_tab) short index; for(index = 0; index = MAX_PLAYER) puts(Too many information!); return; printf(Please input players name: ); scanf(%s, playerplayer_len.name); printf(Please input players
11、 team: ); scanf(%s, playerplayer_len.team); printf(Please input race date(YYYY-MM-DD): ); scanf(%s, playerplayer_len.date); getchar(); /* forcus enter */ printf(How many three pointer did he/she got: ); scanf(%d, &playerplayer_len.point_3); printf(How many rebound did he/she got: ); scanf(%d, &playe
12、rplayer_len.rebound); printf(How many slam dunk did he/she got: ); scanf(%d, &playerplayer_len.sd); printf(How many cut did he/she got: ); scanf(%d, &playerplayer_len.cut); printf(How many course did he/she got: ); scanf(%d, &playerplayer_len.course); +player_len; if( saveInfo() ) puts(save informat
13、ion success!);/* * display players informaion according to players name */displayPlayerInfo(char *p_name) short index, flag = false; printf(There are %d records in the system.n, player_len); puts(NametTeamtDatet3 PointertSlam DunktReboundtCuttCourset); for(index = 0; index player_len; index+) if( !s
14、trcmp(p_name, playerindex.name) | = p_name) flag = true; printf(%st%st%stt, playerindex.name, playerindex.team, playerindex.date); printf(%dt%dtt%dt%dt%dnn, playerindex.point_3, playerindex.sd, playerindex.rebound, playerindex.cut, playerindex.course); if( !flag & != p_name) printf(Sorry, can not fi
15、nd %ss informationn, p_name); /* * save palyers information into file */saveInfo() FILE *fp; short index; if( (fp = fopen(record.txt, w+) = NULL ) puts(Can not save information into your disk, please check you permission!); return false; for(index = 0; index player_len; index+) fprintf(fp, %s,%s,%s,
16、%d,%d,%d,%d,%dn, playerindex.name, playerindex.team, playerindex.date, playerindex.point_3, playerindex.sd, playerindex.rebound, playerindex.cut, playerindex.course); return true;/* * load players information from file and save into struct player */loadInfo() FILE *fp; char str100, sub_str20; int in
17、dex1, index2; if( (fp = fopen(record.txt, r) = NULL ) puts(Its look you login this system first time!); return false; while( fgets(str, 100, fp) ) index1 = 0; index2 = split(str + index1, ,); substr(str, playerplayer_len.name, index1, index2); index1 += index2 + 1; index2 = split(str + index1, ,); s
18、ubstr(str, playerplayer_len.team, index1, index2); index1 += index2 + 1; index2 = split(str + index1, ,); substr(str, playerplayer_len.date, index1, index2); index1 += index2 + 1; index2 = split(str + index1, ,); substr(str, sub_str, index1, index2); playerplayer_len.point_3 = str2int(sub_str); inde
19、x1 += index2 + 1; index2 = split(str + index1, ,); substr(str, sub_str, index1, index2); playerplayer_len.sd = str2int(sub_str); index1 += index2 + 1; index2 = split(str + index1, ,); substr(str, sub_str, index1, index2); playerplayer_len.rebound = str2int(sub_str); index1 += index2 + 1; index2 = sp
20、lit(str + index1, ,); substr(str, sub_str, index1, index2); playerplayer_len.cut = str2int(sub_str); index1 = index2 + 1; index2 = split(str + index1, ,); substr(str, sub_str, index1, index2); playerplayer_len.course = str2int(sub_str); index1 = index2 + 1; player_len+; /* * Display count informatio
21、n according to players name */displayPlayerCount(char *p_name) int point_3, rebound, sd, cut, course, times, index; point_3 = rebound = sd = cut = course = times = index = 0; for(; index player_len; +index) if( strcmp(p_name, playerindex.name) ) continue; point_3 += playerindex.point_3; rebound += p
22、layerindex.rebound; sd += playerindex.sd; cut += playerindex.cut; course += playerindex.course; times+; printf(%ss count information: n, p_name); printf(Three PointertReboundtSlam dunktCuttCoursetRace timesn); printf(%dtt%dtt%dt%dt%dt%dn, point_3, rebound, sd, cut, course, times); /* * Display Top3
23、information according to skill */displayTopInfo(short p_skill) int pointsMAX_PLAYER; char nameMAX_PLAYER20; short topMAX_TOP, index, index2, len, tmp; if(player_len = 0) return; for(index = 0; index MAX_PLAYER; index+) nameindex0 = 0; /* caculate skill information for each player */ for(index = len
24、= 0; index player_len; index+) for(index2 = 0; index2 MAX_PLAYER; index2+) if( !strcmp(nameindex2, playerindex.name) ) tmp = index2; break; if(index2 = MAX_PLAYER) tmp = len+; strcpy(nametmp, playerindex.name); pointstmp = 0; switch (p_skill) case P3: pointstmp += playerindex.point_3; break; case SD
25、: pointstmp += playerindex.sd; break; case RB: pointstmp += playerindex.rebound; break; case CT: pointstmp += playerindex.cut; break; default: pointstmp += playerindex.course; break; /* end */ for(index = 0; index MAX_TOP; index+) topindex = index; /* get top3 records */ for(index =0; index len; ind
26、ex+) if( points0 0; tmp-) toptmp = toptmp - 1; top0 = index; /* end */ /* display information */ for( index = 0; index len; index+) printf(TOP %d: %sttt%dn, index + 1, nametopindex, pointstopindex); /* end */数据测试结果(程序调试结果):1开始输入信息:2输入队员信息:3输入完信息后, 显示成员信息(需输入程序中已有的成员名,否则出错。):4显示成员信息(正确输入成员名。):5显示成员列表:6显示成员各项技能的得分情况:7选择需要某项技能的成员得分排名(降序):8例如:选择“1”选项,输出三分球的降序排列得分情况:9结束操作(选择“6”选项):感想(错误修正):不足之处:输入比赛日期时,不能用YYYY-MM-DD的形式,只能用YY-M-D的形式,否则输入各项技能得分时,格式不对。