c语言程序设计报告

说明: ???

课 程 设 计 报 告

课程名称       C语言程序设计         

课题名称      运动会分数统计系统     

专    业     机械设计及其自动化     

班    级          1185班             

学    号       201113090526           

姓    名          谭信                

指导教师          王颖                

20##622

湖南工程学院

课 程 设 计 任 务 书

课程名称   C语言程序设计    

课    题   运动会分数统计系统  

专业班级       机械设计1185     

学生姓名          谭信           

学    号       201113090526     

指导老师          王颖           

审    批          王颖          

任务书下达日期   2012  年 6  月 1  日

任务完成日期  20## 年 6  月 22  日

前 言

现代科学飞速发展,世界也不断的变化,人类的生活随着科技的发展也发生着惊天动地的变化。作为新时代的大学生,我们应该不断努力学习科学文化知识,以适应社会的发展要求,以现代化的科学知识为祖国做贡献。而C语言作为一种计算机语言,无疑是我们将来工作不可缺少的一门技能,所以我们应该认真学好C语言。但只是课本上的知识是不够的,我们应该将从课本上学到的理论知识应用到实践中,通过不断的实践,在实践中发现错误解决错误,并不断创新,最后能熟练的运用所学的知识,充分掌握这种工具。就现有知识水平、经验来看,对我来说,本程序的算法设计上已经是最精简的了。C语言知识博大精深,有必要对C语言的专著进行研究学习,多阅读别人的程序代码、多动手实践操作与设计,这样便对程序算法精简改进提供了可能。想学的更深更透彻的话就必须进一步掌握运用C进行程序设计的能力;进一步理解和运用面向过程程序设计的思想和方法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;学会利用互联网查找相关的知识并学习;学海之路何其宽广,有必要让我们孜孜不倦的求索下去。

目  录

绪 论............................................1

第一章     需求分析

1.1   程序的功能及要求............................5

1.2   系统的性能要求..............................5

1.3   测试数据....................................6

第二章     概要设计

2.1   结构体......................................6

2.2   主程序(main)..............................6

2.3   模块的功能..................................6

2.4   程序模块机之间的调用关系....................7

第三章     详细设计

3.1   宏定义......................................8

3.2   数据类型定义................................8

3.3   函数之间的调用关系图........................8

3.4  算法设计 ....................................9

第四章   调试分析

4.1   不足之处....................................10

4.2   错误规范....................................10

4.3   算法的时空分析..............................10

4.4   存在的问题..................................10

第五章    测试结果................................11

第六章    用户使用手册

6.1   运行环境....................................12

6.2   用户界面....................................12

6.3   操作过程....................................13

第七章    参考文献................................14

第八章    设计体会................................15

第九章    附录....................................17

课程设计评分表....................................29

绪 论

运动会分数统计系统是一个方便管理各项分数标准的一个程序,有了这个程序,可以吧每一个同学的信息及成绩都保留下来,为评比成绩和得优提供方便,程序的顺利及简便运行时现在科学不可缺少的一部分,有了程序的帮助,我们做任何事都能事半功倍,提高效率,节省时间。

根据任务书的综合要求,本系统的开发主要完成以下功能和性能。

(1)                     学生成绩查询系统,成绩录入、增加、删除、修改,数据查询,排序显示构成。

(2)                     按学生总分及学校编号,分为有男女组,有团体组,有前三名和前五名之分。

(3)                     按项目编号查询即奇偶性取得前三或前五名的学校或者编号来查询所得总分

(4)                     另外还涉及包括系统的功能分析、系统的功能模块设计、程序流程图或结构框图、逻辑结构设计,数据库中的表、视图等各功能板块。

目的

全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。

二、设计要求

掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。

1.   设计正确,方案合理。

2.   界面友好,使用方便。

3.   程序精炼,结构清晰。

4.   设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。

5.   上机演示。

6.   按学号顺序选课题号,并在规定的时间内独自完成相关课题的C源程序编写、调整和运行。源程序及编译生成各文件均保存在软盘中;

7.   按本任务书的要求,按附录的要求编写《课程设计报告》(Word文档格式)。并用A4的复印纸打印并装订;  

8.         在20##年6月24日之前,请各班学习委员收齐课程设计报告和源程序软盘交王颖老师 ,联系电话:8883238

三、进度安排

第一周  星期四:  课题讲解,查阅资料

第二周 星期一:   总体设计,详细设计

星期二:  编程,上机调试、修改程序

星期三:  上机调试、完善程序

星期四:  上机调试、完善程序

星期五:  答辩

星期六-星期天:撰写课程设计报告

一、问题描述:

参加运动会的n个学校编号为l~n。比赛分成m个男子项目和w个女子项目,项目编号分别为l~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。设计一个统计程序按名次产生各种成绩单、得分报表。

二、基本要求:

1.产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次、成绩、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分;均按名次排序。

2.比赛项目既要有径赛,又要有田赛。

三、测试数据:

对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。

四、实现提示:

1.数据结构:线性表

2.数据库结构:下面四张表构成该系统的基本数据库,全部输出报表由系统根据基本表自动生成。

表 1-1

   

表 1-2

 

3. 可以假设n≤20,m≤30,w≤20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并输入运动员编号、学校编号和成绩等。

五、选作内容:

允许用户指定某项目采取其他名次取法。

比如例图法,结构图系法,树状法,等等。

每个人的思维都是有所不同的,程序的设计故也是千差万别,有简单与复杂之分。编号的不同也是选取方法不同的标准之一,运用数组和指针我觉得是比较实用的,对于各种数据的组合来说。所以,只要程序符合,方法不一。

第一章需求分析

1. 程序的功能及要求

参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1~m,女子m+1~m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。(m<=20,n<=20)

1) 可以输入各个项目的前三名或前五名的成绩;

2) 能统计各学校总分;
        3) 可以按学校编号、学校总分、男女团体总分排序输出;
        4) 可以按学校编号查询学校某个项目的情况;

5) 可以按项目编号查询即奇偶性取得前三或前五名的学校。

根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序来实现设计课程内容中的全部功能;设计主控模块程序.对给出的程序源代码要给出各部分的详细注释.自己根据能力及需要添加相应功能模块,增强模拟系统功能。包括系统的功能分析、系统的功能模块设计、程序流程图或结构框图、逻辑结构设计,数据库中的表、视图(如果使用)、索引的结构和定义、触发器、存储过程、课程设计体会。

2. 系统性能要求:

a. 系统安全、可靠;

b. 功能齐全;

c. 操作方便、界面友好;

d. 易于维护和扩充。

3.测试数据

1)首先进入成绩录入界面,先输入学校编号1,再输入学校1各个项目成绩0或1(‘0’表示没获得该项目的该名次,‘1’表示获得了该项目的该名次);

然后再输入第二个学校编号2,再输入成绩;当输入其他的学校编号和成绩会提示错误输入,重新输入。

       2)然后进入总目录,输入 :1 统计各学校总分并输出;

       3)输入:2 按学校编号排序输出;

       4)输入:3 按学校总分排序输出;

       5)输入:4 按男团体总分排序输出;

       6)输入: 5  按女团体总分排序输出;

       7) 输入:6 按学校编号查询学校某个项目情况;

       8)输入:7 按项目编号查询取得名次的学校;

       9)输入:0 退出系统;

       10)输入其他数据会提示错误输入,重新输入。

第二章 概要设计

     1. 结构体

运动项目

{   项目编号 ;名次;};

学校

{   学校编号;项目;团体总分;男团体总分;女团体总分;};

2. 主程序(main)

      包括登陆欢迎程序,分数录入程序,查询程序,退出程序

3. 系统功能模块

学生成绩查询系统有:成绩录入、增加、删除、修改,数据查询,排序显示构成。

4. 程序模块机之间的调用关系

      流程图文本框: 统计各学校总分,文本框: 按学校编号排序,文本框: 按学校总分排序,文本框: 按女团体总分排序,文本框: 按学校编号查询学校某个项目情况查询学校某个项目情况,文本框: 按男团体总分排序,文本框: 按项目编号查询取得名次的学校,文本框: 退出系统


图1

第三章 详细设计

1、宏定义:

#define N 2

#define bm 4

#define gm 3

2、数据类型定义

     (1)  运动项目的定义:

    struct match

{

   int matchnum;

   int rank[3];

}mat[bm+gm];

(2) 学校的定义:

       struct school

{

   int schoolnum;

   struct match mat[bm+gm];

   int total;

   int boytotal;

   int girltotal;

}sch[N];

3、函数之间的调用关系

表 1-3

 

                                                                                                                                               

4、算法设计

  主要算法的设计思想:

本程序主要是使用顺序表来实现操作。一个运动会包括运动项目和参加运动会的学校。因此构造顺序表match,school。为了操作的方便,设计了一个总目录,选择相应序号进入各个操作,并有错误提示,每完成一个操作程序会提示选择返回目录或退出程序,对于总分的排序使用了冒泡排序。为了使整个程序界面看起来更加惬意,又添加了背景和字体颜色设置的程序语句。每个操作前都有操作指南,易于使用。

第四章 调试分析

 1、不足之处。

由于刚开始程序比较简单,虽能运行,但处理错误的能力很低,后来经过反复的添加修改,使程序能处理了错误,提高了健壮性。课程设计中我遇到了很多的问题,刚刚开始的时候问题特别多。看起来简单的句子往往也会出错,比如刚开始的时候用for语句时,总会报错;说用的不对。但检查了好几遍也看不出问题,问了旁边的同学他也不知道怎么回事,最后去问老师,才知道原来我的for语句中用的是“,”号,而事实上应该用“;”号。开始做的题目,问题简单思路清晰,但我总在语句上出错,我只好对着书本一个一个检查我的语句,了解它的用法。慢慢的各种语句运用使就不再出错了。但是到了后来题目渐渐变难,有时都没有思路,这让我只好慢慢想,通过和同学的讨论和对相关例题的解读才慢慢有了思路。再通过不断的修改实验,最终得到了正确结果。

2、错误规范。

开始编时由于不太规范,编译出错后由于程序长,很难找到错误,后来规范了格式,错误容易找到了,以后编程要规范。

3、算法的时空分析。

线性表使用的是顺序结构,各种算法的时间复杂度相对比较合理

4、存在的问题。

本程序相对来说比较容易看明白,其中涉及到的一些函数相对来说比较容易。通过调试,运行,基本上达到了要求,但还存在一些缺点。如:不够人性化等。

第五章 测试结果

<1>数据输入(输入成绩如图)

图1- 1

输入:

请输入学校编号:1

项目编号      1      2      3      4      5      6      7

第<1>名:       1       1       1       1       1       1       0

第<2>名:       1       1       1       1       1       0       0

第<3>名:       1       1       1       1       0       0       0

请输入学校编号: 2

项目编号         1       2       3       4       5       6        7

第<1>名:        1       1       1       0       0       1        0

第<2>名:        0       0       1       0       1       1        1

第<3>名:        0       1       0       1       1       1        0

输入成绩后出现总目录(下图);

图1- 2

(1)输入:1

  输出:

图1- 3

(2)输入:1 返回总目录,再输入:2

输出:

图1- 4

(3)输入:1 返回总目录,再输入:3

输出:

图1- 5

(4)输入:1 返回总目录,再输入:4

输出:

图1- 6

(5)输入:1 返回总目录,再输入:5

输出:

图1- 7

(6)输入:1 返回总目录,再输入:6,学校编号输入:1,项目编号输入:5

输出:

图1- 8

(7)输入:2,返回上一级,再输入学校编号:2,项目编号:1

输出:

图1- 9

(8)输入:1,返回总目录;再输入:7,输入项目编号:7

输出:

图1 10-

(9)如果输入提示外的数字,例如输入:4

则输出错误提示:

图1- 11

(10)输入:0

 输出:

图1- 12

第六章 用户使用手册

     1、运行环境

       Windows,VC++6.0

     2、用户界面

图1- 13

图1- 14

3、操作过程

  (1)用户进入运动会分数统计系统程序欢迎界面

  (2)录入成绩,先输入要输入的学校编号,1或2;再输入对应学校的1-7项目的成绩(成绩用0或1:‘0’表示没获得该项目的该名次,‘1’表示获得了该项目的该名次)当成绩录入错误时会有错误提示。

  (3)进入总目录,按提示,输入0--7中的一个数;

      输入:0  则推出系统;

      输入:1  统计各学校总分并输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表示返回总目录);

      输入:2  按学校编号排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表示返回总目录);

      输入:3  按学校总分排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表示返回总目录);

      输入:4 按男团体总分排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表示返回总目录);

      输入:5 按女团体总分排序输出;然后选择‘0’或‘1’(‘0’表示退出系统,‘1’表示返回总目录);

     输入:6 按学校编号查询学校某个项目编号;选择学校编号1或2;然后选择项目编号1--7;输出项目成绩;然后选择0或1或2(‘0’表示退出系统,‘1’表示返回总目录,‘2’表示返回上一级);

     输入:7 按项目编号查询取得名次的学校;选择项目编号1--7;输出成绩;然后选择0或1或2(‘0’表示退出系统,‘1’表示返回总目录,‘2’表示返回上一级);

第七章 参考文献

(1)《C程序设计》 (第三版) 作者:谭浩强 清华大学出版社

(2)《数据结构》 (C语言版) 作者:严蔚敏,吴伟民  出版社:清华大学出版社

(3)《数据结构题集》 (C语言版)作者:严蔚敏,吴伟民 出版社:清华大学出版社

(4) 《c语言程序设计》 (c语言版) 作者:陈世清 出版社:浙江大学出版社

(5)《C语言程序设计教程》 作者:谭浩强等 出版社:高等教育出版社

(6)《C程序设计》 作者:谭浩强 出版社:北京清华大学出版社

(7)《C语言程序设计》 作者:郭浩志 出版社:北京邮电大学出版社

(8)《C陷阱与缺陷》 作者:谭浩强、张基温 出版社:人民邮电出版社

(9)《C程序设计经典教程》 作者:谭浩强 出版社:清华大学出版社

第八章 设计体会

通过这次为期一周的课程设计,正确的写出一个程序需要平时不断地努力,不断地实践,从实践中了解经常犯的错误。我们不能知识着手于书本上的理论知识,还应该不断实验,有些东西是书本上没有的,只能通过时间学习到。但同时我们也不能离开书本上的理论,理论可以使我们更加了解它的工作原理。更加准确的把握各种算法和语言。有了理论的基础,我们在实践上也就更容易上手。所以我们应该理论联系实践,学好C语言,提高编程能力。

本次课程设计检验了我的实践能力,感觉自己还有许多东西要学习,并不仅限于课本上的知识,实践才是真理,在学习中实践,实践中去学习。学习的路很长。再有要多问,几个人共同讨论会有意想不到的效果。

其实这些通过最近的课程设计觉得最重要一点就是:我们一定要自己动手,这样才能真正的学到东西。书本知识固然重要,但我们更要学会将书本知识应用到实际中才会发现错误,也才能改进,才能达到学习的最终目的。

而且我也总结出了一点点的经验如下:

1、要对系统的功能和要求做出详细的分析,并合理分解任务。
    2、把分解出来的子任务,做给一个相对独立的模块。
    3、在设计一个模块之前,要简单构想一下总界面的显视情况。
    4、针对构想出来的界面进行程序的编写。

如此我对C语言的编程实践更有所认识。在遇到程序调试不通过时,会通过缩小范围的分析来锁定问题所在。通过这次实验,熟悉了从自然语言转换成伪代码再转换为流程图的过程。在程序中设定合适的全局变量,可以简化程序的编写难度。运用函数可以减少编写时的代码量,也使程序条理清晰。通过本次C语言上机实验,我对这个介于人类与非人类之间的计算机编程语言有了一定的体验。随着实验的成功与报告的完成,有点微微的成就感使人难忘。伴随着学习的深入,我发现高深的东西还有很多很多,等待着我自己去挖掘。对C语言的学习,我会加倍努力。

这次课程设计虽然只有短短的两周时间,但此过程中我得到的收获却没有时间的界限。在这期间,我有刚开始对于设计的茫然,也有设计过程中面对不熟悉的知识的焦急,更有面对程序运行出错时的惆怅,同时还有当自己把设计的思路一点点想清楚,把程序代码上出现的错误一个个改正确,把程序成功运行出来的那份难以表述的喜悦!成功的背后有过一丝丝彷徨,但拨开乌云的天空通常看到的是美丽的彩虹!

另外对于我精神上的收获确实不少,学习上也受益匪浅。

通过这次“运动会分数统计系统”课题的设计,通过这个阶段的实践,使我对C语言进行了深入的学习。同时设计的过程中,为了实现预期的功能,我利用了图书馆内相关的资料进行参考,也使我懂得一些初次学习过程中不太熟悉的知识。在实践中,我利用图书馆和网络,查找了相关的信息。也明确在以后的学习过程中,我应该多利用这些有效的途径来充实自己的知识点,学习得更深入,“善假于物”也是一种有效的学习方法。在程序调试的过程中,遇到了好几个自己没能及时解决的问题,我选择的是请教老师和同学,在你们的指导下,我成功调试出程序。学习的过程除了需要自己要独立思考问题之外,还应该要有与他人的互动。我想这也就是集体的智慧,团结的力量!在此过程中,我也发现了许多自己的不足。在我刚开始设计的时候,头脑里没有一点清晰的思路,这就与平时自己看得少,练得少有关系。所以我觉得学习任何一门语言还是需要多看书,多编写程序,特别是当自己突然有一丝灵感的时候,最好记录下来,甚至把它想出来,想明白。实践的过程中,要明确自己写这些程序是为了达到什么目的,实践后,要考虑这样编写是不是最好的,还能不能做其它方法来做,在编写这个程序中遇到了什么样的错误,为什么会遇到,以后应该怎样避免。这样的学习,就会更深入,学习得更好!

虽然我的课程设计师存在许多的问题,究其原因还是因为自己平时没有认真听老师讲课,但是我还是希望老师能够白忙中抽空看看我的课程设计的报告,我将非常感谢

第九章 附录

1、源程序

#include<stdio.h>

#include<process.h>

#define N 2    //学校个数

#define bm 4   //男团体个数

#define gm 3    //女团体个数

void xuanze();

void xunhuan();

struct match      //项目

{

         int matchnum;

         int rank[3];

}mat[bm+gm];

struct school     //学校

{

         int schoolnum;

         struct match mat[bm+gm];

         int total;

         int boytotal;

         int girltotal;

}sch[N];

void huanyingni()     /*开始界面,欢迎使用*/

{

         printf("\n\n          湖南工程应用技术学院机设1185班   谭信\n\n\n");

printf("\t***^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^***\n\n");

printf("                     欢迎使用运动会分数统计系统\n\n");

printf("\t***^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^ ^_^***\n\n ");

}

void input()   //输入成绩

{

         int i,j,k;

         for(i=0;i<N;i++)     //初始化分数

         {

                   sch[i].total=0;

                   sch[i].boytotal=0;

                   sch[i].girltotal=0;

                   for(k=0;k<bm+gm;k++)

                   {

                            sch[i].mat[k].rank[0]=0;

                            sch[i].mat[k].rank[1]=0;

                            sch[i].mat[k].rank[2]=0;

                            sch[i].mat[k].matchnum=k+1;

                   }

         }

         printf("              *********输入成绩**********\n");

    printf("###输入说明:\n");

     printf(" 1.学校编号为1--%d; 项目编号为1--%d (1-%d为男子项目,%d-%d为女子项目).\n",N,bm+gm,bm,bm+1,bm+gm);

     printf(" 2. 成绩只能是'0'或'1'\n('0'表示没获得该项目的该名次,'1'表示获得了该项目的该名次.以'Tab'键前进。)\n",N);

for(i=0;i<N;i++)

{

           printf("******请输入学校编号: ");

loop3:scanf("%d",&sch[i].schoolnum);

          if(sch[i].schoolnum<0||sch[i].schoolnum>N)

          {

                    printf("输入错误(只能是1-%d)请重新输入:",N);

                    goto loop3;

          }

       printf("项目编号       ");

        for(k=0;k<bm+gm;k++)

        printf("%d         ",sch[i].mat[k].matchnum);

        printf("\n");

      for(j=0;j<3;j++)

           {          

loop: printf("第(%d)名:",j+1);

           for(k=0;k<bm+gm;k++)

            scanf("        %d",&sch[i].mat[k].rank[j]);

           for(k=0;k<bm+gm;k++)

                      if(sch[i].mat[k].rank[j]!=0&&sch[i].mat[k].rank[j]!=1)

                      {

                      printf("输入错误,请重新输入,成绩只能是'0'或'1'\n");

                      goto loop;

                      }

            

           }

   }

 }

void totaljisuan()

{

         int i,k,b;

     for(i=0;i<N;i++)

         for(k=0,b=0;k<bm+gm;k++)

         { 

                        b=sch[i].mat[k].rank[0]*5+sch[i].mat[k].rank[1]*3+sch[i].mat[k].rank[2]*2;

                       sch[i].total=sch[i].total+b;

                            if(k<bm)

                                sch[i].boytotal=sch[i].boytotal+b;

                            if(k>=bm)

                                     sch[i].girltotal=sch[i].girltotal+b;

         }

}

void mulu(){

printf("\n\n                                 **系统目录**\n");   //目录

printf("\t\t ************************************\n");

printf("\t\t*   1.统计各学校总分                 *\t \n");

printf("\t\t*   2.按学校编号排序输出             *\t \n");

printf("\t\t*   3.按学校总分排序输出             *\t \n");

printf("\t\t*   4.按男团体总分排序输出           *\t \n");

printf("\t\t*   5.按女团体总分排序输出           *\t \n");

printf("\t\t*   6.按学校编号查询学校某个项目情况 *\t \n");

printf("\t\t*   7.按项目编号查询取得名次的学校   *\t \n");

printf("\t\t*   0.退出                           *\t \n");

printf("\t\t ************************************\n");

}

void funct0()                       //退出系统

{

printf("\n\t\t*******    谢谢使用!   *******\n");

printf("\n\t\t*******    谢谢使用!   *******\n");

exit(0);

}

void funct1()      //统计各学校总分

{   int i,q;

         printf("              **********统计各学校总分**********\n");

    printf("     **学校编号**\t\t\t\t**总分**\n");

    for(i=0;i<N;i++)

    printf("\t%d\t\t\t\t%d\n",sch[i].schoolnum,sch[i].total);

         printf("\n");printf("\n");

                   printf("##########    0:退出;1:返回目录。\n");

                   printf("****请选择: ");

loop2:scanf("%d",&q);

                   if(q==0) funct0();

                   if(q==1) xunhuan();

        else {

                            printf("输入错误(只能是0或1),请重新输入:");

        goto loop2;

                   }

}

void funct2()                 //按学校编号排序

{

         struct school sch1;

         int i,j,q;

         for(j=0;j<N-1;j++)

         for(i=0;i<N-j-1;i++)

                   if(sch[i].schoolnum>sch[i+1].schoolnum)

                   {

                            sch1=sch[i];

                            sch[i]=sch[i+1];

                            sch[i+1]=sch1;

                   }

   

         printf("              **********按学校编号排序**********\n");    

         printf("     **学校编号**\t\t\t\t**总分**\n");

    for(i=0;i<N;i++)

    printf("\t%d\t\t\t\t%d\n",sch[i].schoolnum,sch[i].total);

         printf("\n");printf("\n");

                   printf("##########   0:退出;1:返回目录。\n");

                   printf("****请选择: ");

loop2:       scanf("%d",&q);

                   if(q==0) funct0();

                   if(q==1) xunhuan();

         else {

                            printf("输入错误(只能是0或1),请重新输入:");

        goto loop2;

                   }

 }

void funct3()               //按学校总分排序

{

    struct school sch1;

         int i,j,q;

         for(j=0;j<N-1;j++)

         for(i=0;i<N-j-1;i++)

                   if(sch[i].total<sch[i+1].total)

                   {

                            sch1=sch[i];

                            sch[i]=sch[i+1];

                            sch[i+1]=sch1;

                   }

    printf("              **********按学校总分排序**********\n");    

         printf("     **学校编号**\t\t\t\t**总分**\n");

    for(i=0;i<N;i++)

    printf("\t%d\t\t\t\t%d\n",sch[i].schoolnum,sch[i].total);

    printf("\n");printf("\n");

                   printf("##########   0:退出;1:返回目录。\n");

                   printf("****请选择: ");

loop2:       scanf("%d",&q);

                   if(q==0) funct0();

                   if(q==1) xunhuan();

        else {

                            printf("输入错误(只能是0或1),请重新输入:");

            goto loop2;

                   }

}

void funct4()                    //按男团体总分排序

{

    struct school sch1;

         int i,j,q;

         for(j=0;j<N-1;j++)

         for(i=0;i<N-j-1;i++)

                   if(sch[i].boytotal<sch[i+1].boytotal)

                   {

                            sch1=sch[i];

                            sch[i]=sch[i+1];

                            sch[i+1]=sch1;

                   }

    printf("              **********按男团体总分排序**********\n");

         printf("       **学校编号**\t\t**总分**\n");

    for(i=0;i<N;i++)

    printf("\t%d\t\t\t\t%d\n",sch[i].schoolnum,sch[i].boytotal);

      printf("\n");printf("\n");

                   printf("##########   0:退出;1:返回目录。\n");

                   printf("****请选择: ");

loop2:       scanf("%d",&q);

                   if(q==0) funct0();

                   if(q==1) xunhuan();

                   else {

                            printf("输入错误(只能是0或1),请重新输入:");

            goto loop2;

                   }

}

void funct5()               //按女团体总分排序

{

     struct school sch1;

         int i,j,q;

         for(j=0;j<N-1;j++)

         for(i=0;i<N-j-1;i++)

                   if(sch[i].girltotal<sch[i+1].girltotal)

                   {

                            sch1=sch[i];

                            sch[i]=sch[i+1];

                            sch[i+1]=sch1;

                   }

    printf("              **********按女团体总分排序**********\n");

         printf("       **学校编号**\t\t**总分**\n");

    for(i=0;i<N;i++)

    printf("\t%d\t\t\t\t%d\n",sch[i].schoolnum,sch[i].girltotal);

     printf("\n");printf("\n");

                   printf("##########  0:退出;1:返回目录。\n");

                   printf("****请选择: ");

loop2:scanf("%d",&q);

                   if(q==0) funct0();

                   if(q==1) xunhuan();

                   else {

                            printf("输入错误(只能是0或1),请重新输入:");

            goto loop2;

                   }

}

void funct6()             //按学校编号查询学校某个项目情况

{

         int i,n,m,q;

         printf("     **********按学校编号查询学校某个项目情况**********\n");

loop1:       printf("*******请输入所要查询的学校编号: ");

         scanf("%d",&n);

         if(n!=1&&n!=2)

         {

              printf("!!!!!输入错误,学校编号只能是'0'或'1',请重新输入!!!!\n");

                    goto loop1;

         }

         printf("*******请输入所要查询的项目编号: ");

         scanf("%d",&m);

         for(i=0;i<N;i++)

                   if(n==sch[i].schoolnum)

                   {  

                            printf("学校编号: %d                  项目编号: %d\n",n,m);

                            if(sch[i].mat[m].rank[0]==1)

                                     printf("第一名(获得)   ");

            if(sch[i].mat[m].rank[1]==1)

                                     printf("第二名(获得)   ");

            if(sch[i].mat[m].rank[2]==1)

                                     printf("第三名(获得)   ");

                            else

                                     printf("本校该项目未进入前三名");

                   }

                   printf("\n");printf("\n");

                   printf("##########  0:退出;1:返回目录;2:返回上一级。\n");

                   printf("****请选择: ");

loop2:       scanf("%d",&q);

                   if(q==1) xunhuan();

                   if(q==0) funct0();

                   if(q==2) goto loop1;

             else {

                            printf("输入错误(只能是0或1或2),请重新输入:");

            goto loop2;

                   }

}

void funct7()              //按项目编号查询取得名次的学校

{  

         int i,t,q;

         printf("     **********按项目编号查询取得名次的学校**********\n");

loop1: printf("*****请输入所要查询的项目编号: ") ;

         scanf("%d",&t);

         printf("项目编号:%d\n",t) ;

         for(i=0;i<N;i++)

         {

         if(sch[i].mat[t-1].rank[0]==1)

                   printf("获得第一名的学校编号是:%d \n",sch[i].schoolnum);

         if(sch[i].mat[t-1].rank[1]==1)

                   printf("获得第二名的学校编号是:%d \n",sch[i].schoolnum);

         if(sch[i].mat[t-1].rank[2]==1)

                   printf("获得第三名的学校编号是:%d \n",sch[i].schoolnum);

         }

         printf("\n");printf("\n");

                   printf("##########  0:退出;1:返回目录;2:返回上一级。\n");

                   printf("****请选择: ");

loop2:       scanf("%d",&q);

                   if(q==1) xunhuan();

                   if(q==0) funct0();

                   if(q==2) goto loop1;

             else {

                            printf("输入错误(只能是0或1或2),请重新输入:");

            goto loop2;

                   }

}

void xunhuan()            //返回目录

{

                   int t;

     mulu();

   printf("\t\t请选择(输入0--7)序号:\t");

   scanf("%d",&t);

   while(t!=0&&t!=1&&t!=2&&t!=3&&t!=4&&t!=5&&t!=6&&t!=7)

   {

   printf("输入有误,请重新选择:");

   scanf("%d",&t);

   }

switch(t)

{

case 0:funct0();break;

case 1:funct1();break;

case 2:funct2();break;

case 3:funct3();break;

case 4:funct4();break;

case 5:funct5();break;

case 6:funct6();break;

case 7:funct7();break;

}

}

        

void main()

{

    system("Color 1e");

         system("Color 1e");

         system("Color 2a");

         system("Color 2b");

         system("Color 3c");

         system("Color 3e");

         system("Color 4d");

         system("Color 4e");

         system("Color 5f");

         system("Color 5e");

         system("Color 6a");

         system("Color 6e");

         system("Color 7b");

         system("Color 7e");

         system("Color 1e");

         system("Color 1e");//改变背景,前景色

    huanyingni();

        

    input();

    totaljisuan();

    xunhuan();

}

课程设计评分表

                   课程名称:C语言程序设计

                                       教师签名:            

                                       日    期:            

相关推荐