C语言课程设计
- 格式:doc
- 大小:971.00 KB
- 文档页数:36
c语言毕业设计课程设计一、课程目标知识目标:1. 学生能够掌握C语言的基本语法和程序结构,理解指针、数组、函数等核心概念。
2. 学生能够运用C语言进行数据结构的设计与实现,如链表、树、图等。
3. 学生能够运用C语言编写具有一定复杂度的程序,解决实际问题。
技能目标:1. 学生能够独立设计并完成一个小型的C语言项目,包括需求分析、设计、编码、测试等过程。
2. 学生能够运用所学知识,分析并解决项目中遇到的问题,提高编程能力和问题解决能力。
3. 学生能够通过课程学习,掌握C语言项目开发的基本方法和技巧,为毕业设计做好准备。
情感态度价值观目标:1. 学生在学习过程中,培养良好的编程习惯,注重代码规范和注释,提高代码质量。
2. 学生能够主动探究问题,发挥团队协作精神,共同解决项目中的难题。
3. 学生通过课程学习,认识到编程在现实生活中的应用价值,激发对计算机科学的兴趣和热情。
课程性质:本课程为毕业设计前的专业实践课程,旨在帮助学生巩固C语言知识,提高编程能力,为毕业设计奠定基础。
学生特点:学生已具备一定的C语言基础,具有一定的编程能力和问题解决能力。
教学要求:教师需结合实际项目案例,引导学生主动学习,注重理论与实践相结合,培养学生的编程兴趣和动手能力。
在教学过程中,关注学生的个体差异,给予个性化指导,确保学生能够达到课程目标。
通过课程学习,使学生具备独立完成毕业设计的能力。
二、教学内容1. C语言基础语法复习:包括数据类型、运算符、控制语句、函数等基本概念,参考教材相关章节,巩固学生基础知识。
2. 数据结构实现:教授学生运用C语言实现常见的数据结构,如链表、栈、队列、二叉树等,结合教材相关内容,讲解数据结构在实际项目中的应用。
3. 指针与数组:深入讲解指针的概念及其运用,数组与指针的关系,提高学生运用指针解决问题的能力。
4. 文件操作:介绍C语言文件操作的基本方法,包括文件的打开、读写、关闭等,结合实际案例,让学生掌握文件操作技巧。
c语言程序设计课程
C语言程序设计课程是计算机科学与技术专业中非常重要的一门课程。
本文将从课程内容、学习方式、实践操作等多个方面进行介绍。
一、课程内容
C语言程序设计课程主要涉及C语言的基本语法、数据类型、运算符、流程控制语句、函数、数组、指针等内容。
在学习过程中,还需要掌握算法设计、数据结构等基础知识,并且进行课程设计和实践操作。
二、学习方式
C语言程序设计课程的学习方式一般包括理论授课和实践操作两部分。
理论授课主要是讲解C语言的基本语法和相关知识点,而实践操作则是通过编写C语言程序来实现对所学知识的应用和理解。
三、实践操作
实践操作是C语言程序设计课程中非常重要的一部分。
在实践操作过程中,一般需要完成一些小项目或者课程设计。
这些小项目或者课程设计有助于学生深入理解所学知识,并且提高了学生编程的能力和实践经验。
四、课程设计
C语言程序设计课程的课程设计是一个非常重要的环节。
在课程设计过程中,学生需要根据所学知识,自主设计并编写一个小型程序
或者项目。
通过课程设计,学生可以更好地掌握C语言的运用能力,并且提高自己的编程水平。
五、总结
C语言程序设计课程是计算机科学与技术专业中非常重要的一门课程。
通过本文的介绍,我们可以了解到C语言程序设计课程的内容、学习方式、实践操作等方面。
在学习C语言程序设计课程的过程中,需要注重理论学习和实践操作,并且要注重课程设计的实践经验。
通过不断的学习和实践,我们可以更好地掌握C语言的编程技巧,并且提高自己的编程水平。
c语言课程设计比赛评分一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构、算法和编程思想,培养学生具备良好的编程习惯和逻辑思维能力,能够运用C语言解决实际问题。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、关键字、数据类型、运算符、控制结构、函数、数组、指针、结构体等基本概念。
2.技能目标:学生能够熟练使用C语言进行程序设计,具备编写和调试程序的能力,能够运用C语言解决实际问题。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生的自信心和自主学习能力,培养学生的团队合作意识和解决问题的能力。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个部分:1.C语言的基本语法和关键字。
2.数据类型、运算符和控制结构。
3.函数、数组和指针。
4.结构体和其他数据结构。
5.算法和编程思想。
教学内容将按照教材的章节顺序进行讲解和练习,每个章节都会有相应的课后作业和编程练习,以巩固学生的学习成果。
三、教学方法为了达到教学目标,本课程将采用多种教学方法进行教学,包括:1.讲授法:教师通过讲解和示范,向学生传授C语言的基本知识和编程技巧。
2.讨论法:学生通过小组讨论和课堂讨论,加深对编程问题和算法理解,培养团队合作意识。
3.案例分析法:教师通过分析实际案例,引导学生运用C语言解决实际问题,培养学生的解决问题的能力。
4.实验法:学生通过上机实验,动手编写和调试程序,巩固所学知识,提高编程能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将使用以下教学资源:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习材料。
2.参考书:提供相关的参考书籍,帮助学生深入理解C语言的原理和应用。
3.多媒体资料:制作课件、教学视频等多媒体资料,丰富教学手段,提高学生的学习兴趣。
4.实验设备:提供计算机实验室,让学生能够进行上机实验,提高编程能力。
五、教学评估本课程的教学评估将采用多元化的评估方式,以全面、客观地评价学生的学习成果。
c语言课程设计案例精选
案例一:学生成绩管理系统
设计一个学生成绩管理系统,能够实现以下功能:
1. 输入学生信息(学号、姓名、性别、年龄、班级);
2. 输入学生的各科成绩(语文、数学、英语、物理、化学、生物);
3. 计算学生的总分和平均分,并按照总分从高到低排序;
4. 查询学生信息和成绩;
5. 修改学生信息和成绩;
6. 删除学生信息和成绩。
该系统采用C语言编写,使用结构体存储学生信息和成绩,使用文件存储数据。
用户可以通过菜单选择需要的功能,系统会根据用户的选择进行相应的操作。
案例二:简单的计算器
设计一个简单的计算器,能够实现加、减、乘、除四种基本运算,以及求平方、开方、求倒数等高级运算。
该计算器采用C语言编写,使用函数实现各种运算,用户可以通过菜单选择需要的运算,输入相应的数字进行计算。
在输入数字时,程序需要进行错误处理,防止用户输入非法字符或除数为0的情况。
案例三:图书管理系统
设计一个图书管理系统,能够实现以下功能:
1. 输入图书信息(书名、作者、出版社、出版日期、价格、库存数量);
2. 查询图书信息;
3. 借阅图书(需要输入借阅者的信息);
4. 归还图书;
5. 修改图书信息;
6. 删除图书信息。
该系统采用C语言编写,使用结构体存储图书信息,使用文件存储数据。
用户可以通过菜单选择需要的功能,系统会根据用户的选择进行相应的操作。
在借阅图书和归还图书时,程序需要进行库存数量的判断,防止借阅数量超过库存数量的情况。
c语言期末课程设计一、课程目标知识目标:1. 学生能掌握C语言的基础语法,包括变量定义、数据类型、运算符、控制结构等。
2. 学生能理解并能运用函数进行模块化编程,掌握函数的定义、调用、参数传递和返回值。
3. 学生能理解数组、字符串、指针的概念,并能在程序中正确使用。
4. 学生能掌握C语言中的文件操作,实现数据的读写。
技能目标:1. 学生能够运用C语言编写解决实际问题的程序,具备初步的程序设计能力。
2. 学生能够阅读和分析C语言代码,理解并优化程序结构。
3. 学生能够使用调试工具,调试并修复程序中的错误。
情感态度价值观目标:1. 学生通过课程学习,培养对编程的兴趣,提高逻辑思维能力和解决问题的能力。
2. 学生在团队协作中,学会沟通交流,培养合作精神和分享意识。
3. 学生能够认识到编程在现代社会的重要性,树立正确的价值观,为将来的学习和工作打下基础。
课程性质:本课程为C语言期末课程设计,旨在巩固和拓展学生在本学期所学C语言知识,培养实际编程能力。
学生特点:学生已具备一定的C语言基础,具有较强的学习能力和动手能力,但对复杂问题解决和程序优化方面有待提高。
教学要求:教师应结合学生特点,注重实践操作,引导学生运用所学知识解决实际问题,提高编程能力和逻辑思维能力。
在教学过程中,关注学生的个体差异,给予个性化指导,确保课程目标的达成。
通过课程设计,使学生在知识、技能和情感态度价值观方面得到全面提升。
二、教学内容1. C语言基础语法复习:变量定义、数据类型、运算符、控制结构(选择、循环)。
教材章节:第1章-第4章2. 函数与模块化编程:函数定义、调用、参数传递、返回值;递归函数。
教材章节:第5章3. 数组、字符串与指针:一维数组、二维数组、字符串操作、指针概念及使用。
教材章节:第6章、第7章4. 文件操作:文件打开、关闭、读写操作;文件指针定位。
教材章节:第10章5. 程序设计实践:结合所学知识,设计并实现一个综合性的程序项目。
c语言课程设计是什么一、教学目标本课程旨在通过C语言的学习,让学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识,培养学生编程思维和解决问题的能力。
同时,通过编程实践,使学生能够运用C语言编写简单的程序,提高学生的动手能力和创新能力。
在教学过程中,注重培养学生的自主学习能力、团队协作能力和沟通表达能力,使学生在学习C语言的同时,也能够提升自身的综合素质。
二、教学内容教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。
具体包括:1.C语言的基本语法和编程规范;2.数据类型、变量和常量的使用;3.运算符和表达式的应用;4.控制结构(条件语句、循环语句等)的编程;5.函数的定义和调用;6.数组、指针和字符串的基本操作;7.结构体、共用体和枚举类型的使用;8.文件操作和错误处理。
三、教学方法为了提高教学效果,将采用多种教学方法相结合的方式进行教学。
主要包括:1.讲授法:通过讲解C语言的基本概念和编程方法,使学生掌握C语言的基本知识;2.案例分析法:通过分析典型程序案例,使学生理解编程思路和方法;3.实验法:安排上机实验,让学生动手编写程序,巩固所学知识;4.小组讨论法:学生进行小组讨论,培养学生的团队协作能力和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,将准备以下教学资源:1.教材:《C程序设计语言》(K&R);2.参考书:《C Primer Plus》、《C和指针》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络环境等;5.在线资源:编程、论坛、开源项目等。
通过以上教学资源的支持,为学生提供丰富的学习体验,提高学生的学习效果。
五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
评估内容包括平时表现、作业、考试等。
具体评估方式如下:1.平时表现:通过课堂参与、提问、小组讨论等环节,评估学生的学习态度和参与程度;2.作业:布置适量的编程作业,评估学生的编程能力和实践能力;3.考试:包括期中和期末考试,主要评估学生对C语言知识的掌握程度和编程能力;4.项目:小组项目,让学生结合所学知识解决实际问题,评估学生的综合应用能力。
c语言界面课程设计一、教学目标本课程的教学目标是使学生掌握C语言界面编程的基础知识和技能,能够运用C语言进行简单的界面设计和程序开发。
具体目标如下:1.知识目标:•掌握C语言的基本语法和数据类型。
•理解函数的定义和调用。
•学习常用的界面库函数和图形库函数。
2.技能目标:•能够编写简单的C语言界面程序。
•能够使用界面库和图形库进行界面设计和程序开发。
•能够调试和修复程序中的错误。
3.情感态度价值观目标:•培养学生对计算机编程的兴趣和热情。
•培养学生解决问题的能力和创新思维。
•培养学生的团队合作意识和沟通能力。
二、教学内容本课程的教学内容主要包括C语言的基本语法和数据类型、函数的定义和调用、界面库函数和图形库函数的使用。
具体内容如下:1.C语言的基本语法和数据类型:•变量和常量的定义和使用。
•数据类型的分类和特点。
•运算符的分类和用法。
2.函数的定义和调用:•函数的定义和声明。
•函数的参数传递和返回值。
•函数的调用和调用方式。
3.界面库函数和图形库函数的使用:•界面库函数的分类和功能。
•图形库函数的分类和功能。
•示例程序的分析和编写。
三、教学方法本课程的教学方法包括讲授法、讨论法、案例分析法和实验法。
具体方法如下:1.讲授法:通过教师的讲解和演示,向学生传授C语言界面编程的基本知识和技能。
2.讨论法:通过小组讨论和问题解答,促进学生之间的交流和合作,培养学生的解决问题的能力和创新思维。
3.案例分析法:通过分析真实的案例程序,使学生更好地理解和掌握C语言界面编程的方法和技巧。
4.实验法:通过编写和调试程序,使学生亲身体验和掌握C语言界面编程的实践技能。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
具体资源如下:1.教材:选用合适的C语言界面编程教材,为学生提供系统的学习资料。
2.参考书:提供相关的参考书籍,为学生提供更多的学习资源。
3.多媒体资料:制作课件和教学视频,为学生提供直观的学习材料。
c语言程序课程设计棋盘一、课程目标知识目标:1. 让学生掌握C语言中的数组知识,并能运用数组创建和操作棋盘。
2. 理解和掌握循环结构在棋盘程序中的应用,如嵌套循环用于遍历棋盘。
3. 学习使用函数对棋盘程序进行模块化设计,理解模块间的关系和调用方式。
技能目标:4. 能够编写简单的C语言程序,实现基本的棋盘游戏逻辑,例如棋子的移动、位置的判断等。
5. 培养学生的逻辑思维能力,通过编程解决棋盘游戏中遇到的问题。
6. 提高学生的问题分析能力,使其能够通过算法设计处理棋盘游戏中的特定问题。
情感态度价值观目标:7. 培养学生对编程和算法设计的兴趣,激发学生在信息技术领域的探究欲望。
8. 强调团队协作的重要性,通过小组合作完成棋盘程序的设计,培养学生的沟通和团队协作能力。
9. 培养学生的创新意识,鼓励学生提出和实现独特的棋盘游戏规则和功能。
课程性质:本课程设计以实践性为主,结合理论知识的讲解,注重培养学生的实际操作能力和编程思维。
学生特点:考虑到学生为高中年级,具备一定的逻辑思维能力和问题解决能力,但编程经验可能有限。
教学要求:通过棋盘程序的设计,将复杂问题分解为若干个小问题,引导学生循序渐进地掌握C语言编程和应用,同时注重激发学生的学习兴趣和创新能力。
教学过程中应注重个体差异,提供个性化的指导和反馈,确保每位学生都能实现既定的学习目标。
二、教学内容本节教学内容围绕C语言程序设计,结合棋盘游戏项目,主要包括以下部分:1. C语言基础知识回顾:数组的使用、数据类型、变量声明与赋值。
- 教材章节:第3章 数组和第5章 数据类型与表达式。
2. 控制结构:循环结构的使用,重点讲解嵌套循环在棋盘遍历中的应用。
- 教材章节:第4章 控制结构。
3. 函数与模块化设计:介绍如何将棋盘程序拆分为函数模块,实现代码复用和模块化。
- 教材章节:第6章 函数。
4. 棋盘程序设计:a. 棋盘的初始化:创建二维数组表示棋盘,并进行初始化。
课程设计酒店管理系统C 语言一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握酒店管理系统的基本概念、原理和结构,了解C语言在酒店管理中的应用。
技能目标要求学生能够使用C语言编写简单的酒店管理程序,培养学生的编程能力和问题解决能力。
情感态度价值观目标要求学生认识到酒店管理系统在实际工作中的重要性,培养学生的责任感和使命感。
通过分析课程性质、学生特点和教学要求,明确课程目标,将目标分解为具体的学习成果。
学生将能够:1.描述酒店管理系统的基本概念和原理。
2.解释C语言在酒店管理中的应用。
3.使用C语言编写简单的酒店管理程序。
4.分析酒店管理问题并提出解决方案。
5.认识到酒店管理系统在实际工作中的重要性,并培养责任感和使命感。
二、教学内容根据课程目标,选择和教学内容,确保内容的科学性和系统性。
本课程的教学大纲如下:1.酒店管理系统的基本概念和原理:介绍酒店管理系统的定义、功能和结构,理解酒店管理系统的运作方式。
2.C语言在酒店管理中的应用:学习C语言的基本语法和编程技巧,了解C语言在酒店管理程序开发中的应用。
3.酒店管理程序的编写:通过案例分析和实验操作,学习使用C语言编写简单的酒店管理程序,掌握编程方法和问题解决技巧。
4.酒店管理问题的解决:分析实际酒店管理问题,提出解决方案,培养学生的批判性思维和问题解决能力。
5.情感态度价值观的培养:通过讨论和案例分析,引导学生认识到酒店管理系统在实际工作中的重要性,培养学生的责任感和使命感。
三、教学方法选择合适的教学方法,如讲授法、讨论法、案例分析法、实验法等,以激发学生的学习兴趣和主动性。
1.讲授法:通过教师的讲解和演示,向学生传授酒店管理系统的基本概念和原理,以及C语言的编程技巧。
2.讨论法:学生进行小组讨论,鼓励学生提出问题、分享观点,促进学生之间的交流和合作。
3.案例分析法:通过分析实际酒店管理案例,引导学生运用所学知识解决问题,培养学生的批判性思维和问题解决能力。
【C语言程序设计课程思政大纲】一、课程简介1.1 课程名称:C语言程序设计1.2 课程性质:专业必修课1.3 学时安排:64学时1.4 学分:3学分1.5 课程概况:C语言程序设计是计算机科学与技术专业的基础课程,旨在培养学生系统掌握C语言程序设计的理论和实际操作能力,为其日后的计算机编程和软件开发奠定坚实的基础。
二、课程目标2.1 知识与能力目标:使学生能够理解并掌握C语言程序设计的基本原理和方法,熟练运用C语言进行程序设计与编程。
2.2 德育与人文目标:培养学生严谨、务实、创新的学术态度,增强责任感和团队合作精神。
2.3 智育与学科目标:提高学生的计算机程序设计能力,为后续学习更高级别编程语言和软件开发打下基础。
三、课程内容3.1 C语言程序设计概述3.1.1 计算机程序设计基础3.1.2 C语言概述与发展历程3.2 C语言程序的基本结构3.2.1 程序的基本框架3.2.2 数据类型与变量3.2.3 运算符与表达式3.3 控制结构3.3.1 顺序结构3.3.2 分支结构3.3.3 循环结构3.4 函数与数组3.4.1 函数的定义与调用3.4.2 函数参数与返回值3.4.3 数组的定义与使用3.5 指针与内存管理3.5.1 指针的概念与使用3.5.2 内存管理与动态内存分配3.6 结构体与文件操作3.6.1 结构体的定义与使用3.6.2 文件的打开与关闭3.6.3 文件数据的读写操作3.7 综合设计与实践3.7.1 大作业设计与实现3.7.2 实际问题的解决与应用四、教学方法4.1 理论教学与实践相结合4.2 个性化辅导与小组合作4.3 多媒体技术与互动教学4.4 课程设计与综合实践五、教学要求5.1 理论通联实际,培养学生的动手能力与创新思维5.2 重视实践操作,注重实际问题的解决能力5.3 注重培养学生的团队合作与交流能力5.4 营造良好的学习氛围,激发学生对计算机编程的兴趣与热情六、考核方式6.1 平时成绩:包括作业完成情况、实验报告、课堂表现等6.2 期中考试:涵盖课程的基本知识点和基本题型6.3 期末考试:综合性考察学生的综合能力和编程实践能力6.4 课程设计:包括小组设计与个人设计两种形式,要求有一定的实际应用性和创新性七、教材与参考书目7.1 主教材:《C程序设计语言》(第二版)著者:Brian W. Kernighan, Dennis Ritchie7.2 参考书目:《C和指针》著者:Kenneth Reek《C Primer Plus》著者: Stephen Prata《C语言程序设计》著者:谭浩强八、总结与展望C语言程序设计课程思政大纲对学生的专业知识和思想品质都有明确的要求。
C语言课程设计班级:姓名:学号:指导教师:设计时间:评语:成绩目录1.基本要求题2.1.1 问题描述 (3)1.2 源程序 (3)1.3 流程图 (6)1.4 运行结果 (7)2.程序改错题2.1 源代码 (7)2.2 错误分析 (7)2.3 流程图 (8)2.4 运行结果 (8)3. 综合题3.1.题目——成绩管理系统 (8)3.2程序分工 (9)3.3设计思路 (9)3.4 程序源代码 (10)3.5 运行结果......................3.6调试报告.......................4. 课程设计的心得体会.............1.基本要求题1.1问题描述用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一字母(如’a’变成’b’……….’z’变成’a’。
其他字符不变)。
用#define命令来控制是否要译成密码。
例如:#define change 1 ,则输出密码。
若#define change 0,则不译成密码,按原码输出。
1.2源程序#include <stdio.h>#define CHANGE 1int main(){char c[100];char *p;printf("input string\n");scanf("%s", &c);p = c;if(1 == CHANGE){while(*p != '\0'){if(*p >='a' && *p <='y'||*p >='A' && *p<='Y') *p += 1;else if(*p =='z'||*p=='Z')*p -= 25;printf("%c", *p);p++;}}elseprintf("%s",c);printf("\n");return 0;}1.3流程图开始char c[100],*p; #edfine CHANGE 1输出”input string ”input stringp=c1=CHANGE*p!=’\0’原样输出数组c[100]*p 为除z 和Z 外的字母*p=*p+1输出*pP++*p 为Z 或z 原样输出*p=*p-25结束输出换行符YYYNNN图1 流程图1.4运行结果图2 运行结果2.程序改错题2.1源代码#include <conio.h>#include <stdio.h>double fun (int m){double y=1.0;int i;for (i=2;i<m;i++)y-=1/(i*i);return(y);}main (){int n=5;clrscr();printf("\nRhe result is %1f\n",fun(n));}2.2错误分析此程序意在借助于函数fun,求t=1-1/2*2-1/3*3-…-1/m*m。
错误之处在:露掉了i=m,应把i< m改为i <=m;1的数据类型不搭配,应把1改为1.0;没有定义clrscr,应将clrscr定义为void型。
2.3流程图开始1=y2=iy-1/i*i=yi+1=ii<=5输出y结束图3 t=1-1/2*2-1/3*3-…-1/m*m的流程图2.4 运行结果图4 t=1-1/2*2-1/3*3-…-1/m*m的运行结果3.综合题3.1题目——班级成绩管理系统3.1.1问题描述:对一个有N个学生的班级,每个学生有M门课程。
系统实现对班级成绩的录入,显示,排序,保存等操作的管理。
3.1.2 功能要求:1. 本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号,姓名,M门课程的名称。
2.本系统显示这样的菜单:a. 成绩录入b. 成绩显示c. 成绩保存d. 成绩排序e. 成绩修改(要求先输入密码)f. 成绩统计(1)显示每门课程成绩最高学生的级本信息(2)显示每门课成绩的平均成绩(3)显示超过某门课程平均成绩的学生人数3.执行一个具体功能后,程序将重新显示菜单。
4.将学生成绩保存到文件中。
3.1.3 算法提示:1. 数据结构:结构体类型数组2. 数据库结构:该系统的基本数据库如表1所示。
3.1.4 测试数据:学生人数N=10课程们数M=4课程名:数学,语文,英语,政治3.2程序分工:由李凯魏芳华,李丽,庞军飞,王国龙共同完成。
3.3设计思路3.3.1 思路定义结构体数组,定义结构体成员num(学号),name(姓名),math (数学),chinese(语文),English(英语),politics(政治),sum(总分),来实现成员的引用。
并且通过函数调用以及swich语句,来分别实现成绩的录入,显示,保存,排序,修改与统计的的选择的功能。
主函数:通过外层用do—while语句,内层用switch—case语句二者嵌套实现多次选则和循环。
录入功能函数:通过for循环语句分别对结构体变量进行赋值。
显示功能函数:通过for循环语句将录入信息输出。
保存功能函数:通过文件指针将数据保存到所要求的文件中。
排序功能函数:通过运用排冒泡排序法,对成员进行总分由高到底排序。
修改功能函数:先进行密码验证,若正确,才能进行修改,否则推出修改界面。
进入后,用动do—while控制进行多次循环修改,修改时,用比较学号的方法,找到该同学,对该同学的成绩进行修改。
统计功能函数:该函数分为三个部分,第一,每门课程的最高成绩;第二,平均成绩;第三,超过平均成绩的人数,调用函数为do—while和switch—case 语句来实现函数的调用,来实现该函数功能。
统计每门课程的最高成绩功能的函数:通过“大擂台法”用for循环语句来找出最高的成绩,同时输出该同学成绩。
求平均成绩函数:通过总分和sum/科目数量来实现。
求超过平均分的人数:通过for循环让他们每个人的该门课程与平均分比较,从而得出结果并输出。
3.3.2 流程图图3.31 主函数图3.32 录入功能函数图3.34 保存功能函数图3.35 排序功能函数图3.36 统计功能函数图3.37平均分功能函数图3.38超过平均分功能函数图3.39 最高分成绩函数3.4 程序源代码#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#define N 10/*定义结构体数组*/struct student{int num;char name[15];float math,chinese,English,politics,sum;}stu[N],temp;float max1,max2,max3,max4; /*定义全局变量*/ double sum1,sum2,sum3,sum4; /*定义全局变量*/ double average1,average2,average3,average4; /*定义全局变量*/int main() /*主函数*/{void enter(); /*成绩录入函数*/void show(); /*成绩显示函数*/void store(); /*成绩保存函数*/void rank(); /*成绩排序函数*/void modity(); /*成绩修改函数*/void stat(); /*成绩统计函数*/char ch;do{printf("\t#############################################\n");printf("\t#############################################\n");printf("\t# 班级成绩管理系统#\n");printf("\n\t#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#^#\n"); printf("\t# 1:成绩录入#\n");printf("\t# 2:成绩显示#\n");printf("\t# 3:成绩保存#\n");printf("\t# 4:成绩排序#\n");printf("\t# 5:成绩修改#\n");printf("\t# 6:成绩统计#\n");printf("\t# 0:退出系统#\n");printf("\t#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#\n"); printf("\n\t\t请选择0~6的操作:");ch=getchar();switch(ch){case '1':enter();break;case '2':show();break;case '3':store();break;case '4':rank();break;case '5':modity();break;case '6':stat();break;case '0':break;}}while((ch=getchar())!='0');getch();return 0;}void enter() /*成绩录入函数*/{int i;for(i=0;i<N;i++)/*录入成绩存入数组*/{printf("输入学号姓名数学成绩语文成绩英语成绩政治成绩:\n");scanf("%d%s%f%f%f%f",&stu[i].num,stu[i].name,&stu[i].math,&stu[i].chinese,&stu [i].English,&stu[i].politics);}for(i=0;i<N;i++)stu[i].sum=stu[i].math+stu[i].chinese+stu[i].English+stu[i].politics;}void show() /*成绩显示函数*/{int i;printf("学号姓名数学成绩语文成绩英语成绩政治成绩总分\n"); for(i=0;i<N;i++)printf("%d%7s%10.2f%10.2f%10.2f%10.2f%10.2f\n",stu[i].num,stu[i].name,stu[i].m ath,stu[i].chinese,stu[i].English,stu[i].politics,stu[i].sum);}void store() /*成绩保存函数*/{int i;FILE *fp; /*初始化文件指针*/fp=fopen("e:\\chengji.txt","w+");fprintf(fp,"学号姓名数学成绩语文成绩英语成绩政治成绩总分\n");for(i=0;i<N;i++)fprintf(fp,"%d%12.2s%12.2f%12.2f%12.2f%12.2f%12.2f\n",stu[i].num,stu[i].name,st u[i].math,stu[i].chinese,stu[i].English,stu[i].politics,stu[i].sum);printf("\n\n*******************恭喜您,成绩保存成功!*******************\n\n");}void rank() /*成绩排序函数*/{int i,j; /*通过冒泡排序法进行排序*/for(j=1;j<N;j++)for(i=0;i<N-j;i++)if(stu[i].sum<stu[i+1].sum){temp=stu[i];stu[i]=stu[i+1];stu[i+1]=temp;}printf("按总分从高到低排序为:\n");printf("学号姓名数学成绩语文成绩英语成绩政治成绩总分\n"); for(i=0;i<N;i++)printf("%d%7.2s%10.2f%10.2f%10.2f%10.2f%10.2f\n",stu[i].num,stu[i].name,stu[i]. math,stu[i].chinese,stu[i].English,stu[i].politics,stu[i].sum);printf("\n");}void modity() /*成绩修改函数*/{int i,j,flag=1;char k;char str[10];int st[10];for(j=0;j<=2;j++){printf("\t\t$$密码验证$$\t\n");printf("!!!!!!!三次输入机会!!!!!!:\n");for(i=0;(str[i]=getch())!='\r';i++) printf("*");printf("\n");str[i]='\0';if(strcmp(str,"helmut")!=0)printf("密码输入有误\n");else break;}if (j==3)return;printf("密码正确,登陆成功");printf("\n\n\n");printf(" 进入学生修改系统\n");do{printf("请输入要修改的学号:");scanf("%d",&st[10]);for(i=0;i<N;i++){if(st[10]==stu[i].num){printf("ok!\n");printf("输出修改前的信息:\n");printf("学号姓名数学语文英语政治\n");printf("%d %s%7.2f%7.2f%7.2f%7.2f",stu[i].num,stu[i].name,stu[i].math,stu[i].chi nese,stu[i].English,stu[i].politics);printf("\n输入修改的分数:\n");printf("数学语文英语政治\n");scanf("%f%f%f%f",&stu[i].math,&stu[i].chinese,&stu[i].English,&stu[i].politics);printf("修改完成\n");break;}}printf ("输入y继续进行操作,输入n退出该系统");scanf("%c",&k);if(k=='n'||k=='N')flag=0;}while (flag==1);}void stat() /*成绩统计*/{void max(); /*自定义显示每门课程成绩最高学生的基本信息函数*/ void average(); /*自定义显示每门课程的平均成绩函数*/void num(); /*自定义显示超过某门课程平均成绩的学生人数函数*/ int n;do{printf("1:显示每门课程成绩最高的学生的基本信息\n");printf("2:显示每门课程的平均成绩\n");printf("3:显示超过某门课程平均成绩的学生人数\n");printf("4:退出");printf("输入选项代码:");scanf("%d",&n);switch(n){case 1:max();break;case 2:average();break;case 3:num();break;case 4:break;}}while(n!=4);}void max() /*每科成绩最高学生信息*/{int i,max1=0,max2=0,max3=0,max4=0;for(i=1;i<N;i++) /*数学成绩最高学生信息*/{if(stu[i].math>stu[max1].math)max1=i;}printf("数学最高成绩的学生基本信息:\n");printf("学号姓名数学成绩语文成绩英语成绩政治成绩总分\n"); printf("%d%7.2s%10.2f%10.2f%10.2f%10.2f%10.2f\n",stu[max1].num,stu[max1].na me,stu[max1].math,stu[max1].chinese,stu[max1].English,stu[max1].politics,stu[max1 ].sum);for(i=1;i<N;i++) /*语文成绩最高学生信息*/{if(stu[i].chinese>stu[max2].chinese)max2=i;}printf("语文最高成绩的学生基本信息:\n");printf("学号姓名数学成绩语文成绩英语成绩政治成绩总分\n"); printf("%d%7.2s%10.2f%10.2f%10.2f%10.2f%10.2f\n",stu[max2].num,stu[max2].na me,stu[max2].math,stu[max2].chinese,stu[max2].English,stu[max2].politics,stu[max2 ].sum);for(i=1;i<N;i++) /*英语成绩最高学生信息*/{if(stu[i].English>stu[max3].English)max3=i;}printf("英语最高成绩的学生基本信息:\n");printf("学号姓名数学成绩语文成绩英语成绩政治成绩总分\n"); printf("%d%7.2s%10.2f%10.2f%10.2f%10.2f%10.2f\n",stu[max3].num,stu[max3].na me,stu[max3].math,stu[max3].chinese,stu[max3].English,stu[max3].politics,stu[max3 ].sum);for(i=1;i<N;i++) /*政治成绩最高学生信息*/{if(stu[i].politics>stu[max4].politics)max4=i;}printf("政治最高成绩的学生基本信息:\n");printf("学号姓名数学成绩语文成绩英语成绩政治成绩总分\n");printf("%d%7.2s%10.2f%10.2f%10.2f%10.2f%10.2f\n",stu[max4].num,stu[max4].na me,stu[max4].math,stu[max4].chinese,stu[max4].English,stu[max4].politics,stu[max4 ].sum);}void average() /*平均成绩*/{int i;sum1=0;for(i=0;i<N;i++) /*数学平均成绩*/{sum1=sum1+stu[i].math;}average1=sum1/N;printf("数学平均成绩为:%.1f\n",average1);sum2=0; /*语文平均成绩*/for(i=0;i<N;i++){sum2=sum2+stu[i].chinese;}average2=sum2/N;printf("语文平均成绩为:%.1f\n",average2);sum3=0; /*英语平均成绩*/for(i=0;i<N;i++){sum3=sum3+stu[i].English;}average3=sum3/N;printf("英语平均成绩为:%.1f\n",average3);sum4=0; /*政治平均成绩*/for(i=0;i<N;i++){sum4=sum4+stu[i].politics;}average4=sum4/N;printf("政治平均成绩为:%.1f\n",average4);}void num() /*超过某门课平均成绩人数*/ {int num1,num2,num3,num4;int i,count1,count2,count3,count4;count1=0;for(i=0;i<N;i++) /*超过数学平均成绩人数*/ {if(stu[i].math>average1)count1++;}printf("超过数学平均成绩的学生人数:%d\n",count1);count2=0; /*超过语文平均成绩人数*/ for(i=0;i<N;i++){if(stu[i].chinese>average2)count2++;}printf("超过语文平均成绩的学生人数:%d\n",count2);count3=0; /*超过英语平均成绩人数*/ for(i=0;i<N;i++){if(stu[i].English>average3)count3++;}printf("超过英语平均成绩的学生人数:%d\n",count3);count4=0; /*超过政治平均成绩人数*/ for(i=0;i<N;i++){if(stu[i].politics>average4)count4++;}printf("超过政治平均成绩的学生人数:%d\n",count4);}3.5运行结果图3.5.1 初始界面截图图3.5.2 成绩录入截图图3.5.3 成绩显示选项截图图3.5.4 成绩显示截图图3.5.5 成绩总分从高到低排序截图图3.5.6 学生修改系统截图图3.5.7 每门课学生最高成绩信息截图图3.5.8 每门课程平均分及超过平均分学生人数截图3.5.9 退出系统截图3.6调试报告3.6.1 主要问题及分析:a.由于题目较复杂,编写过程中有一些步骤省略了。