b) 利用直接插入函数对个学校的总分进行排序 c) 输出各学校的总分,记录入文件item_info.txt中 d) 退出菜单选项 异常处理:无 3) 用例4
用例名:排序操作 行为者:管理员
目的:可以按学校编号或名称、学校总分、男女团体总分排序; 级别:一级 过程描述:
a) 利用算法分别实现按学校编号排序 b) 按学校编号或名称排序 c) 按学校总分排序 d) 按男女团体总分排序
e) 利用一个选择的菜单实现这些排序 f) 后台显示,用户选择 g) 显示结果 h) 退出系统 异常处理:无 4) 用例5
用例名:查询操作 行为者:管理员、学校
目的:可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前
三或前五名的学校。
级别:一级 过程描述:
a)输入学校编号以及要查询的项目进行查询 b)输入项目编号查询获奖情况
f) 退出系统。
异常处理:无 5) 用例6
用例名:数据的增加、删除、修改,并将相关数据进行保存 行为者:管理员
目的:实现数据的增加、删除、修改,并将相关数据进行保存; 级别:一级 过程描述:
a) 对文件进行数据的增加,删除,修改等操作 b) 查看是否操作成功,输出修改后的数据 c) 退出系统
异常处理:无 6) 用例7
用例名:各个操作数据的文件保存 行为者:管理员
目的:各操作结果能保存到文件,以便查询 级别:一级 2.5数据
下面仅列出主要实体。 (1)学校实体
学校实体包括学校名称、学校编号、学校总分、女团体总分、男团体总分,如图学生实体E-R图2.5所示。
图2.5 学校实体E-R图
(2)活动项目实体
项目实体包括项目编号、取前三或前五、项目类别、项目获名者。如图项目实体E-R图2.6所示。
图2.6 活动项目实体E-R图
2.6拟采用的技术
实现本系统用到了C/C++基础程序设计,数据结构。本系统将采用文件存储、结
构存储、链表方法以及调用不同函数来实现系统功能,算法中主要采用是链表操作如:查询、增加、删除、修改以及链表的插入排序等,输入与读取都是以文件的形式进行。在系统设计的过程中,才会知道哪一种技术比较好用,但是具体的用到的技术应该不会太偏离我以上讲的技术。
3 详细设计
根据题目要求及本次课程设计的目的,采用结构体来存储每组数据,定义运动会类和调用库函数进行相应的操作。现把相应的设计思路及各个函数解析如下。
3.1 数据结构设计分析
3.1.1 存储学校信息的结构体
学校信息有学校名称、学校编号、学校总分、男女团体总分。具体结构如下:
struct School//学校信息 { };
3.1.2 存储项目信息的结构体
项目信息有项目编号、项目取前三或前五、项目类别、项目获名者。具体结构如下:
struct Item//项目信息 {
string school_name; string school_id; int total_score; int women_score; int man_score; School()//初始化 { }
school_name = \school_id = \
total_score = women_score = man_score = 0;
};
string item_id; int range_num; char sex;
string winner_id[6]; Item()//初始化 { }
item_id = \sex = '\\0'; range_num = 0;
memset(winner_id,0,sizeof(winner_id));
3.13运动会类
定义一个运动会类,定义和调用起成员函数,成员变量,完成系统的功能。 代码如下: class SportMeeting { public:
void load(); void save(); void sort(); void search(); void add(); void del(); void modify();
private:
void update(); void sort_by_id(); void sort_by_total(); void sort_by_man();
};
void sort_by_women(); void search_by_school(); void search_by_item();
multimap
3.2 各个函数分析
3.2.1 主函数
函数原型:int main()
main()函数主要是整个系统的控制端,主要功能是控制整个程序的运行。从主函数开始调用各相关函数来达到相应的功能。由于有多个不同的选项,所以用一个while(){swithch()}语句控制每个函数调用,控制起来方便、明了。关键代码如下: while(1)
{
cout<<\修改项目信息\cout<<\添加项目\cout<<\删除项目\cout<<\查询选项\cout<<\查看排名\cout<<\退出系统\cout<<\请输入你的选择:\cin >> select; switch(select)
{ case 1:
meet.modify(); break;
case 2:
meet.add();