报告书吕文泊Word文件下载.docx
- 文档编号:617032
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:23
- 大小:231.70KB
报告书吕文泊Word文件下载.docx
《报告书吕文泊Word文件下载.docx》由会员分享,可在线阅读,更多相关《报告书吕文泊Word文件下载.docx(23页珍藏版)》请在冰点文库上搜索。
包括运动员姓名、单位、组别、参赛项目等信息。
(6)报名单审查:
报名单输入是难免会有错误的,必须经过审查。
在审查之后,如果有错,必须出现提示,给出出错信息,并根据不同的错误,给用户提供不同的修改方法。
(7)运动员编号:
运动员编号要求同一单位的同一组别的运动员号码必须连续,不同单位、不同组别可以不连续,也可连续.
(8)径赛分组:
按照比赛规则,对各项目的参赛人员进行分组。
对于短跑项目,将对各组别各项目的每个小组进行跑道划分;
对于长跑项目,只编排运动员比赛序号,并将编排结果直接存入径赛决赛名单。
3算法设计的思想(所用到的数据结构)
检录操作主要涉及到数据库信息提取、项目优先顺序设定及打印内容筛选。
数据库提取主要是由数据库自动实现。
检录则根据检录状态将尚未检录项按线性表遍历排列在首选位置。
设有批量设置功能,可以将当前项目人员检录信息提取到数组中,按照要求遍历批量设置所有人员检录状态,并返回到当前显示界面中并仍可进行人工微调。
录入成绩与检录操作基本功能一致。
主要难点在于通过模式匹配模拟实现录入成绩格式的规范检查。
鉴于各个项目的成绩单位及计法的不同,在数据库中自己拟定存储各项目成绩格式,在程序运行中运用查找的模式匹配检查输入项的格式。
重点在于成绩中包含几种常用符号(如逗号,单撇号)及数字的混合,需经检查确定正确后由字符格式转为数字类型存储。
4算法的流程图
5算法的设计与分析
(1)检录窗口功能说明
自动全部签到
inti
i=dw_chk.rowcount()
intj
forj=1toi
dw_chk.setitem(j,"
checky_checkup"
"
1"
)
next
自动分道
stringtpfendao[]
tpfendao=dw_chk.object.checky_checkup.primary
intsort[],i,upper,j
upper=upperbound(tpfendao)
j=0
fori=1toupper
if'
1'
=tpfendao[i]then//'
表示选择'
到'
j++
sort[j]=i//获得签到的所在行
endif
//排序
intsec,temp
fori=1toj
sec=myrand(i,j)
temp=sort[sec]
sort[sec]=sort[i]
sort[i]=temp
dw_chk.object.checky_daoci.primary[sort[i]]=string(i)
手动调整分道
dw_chk.settaborder("
checky_daoci"
1)
最终提交完成
////检查是否已禁止更新检录
iftrue=checked_manage.ifchecked(ddlb_1.text)then
messagebox('
'
"
禁止更新检录信息"
return
endif
//////////////////////
i=dw_chk.update()
if(1=i)then
checked_manage.setchecked(ddlb_1.text)
else
messagebox(string(sqlca.sqldbcode),"
保存数据失败:
"
+sqlca.sqlerrtext)
ddlb_1.postevent("
selectionchanged"
打印已签到人员名单
if"
?
=dw_chk.Object.DataWindow.Table.Filterthen
dw_chk.Object.DataWindow.Table.Filter="
1=1"
dw_chk.Object.DataWindow.Table.Filter=dw_chk.Object.DataWindow.Table.Filter+"
andchecky_checkup='
dw_chk.filter()
(2)录入成绩显示数据
//uo可用
this.enabled=true
cbx_update.checked=false
//初始化函数类
scored_manage.info=info
resetcontent()
////////////////////////////////////
//获得所需访问表信息修改数据对象
stringsqlfromwhere
dw_score.dataobject='
dataw_scoreinput'
dw_score.settransobject(sqlca)
sqlfromwhere="
sqlfromwhere+="
from"
+info.check+"
t,"
+info.signup+"
signup"
///设置where子句
ifinfo.flag=falsethen//第二赛//检录签到seccheckup字段
sqlfromwhere+="
wheret.code=signup.codeandt.seccheckup='
andt.checkup='
andt.item=signup.itemandsignup.groupm='
+info.groupm+"
andsignup.item='
+info.item+"
else//第一赛
wheret.checkup='
andt.code=signup.codeandt.item=signup.itemandsignup.groupm='
+info.item+"
endif//检录签到checkup字段
//销毁部分列
田赛"
=info.tianjingthen
dw_score.Modify("
destroycolumnchecky_sgroup"
destroychecky_sgroup_t"
destroycolumnchecky_daoci"
destroychecky_daoci_t"
iffalse=info.flagthen//径赛第二赛销毁checky_sgroup
dw_score.Modify("
///////////////////////////////////////////////
///////////dw_check显示数据
//设置更新表
dw_score.Object.DataWindow.Table.UpdateTable=info.check
if'
2人3足跑'
=info.itemthen//"
2人3足跑"
检录若有一人未到则不能参加比赛成绩和签到道次记录在code小的一人中(以第一人为查询录成绩)自动更新到第二人中
stringerrensz//只有一赛//检录到
errensz="
selectb.code,b.name+'
'
+c.name,'
ch.sgroup,ch.daoci,ch.score,b.depfromcheckthych,errensanzub,errensanzucwherech.item='
andch.checkup='
andch.code=b.codeandb.tongdui=c.tongduiandc.groupm=b.groupmandb.code<
c.codeandb.groupm='
dw_score.modify("
DataWindow.Table.Select=~"
+errensz+"
~"
dw_score.object.checky_score.dbname=info.check+"
."
+"
score"
//重新绑定更新字段
ifinfo.flag=falsethen//第二赛
dw_score.modify("
selectt.code,signup.name,t.item,t.daoci,t.secscore,signup.dep"
+sqlfromwhere+"
dw_score.object.checky_score.dbname=info.check+"
secscore"
else
if'
田赛'
=info.tianjingthen
dw_score.modify("
selectt.code,signup.name,t.item,t.score,signup.dep"
else
selectt.code,signup.name,t.item,t.sgroup,t.daoci,t.score,signup.dep"
endif
dw_score.object.checky_score.dbname=info.check+"
////////////////////////////////////////////////////
//为小组下拉列表框添加内容
径赛'
=info.tianjingandtrue=info.flagthen//若是分组项目则为小组列表框添加各小组
//////////////////////////////
////添加小组
stringsql
sql="
selectdistinctt.sgroup"
+sqlfromwhere
declarexiaozudynamiccursorforsqlsa;
preparesqlsafrom:
sql;
opendynamicxiaozu;
stringtpsgroup
ddlb_score.reset()
fetchxiaozuinto:
tpsgroup;
dowhilesqlca.sqlcode=0
ddlb_score.additem(tpsgroup)
loop
closexiaozu;
ddlb_score.additem("
全部"
//默认选择"
dw_score.retrieve()
ddlb_score.text="
ddlb_score.postevent("
//////////////
//显示数据格式
stringgeshi
selectdanweiinto:
geshifromitemsyangshiwhereitem=:
info.item;
checksqlcode()
geshi+='
+setyangshi()
st_geshi.text=geshi
6运行结果与分析(测试)
检录窗口
录入成绩窗口
调试分析:
(1)运行时提示“Badruntimefunctionreference”错误信息,引用了错误的运行时函数。
原因:
引用的函数所属对象尚未创建。
解决:
引用前先创建对象。
(2)运行时提示“DoubleorRealexpressionhasoverflowed”错误信息,双精度型或实型表达式溢出。
函数返回错误范围内的值。
规范函数返回值的范围。
(3)运行时提示“Fieldnameassignmentnotsupported”,不支持这种字段赋值。
字段类型不匹配。
使用正确类型。
7总结(收获与体会)
一、收获
1要学会具体问题具体分析
在着手开始编写代码的时候,我已经将教材还有龙书看过一遍了,但是在实际动手的时候,才发现并不是像书上说的那么清楚明白,语言的特性与书上举例用的语言特性有许多不同,这时就不能生搬硬套书上的算法,要结合语言的特点,采用书上的思想,这样才能把问题解决,其中我主要负责的那一个检录板块牵扯到一个自动分道,如何能实现运算效率最高,起初的算法为将n个数字存储在一数组中首先随机分配1~n间一个数字抽中后该数字后存储空间前移,再随机分配1~n-1间一个数字直至分配结束。
但是此算法效率很低,重新设计算法后改为,数组arry[1~n]保存1~n,首先随机分配1~n一个数字x将arry[x]与arry[1]交换,再分配2~n一个数字x将arry[x]与arry[2]交换,直至结束。
改进算法效率明显高于之前的算法(减少了循环及赋值次数),这样便使得运算的效率大大提高,而且保证了概率绝对一样。
2设计数据结构的重要性
在我编写代码的过程中,最常出现的现象就是反复修改数据结构,甚至在进行优化的时候还回过头去修改中间代码的数据结构。
这就导致了我编写代码效率的降低,还有由于数据结构的反复修改,使得整个工程维护起来极其困难。
这就说明数据结构的设计在整个设计阶段是十分重要的,没有一个设计良好的数据结构,代码编写阶段就不会顺利的进行。
3交流和沟通
我们在开发初期遇到的很多问题都是通过与同学交流和沟通解决的。
同学间无私、耐心的讲解不仅让整个课程设计进展顺利,也让我们每一个人都学到了很多。
二、感想
这次课程设计历时二个星期多左右,对我来说真的是受益匪浅,通过课程设计,发现自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。
这次的课程设计也让我看到了团队的力量,我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神,对我而言,知识上的收获重要,精神上的丰收更加可喜。
因为它让我知道了学无止境的道理。
我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。
挫折是一份财富,经历是一份拥有。
这次课程设计必将成为我人生旅途上一个非常美好的回忆!
8附:
源代码
(1)各类数据结构用于在不同对象间交换数据
分组信息
项目信息结构
(2)检查该项目是否已检录
///////////////说明
//传入参数为"
"
第?
组"
info需要预先设置
//返回值true已检录
//false未检录
///////////////////////////////////
stringcheckupzu
stringsqlqiandao//无论是否有决赛都将分组
booleanrtn
径赛"
=info.tianjingandtrue=info.flagthen//若是径赛第一赛则从fstchecked串中分离各小组此时传入数据为"
或"
//返回检录日志
selectfstcheckedinto:
checkupzufromitemwheregroupm=:
info.groupmanditem=:
ifisnull(checkupzu)then
returnfalse//若无数据则直接返回false未检录
//检查是否所有小组都已检录
if"
=xiaozuthen
stringsql
sql="
selectdistinctch.sgroupfrom"
ch,"
signwherech.item=sign.itemandch.code=sign.codeandsign.groupm='
+info.groupm+"
andsign.item='
+info.item+"
declareallxiaozudynamiccursorforsqlsa;
preparesqlsafrom:
opendynamicallxiaozu;
stringtpsgroup
fetchallxiaozuinto:
dowhilesqlca.sqlcode=0
if0=pos(checkupzu,tpsgroup,1)then//若未找到则表示存在小组为检录
closeallxiaozu;
returnfalse
endif
fetchallxiaozuinto:
loop
closeallxiaozu;
returntrue//所有小组均已检录
///////检查该小组是否已检录
stringqcxz
if0=pos(checkupzu,xiaozu,1)then
returnfalse
returntrue
//此时不需用到传入参数xiaozu
else//其他情况全部从secchecked中直接通过1判断
selectseccheckedinto:
ifisnull(checkupzu)then
checkupzu="
=checkupzuthen
returntrue//已检录
returnfalse//未检录
(3)将更改后数据更新至数据库
//将该项目所有成绩排序编号paixusecpaixu
//直接更新数据库
//调用之前手动确定已录完分数ifscored()
//预先设置info
/////////////////
stringzdflag="
zdscore="
iftrue=info.flagthen//第一赛scoreflag
//zdflag="
flag"
zdscore="
else//第二赛secscoresecflag
secflag"
//根据人数排名次
stringsql
//stringstrcode,strscore
sql="
selectch.code,ch."
+zdscore+"
signupwherech.code=signup.codeandch.item=signup.itemandsignup.groupm='
iftrue=info.flagthen//第一赛
sql+="
//设定条件
else//第二赛
andch.seccheckup='
//设定排序方式
inttempzj//保存排序方式
selectzengjianinto:
tempzjfromitemsyangshiwhereitem=:
if1=tempzjthen//越大者越优秀
orderby"
DESC"
else//越小越优秀
ASC"
//读取数据按分数优先顺序读取codescore
declaresortdynamiccursorforsqlsa;
preparesqlsafrom:
opendynami
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 报告书 吕文泊