1、计算机工程学院 Capstone project 实习报告 选题名称: 运动会管理系统 专业:计算机科学与技术(软件工程方向) 班级: 软件1092 组员: 陈森 蔡晨 金亮 指导教师: 张永军 陈晓兵 陈剑洪 于长辉 2012年 6 月 2 日 课程设计中文摘要 田径运动会是学校每年都要举行的重大活动,由于该运动比赛项目多,参与人数广,数据处理量大且变化与时效性要求高,管理较为复杂,传统手工进行信息处理不但耗时费力,而且
2、直接影响着工作质量与效率,与信息时代的管理要求极不协调,因此,研制开发具有先进性和实用性的符合高校学实际情况的运动会管理系统势在必行。 校运动会管理系统实现了运动会的信息化管理,相对于普通的运动会信息记录,它是用计算机承担了信息记录的工具,能够迅速获得记录信息,大幅改善运动会管理效率。学校田径运动会管理系统是典型的信息管理系统,本系统为田径运动会运动会组织者提供方便、快捷的方法,系统的对运动会进行合理的安排与管理,实现无纸化工作。本论文首先使用了Microsoft Visual Studio 2010作为开发工具和Microsoft SQL Server 2008作为后台数据库,然后再介绍了
3、开发背景,最后通过截图和表格来说明该系统的开发与操作。设计充分利用Microsoft Visual Studio 2010以及Microsoft SQL Server 2008数据库易于使用和快速开发的特性,提高了编程效率和可靠性。同时对系统的开发原理、系统的功能特点和设计方案进行了介绍。在对运动会管理体系进行充分分析和系统论证的基础上开发。它不但能完成运动会管理中的基本操作,而且具有程序设计合理、操作简单、运行可靠、保密性强等优点,极大地节约了人力物力,并提高了服务质量,给人们带来了极大的方便。 关键词:运动会管理系统 管理者 运动员 Microsoft Visual Studio
4、 2010 Microsoft SQL Server 2008 课程设计外文摘要 Title SportMeetingManagementSystem Abstract: Track and field games is the school each year to major events held, as the event, in the number of wide, data and large quantity and time change the demand is high, management i
5、s more complicated, the traditional manual for information processing demanding not only, and directly affect the work quality and efficiency, and the information age management demands highly coordinated, therefore, the development development to be advanced and practical learning with the actual s
6、ituation of the sports meeting administrative system is imperative. The school sports meeting administrative system of the games in the information management, relative to the ordinary games record information, it is to use computer information records for tools, can quickly get to record informat
7、ion, sharply improve sports meeting administrative efficiency. The school track and field sports management system is the typical information management system, this system for track and field games organizers provide convenient and fast method, the system of reasonable arrangement of games and mana
8、gement, and realize the paperless work. This paper first used the Microsoft Visual Studio 2010 as development tools and Microsoft SQL Server 2008 as the backend database, and then introduces the development background, the last through the screenshots and form to indicate that the system development
9、 and operation. Design make full use of Microsoft Visual Studio 2010 and Microsoft SQL Server 2008 database easy-to-use and fast development characteristics, improve the efficiency and reliability of the programming. At the same time for system development principle, system function and characterist
10、ics and the design scheme are introduced in this paper. For games in the management system of the full analysis and system based on the test of the development. It can not only complete games in the management of basic operation, and has the program design is reasonable, the operation is simple, rel
11、iable operation, the secrecy is strong wait for an advantage, greatly saves manpower material resources, and improve the quality of service, give people to a great convenience. Keywords SportMeetingManagementSystem Manager Player Microsoft Visual Studio 2010 Microsoft SQL Server 2008 目
12、 录 1 需求分析 1 2 概念结构设计 2 2.1系统整体数据流图 2 2.2应用程序设计图 2 2.3系统E—R图 4 2.4 ER模型向关系模式转换 6 3 整体设计 6 3.1数据库结构设计 6 3.2系统界面设计 7 4 编码实现 14 4.1项目管理 14 4.2 项目申请与审批 16 4.3系统操作代码 19 总结 23 致谢 24 参考文献 25 成绩评分表 26 1 需求分析 1.1系统目标 该系统可以方便对学院运动会报名信息的管理,能帮助运动会工作人员、参赛运动会员以及学院联系人更好地利用计算机,快速方便地对运动
13、会的报名信息进行管理和维护,从而减轻了运动会报名期间参与人员的工作负担。 该系统的主要功能有:用户登陆、基本信息录入、报名信息查询、信息修改与删除、报名信息申请与审核等。 1.2 系统功能需求 1.2.1 功能划分 本系统的用户分为系统管理员、运动员以及学院联系人。 管理员:负责对系统进行维护,包括对学校各个学院以及参赛运动员的基本信息进行添加,修改,查询和删除等,同时可以制定相关比赛规则(如:修改运动员报名项目的上限),也可以对每个学院的报名信息以及每个项目的参赛信息进行查询并同时生成运动员参赛编号。 运动员:通过账号和密码进行登录,可以查询运动会中各个比赛项目的参赛信息,并
14、且对自己合适的比赛项目进行报名申请,同时可查询自己已报名项目的比赛信息和审核状态。 学院联系人:用户通过系统登录,可以查询该学院运动员的项目报名情况,同时可以对该学院运动的报名申请进行审批操作。 1.2.2 功能描述 ▦ 基本信息管理 系统管理员可以实现对各个学院以及参赛运动员的信息进行添加和修改等操作,维护所有学院以及运动员的基本信息,查询各个学院比赛项目的报名情况以及每个项目的报名参赛情况。 ▦ 项目信息管理 系统管理员可以针对该校运动会的基本情况制定相关的比赛项目,并在系统中进行发布,以供参赛运动员和学校各学院进行查询与参考,同时可以对可制定的比赛项目信息进行修改与删
15、除操作。 ▦ 修改比赛限制 系统管理员可根据比赛实际情况对运动员报名的项目数量以及每个学院的报名人数进行限制,若超出该限制运动员将不可在进行项目申请。 ▦ 开放和关闭系统 系统管理员可通过修改比赛名的截止时间进行开放和关闭系统,在截止时间之前运动员以及相关学院可登陆系统进行相关操作,如若超出截止时间该系统将不再对除管理员以外的用户开放。 ▦ 项目申请 运动员根据自身情况以及比赛项目的条件信息对相关项目进行申请,等待自己所在学院单位的项目审核。 ▦ 项目审批 学院联系人可根据学院的项目报名情况以及相关比赛条件限制对运动员的报名信息进行审批,可予以批准或不批准。
16、▦ 密码修改 用户需要输入原密码,并且两次输入新密码一致后,系统即用新密码代替原密码。 1.3开发工具 该运动会管理系统的数据库采用了Microsoft的SQL Server2008企业版,以及Visual Studio2010开发平台。 2 概念结构设计 2.1系统整体数据流图 审批/查询 申请/退选 审批/报名信息表 申请表/ 项目表 学院/运动员/项目表 学院/运动员/项目管理 运动会管理系统 运动员 学院联系人 系统管理员 系统管理员 学院联系人 运动员 图2.1系统数据流图 2.2应用程序设计图 开始
17、 用户登录 合法? 用户选择服务 选择退出? 执行服务操作 退出 N N Y Y 图2.2.1系统处理流程图 口令验证 管理员 学院联系人 运动员 添加信息 项目信息管理 报名信息管理 个人信息管理 退出系统 查询统计 项目审批 个人信息管理 退出系统 项目报名 项目信息查看 报名信息查看 个人信息管理 退出系统 图2.2.2系统功能结构 2.3系统E—R图 系统管理员 编号 密码 姓名 图2.3.1 管理员实体图 学院联系人 编号 姓名 学院 联系电话 密码 图2.
18、3.2 学院联系人实体图 运动员 编号 姓名 性别 学院 联系电话 生成号码 密码 图2.3.3 运动员实体图 比赛项目 编号 名称 类型 比赛时间 分类 人数上限 图2.3.4 项目实体图 项目申请 申请编号 运动员编号 项目编号 申请状态 申请时间 图2.3.5 申请实体图 运动员 学院联系人 管理员 管理 比赛项目 比赛限制 申请 审批 1 1 m m m m n m n 图2.3.6 实体关系图 2.4 ER模型向关系模式转换 (1) 管理员实体集转化为关系: 管理
19、员(管理员编号,管理员密码) (2) 学院联系人实体集转化为关系: 学院联系人(联系人编号,姓名,所属学院,联系方式,密码) (3) 运动员实体集转化为关系: 运动员(运动员编号,姓名,性别,所属学院,联系方式,密码,生成号码) (4) 项目实体集转化为关系: 项目(项目编号,项目名称,项目分类,项目类型,比赛时间,人数上限) (5) 申请实体集转化为关系: 申请(申请编号,运动员编号,项目编号,申请时间,申请状态) 3 整体设计 3.1数据库结构设计 把关系模型转化为表结构: 学院联系人信息表(College):包含所有联系人的信息,定义如下: 域名 含义 数据
20、类型 例子 备注 CID 联系人编号 int 1001 主键 CCName 姓名 varchar(20) 人文学院 CName 所属学院 varchar(20) 杨紫 CCTel 联系方式 varchar(30) 12345 CCPwd 密码 varchar(30) 123 运动员信息表(Player):包含所有运动员的信息,定义如下: 域名 含义 数据类型 例子 备注 PlayerID 运动员编号 int 11 主键 PlayerName 姓名 varchar(20) 汪涵 PlayerSe
21、x 性别 varchar(10) 男 PlayerCollege 所属学院 int 1003 外键 PlayerTel 联系电话 varchar(30) 12345 PlayerPwd 密码 varchar(30) 123 PlayerNo 生成号码 int 2 项目信息表(Event):包含所有比赛项目的信息,定义如下: 域名 含义 数据类型 例子 备注 EventID 项目编号 int 101 主键 EventName 项目名称 varchar(20) 100米 EventSex 项目分类
22、varchar(20) 男 EventType 项目类型 varchar(20) 个人 EventTime 比赛时间 datetime 2012-05-22 08:30:00 LimitNum 人数上限 int 50 申请信息表(Apply):包含所有项目申请的信息,定义如下: 域名 含义 数据类型 例子 备注 ApplyID 申请编号 int 1 主键 PlayerID 运动员编号 int 11 EventID 项目编号 int 102 State 申请状态 varchar(20) 已批准
23、 ApplyTime 申请时间 datetime 2012-05-31 09:16:23 规则限制表(Limit):包含所有限制条件的信息,定义如下: 域名 含义 数据类型 例子 备注 LimitID 限制编号 int 1 主键 PELimit 个人限报项目数 int 3 CPLimit 学院限报人数 int 100 EndTime 报名截止日期 datetime 2012-06-20 12:00:00 3.2系统界面设计 3.2.1登陆界面 3.2.2添加学院信息 3.2.3添加运动员信
24、息 3.2.4添加比赛信息 3.2.5修改比赛信息 3.2.6比赛限制管理 3.2.7查看项目申报信息 3.2.8查看学院申报信息 3.2.9修改密码 3.2.10项目申请 3.2.11查看个人项目 3.2.12查询统计 3.2.13项目审批 4 编码实现 4.1项目管理 数据访问层(DAL层): public class EventDAL { private SqlHelper ed;
25、 public EventDAL() { ed = new SqlHelper(); } public Entity.Event GetEventByEventID(string EventID) { string strSql = "select * from [Event] where EventID = '" + EventID + "'"; DataSet ds = ed.ExecuteDataSet(strSql);
26、 if (ds.Tables[0].Rows.Count > 0) { DataRow row = ds.Tables[0].Rows[0]; return new Event(row); } else { return null; } } public void AddEvent(Event e) {
27、 string Sql = string.Format("insert [Event] (eventid,eventname,eventsex,eventtype,eventtime,limitnum) values('{0}','{1}','{2}','{3}','{4}','{5}') ", e.EventID, e.EventName, e.EventSex, e.EventType, e.EventTime, e.LimitNum); ed.ExecuteNonQuery(Sql); } public
28、DataSet ListAllEvent() { string sql = "Select * From [Event] "; return ed.ExecuteDataSet(sql); } public void DeleteEvent(int id) { string sql = "delete from [event] where eventid=" + id; ed.ExecuteDataSet(sql);
29、 } public void UpdateEvent(Event e) { string sql = string.Format("update [event] set eventname='{0}',eventsex='{1}',eventtype='{2}',eventtime='{3}',limitnum='{4}' where eventid='{5}'", e.EventName, e.EventSex, e.EventType, e.EventTime, e.LimitNum, e.EventID);
30、 ed.ExecuteNonQuery(sql); } public int PersonalLimt(int pid) { string sql = "select COUNT(*) from apply where playerid=" + pid; return Convert.ToInt32( ed.ExecuteScalar(sql)); } public int CollegeLimit(int cid)
31、{ string sql="select count(*) from apply a join Player p on a.playerid=p.Playerid where p.PlayerCollege= " + cid; return Convert.ToInt32(ed.ExecuteScalar(sql)); } public int SumByEventID(int id) { return Convert.ToInt32(ed.ExecuteScal
32、ar("select COUNT(*) from apply where eventid=" + id)); } } 业务逻辑层(BLL层): public class EventBLL { private EventDAL edal = new EventDAL(); public Event GetEventByEventID(string EventID) { return edal.GetEventByEventID(EventID); } public boo
33、l CheckCunZai(string id) { Event ee = edal.GetEventByEventID(id); if (ee == null) { return true; } else { return false; } } public void AddNewEvent(
34、Event e) { edal.AddEvent(e); } public DataSet ListAllEvent() { return edal.ListAllEvent(); } public void UpdateEvent(Event e) { edal.UpdateEvent(e); } public void DeleteEvent(int id) { edal.Dele
35、teEvent(id); } public int PersonalLimt(int pid) { return edal.PersonalLimt(pid); } public int CollegeLimit(int cid) { return edal.CollegeLimit(cid); } public int Sum(int id) { retu
36、rn edal.SumByEventID(id); } } 4.2 项目申请与审批 数据访问层(DAL层): public class ApplyDAL { SqlHelper s = new SqlHelper(); public void AddApply(Apply a) { string sql = string.Format("insert apply (playerid,eventid,state,applytime) values('{0}','
37、{1}','{2}','{3}')", a.PlayerID, a.EventID, a.State, a.Time); s.ExecuteNonQuery(sql); } public DataSet ListUnOkEventByClassid(string id) { string sql = string.Format(@"select *from dbo.Apply a join [Event] e on a.EventID=e.eventid join dbo.Player
38、p on p.PlayerID=a.PlayerID where a.State='未¡ä批¨²准Á?' and p.PlayerCollege='{0}'", id); return s.ExecuteDataSet(sql); } public void UpdateState(int id, string state) { string sql = string.Format("update dbo.Apply set [State]='{0}' where ApplyID='{
39、1}'", state, id); s.ExecuteNonQuery(sql); } public DataSet ListEventByPlayerId(string id) { string sql = string.Format("select EventName,EventSex,EventType,EventTime from dbo.Apply a join Event e on e.EventID=a.EventID where a.PlayerID='{0}' and a
40、State='已°?批¨²准Á?'", id); return s.ExecuteDataSet(sql); } public DataSet ListEventByClassIDOrderByPlayer(string id) { string sql = string.Format("select * from dbo.Apply a join dbo.Event e on e.EventID=a.EventID join dbo.Player p on p.PlayerID=a.
41、PlayerID where p.PlayerCollege=1001 order by p.PlayerID asc", id); return s.ExecuteDataSet(sql); } public DataSet ListEventByClassidOrderByEvent(string classid) { string sql = string.Format("select e.EventID,e.EventName,e.EventSex,e.EventTime,e.E
42、ventType ,COUNT(p.PlayerID)'count' from Apply a join Event e on e.EventID=a.EventID join Player p on p.PlayerID=a.PlayerID where a.State='已°?批¨²准Á?' and p.PlayerCollege='{0}' group by e.EventID,e.EventName,e.EventSex,e.EventTime,e.EventType ", classid); return s.ExecuteDataSet(sql);
43、 } public DataSet ListEventSumaryToAdmin() { string sql = "select c.CName,e.EventName,e.EventSex,e.EventTime,e.EventType from Apply a join Event e on e.EventID=a.EventID join Player p on p.PlayerID=a.PlayerID join College c on c.CID=p.PlayerCollege where a.State='
44、已°?批¨²准Á?' group by c.CID,e.EventName,e.EventSex,e.EventTime,e.EventType,c.CName"; return s.ExecuteDataSet(sql); } public DataSet ListEventSummary() { string sql = "select e.EventID,e.EventName,e.EventSex,e.EventTime,e.EventType ,COUNT(p.PlayerI
45、D)'count' from Apply a join Event e on e.EventID=a.EventID join Player p on p.PlayerID=a.PlayerID where a.State='已°?批¨²准Á?' group by e.EventID,e.EventName,e.EventSex,e.EventTime,e.EventType "; return s.ExecuteDataSet(sql); } public DataSet ListApplyToPlayer(string id)
46、 { string sql = string.Format("select * from dbo.Apply a join dbo.Event e on a.EventID=e.EventID where a.State!='不?批¨²准Á?' and a.PlayerID='{0}'", id); return s.ExecuteDataSet(sql); } public void Delete(int id) { string sql =
47、string.Format("delete from apply where applyid='{0}'", id); s.ExecuteNonQuery(sql); } 业务逻辑层(BLL层): public class ApplyBLL { ApplyDAL aa= new ApplyDAL(); public void Add(Apply a) { aa.AddApply(a); } public Dat
48、aSet ListUnOkEventByClassID(string id ) { return aa.ListUnOkEventByClassid(id); } public void UpdateState(int id, string state) { aa.UpdateState(id, state); } public DataSet ListEventByPlayerId(string id) {
49、 return aa.ListEventByPlayerId(id); } public DataSet ListEventByClassIDOrderByPlayer(string classid) { return aa.ListEventByClassIDOrderByPlayer(classid); } public DataSet ListEventByClassidOrderByEvent(string classid) {
50、 return aa.ListEventByClassidOrderByEvent(classid); } public DataSet ListEventSumaryToAdmin() { return aa.ListEventSumaryToAdmin(); } public DataSet ListEventSummary() { return aa.ListEventSummary(); }






