毕业设计论文球队信息管理系统1doc文档在线提供1.docx

上传人:b****3 文档编号:3705528 上传时间:2022-11-24 格式:DOCX 页数:31 大小:1.11MB
下载 相关 举报
毕业设计论文球队信息管理系统1doc文档在线提供1.docx_第1页
第1页 / 共31页
毕业设计论文球队信息管理系统1doc文档在线提供1.docx_第2页
第2页 / 共31页
毕业设计论文球队信息管理系统1doc文档在线提供1.docx_第3页
第3页 / 共31页
毕业设计论文球队信息管理系统1doc文档在线提供1.docx_第4页
第4页 / 共31页
毕业设计论文球队信息管理系统1doc文档在线提供1.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

毕业设计论文球队信息管理系统1doc文档在线提供1.docx

《毕业设计论文球队信息管理系统1doc文档在线提供1.docx》由会员分享,可在线阅读,更多相关《毕业设计论文球队信息管理系统1doc文档在线提供1.docx(31页珍藏版)》请在冰豆网上搜索。

毕业设计论文球队信息管理系统1doc文档在线提供1.docx

毕业设计论文球队信息管理系统1doc文档在线提供1

摘要

球队信息管理系统在VC6.0环境下,用纯C语言编写。

采用结构化软件工程的方法。

,每个功能模块对应一个.c文件和一个或多个函数。

有一个com.c的文件,其中有8个公用的函数。

有一个common.h的头文件,有链表结点结构体的定义以及函数的原型说明,以及系统数据文件存储路径。

该系统作为一种一般的数据检索和排序方式,有着较高的实用价值。

该系统具有将输入的数据(球员姓名、员工号、薪水、角色等各项基本信息)以文件形式保存、根据员工号或者姓名查询相关人员的信息、根据球员姓名和薪水进行排序的功能、能够统计出球队的人数及薪水总额等信息,并为用户提供简单易操作的人机界面。

球队信息管理系统实现对一个球队的各类人员的相关信息进行输入、输出、查询等操作。

能够通过主界面进入到各个不同的子案例的功能中,并可以正确实现各操作,易于使用,提高工作效率,给管理用户带来轻松的感受。

关键词:

C语言结构化软件工程流程图功能介绍

Abstract

TheInformationManagesSystemofFootballTeam----(TIMSFT)undertheenvironmentofVC6.0,writingwiththeClanguage.Adoptthemethodthatthestructureturnsthesoftwareengineering.EachfunctionmoldpiecetoshouldaDocumentofcandoneorseveralfunctions.Thereisdocumentofcom.camongthemhave8publicfunctions.

Thereistheprototypeelucidationofthedefinitionandfunctionthatthechainwatchknotordersthestructurebody,andsavingpathofthesystemdatadocument.

TIMSFTisakindofgeneraldataindexandtherowprefacemethods,havinghigherpracticalvalue.TIMSFThavetocarryonthedataaboutvariousbasicinformationoffootballplayer'sname,footballplayer'snumber,salary,roleandsoon.Theimportationkeepswiththedocumentform,accordingtoemployee'snumberorthenamesearchestherelatedpersonnelofinformation.Itaccordingtotheplayer'snameandsalaryfunctionthatlinesupthepreface.TIMSFTcanstatisticstheinformation,suchasanumberofballteamandthesalarytotalamountandfortheman-machineinterfacethatthecustomerprovidetooperateinbriefandeasily.

Therelatedinformationofeachkindofpersonnelofthefootballteaminformationmanagementsystemrealizationtoafootballteamcarriesontheimportation,outputsandsearches.TIMSFTcanenterthroughamaininterfaceinthefunctionoftheeachdifferentcaseexample,withrightcarryouteachoperation.TIMSFTiseasytotheuseandraisetheworkefficiency,bringrelaxedfeelingforthecustomer.

Keyword:

TheInformationManagesSystemofFootballTeam

TheClanguage

Softwareengineering

Flowchart

Functionintroduction

第1章球队管理信息系统设计

1.1需求设计

l1转入人员

2显示出现在所有人员的全部信息

3转出人员

4查询某位球员的信息(按姓名或按人员编号)

5按照某个信息对球队各类人员的信息进行重新排序:

按姓名或按薪水

6按照规定实现某些信息报表

7统计球队人员总数及所有人员的工资总额

8实现按角色对各类人员进行分类汇总相关信息

9由用户自己随意确定报表的输出形式及内容

10球队各类人员的主要信息包括:

编号、姓名、角色、年龄、身高、体重、薪水、加入球队日期

1.2系统结构图

图1-1系统结构图

图1-2系统结构图

1.3系统流程图

1.3.1结点生成流程图

图1-3系统流程图

 

1.3.2转入新的成员流程图

图1-4系统流程图

 

1.3.3排序流程图

图1-5系统流程图

1.3.4从文件读取信息流程图

图1-6信息流程图

1.3.5将链表写入文件流程图

图1-7文件流程图

 

1.3.6将链表结点释放流程图

图1-8流程图

1.3.7人员转入流程图

图1-9流程图

1.3.8人员转出流程图

图1-10流程图

第2章球队信息管理系统功能说明

2.1系统模块划分

图2-1系统模块图

2.2系统功能说明:

本系统实现对一个球队队员的基本信息的管理,主要有列出所有队员清单、添加一个队员信息、删除一个队员信息、队员信息排序、队员信息查询、队员信息统计、分类汇总、定制报表等功能。

2.3子系统功能说明

2.3.1总控子系统

本子系统功能包括系统菜单的输出、系统主要流程的控制。

2.3.2信息录入子系统

本子系统功能包括结构体类型定义、数据文件存储路径定义、读写文件、插入法创建有序链表、遍历输出链表等公共模块,还有新建一个结点并录入该结点各项数据、数据输入格式验证等。

2.3.3信息删除子系统

本子系统功能是从链表中删除用户指定的结点信息,并将结果保存到文件。

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退出:

终止程序运行

第3章球队信息管理系统功能演示

图3-1运行效果图

3.1列出所有队员信息

默认按编号升序列出

图3-2运行效果

3.2人员转入(新增人员)

输入信息时有一定程度的容错处理

图3-3运行效果

3.3人员转出(删除人员)

执行完毕后将从文件中物理删除该人员数据

图3-4运行效果

3.4按姓名查询

图3-5运行效果

3.5按编号查询

图3-6运行效果

 

3.6按姓名排序

可以由用户选择升序还是降序。

图3-7运行效果

3.7按薪水排序

可以由用户选择升序还是降序。

图3-8运行效果

第4章报表子系统功能说明

图4-1报表子系统

4.1统计球队人员总数

图4-2运行效果

4.2统计球队薪水总额

图4-3运行效果

4.3按角色分类汇总输出报表

图4-4运行效果

4.4用户定制报表

图4-5运行效果

第5章代码

5.1Menu.c文件

#include"common.h"

voidshowMenu(){

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.2Common.h文件

#include

#include

#include

#include

structdate{

intyear;

intmonth;

intday;

};

typedefstructMEM{

charnumber[10];

charname[20];

introle;

intage;

floathigh;

floatweight;

floatsalary;

structdatejoinDate;//加入球队的日期

structMEM*next;

}MEMBER;

externchar*roleSet[4];

#defineFILENAME"c:

\\team.dat"//存储数据的文件的路径

voidshowMenu();

voidshowAll(MEMBER*head);

voidaddMember(MEMBER*head);

MEMBER*newNode(MEMBER*head);

MEMBER*insert(MEMBER*head,MEMBER*newNode,intstyle);

voidlist(MEMBER*head);

voidwriteToFile(MEMBER*head);

MEMBER*loadFromFile(int);

5.3showall.c文件

#include"common.h"

/*********************************************************

函数名:

showAll

函数功能:

遍历链表输出所有数据

**********************************************************/

voidshowAll(MEMBER*head){

list(head);

 

printf("\n数据显示完毕!

\n\n");

}

5.4addmenber.c文件

#include"common.h"

voidaddMember(MEMBER*head){

charflag;//是否添加新队员

while

(1){

printf("要添加一个新队员吗?

y/n\n");

flag=getche();

if(flag=='n'||flag=='N')//不再加入新队员

break;

elseif(flag=='y'||flag=='Y'){

MEMBER*newNod=newNode(head);

insert(head,newNod,0);//printf("新结点被插入到链表中\n");

}//endofif

else

printf("\n输入不正确!

请重新选择!

\n");

}//endofwhile

writeToFile(head);//printf("\n新链表被写入文件\n");

list(head);//printf("输出链表\n");

printf("新增队员结束!

\n\n");

}

5.5Com.c文件

#include"common.h"

 

MEMBER*newNode(MEMBER*head){

MEMBER*newNode=(MEMBER*)malloc(sizeof(MEMBER));

floattmp;

chartmpDate[10];

if(newNode==NULL)

returnNULL;//申请内存失败

newNode->next=NULL;

/*以下从键盘为新节点赋值*/

do{

printf("\n请输入新队员编号:

\n");

gets(newNode->number);

if(strlen(newNode->number)==0)//输入不能为空串

continue;

//if(unique(head,newNode->number)==1)//验证编号的唯一性

//break;

elsebreak;

//printf("所输入的编号已经存在,请重新输入!

\n");

}while

(1);

printf("请输入新队员姓名:

\n");

while(strlen(gets(newNode->name))==0)//输入不能为空串

{

printf("请重新输入新队员姓名:

\n");

continue;

}

printf("请输入新队员角色(0-前锋1-中场2-后卫3-守门员):

\n");//暂时没有考虑输入0-3之外的数据的容错性

while

(1){

while(scanf("%d",&newNode->role)!

=1){//输入不是%d格式,需要重新输入

scanf("%*s");//跳到行输入缓冲区下一个空白字符

printf("请重新输入角色!

\n");

}

if(newNode->role>=0&&newNode->role<=3)//上句while执行完毕,已经输入一个整数,并且输入的是0-3之一

break;

else{//已经输入一个整数,但是输入的不是0-3之一

printf("请输入0~3中的一个整数:

\n");

printf("请输入新队员角色(0-前锋1-中场2-后卫3-守门员):

\n");

}

}

printf("请输入新队员年龄:

\n");

while(scanf("%d",&newNode->age)!

=1){//输入不是%d格式,需要重新输入

scanf("%*s");//跳到行输入缓冲区下一个空白字符

printf("请重新输入年龄!

\n");

}

printf("请输入新队员身高(单位:

厘米):

\n");//输入不是%f格式,需要重新输入

while(scanf("%f",&tmp)!

=1){

scanf("%*s");//跳到行输入缓冲区下一个空白字符

printf("请重新输入身高!

\n");

}

newNode->high=tmp;

printf("请输入新队员体重(单位:

公斤):

\n");

while(scanf("%f",&tmp)!

=1){//输入不是%f格式,需要重新输入

scanf("%*s");//跳到行输入缓冲区下一个空白字符

printf("请重新输入体重!

\n");

}

newNode->weight=tmp;

printf("请输入新队员薪水(单位:

人民币元/月):

\n");

while(scanf("%f",&tmp)!

=1){//输入不是%f格式,需要重新输入

scanf("%*s");//跳到行输入缓冲区下一个空白字符

printf("请重新输入薪水!

\n");

}

newNode->salary=tmp;

while(getchar()!

='\n')//清空行输入缓冲区

continue;

do{

printf("请输入新队员加入日期(使用半角字符,格式:

yy-mm-dd):

\n");

gets(tmpDate);

//if(checkDate(newNode,tmpDate)==1)

break;

}while

(1);

returnnewNode;//返回新节点的指针

}

/*********************************************************

函数名:

insert

函数功能:

将新结点newNode插入到链表head中,按指定的排序方式style插入,默认按编号升序插入

style=1,按姓名升序排序

style=2,按姓名降序排序

style=3,按薪水升序排序

style=4,按薪水升序排序

style=其他,按编号升序排序

**********************************************************/

MEMBER*insert(MEMBER*head,MEMBER*newNode,intstyle){

MEMBER*p,*q;

q=head;

p=head->next;

switch(style){

case1:

//按姓名升序插入

while(p!

=NULL){//找到插入点,在p与q之间插入

if(strcmp(p->name,newNode->name)<0){//按姓名升序插入

p=p->next;

q=q->next;

}

elsebreak;

}

break;

case2:

//按姓名降序插入

while(p!

=NULL){//找到插入点,在p与q之间插入

if(strcmp(p->name,newNode->name)>0){//按姓名降序插入

p=p->next;

q=q->next;

}

elsebreak;

}

break;

case3:

//按薪水升序插入

while(p!

=NULL){//找到插入点,在p与q之间插入

if(p->salarysalary){//按薪水升序插入

p=p->next;

q=q->next;

}

elsebreak;

}

break;

case4:

//按薪水降序插入

while(p!

=NULL){//找到插入点,在p与q之间插入

if(p->salary>newNode->salary){//按薪水降序插入

p=p->next;

q=q->next;

}

elsebreak;

}

break;

default:

//默认,按编号升序插入

while(p!

=NULL){//找到插入点,在p与q之间插入

if(strcmp(p->number,newNode->number)<0){//按编号升序插入

p=p->next;

q=q->next;

}

elsebreak;

}

break;

}//endofswitch

 

q->next=newNode;

newNode->next=p;

returnhead;

}

 

/*********************************************************

函数名:

list

函数功能:

从文件读入数据,形成链表,并遍历链表输出所有数据

**********************************************************/

voidlist(MEMBER*head){

MEMBER*p;

intcount=0;

p=head->next;

printf("\n%3s%8s%15s%13s%4s%8s%8s%8s%12s\n\n","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-%2d\n",count+1,p->number,p->name,roleSet[p->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(intstyle){

MEMBER*head,*node;

FILE*fp=fopen(FILENAM

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1