一个运动会的成绩管理程序(300)(300分)

  • 主题发起人 主题发起人 galahad
  • 开始时间 开始时间
G

galahad

Unregistered / Unconfirmed
GUEST, unregistred user!
分大专部和中专部
专科学男的项目有:100米、200米、400米、1500米、5000米、4*100米接力、4*400米接力、跳远、铅球、标枪、铁饼、跳高
专科学女的项目有:100米、200米、400米、1500米、4*100米接力、4*400米接力、跳远、铅球、跳高
中专学男项目:100米、200米、400米、4*100米接力、跳远、铅球、跳高
中专学女项目:100米、200米、4*100米接力、跳远、铅球、跳高
要求:
1。以班级为单位,中专与大专各自评比。
2。单项取前八名,按9、7、6、5、4、3、2、1记分,成绩并列者取和除2(如第三名和第四名成绩相同,各得(6+5)/2分),接力加倍记分。
3。破校记录加10分(有输入校记录的功能)
3。每个项目单项排名次(分男女)
[ 名次、号码、号码所属的班级、成绩、得分]
4。排出团体名次,(如积分相同按第一名多者列前)。
[名次、班级、男子得分、女子得分、总分]
5。团体分男女各取前八名。
6。号码的编码可在程序中定。
如:可规定0001—0040为专科9613班
0041—0076为专科9721班
0390—0454为中专9811班
请各位高手就如何设计库结构(田赛和径赛成绩的数据类型不同)及实现方法给予指点。
不胜感激。
 
你自己设计一个然后大家提意见
 
这个程序表面看起来关系十分复杂,但不外乎三大要素:
什么项目?谁参加?多少分?围绕着这三点,如下展开:
什么项目包括:那个部?男子或女子?运动名称?
项目表:
项目代号:
男子是否:
运动名称:
中专是否:
项目表的初始化可能有些麻烦,
包含了具体的每个比赛项目
但减少了数据表之间的复杂关系。
运动员表包括:
运动员代号:
姓名:
男子是否:
中专是否:
班级编号:
项目表和运动员表的几个意义相同的字段,表面看重复,实际上是
避免男女之间,学部之间混淆。将来如果运动员参加项目的这几个
字段不相同,就输入不进去。
明天说分数的计算,有兴趣,说一下,我好做准备工作。

 
感觉并不可行,田赛和径赛的成绩类型不同,需要分成两个表吗?
 
可以分成五个表处理:
1、项目表:(项目代码|项目名称|田赛径赛|是否接力|专科中专|男女);
2、运动员表:(运动员代码|运动员名称|所属班级代码);
3、班级表:(班级代码|班级名称|专科中专);
4、运动员成绩表:(项目代码|运动员代码||男女|班级代码|成绩|名次|是否并列|
是否破记录|得分);
5、班级成绩表:(班级代码|男子成绩|女子成绩|总成绩|名次)。
其中表1、2、3为数据字典需要事先输入,比赛开始后只需输入表4,得分可算出,
最后的成绩表5需要编写select语句实现,田赛和径赛的成绩字段类型可为string。
 
田田的意见我看了,很正统。实现起来可能麻烦。
应该出奇兵。
我以为每人理,没准备,明天见。
 
难到不难,关键是如何组织数据,即有个好的数据结构!
 
报名表:
项目代号
运动员代号
这样报名就简单了,而且男女‘学部不一致的在程序中做检测,
不一样就报不上名。
运动主表:
根据”报名表“,”运动员表“”项目表“自动生成”运动主表“

项目代号|运动员代号|姓名|运动名称|男女是否|中专是否|班级编号|运动成绩|
我认为程序的主体结构已构造完毕,运动主表包含所有必要的内容。
下一步进行运动成绩的计算。



 
田田:田赛和径赛的成绩字段类型设为string如何排序,另外输入时容易出错。径赛
是时间,田赛是距离。表一和表四总感觉不很满意。一个项目即可是中专女,也可是大专男,项目表可否这样:(项目代码|项目名称|田赛径赛|是否接力|大专否!中专否|男否!女否);另外,校记录应该有一个表,输入人员不考虑破没破记录(程序
自动完成)
 
大家继续发言啊
 
库结构:

create table tsxm( /*-- 田赛项目表-- */
xmmc char(6) not null /* 项目名称 */
dzh char(4) not null /* 学部 * /
xb char(2) not null /* 性别 */
jlu float /* 校记录 */
primary key (xmmc,dzh,xb)
)

create table jsxm( /*-- 径赛项目表-- */
xmmc char(6) not null /* 项目名称 */
dzh char(4) not null /* 学部 * /
xb char(2) not null /* 性别 */
jlu time /* 校记录 */
jlf char(1) default '0' /* 是否接力 */
primary key (xmmc,dzh,xb)
)

create table ydy( /*--运动员表--*/
dydm char(4) not null /*运动员代码*/
xm char(8) /*姓名*/
bjmc char(12) /*所属班级*/
primary key (dydm)
)

create table bj ( /*--班级表--*/
bjmc char(12) not null /*班级名称*/
dzh char(4) /*学部*/
zf float /*团体总分*/
girlzf float /*女子总分*/
boyzf float /*男子总分*/
primary key (bjmc)
)

create table tscj ( /*--田赛成绩表--*/
dydm char(4) not null /8运动员号码*/
xmmc char(6) not null /*项目名称*/
xb char(2) not null /8性别*/
tscj float not null /*田赛成绩*/
mc smallint //*名次*/
blf char(1) default '0' /*并列否*/
pjlf char(1) default '0' /*破记录否*/
df float default '0' /*得分*/
primary key (dydm,xmmc)
)

create table jscj ( /*--径赛成绩表--*/
dydm char(4) not null /8运动员号码*/
xmmc char(6) not null /*项目名称*/
xb char(2) not null /8性别*/
tscj time not null /*径赛成绩*/
mc smallint //*名次*/
blf char(1) default '0' /*并列否*/
pjlf char(1) default '0' /*破记录否*/
df float default '0' /*得分*/
primary key (dydm,xmmc)
)

create table mccj ( /*--名次与成绩关系表-*/
mc smallint not null /*名次*/
fsh smallint not null /*分数*/
primary key (mccj)
)

请大家提意见!
 
关注一下
 
你的问题太笼统。数据结构来源于实践,用于实践,而实际情况又太复杂,
恐怕是这个问题不太好回答的原因吧。如这个程序是商品化的广泛发表还是
自己负责成绩管理设计思路就大不相同。
有时间不要把问题想的那么复杂,可以用且操纵方便就行。
如:分数的分配,由操作者自己看看名次,破不破记录,是否并列自己填上
就行了。各个项目的详细情况有比赛成绩单,看看就行了。你的程序的主要
任务可能是整理分类那些数据,不要在数据来源上做过多的文章。
我以前说的“运动主表”是根据运动员的报名提前做好的,到时候填上成绩
就行了,可附加几个字段或表,自己完善以下。
不当之处,请指正。
 
张剑波的话有一些道理,我再想想
 
等我一下,会有结果的
 
田田基本完成
1、项目基本表:(项目代码|项目名称|田赛径赛|是否团体)
2、项目记录表:(项目代码|班级分类|男子记录|女子记录)
3、项目记录历史表:(项目代码|运动会代码|班级分类|男子记录|女子记录)
4、运动员表:(运动员代码(团体为新的代码)|运动员名称|运动会代码|所属班级代码|男女)
5、团体运动员表(团体代码|运动员代码|运动会代码)
6、班级表:(班级代码|班级名称|班级分类代码)
7、班级分类表(班级分类代码|班级分类)(专科、中专)
8、运动会表(运动会代码|..)
9、运动会项目表(运动会项目代码|项目代码|运动会代码)
10、运动员成绩表:(运动会项目代码|运动员代码|成绩|名次|是否并列|是否破记录|得分)
11、班级成绩表:(运动会代码|班级代码|男子成绩|女子成绩|总成绩|名次)

田赛和径赛的成绩字段类型可为string,时间和距离都可以转换成string,可以排序,
注意长度要一致

田赛和径赛的成绩字段类型也可为Real,因为Delphi的时间本身就是Real,但可能DbGrid无法以时间显示
 
多人接受答案了。
 
后退
顶部