毕业设计论文_C++球队信息管理系统.doc_第1页
毕业设计论文_C++球队信息管理系统.doc_第2页
毕业设计论文_C++球队信息管理系统.doc_第3页
毕业设计论文_C++球队信息管理系统.doc_第4页
毕业设计论文_C++球队信息管理系统.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

- 1 - 摘摘 要要 球队信息管理系统在 vc6.0 环境下,用纯 c 语言编写。采用结构化软件工 程的方法。 ,每个功能模块对应一个.c 文件和一个或多个函数。有一个 com.c 的文件,其中有 8 个公用的函数。 有一个 common.h 的头文件,有链表结点结构体的定义以及函数的原型说明,以 及系统数据文件存储路径。 该系统作为一种一般的数据检索和排序方式,有着较高的实用价值。该系 统具有将输入的数据(球员姓名、员工号、薪水、角色等各项基本信息)以文 件形式保存、根据员工号或者姓名查询相关人员的信息、根据球员姓名和薪水 进行排序的功能、能够统计出球队的人数及薪水总额等信息,并为用户提供简 单易操作的人机界面。 球队信息管理系统实现对一个球队的各类人员的相关信息进行输入、输出、 查询等操作。能够通过主界面进入到各个不同的子案例的功能中,并可以正确 实现各操作,易于使用,提高工作效率,给管理用户带来轻松的感受。 球队信息管理系统 总控子系统 信息录入子系统 信息删除子系统 查询排序子系统 报表子系统 退 出 信息统计模块 分类汇总模块 返回 定制报表模块 退出 排序模块 查询模块 关键词:关键词:c 语言语言 结构化软件工程结构化软件工程 流程图流程图 功能介绍功能介绍 - 2 - abstract the information manages system of football team - (timsft) under the environment of vc6.0, writing with the c language. adopt the method that the structure turns the software engineering. each function mold piece to should a document of c and one or several functions .there is document of com.c among them have 8 public functions. there is the prototype elucidation of the definition and function that the chain watch knot orders the structure body, and saving path of the system data document. timsft is a kind of general data index and the row preface methods, having higher practical value. timsft have to carry on the data about various basic information of football players name, football players number, salary, role and so on. the importation keeps with the document form, according to employees number or the name searches the related personnel of information. it according to the players name and salary function that lines up the preface. timsft can statistics the information, such as a number of ball team and the salary total amount and for the man-machine interface that the customer provide to operate in brief and easily. the related information of each kind of personnel of the football team information management system realization to a football team carries on - 3 - the importation, outputs and searches. timsft can enter through a main interface in the function of the each different case example, with right carry out each operation. timsft is easy to the use and raise the work efficiency, bring relaxed feeling for the customer. timsft chief control input information delete informatio select informati report system exit stat. module coolect module exit report module exit taxis module select module keyword: the information manages system of football team the c language software engineering flow chart function introduction 目目 录录 - 4 - 第第 1 章章球队管理信息系统设计球队管理信息系统设计- 5 - 1.1 需求设计.- 5 - 1.2 系统结构图.- 5 - 1.3 系统流程图.- 7 - 1.3.1 结点生成流程图 .- 7 - 1.3.2 转入新的成员流程图 .- 9 - 1.3.3 排序流程图 .- 10 - 1.3.4 从文件读取信息流程图 .- 11 - 1.3.5 将链表写入文件流程图 .- 12 - 1.3.6 将链表结点释放流程图 .- 13 - 1.3.7 人员转入流程图 .- 14 - 第第 2 章章球队信息管理系统功能说明球队信息管理系统功能说明- 15 - 2.1 系统模块划分.- 15 - 2.2 系统功能说明.- 15 - 2.3 子系统功能说明.- 15 - 2.3.1 总控子系统- 15 - 2.3.2 信息录入子系统- 15 - 2.3.3 信息删除子系统- 15 - 2.3.4 查询排序子系统- 16 - 2.3.5 报表子系统- 16 - 2.4 退出.- 16 - 第第 3 章章球队信息管理系统功能演示球队信息管理系统功能演示- 17 - 3.1 列出所有队员信息 - 17 - 3.2 人员转入 - 18 - 3.3 人员转出 - 18 - 3.4 按姓名查询 - 19 - 3.5 按编号查询 - 19 - 3.6 按姓名排序 - 20 - 3.7 按薪水排序 - 21 - 第第 4 章章报表子系统功能说明报表子系统功能说明- 22 - 第第 5 章章附:代码的实现附:代码的实现- 26 - 参考文献参考文献.- 35 - 致致 谢谢.- 36 - - 5 - 第第 1 章章球队管理信息系统设计球队管理信息系统设计 1.1 需求设计需求设计 1 转入人员 2 显示出现在所有人员的全部信息 3 转出人员 4 查询某位球员的信息(按姓名或按人员编号) 5 按照某个信息对球队各类人员的信息进行重新排序:按姓名或按薪水 6 按照规定实现某些信息报表 7 统计球队人员总数及所有人员的工资总额 8 实现按角色对各类人员进行分类汇总相关信息 9 由用户自己随意确定报表的输出形式及内容 10 球队各类人员的主要信息包括: 编号、姓名、角色、年龄、身高、体重、薪水、加入球队日期 1.2 系统结构图系统结构图 球队信息管理系统 总控子系统 信息录入子系统 信息删除子系统 查询排序子系统 报表子系统 退 出 信息统计模块 分类汇总模块 返回 定制报表模块 退出 排序模块 查询模块 图图 1-1 系统结构图系统结构图 - 6 - 球队人员信息管理系统 列 出 人 员 清 单 人 员 转 入 人 员 转 出 按 姓 名 查 询 报 表 子 系 统 按 编 号 查 询 按 姓 名 排 序 按 薪 水 排 序 退 出 系 统 统 计 人 员 总 数 统 计 薪 水 总 额 按 角 色 汇 总 定 制 报 表 返 回 上 级 菜 单 退 出 系 统 球队人员信息管理系统 系统结构图 图 1-2 系统结构图 - 7 - 1.3 系统流程图系统流程图 1.3.1 结点生成流程图结点生成流程图 调用malloc函数向系统申请一个结点的空间 申请成功? next域赋值为null 是 给新结点的其它数据域赋值 否返回结点的指针 开始 结束 图图 1-3 系统流程图系统流程图 - 8 - 1.3.2 转入新的成员流程图转入新的成员流程图 调用malloc函数向系统申请一个结点的空间 申请成功? next域赋值为null 是 输入编号(确认编号在链表中不存在,并且是合 法有效的,然后再赋值给编号域) 否 输入姓名(确认姓名输入有效,然后再赋值给姓 名域) 输入角色、年龄、身高、体重、薪水等,并确 认数据的合法性 输入加入球队的日期,并对输入的日期进行较 完备的数据校验 返回结点的指针 开始 结束 图图 1-4 系统流程图系统流程图 - 9 - 1.3.3 排序流程图排序流程图 定 定位 位指 指针 针q和 和p赋 赋值 值: : q=head; p=head-next; 结 结束 束 style的 的值 值为 为多 多少 少? ? (用 用switch语 语句 句) 按 按姓 姓名 名升 升序 序查 查找 找插 插入 入位 位置 置 如 如果 果未 未找 找到 到, ,指 指针 针p和 和q同 同 步 步向 向后 后移 移动 动 style=1 按 按姓 姓名 名降 降序 序查 查找 找插 插入 入位 位置 置 如 如果 果未 未找 找到 到, ,指 指针 针p和 和q同 同步 步向 向 后 后移 移动 动 style=2 按 按薪 薪水 水升 升序 序查 查找 找插 插入 入位 位置 置 如 如果 果未 未找 找到 到, ,指 指针 针p和 和q同 同 步 步向 向后 后移 移动 动 style=3 按 按薪 薪水 水降 降序 序查 查找 找插 插入 入位 位置 置 如 如果 果未 未找 找到 到, ,指 指针 针p和 和q同 同步 步 向 向后 后移 移动 动 style=4 默 默认 认按 按编 编号 号升 升序 序查 查找 找插 插入 入位 位置 置 如 如果 果未 未找 找到 到, ,指 指针 针p和 和q同 同步 步向 向 后 后移 移动 动 style=其 其他 他 将 将等 等插 插入 入结 结点 点插 插入 入到 到链 链表 表中 中: : (1) newnode-next = p; (2) q-next = newnode; 返 返回 回链 链表 表的 的头 头指 指针 针head 开 开始 始 图 1-5 系统流程图 - 10 - 1.3.4 从文件读取信息流程图从文件读取信息流程图 以以rb形形式式打打开开一一个个文文件件 结结束束 是是 开开始始 文文件件是是否否存存在在? 创创建建一一个个新新文文件件,并并打打开开它它 申申请请新新的的头头结结点点,并并将将next域域赋赋值值为为null 否否 是是 申申请请一一个个新新的的结结点点空空间间,并并将将next域域赋赋值值为为null 从从文文件件中中读读取取一一个个结结构构体体结结点点信信息息到到新新结结点点中中 调调用用insert函函数数,将将新新结结点点插插入入到到链链表表中中 是是否否读读取取到到文文件件的的末末尾尾? 关关闭闭文文件件 返返回回头头指指针针head 从从文文件件中中读读取取一一个个结结构构体体结结点点信信息息到到新新结结点点中中 调调用用insert函函数数,将将新新结结点点插插入入到到链链表表中中 否否 图 1-6 信息流程图 - 11 - 1.3.5 将链表写入文件流程图将链表写入文件流程图 开开始始 结结束束 以以wb形形式式打打开开待待写写入入的的文文件件 头头指指针针是是否否为为null? 提提示示无无数数据据,并并 返返回回 是是 否否 指指针针指指向向第第一一个个有有效效的的数数据据结结点点 结结点点指指针针是是否否为为null? 将将当当前前结结点点信信息息写写入入到到文文件件中中 指指针针移移动动到到下下一一个个数数据据结结点点 否否 关关闭闭文文件件 是是 图 1-7 文件流程图 - 12 - 1.3.6 将链表结点释放流程图将链表结点释放流程图 定定义义指指针针q指指向向head,指指针针p指指向向q的的下下 一一个个结结点点 结结点点指指针针p是是否否为为null? 释释放放结结点点q 将将指指针针q指指向向p,将将p指指向向p的的下下一一个个结结点点 否否 开开始始 结结束束 释释放放结结点点q 是是 图 1-8 流程图 - 13 - 1.3.7 人员转入流程图人员转入流程图 开开始始 是是否否添添加加新新人人员员? 生生成成一一个个新新结结点点(调调用用newnode) 是是 将将新新结结点点插插入入到到链链表表中中(调调用用 insert) 将将新新链链表表写写入入到到文文件件中中 否否 在在屏屏幕幕上上显显示示整整个个新新的的链链表表 结结束束 图 1-9 流程图 - 14 - 1.3.8 人员转出流程图人员转出流程图 开开始始 是是否否到到达达链链表表末末尾尾 (p=null?) 输输入入要要删删除除人人员员的的编编号号 初初始始化化指指针针:q=head; p = q-next; 比比较较查查找找编编号号是是否否存存在在,如如果果存存在在则则 删删除除,否否则则继继续续后后移移,再再进进行行查查找找 将将删删除除结结点点后后的的链链表表重重新新写写入入 到到文文件件中中 结结束束 否否 将将删删除除结结点点后后的的链链表表显显示示到到屏屏 幕幕上上 图 1-10 流程图 - 15 - 第第 2 章章 球队信息管理系统功能说明球队信息管理系统功能说明 2.1 系统模块划分系统模块划分 球队信息管理系统 总控子系统 信息录入子系统 信息删除子系统 查询排序子系统 报表子系统 退 出 信息统计模块 分类汇总模块 返回 定制报表模块 退出 排序模块 查询模块 图 2-1 系统模块图 2.2 系统功能说明系统功能说明: 本系统实现对一个球队队员的基本信息的管理,主要有列出所有队员清单、 添加一个队员信息、删除一个队员信息、队员信息排序、队员信息查询、队员 信息统计、分类汇总、定制报表等功能。 2.3 子系统功能说明子系统功能说明 2.3.1 总控子系统总控子系统 本子系统功能包括系统菜单的输出、系统主要流程的控制。 2.3.2 信息录入子系统信息录入子系统 本子系统功能包括结构体类型定义、数据文件存储路径定义、读写文件、插 入法创建有序链表、遍历输出链表等公共模块,还有新建一个结点并录入该结 点各项数据、数据输入格式验证等。 2.3.3 信息删除子系统信息删除子系统 - 16 - 本子系统功能是从链表中删除用户指定的结点信息,并将结果保存到文件。 2.3.4 查询排序子系统查询排序子系统 本字系统功能包括两个模块,一个是查询,包括按编号查询和按姓名查询; 还有一个是排序,包括按姓名排序和按月薪排序,其中升序还是降序排序由用 户从键盘输入。 2.3.5 报表子系统报表子系统 本子系统包括五个模块。 2.3.5.1 信息统计模块信息统计模块 有统计球队队员人数和统计球队月薪总额两个功能。 2.3.5.2 分类汇总模块分类汇总模块 按角色分类汇总并输出队员的所有信息。 2.3.5.3 定制报表模块定制报表模块 由用户选择输入需要输出的字段、各字段输出的顺序,然后按照用户的定 制要求输出所有队员的信息。 2.3.5.4 返回上级菜单返回上级菜单 返回到主菜单 2.3.5.5 退出退出 终止程序运行 2.4 退出退出: 终止程序运行 - 17 - 第第 3 章章 球队信息管理系统功能演示球队信息管理系统功能演示 图 3-1 运行效果图 3.1 列出所有队员信息列出所有队员信息 默认按编号升序列出默认按编号升序列出 - 18 - 图 3-2 运行效果 3.2 人员转入人员转入(新增人员)(新增人员) 输入信息时有一定程度的容错处理输入信息时有一定程度的容错处理 图 3-3 运行效果 3.3 人员转出人员转出(删除人员)(删除人员) 执行完毕后将从文件中物理删除该人员数据执行完毕后将从文件中物理删除该人员数据 - 19 - 图 3-4 运行效果 3.4 按姓名查询按姓名查询 图 3-5 运行效果 3.5 按编号查询按编号查询 - 20 - 图 3-6 运行效果 3.6 按姓名排序按姓名排序 可以由用户选择升序还是降序。可以由用户选择升序还是降序。 图 3-7 运行效果 - 21 - 3.7 按薪水排序按薪水排序 可以由用户选择升序还是降序。可以由用户选择升序还是降序。 图 3-8 运行效果 第第 4 章章 报表子系统功能说明报表子系统功能说明 图 4-1 报表子系统 4.1 统计球队人员总数统计球队人员总数 - 22 - 图 4-2 运行效果 4.2 统计球队薪水总额统计球队薪水总额 图 4-3 运行效果 4.3 按角色分类汇总输出报表按角色分类汇总输出报表 - 23 - 图 4-4 运行效果 4.4 用户定制报表用户定制报表 - 24 - 图 4-5 运行效果 第第 5 章章 代码代码 5.1menu.c 文件文件 #include “common.h“ - 25 - void showmenu() printf(“-n“); printf(“ 球队管理系统 n“); printf(“-n“); printf(“* 1. 列出人员清单 *n“); printf(“* 2. 人员转入 *n“); printf(“* 3. 人员转出 *n“); printf(“* 4. 按姓名查询 *n“); printf(“* 5. 按编号查询 *n“); printf(“* 6. 按姓名排序 *n“); printf(“* 7. 按薪水排序 *n“); printf(“* 8. 报表子系统 *n“); printf(“* 0. 退出系统 *n“); printf(“-n“); printf(“-n“); 5.2 common.h 文件文件 #include #include #include #include struct date int year; int month; int day; ; typedef struct mem char number10; char name20; int role; int age; float high; float weight; float salary; struct date joindate; /加入球队的日期 struct mem *next; member; extern char * roleset4; #define filename “c:team.dat“/存储数据的文件的路径 - 26 - void showmenu(); void showall(member *head); void addmember(member *head); member * newnode(member *head); member * insert(member *head,member *newnode,int style); void list(member *head); void writetofile(member *head); member * loadfromfile(int); 5.3 showall.c 文件文件 #include “common.h“ /* 函数名:showall 函数功能:遍历链表输出所有数据 */ void showall(member *head) list(head); printf(“n 数据显示完毕!nn“); 5.4 addmenber.c 文件文件 #include “common.h“ void addmember(member *head) char flag;/是否添加新队员 while(1) printf(“要添加一个新队员吗? y/nn“); flag=getche(); if(flag=n|flag=n)/不再加入新队员 break; else if(flag=y|flag=y) member * newnod = newnode(head); insert(head,newnod,0);/printf(“新结点被插入到链表中n“); /end of if else printf(“n 输入不正确!请重新选择!n“); - 27 - /end of while writetofile(head);/printf(“n 新链表被写入文件n“); list(head);/printf(“输出链表n“); printf(“新增队员结束!nn“); 5.5 com.c 文件文件 #include “common.h“ member * newnode(member *head) member * newnode= (member *)malloc(sizeof(member); float tmp; char tmpdate10; if(newnode=null) return null;/申请内存失败 newnode-next = null; /*以下从键盘为新节点赋值*/ do printf(“n 请输入新队员编号:n“); gets(newnode-number); if(strlen(newnode-number)=0)/ 输入不能为空串 continue; /if(unique(head,newnode-number)=1)/验证编号的唯一性 /break; else break; /printf(“所输入的编号已经存在,请重新输入!n“); while(1); printf(“请输入新队员姓名:n“); while(strlen(gets(newnode-name)=0)/ 输入不能为空串 printf(“请重新输入新队员姓名:n“); continue; printf(“请输入新队员角色(0-前锋 1-中场 2-后卫 3-守门员):n“);/暂时 没有考虑输入 03 之外的数据的容错性 while(1) while(scanf(“%d“,/跳到行输入缓冲区下一个空白字符 printf(“请重新输入角色!n“); - 28 - if(newnode-role=0/跳到行输入缓冲区下一个空白字符 printf(“请重新输入年龄!n“); printf(“请输入新队员身高(单位:厘米):n“);/输入不是f 格式,需要重新输 入 while(scanf(“%f“,/跳到行输入缓冲区下一个空白字符 printf(“请重新输入身高!n“); newnode-high=tmp; printf(“请输入新队员体重(单位:公斤):n“); while(scanf(“%f“,/跳到行输入缓冲区下一个空白字符 printf(“请重新输入体重!n“); newnode-weight=tmp; printf(“请输入新队员薪水(单位:人民币元/月):n“); while(scanf(“%f“,/跳到行输入缓冲区下一个空白字符 printf(“请重新输入薪水!n“); newnode-salary=tmp; while(getchar()!=n)/清空行输入缓冲区 continue; do - 29 - printf(“请输入新队员加入日期(使用半角字符,格式:yymmdd): n“); gets(tmpdate); /if(checkdate(newnode, tmpdate)=1) break; while(1); return newnode;/返回新节点的指针 /* 函数名:insert 函数功能:将新结点 newnode 插入到链表 head 中,按指定的排序方式 style 插 入,默认按编号升序插入 style=1,按姓名升序排序 style=2,按姓名降序排序 style=3,按薪水升序排序 style=4,按薪水升序排序 style=其他,按编号升序排序 */ member * insert(member *head,member *newnode,int style) member *p,*q; q=head; p=head-next; switch(style) case 1:/按姓名升序插入 while(p!=null)/找到插入点,在 p 与 q 之间插入 if(strcmp(p-name ,newnode-name) next; q=q-next; else break; break; case 2:/按姓名降序插入 while(p!=null)/找到插入点,在 p 与 q 之间插入 if(strcmp(p-name ,newnode-name) 0)/按姓名降序插入 p=p-next; q=q-next; - 30 - else break; break; case 3:/按薪水升序插入 while(p!=null)/找到插入点,在 p 与 q 之间插入 if(p-salary salary)/按薪水升序插入 p=p-next; q=q-next; else break; break; case 4:/按薪水降序插入 while(p!=null)/找到插入点,在 p 与 q 之间插入 if(p-salary newnode-salary)/按薪水降序插入 p=p-next; q=q-next; else break; break; default:/默认,按编号升序插入 while(p!=null)/找到插入点,在 p 与 q 之间插入 if(strcmp(p-number ,newnode-number) next; q=q-next; else break; break; /end of switch q-next = newnode; newnode-next = p; - 31 - return head; /* 函数名:list 函数功能:从文件读入数据,形成链表,并遍历链表输出所有数据 */ void list(member *head) member*p; int count=0; p=head-next; printf(“n%3s%8s%15s%13s%4s%8s%8s%8s%12snn“,“id“,“number“,“name“,“ role“,“age“,“high“,“weight“,“salary“,“joindate“); while(p!=null)/遍历输出链表 printf(“%3d%8s%15s%13s%4d%8.2f%8.2f%8.2f%5d-%2d- %2dn“,count+1,p-number,p-name,rolesetp-role,p-age,p-high,p-weight,p- salary,p-joindate.year,p-joindate.month,p-joindate.day); count+; if(count%20=0)/分屏显示,每输出 20 条记录暂停 getch(); p=p-next; /* 函数名:loadfromfile 函数功能:从文件中把数据全部读出,用插入法生成链表并返回头指针 head */ member * loadfromfile(int style) member *head,*node; file *fp = fopen(filename,“rb“); - 32 - if(fp=null)/文件还不存在,无法打开 char c; printf(“文件打开错误或文件不存在!n“); printf(“需要新建一个文件吗?(y/n)n“); c=getche(); if(c=y|c=y) fp=fopen(filename,“wb“); fclose(fp); fp=fopen(filename,“rb“); else printf(“nn 程序即将结束!n“); exit(1);/程序终止运行 head=(member*)(malloc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论