c语言学校运动会管理系统课设报告

上传人:无*** 文档编号:92818725 上传时间:2022-05-19 格式:DOC 页数:43 大小:381.50KB
收藏 版权申诉 举报 下载
c语言学校运动会管理系统课设报告_第1页
第1页 / 共43页
c语言学校运动会管理系统课设报告_第2页
第2页 / 共43页
c语言学校运动会管理系统课设报告_第3页
第3页 / 共43页
资源描述:

《c语言学校运动会管理系统课设报告》由会员分享,可在线阅读,更多相关《c语言学校运动会管理系统课设报告(43页珍藏版)》请在装配图网上搜索。

1、 HUBEIUNIVERSITY OF AUTOMOTIVE TECHNOLOGY C语言程序设计 课程设计报告 课设题目:学校运动会管理系统 专 业:电子信息工程 班 级: T1223-14 __ 王松 成 绩: 完成日期:20XX6月7日-20XX6月20日 指导教师:吴波 目 录目 录 1.课程设计目的2 2.需求分析2 2.1要求2 2.2任务描述2 2.3运行环境3 2.4开发工具3 3.总体设计3 3.1系统流设计3 3.2系统模块设计4

2、 4.详细设计5 4.1数据结构设计5 4.2模块接口设计6 4.3 以下是几个主要模块的流程图:7 5.运行结果11 5.1主菜单界面:11 5.2图书信息查询界面:12 5.3:图书销售界面14 5.4图书信息整体浏览界面:19 5.5图书信息删除界面:19 5.6图书信息保存界面: 22 5.7 退出程序:23 5.8图书信息新建界面:23 5.9修改密码23 6.程序调试与测试23 6.1程序调试23 6.2程序测试27 7.问题与不足30 8.建议31 9.编程体会31 10.程序源代码:31 11.参考文献56 12.用户使用手册57

3、1.课程设计目的 1) 通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。 2) 通过课程设计,进一步掌握C语言中重要的数据结构。掌握并熟练运用指针、链表、结构体、文件等数据结构。 3) 通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。 4) 通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。 5) 通过课程设计,加强了自己的程序分析能力。 6) 《C语言程序设计课程设计》的主要目的是培养学生在《C语言程序设计》课程学习后,综合运用《

4、C语言程序设计》课程所学到的知识,编写C程序解决实际问题的能力,以及严谨的工作态度和良好的程序设计习惯。 7) 通过本课程设计的训练,学生应该能够了解程序设计的基本开发过程,掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。能灵活应用,初步具备运用C解决实际问题的能力。 8) C语言课程设计的主要任务是要求学生遵循软件开发过程的基本规,运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C语言程序及编写设计报告等过程。 2.需求分析 2.1要求 1) 遵循软件开发过程的基本规;能灵活应用,初步

5、具备运用C程序解决实际问题的能力。 2) 运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。 3) 学会利用数组、结构体、链表进行相关信息表示。 4) 功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述 5) 各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。 6) 所设计的C程序较好的可读性和可靠性;程序书写风格规,注释清晰。 7) 界面友好〔良好的人机互交〕,凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。 8) 程序经

6、上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。 9) 学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。 10) 掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。 11) C语言课程设计报告的容反应实际设计过程,且符合格式要求,无抄袭现象。 2.2任务描述 此系统以学校运动会为背景,支持运动会管理人员对获奖人员信息进行新建、查询、以及对相应项目,院系获奖情况整体列表浏览,亦可实现保存。具体功能实现如下: 1〕运动员信息载入:管理人员从键盘输入获奖运动员信息,以便操作者可以实现相关需求。 3〕获奖信息整体浏览功能:实现对

7、所有院系获奖信息的整体浏览,使运动会管理人员对获奖信息信息有一个整体的了解。 4〕单独院系获奖信息查询功能:实现对所指定院系查询其成员获奖情况。 5〕单独项目获奖信息查询功能:实现对所指定项目查询所有获奖成员信息。 2.3运行环境 1) WindowsXP/7系统 2) VC++6.0编译环境 2.4开发工具 C语言 3.总体设计 3.1系统流设计 本系统的功能模块如图1所示,主要有以下模块: 课程名称界面 主菜单界面 程序欢迎界面 题目信息查询 获奖运动员信息新建 所有系部整体浏览

8、 系部获奖信息浏览 项目获奖浏览信息 退出程序 输出本课题题目要求 退出此时进行的程序 查询相应项目获奖名单 查询相应系部获奖名单 按书号查询 查询所有系部获奖名单 按书号查询 输入所有获奖运动员名单 按书号查询 图1系统功能模块图 3.2系统模块设计 1) 系统欢迎界面:构造函数void welcome<>,实现欢迎使用学校运动会管理系统,作者和指导老师的显示。 2) 课程名称界面:构造函数void printtimu <>,实现软件题目的显示。 3) 主菜单界面:构造函数void

9、menu_select <>,实现系统主菜单的显示。 4) 获奖运动员信息新建:构造函数void shuru<>,实现新建获奖运动员信息。 5) 系部获奖信息查询:构造函数void xibu<>,实现查询所选系部获奖信息查询。 6) 项目获奖信息查询:构造函数void xiangmu<>,实现查询所选项目获奖信息查询。 7) 获奖运动员信息整体浏览:构造函数void shuchu<>,显示所有系部获奖人员情况。 8) 导入链表信息到系部结构体:构造函数void daoruxi<>,导入获奖运动员分数到系部。 9) 判断所输入信息合理性:构造函数int panduan<>,判断新

10、输入的获奖信息是否与之前输入的信息有冲突。 10) 对用户的提示函数:构造函数void TiShi<>,提示学校院系及运动项目设置。 11) 退出系统:构造函数void exit0<>,实现退出系统。 4.详细设计 4.1数据结构设计 根据系统要求,系统中需要保存的数据信息,其结构如下: 数据项名称 数据项系统表示 数据类型 数据长度 备注 系部编号 xinum Int 4 项目编号 munum Int 4 运动员 Name Char 30 获奖名次 MC Int 4 为了充分利用存空间和实现不受限制的新建、载入获奖运

11、动员信息,采用链表的结构保存获奖运动员信息,在新建一位运动员信息时,创建一个运动员信息的节点,将其插入到链表中,示意图如下。 运动员信息1 运动员信息2 通讯录信息1 221 运动员信息3 运动员信息4 为此,需声明一个类型为struct student的结构体,其成员为图书的基本信息。然后通过对指针、链表、文件等数据结构的操作,实现对运动员信息的新建、查询、整体浏览、比较、保存等一系列操作。其中,结构体定义如下: struct student { int xinum; char name[30]; int munum; int MC;

12、 int score; struct student * next; }; 4.2模块接口设计 1) 所有函数模块声明如下: 2) void welcome<>; //欢迎界面// 3) void printtimu<>; //本题题目要求// 4) int menu_select<>; //主菜单// 5) void shuru<>; //输入获奖运动员信息// 6) void shuchu<>; //按照比赛成绩从高到底输出系部和其比赛成绩// 7) void xibu<>; //查询系部获奖情况// 8) v

13、oid xiangmu<>; //查询项目获奖情况// 9) void TiShi<>; //提示题目所需数据// 10) void daoruxi<>; //导入获奖运动员成绩到系部// 11) int panduan<>; //判断所输入信息是否有错误// 12) void exit0<>; //退出// 13) 并定义个全局变量: int writeinfo_flag=0;/*运动员信息是否保存标志*/ struct student *head=NULL,*p1,*p2,*p3;/*用于新建

14、和导入运动员信息*/ 14) 主要模块的实现 系统以主函数int main<>为入口,首先通过调用void welcome<>显示欢迎界面,指导老师以及作者,然后调用void TiShi<>函数显示学校院系及运动项目设置情况,并通过switch>,显示主菜单,并利用voidmenu_select<>接受用户的返回值返回个主函数,再调用相关的函数进入到下一级菜单进行相关操作。 4.3 以下是几个主要模块的流程图:题目要求 1) 主函数: 主函数 调用void TiShi<>;、void welcome<>、void loadrec〔〕

15、 调用 Void menu_select<> 接受int menu<>的返回值 N 是否合法 Y YN是否为0 调用相关函数 退出系统 图2 主函数 5.运行结果 5.1欢迎界面: 图6 欢迎界面 任意键自动进入系统界面。 5.2主菜单界面: 图7主菜单界面 5.3题目输出界面: 图8 题目输出界面 5.4输入获奖运动员信息界面 图9 图10 输入运

16、动员信息,并选择是否输入完全 30 / 43 5.5顺序输出各个系部成绩界面: 图11 5.6输出指定系部获奖情况界面: 图12 选择指定系部 图13指定系部获奖情况界面 5.7输出指定系部获奖情况界面: 图14选择指定项目 图15 指定项目获奖情况 6.程序调试与测试 6.1程序调试 (1) 各模块分别调试过程及结果。 〔1〕程序欢迎界面和程序名称界面还有题目显示做起来比较容易,做起来没出错。 〔2〕主菜单界面我是按照老师给的一个参考程序做的,后来自己又优化了一下,没有出问题。 〔3〕学校院系设置信息提示函数voi

17、d TiShi<>。提示学校院系,及运动项目设置情况。 〔4〕输入获奖运动员信息函数void shuru<>。本题最难的地方,开始定义三个学生结构体指针,利用链表输入运动员信息,在做的过程遇到最多的问题是存问题,因为指针总是越界。所以最后链表建立的也有问题,经过逐步调试,发现程序在调用panduan<>判断新输的信息是否与先前信息有矛盾的情况时把指针释放了。经过改正,程序良好运行。 〔5〕程序中还定义了void daoruxi<>;int panduan<>;两个函数,void daoruxi<>是把成功输入到链表里的数据部分导入到系部结构体中,方便后面对系部获奖情况的查询。int pan

18、duan<>是为了判断新输的信息是否与先前信息有矛盾的情况,并且返回值给shuru〔〕函数,进行重新输入或者接着往后输入的选择。 <6>查询系部获奖情况函数void xibu<>;通过选择此功能可以进行单个查询每一个系部所有获奖运动员的,参加项目,在此项目中获奖名次等信息。 〔7〕查询项目获奖情况函数void xiangmu<>;通过选择此功能可以进行单个查询每一个项目所有获奖运动员的,所属院系,在此项目中获奖名次信息。 〔8〕退出void exit0<>,此功能可以直接退出软件。 〔10〕新建获奖运动员信息后,便不能在进行补充。 (2) 集成调试过程及结果。 1.在各模块协调操

19、作时,因为好几个都需要得到头指针〔head〕,为此我将保存导入运动员信息的链表中需要用到的指针定义成全局的,这样便于操作,可防止头指针传错。 2.为了使在退出和记录保存函数中,在不同的情况下给出不同的提示信息,我定义了一个标志性全局变量intwriteinfo_flag=0;/*信息变动标志*/。在可使运动员信息变动的函数中,当书库信息变动成功时,就执行save_flag=1,这样在退出或保存过程中就知道书库信息是否变动过,以便实现相应功能。 同时定义全局变量 n ,可以提示我们输入到第几个成绩,在判断函数中也起到了很大的作用,限定判断次数,不至于是判断出错。 3.在输入信息时,用两个定

20、义的全局变量指针p1,p2依次交替前进并把数据缓存到第三个指针p3中。在输入时模块同时进行数据的合法性判断,以及信息的和理性判断,当全部满足题目要,才输入下一个数据,如果数据不合法,软件则会提醒数据有误,并返回重新输入此数据。 4.在显示所有的系部成绩时,先调用导入函数把信息导入到开始定义的系部数组 中,然后再利用冒泡排序法,对系部成绩进行大小比较,并按从大到小的顺序交换系部成绩及西部名称。 5导入运动员信息时,定义一个节点,输入数据后在定义新的节点,新节点头与旧结点的尾,这样就连接起来了。 〔1〕head=malloc; /*开辟一

21、个新单元*/ head->next=NULL; 〔2〕 p2=malloc; /*开辟一个新单元*/ p1->next=p2; 连接起两个节点 p3=p1; p1=p2; p1->next =NULL; (3) 功能调试过程及结果。 1首先根据题目,新建一个文件,执行程序,看程序是否能够正常读取文件。读取正常。 2分别执行不同的函数看,是否能正常运行。各个程序单独执行正常。 3在运行一次的情况下,连续执行不同函数,检查是否有逻辑错误。 4在执行了相应的函数后,对比文件,看文件

22、是否按程序操作的结果,正确改变了。 5将文件删除,看程序是否会给出正确提示,并且限制某些没有文件不能实现的功能。 6将文件置空,看是否会给出相应提示以及程序是否运行正常。 6.2程序测试 各模块测试用例数据及结果 与文件结果一致 7.问题与不足 (1) 需求分析中存在的问题和分析:该程序不支持插入新的运动员信息,与实际不符。不能完全识别操作者输入的错误信息。 (2) 概要设计中存在的问题和分析:全局标志性变量用的太多,在主体函数中定义变量时,容易与全局标志性产生混淆。全局指针也用的太多,虽然这样避免了传指针出错,但没有锻炼我们传参数的

23、能力。 (3) 代码编制中存在的问题和分析:程序中的模块函数定义的还不够好,有的模块比较大,看起来不太清晰明了,没有较强的通用性。 8.建议 课设题目有些描述不清楚但是可能的情况有很多,也有些有不合理的地方,建议老师能花点时间将课设题目中有些不合理的地方改正一下。时间安排上,感觉虽然面临考试,但是极强的锻炼了自己的能力,感觉比较好,每个人都充分考虑了考虑程序中的问题,对自己的编程能力的提高有好处。 9.编程体会 刚开始准备编代码时,先大致看了下老师给的题目,因为自己随着方面比较感兴趣吧,学的挺有意思,开始我知道难点在链表的建立那块,其他的没有感觉到吃力,虽然也会经常出现问题,但都是

24、自己马虎,或者是时间长了,没有考虑到的原因。当做链表那一块时,感觉压力陡增啊,我把自己输入的数据走了一圈又一圈,可是输出就是有问题,问了好多人都看不出来那里有毛病,后来老师给指出了一个关键地方,问题才解决。我现在想假如那个问题解决不了,我的课设肯定做不出来了。现在感觉挺幸运。做完课设学到了很多编程方面的技巧,比喻在编写程序时,不要将整个程序放在一起检查语法错误,那样非常难操作,可以保留主函数,然后将主体函数一个个的检查错误,这样便于错误的查找和改正。 10.程序源代码: #include #include #include

25、#include #include #include #include #define LEN sizeof typedef struct xibu { int num; char name[20]; int chengji; }XI; typedef struct xiangmu { int num; char name[20]; }MU; struct student { int xinum; ch

26、ar name[30]; int munum; int MC; int score; struct student * next; }; XI xi[5]={{1,"电信学院",0}, {2,"汽车学院",0},{3,"材工学院",0}, {4,"机械学院",0}, {5,"英语学院",0}}; MU mu[10]={{1,"100米"}, {2,"200米"},{3,"400米"},{4,"800米"},{5,"1500米"},{6,"跳高"},{7,"跳远"}, {8,"铅球"}, {9,"三级跳"},{10,"4x100接力"}}; int n=0;

27、 void welcome<>; //欢迎界面// void printtimu<>; //本题题目要求// int menu_select<>; //主菜单// void shuru<>; //输入获奖运动员信息// void shuchu<>; //按照比赛成绩从高到底输出系部和其比赛成绩// void xibu<>; //查询系部获奖情况// void xiangmu<>; //查询项目获奖情况// void TiShi<>; //提示题目所需数据// vo

28、id daoruxi<>; //导入获奖运动员成绩到系部// int panduan<>; //判断所输入信息是否有错误// void exit0<>; //退出// struct student *head=NULL,*p1,*p2,*p3;/*定义结构体指针head 为头指针p1 为输入数据缓存空间指针p2 为尾指针p3*/ /*运动员记录保存标志全局变量*/ int writeinfo_flag=0; /*主函数*/ int main<> { system<"color F2">; welcome<>; TiSh

29、i<>; for<;;> { switch> { case 1: system<"cls">; printtimu<>;break; case 2: system<"cls">; shuru<>;break; case 3: system<"cls">; shuchu<>;break; case 4: system<"cls">; xibu<>;break; case 5: system<"cls">; xiangmu<>;break; case 0: system<"cls">; exit0<>;r

30、eturn 0; default :{ getchar<>; printf<"\n 选择错误,请正确输入你的选择<0~5>,:\n">; printf<"\n 按任意键返回......\n">; getchar<>; getchar<>; system<"cls">; /*清屏*/ } } } return 0; } //定义数据// void TiShi<> { int i=0,m=0; printf<"\n\n\t 请按学校院系及奖项设置输入获奖人员,院系及奖

31、项设置如下\n\n">; printf<"\n\t\t\t编号 系部 \n">; while { printf<"\t\t\t %d %s\n",xi[i].num,xi[i].name>; i++; } printf<"\n\n\t\t\t编号 项目 \n">; while { printf<"\t\t\t %d %s\n",mu[m].num,mu[m].name>; m++; } printf<"\n\n数据已输出,按任意键进入系统...">; /*清屏

32、*/ getch<>; system<"cls">; } //欢迎界面// void welcome<> { printf<"\n\n\n\n\t\t***************************************************\n">; printf<"\t\t* * * * * * * * * * * * * * * * * * * * * * * * * *\n">; printf<"\t\t* * * * * * * * * * * * * * * * * * * * * * * * * *\n">; printf<"\t\t

33、* * \t\t\t\t\t\t* *\n">; printf<"\t\t* * \t\t\t\t\t\t* *\n">; printf<"\t\t* * \t 欢迎使用学校运动会管理系统! \t* *\n">; printf<"\t\t* * \t\t\t\t\t\t* *\n">; printf<"\t\t* * \t\t\t\t\t\t* *\n">; printf<"\t\t* * \t\t指导吴波老师\t\t* *\n">; printf<"\t\t* * \t\t\t\t\t\t* *\n">; printf<"\t\t* * \t\

34、t制 作 人:王松\t\t\t* *\n">; printf<"\t\t* * \t\t\t\t\t\t* *\n">; printf<"\t\t* * \t\t短号 : 619444\t\t* *\n">; printf<"\t\t* * \t\t\t\t\t\t* *\n">; printf<"\t\t* * \t\tQQ号 : 961358207\t\t* *\n">; printf<"\t\t* * \t\t\t\t\t\t* *\n">; printf<"\t\t* * * * * * * * * * * * * * * * * * * *

35、* * * * * *\n">; printf<"\t\t* * * * * * 请 按 任 意 键 进 入 系 统 * * * * * *\n">; printf<"\t\t***************************************************\n">; getch<>; system<"cls">; rewind; } //本题题目要求// void printtimu<> { printf<"\n题目描述\n">; printf<"\t 已知某学校运动会上有5个系部〔编号、名称〕和10个运动项目

36、,各项目\t\t名次取法有如下几种\n\n">; printf<"\t 取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名\t\t得分 1;\n">; printf<"\n\t\t\t 编写一程序,完成以下功能\n\n">; printf<"〔1〕 从键盘输入系部编号、运动员、运动项目编号、获取名次。需要判断\t\t系部编号是否存在、参赛项目是否存在、获取名次是否合法,同一系部的同一个\t\t人,不能在同一个项目中出现两次。\n">; printf<"〔2〕 按照比赛成绩从高到底输出系部和其比赛成绩\n">; printf<"〔

37、3〕 查询指定系部编号的获奖记录\n">; printf<"〔4〕 查询指定运动项目的获奖记录\n">; printf<"〔5〕 所有数据符合实际应用要求\n">; printf<"〔6〕 系统以菜单方式工作〔用键盘输入1~5之间的数来选择功能,其中6为退出〕\n">; rewind; printf<"\n\n\t\t\t题目已输出,按任意键进入系统...">; /*清屏*/ getch<>; system<"cls">; } //主菜单// int menu_select<> { int c; printf<"\

38、n\n\n\n">; printf<"\t\t\t┏━━━━━━━━━━━━━━━━━━┓\n">; printf<"\t\t\t┃*************菜单************** ┃\n">; printf<"\t\t\t┃ 1.查看本题题目 ┃\n">; printf<"\t\t\t┃ 2.输入获奖运动员信息 ┃\n">; printf<"\t\t\t┃ 3.按顺序输出系部和其比赛成绩 ┃\n">; printf<"\t\t\t┃ 4.查询指定系部编号的获奖记录

39、 ┃\n">; printf<"\t\t\t┃ 5.查询指定运动项目的获奖记录 ┃\n">; printf<"\t\t\t┃ 0.退出<任何情况下按Ctrl+C 退出程序┃\n">; printf<"\t\t\t┃ 请输入你的选择<0~4>: ┃\n">; printf<"\t\t\t┗━━━━━━━━━━━━━━━━━━┛">; printf<"\n\t\t\t我选择: ">; scanf<"%d",&c>; return c; } //输入获奖运动员信息// void shuru<> { in

40、t i=0; char a; if< writeinfo_flag==1> { getchar<>; printf<"\n\n\n\n\n\n\n\n\t\t运动员信息数据已经输入完成不能再输入,按任意键将返回:\n">; getch<>; system<"cls">; /*清屏*/ return; } head=malloc; /*开辟一个新单元*/ head->next=NULL; p1=head; do { n++; do {

41、 system<"cls">; printf<"\n\n\n\n\n\n\n\t请输入第%d个获奖运动员的系部编号、运动员、运动项目编号、获取名次\n",n>; fflush; scanf<"%d%s%d%d",&p1->xinum,p1->name,&p1->munum,&p1->MC>; whilexinum>5||p1->xinum<1||p1->munum>10||p1->munum<1||p1->MC<1||p1->MC>5> { printf<"您输入的信息不合法或者项目不存在,请检查后按任意键返回重新

42、输入\n">; getchar<>; getchar<>; system<"cls">; printf<"\n\n\n\n\n\n\n\t请输入第%d个获奖学生的系部编号、运动员、运动项目编号、获取名次\n",n>; fflush; scanf<"%d%s%d%d",&p1->xinum,p1->name,&p1->munum,&p1->MC>; } switchMC> { case 1: p1->score =7;break; case 2: p1->scor

43、e =5;break; case 3: p1->score =3;break; case 4: p1->score =2;break; case 5: p1->score =1;break; } if i=panduan<>; writeinfo_flag=1; /*设置保存记录标志*/ }while; printf<"\n\n\t\t请问您是否输入完毕,是〔Y〕,否〔N〕,请给出您的选择\n\n">; fflush; scanf

44、<"%c",&a>; fflush; if { system<"cls">; p2=malloc; /*开辟一个新单元*/ p1->next=p2; p3=p1; p1=p2; p1->next =NULL; } }while; system<"cls">; printf<"\n\n\n\n\n\n\t\t %d项信息输入完毕,按任意键返回......\n",n>; g

45、etch<>; system<"cls">; /*清屏*/ } //判断输入数据是否符合题意// int panduan<> { int d=0,m=1; p2=head; for<;mnext> { ifxinum==p2->xinum&&p1->munum==p2->munum&&strcmpname,p2->name>==0> d=1; if { printf<"\n\n\n\t您输入的数据中存在同一个人在同一个项目中有两种信息的情况,请任意

46、键返回并重新输入">; getchar<>; getchar<>; system<"cls">; /*清屏*/ } m++; } return d; } //导入获奖运动员成绩到系部// void daoruxi<> { int i,m=0; p2=head; while { for { ifxinum> xi[i-1].chengji+=p2->score; } p2=p2->next

47、; } } //按照比赛成绩从高到底输出系部和其比赛成绩// void shuchu<> { int i,j,m=0, temp; char a[20]; if< writeinfo_flag==0> { getchar<>; printf<"\n\n\n\n\n\n\n\n\t\t运动员信息数据库为空,不能显示,按任意键将返回:\n">; getchar<>; system<"cls">; /*清屏*/ return; } daoruxi<>; for { f

48、or if { temp=xi[j].chengji; strcpy; xi[j].chengji=xi[j+1].chengji; strcpy; xi[j+1].chengji=temp; strcpy; } } printf<"\n\n\n\n\n\n\t\t\t按照比赛成绩从高到底输出系部和其比赛

49、成绩\n\n">; printf<"\t\t\t\t系部 成绩\n">; while { printf<"\t\t\t\t%s %d\n",xi[m].name,xi[m].chengji>; m++; } printf<"\n\n\n\n\n\t\t\t各系部得分从高到低展示完毕,按任意键返回......\n">; getchar<>; getch<>; system<"cls">; /*清屏*/ } //查询系部获奖情况// void xibu<> { int i=0,d=0;

50、if< writeinfo_flag==0> { getchar<>; printf<"\n\n\n\n\n\n\n\n\t\t运动员信息数据库为空,不能显示,按任意键将返回:\n">; getch<>; system<"cls">; /*清屏*/ return; } printf<"\n\n\n\n\n\n\t\t\t请输入要查询的系部编号\n\n">; printf<"\t\t\t我选择 :">; fflush; scanf<"%d",&d>; if5> { system<

51、"cls">; printf<"\n\n\n\n\n\n\t\t\t编号为%d的项系部不存在,按任意键将返回:\n",d>; getch<>; system<"cls">; /*清屏*/ return; } p2=head; printf<"\n\n\n\n\t\t\t\t%s获奖记录为\n\n",xi[d-1].name>; printf<"\t\t\t运动员 参加项目 名次\n">; while { ifxinum> { printf<"\t\t\t %s %s

52、 %d\n",p2->name,mu[p2->munum-1].name,p2->MC>; i++; } p2=p2->next; } if printf<"\n\n\n\n\t\t\t%s获奖情况展示完毕,按任意键返回......\n",xi[d-1].name>; else printf<"\n\n\n\n\t\t\t%s没有运动员参赛,按任意键返回......\n",xi[d-1].name>; getch<>; system<"cls">; /*清屏*/ } //查询项目获奖情况/

53、/ void xiangmu<> { int i=0,d=0; if< writeinfo_flag==0> { getchar<>; printf<"\n\n\n\n\n\n\n\n\t\t 运动员信息数据库为空,不能显示,按任意键将返回:\n">; getch<>; system<"cls">; /*清屏*/ return; } printf<"\n\n\n\n\n\n\t\t\t请输入要查询的项目编号\n\n">; printf<"\t\t\t我选择 :">; fflush; scanf<

54、"%d",&d>; if10> { system<"cls">; printf<"\n\n\n\n\n\n\t\t\t编号为%d的项目不存在,按任意键将返回:\n",d>; getch<>; system<"cls">; /*清屏*/ return; } p2=head; printf<"\n\n\n\t\t\t\t%s 获奖记录为\n\n",mu[d-1].name>; printf<"\t\t\t运动员 所在系部 名次\n\n">; while { i++; if

55、==p2->munum> printf<"\t\t\t%s %s %d\n",p2->name,xi[p2->xinum-1].name,p1->MC>; p2=p2->next; } if printf<"\n\n\n\n\t\t\t%s 获奖情况展示完毕,按任意键返回......\n",mu[d-1].name>; else printf<"\n\n\n\n\t\t\t%s 没有运动员参加,按任意键返回......\n",mu[d-1].name>;; getch<>; system<"cls">;

56、/*清屏*/ } void exit0<> { printf<"\n\n\n\n\n\n\t\t\t 您的使用,再见!\n\n\n\n\n\n\n\n\n\t\t\t">; p1=head; while< p1!=NULL> p1=p1->next; }11.参考文献 [1] 廖湖声.C程序设计案例教程.人民邮电,2010.9 [2] 何钦铭.C语言程序设计.高等教育,2009.5. [3] 谭浩强.C程序设计〔第2、3、4版〕.清华大学,2000.1. [4] 《C语言程序设计教程》,路明著,邮电大学.

57、 12.用户使用手册 通过书号查询〔书号唯一,存在时只会显示一本〕 通过书名查询〔显示全部同书名的书〕 图书信息查询 通过作者查询〔显示全部同作者的书〕 退出图书查询〔返回到主菜单〕 列出图书信息〔图书信息整体浏览〕〔显示全部书信息〕 通过书号删除〔书号唯一,一次只能删除一本〕 通过书名删除〔可一次删除多本〕 图书信息删除 一,功能与性能通过作者删除〔可一次删除多本〕 退出图书删除〔返回到主菜单〕 保存修改记录〔图书信息变动后可保存〕 新建图书信息〔附加功能〕 修改密码〔附加功能〕 退出程序〔退出时会提醒是否保

58、存〕 二,使用说明: (1) 运行程序以后,系统会显示该系统名称及开发者,此时按任意键可进入系统,进入系统后,当文件当打开失败时,会给出提示,如果打开成功系统会自动导入书库信息,并显示导入的信息条数及显示欢迎界面。此时按任意键进入系统。 (2) 进入系统后,按相应功能前面的代号实现相应功能,当输入的代号错误时,按任意键可重新输入。 (3) 执行代码1,进入图书信息查询。此时输入删除方式前面相应代号,执行相应的查询方式。当查询的图书不存在时,系统会给出提示,当查询的图书存在时,系统就显示查询结果。执行一次查询完毕后,照提示,按回车键系统又会返回到删除方式菜单,此时可按0〔推出查询〕选项退

59、出查询。当操作代号输入错误时,可重新输入。 (4) 执行代号2,进入购书界面。此时系统会显示收费标准,并提示你输入你要购买的图书书号,当你不知道你所要购买的图书书号时,可随意输入一些字符,然会按回车键,系统会提示你要购买的图书不存在,是否调用查询功能,通过其他方式获取书号,此时可按Y\y进入到查询界面,你可以根据你知道的图书信息进行查询。当有你所要购买的图书时,此时可按回车键,看着查询结果重新输入书号,购买后,系统会显示你购买的图书信息〔书号,书名,作者,售价,图书本数,和书的总费〕,若没有你要的图书,可按0结束。当执行一次购买后系统就会提示是否继续够买图书,可按任意键继续购买,按n\N结束

60、购书,结束购书后,系统会显示你所购书的本数、总费、收费标准以及需要支付的金额。此时系统会提示你是否确认购买,按任意键确认,按N\n撤销购买。 (5) 执行代号3,显示整个书库的图书信息 (6) 执行代号4,进入输入密码界面默认密码:123456,可有4次输密码的机会,当4次密码都错误时,系统会返回主菜单,密码正确进入删除界面。此时输入删除方式前面相应代号,执行相应的删除方式。当删除的的图书不存在或没有售完时,系统会给出提示是否显示已售完的全部图书,可按y显示〔此时可看着列表信息进行删除,此时删除方式固定为你先前选择的删除方式,当没有已售完的图书时系统会给出提示〕,按n\N不显示。当删除的图

61、书存在时,系统就显示删除完毕,提示你是否需要继续删除,可按0〔退出删除〕选项退出删除。 (7) 执行代号5,保存信息。当信息变动过时显示"保存完毕",当重复保存或书库信息为变动过时显示"图书信息以保存过"。 (8) 执行代号6,新建书库信息〔附加功能〕。进入图书新建页面,一次最多新建50条,在新建过程中,若操作失误,将需要的新建条数输多了,可按[Esc]退出到主菜单。在刚进入时若不想新建也可按[Esc]退出到主菜单。新建要求:书号:10个数字或字符组成 书名:小于20个汉字或40个字符 小于10个汉字或20个字符 书价:必须正数 存在状态:必须正整数,若提示:"该书号已经有了或书号长度<1

62、~10个字符或数字>输入有误,不能新建!!!",说明书号长度有误,或书号已经存在。此时可重新输入。 (9) 执行代号7,修改密码,默认密码:123456,有4次输密码机会。 (10) 执行代号0,退出程序,若书库信息变动过,会提示是否保存修改记录,可按任意键保存,按N\n不保存。若书库信息未变动,直接退出。 三,注意事项: (1) 保存图书信息的文件必须和程序文件放在同一根目录下。 (2) 文件中保存的信息格式要正确〔书号 书名 作者 售价 存在状态〕,正确格式 列:1123458666 论语 孔子 15.00 5 (3) 新建过程中要严格按照提示格式输入新建信息,书的售价必

63、须是正实数,书的存在状态必须是正整数。 (4) 在退出程序时要注意保存修改记录,如果记录修改错误,不必惊慌,在退出程序时记得按N\n,不保存修改记录。 四,常见系统错误维护: (1) 进入系统,显示文件打开失败:检查文件是否和程序代码放在同一根目录下,若是,检查文件名是否为w.txt<文件名字符全部为小写>。 (2) 进入系统后,执行1〔查询图书信息〕、2〔购买图书〕、3〔列出图书信息〕、4〔删除图书信息〕时,显示"当前书库没书!!! 按任意键返回":检查刚进入系统时的提示,看是否显示"文件打开失败"或检查导入的图书信息是否为0项。 (3) 若显示的图书信息出现乱码或与实际不相符:检查文件中的容是否严格按照要求写入的〔一条信息不同数据之间必须要有空格符隔开〕,注意新建图书信息时,要严格按照要求提示新建。数据格式和类型要正确。 (4) 文件中显示的容与系统中不一样:检查是否在进入系统后修改了文件容,系统容是进入系统时从文件中读取的,可退出系统再重新进入系统,并关闭文件,重新打开。 〔5〕修改了记录后,文件中容没变:检查在退出系统时,是否保存了修改记录。 :王启峰 日期:20XX6月22日

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

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!