C语言课程设计例样
c语言设计计算器课程设计
c语言设计计算器课程设计一、课程目标知识目标:1. 学生能够掌握C语言基本语法和数据类型,特别是整型、浮点型的运用。
2. 学生能够理解并运用顺序结构、选择结构和循环结构进行程序设计。
3. 学生能够运用C语言的算术运算符,实现基本的数学运算功能。
技能目标:1. 学生能够编写简单的C程序,实现加、减、乘、除等基本计算功能。
2. 学生能够通过键盘输入数据,并处理输入异常。
3. 学生能够运用调试工具检查并修正程序中的错误。
情感态度价值观目标:1. 学生培养编程的兴趣,认识到编程在解决问题中的重要性。
2. 学生在学习过程中形成合作意识,培养团队精神。
3. 学生通过编程解决实际问题,体验成就感,增强自信心。
分析课程性质、学生特点和教学要求:本课程针对的是高一年级学生,他们对C语言已有一定的基础知识,具备基本的编程能力。
课程性质为实践性较强的编程课程,旨在让学生通过动手实践,掌握C语言编程技巧。
教学要求注重培养学生的实际编程能力,将理论知识与实际应用相结合。
课程目标分解:1. 学生能够独立完成一个简单的计算器程序,实现加、减、乘、除功能。
2. 学生能够运用所学知识对程序进行优化,提高计算器的运算效率和用户体验。
3. 学生通过课程学习,培养良好的编程习惯和解决问题的能力。
二、教学内容本课程教学内容紧密结合课程目标,确保学生能够系统地学习和掌握C语言编程计算器的制作。
1. C语言基本语法和数据类型复习:回顾整型、浮点型等基本数据类型,强调其在计算器程序中的应用。
2. 运算符和表达式:详细介绍C语言的算术运算符,如加、减、乘、除等,并讲解表达式的构成和计算规则。
3. 控制结构:- 顺序结构:巩固顺序执行的概念,并应用于计算器程序。
- 选择结构:讲解if语句,实现计算器的不同运算功能。
- 循环结构:介绍for和while循环,实现重复计算功能。
4. 输入输出函数:教授scanf和printf函数的使用,实现用户与计算器程序的交互。
第22章C语言程序课程设计游戏
22.1.7 交替绘制黑白棋
• 当黑棋在棋盘中确定落子以后,那么在棋子出现 的初始位置应该马上显示白子;同理,当白棋在 棋盘中确定落子以后,在棋子出现的初始位置应 该马上出现黑子。程序中,棋子出现的初始位置 的坐标设为(-1,0)。此时需要注意,棋子在初 始位置时,只能往右移动,其他方向都不可移动。 显示初始位置棋子和其颜色的函数为 show_init(int pat);以下是可以移动的棋子出 现在初始位置,交替出现黑白子的功能函数的具 体实现代码。参数pat表明了棋子显示的颜色,当 pat为0时,棋子为黑色;当pat为1时,棋子为白 色。
• 1.挖雷处理模块 • 2.状态处理模块 • 3.程序判定模块
22.3.8 小结
• 通过上面的程序实现了TC下的扫雷游戏,可以采 用键盘进行操作,达到了程序的功能要求。但是 也可以看出,程序的界面比较粗糙,而且采用键 盘操作非常的不放便,并且目前的程序只实现了 10×10的游戏,还不够完善。借助之前学习到的 知识,可以进行不断的完善。首先是界面的改良, 其次是鼠标操作的加入。相信有兴趣的同学,一 定能够实现拥有自己独特风格的扫雷游戏。
22.2 五子棋
• 五子棋是很多 上都带的游戏,是很多人休闲解 压的一种方式,本节除介绍五子棋的玩法外,还 详细介绍了其开发过程。
22.2.1 程序功能要求
• 程序说明:五子棋是一款经典的益智类游戏,通 常是黑棋先行;五子棋专用盘为15×15方格 ,五 个子的连接方向为横、竖、斜,当任一方的五个 子在各个方向上连成一线,则该方获胜。
• 扫雷游戏最早出现在Window操作系统上,随着 Windows的流行,这个小游戏也越来越受全球人民 的欢迎,也有很多不同语言的游戏开发版本,本 节介绍如何用C开发扫雷游戏。
实用C语言程序设计教程课程设计
实用C语言程序设计教程课程设计一、课程设计介绍本课程设计旨在提高学生对于C语言程序设计的实际应用能力,让学生通过编写有实际用途的程序来掌握C语言的基本语法和编程思想。
通过本课程设计的学习,学生将能够掌握C语言的基本语法、流程控制语句、函数等知识点,并能够熟练使用这些知识点进行程序开发。
二、课程设计目标•掌握C语言的基本语法•熟练应用C语言的流程控制语句和函数•能够独立设计、开发、测试C语言程序•能够处理简单的C语言程序调试和错误处理三、课程设计内容1. 认识C语言本章主要介绍C语言的概述、发展历史、优缺点等方面的内容,让学生了解C语言的基本情况。
2. 基本语法本章主要介绍C语言中的基本语法要点,包括数据类型、运算符、表达式、控制语句、循环语句等等。
3. 函数本章主要介绍C语言中的函数定义和调用、函数的返回值、参数传递等相关内容。
4. 文件操作本章主要介绍C语言中的文件读写操作、文件指针、文件操作函数等相关内容,让学生了解如何进行文件读写操作。
5. 数据结构本章主要介绍C语言中的结构体和指针等相关内容,让学生了解如何使用结构体和指针进行程序开发。
6. 综合项目本章将要求学生利用所学知识进行实际程序的开发,在本章中完成的综合项目可作为课程设计的结题项目。
四、课程设计要求1. 软硬件要求•操作系统:Windows或者Linux•编译器:GCC或者Clang2. 实践要求•学生需要完成本课程设计的所有练习题目,课程设计的结题项目需要具有一定的实际应用场景•学生需要在课程设计期间积极参与课堂讨论和活动,并提交相关的实验报告•学生需要按时完成实验报告和结题项目的提交,如有特殊原因请提前与任课老师联系,并及时提交请假手续3. 成绩评定要求•实验报告成绩占总成绩的50%•结题项目成绩占总成绩的50%五、结语C语言是一门非常实用的编程语言,在很多领域都有其实践价值。
通过本课程设计的学习,相信学生们能够熟练掌握C语言的基本语法和编程思想,同时也能够更好地应用C语言进行实践开发。
c语言大作业课程设计
c语言大作业课程设计一、课程目标知识目标:1. 学生能掌握C语言的基本语法,包括变量定义、数据类型、运算符、控制结构等;2. 学生能理解函数的定义和调用,灵活运用函数实现模块化编程;3. 学生能掌握数组、指针、结构体等C语言高级特性,并应用于实际编程中;4. 学生了解文件操作的基本方法,能够读写文件,实现数据的持久化存储。
技能目标:1. 学生能够运用C语言编程解决实际问题,具备独立分析和解决问题的能力;2. 学生能够运用所学知识,设计并实现一个小型的C语言项目;3. 学生能够通过编程实践,提高逻辑思维能力和编程技巧;4. 学生能够熟练使用集成开发环境(IDE),调试程序并优化代码。
情感态度价值观目标:1. 学生培养对编程的兴趣,激发学习计算机科学的热情;2. 学生养成合作、探究的学习习惯,培养团队协作能力;3. 学生通过编程实践,体验解决问题的成就感,增强自信心;4. 学生遵循编程规范,注重代码质量,培养良好的编程习惯。
课程性质:本课程为C语言大作业课程设计,旨在巩固和拓展学生对C语言知识的掌握,提高学生的编程能力和实践能力。
学生特点:学生已经掌握了C语言的基本知识,具备一定的编程基础,但缺乏实际项目经验。
教学要求:注重实践,引导学生通过动手编程解决问题,培养学生独立思考和解决问题的能力。
将课程目标分解为具体的学习成果,以便于后续教学设计和评估。
二、教学内容1. 复习C语言基础知识,包括变量、数据类型、运算符、控制结构等,参考教材第1-4章;2. 函数的定义、调用、参数传递及作用域,引用教材第5章;3. 数组、字符串、指针的概念及应用,深入讲解教材第6-7章;4. 结构体、联合体、枚举类型的使用,分析教材第8章;5. 文件操作,包括文件的打开、读写、关闭,依据教材第9章;6. 面向过程的编程思想,以实际项目为例,引导学生运用所学知识设计程序;7. 编程规范和调试技巧,培养学生的良好编程习惯;8. 小型项目实践,分组进行项目设计和开发,涵盖整个C语言知识体系。
08-C语言课程设计-打飞碟(提高篇)
C语言课程设计--打飞碟一、游戏介绍打飞碟游戏是玩家通过鼠标控制大炮发射炮弹以及大炮发射时指向的方向,击毁从天空落下的飞碟。
飞碟每次从不同的位置、以不同的速度向下落。
打中不同的飞碟可以得到不同的分数。
我们可以显示当前的得分。
二、实验目的综合应用C语言知识开发一款小游戏。
三、实验内容1、游戏初始界面如下图。
2、按下空格键后,“空格开始”消失,一局游戏开始。
3、游戏开始后:1)鼠标变成十字星;2)地面上有一门大炮,玩家通过移动鼠标可以控制炮口在一定范围内上下移动;3)单击鼠标左键,大炮发射炮弹;4)每局游戏时间为30秒,在屏幕左上方显示,并适时更新游戏剩余时间;5)有大中小三种飞碟,按不同时间频率随机从屏幕顶部的某个位置落下。
炮弹击中大飞碟加1分,击中中飞碟加2分,击中小飞碟加10分。
得分显示在屏幕左上角。
6)游戏时间到后,游戏停止,重新显示游戏初始界面。
7)记录最高的5次游戏得分,按从高到低顺序显示在游戏底部。
游戏初始界面四、实验准备本实验中可能用到的C语言标准库函数和FunCode API Stdio.hMath.hString.hFunCode APIfloatdSetSpritePositionX(const char* szName); 设置精灵中心点的X 坐标值floatdSetSpritePositionY(const char* szName); 设置精灵中心点的Y 坐标值voiddSetSpritePosition(const char* szName, const float fPosX, const float fPosY); 设置精灵中心点的X和Y坐标值,用来将精灵放置在某个指定位置。
dSetSpritePosition(“feichong_0”, 0, 0);将名称为”feichong_0”的精灵的中心点设置在坐标(0, 0)上void dSetSpriteLinearVelocityX( const char* szName, const float fVelX); 设置精灵X轴方向速度void dSetSpriteLinearVelocityY( const char* szName, const float fVelY); 设置精灵Y轴方向速度void dSetSpriteLinearVelocity(c onst char* szName, const float fVelX, const float fVelY); 设置精灵X轴和Y轴方向速度floatdGetSpriteRotation(const char* szName); 获取精灵的旋转角度原图的角度调整后的角度获得的旋转角度即为两张图片的角度差floatdSetSpriteRotation(const char* szName, float fRot); 设置图片的旋转角度fRot>0,图片顺时针旋转;fRot<0,图片逆时针旋转。
c语言课程设计案例精选
c语言课程设计案例精选
案例一:学生成绩管理系统
设计一个学生成绩管理系统,能够实现以下功能:
1. 输入学生信息(学号、姓名、性别、年龄、班级);
2. 输入学生的各科成绩(语文、数学、英语、物理、化学、生物);
3. 计算学生的总分和平均分,并按照总分从高到低排序;
4. 查询学生信息和成绩;
5. 修改学生信息和成绩;
6. 删除学生信息和成绩。
该系统采用C语言编写,使用结构体存储学生信息和成绩,使用文件存储数据。
用户可以通过菜单选择需要的功能,系统会根据用户的选择进行相应的操作。
案例二:简单的计算器
设计一个简单的计算器,能够实现加、减、乘、除四种基本运算,以及求平方、开方、求倒数等高级运算。
该计算器采用C语言编写,使用函数实现各种运算,用户可以通过菜单选择需要的运算,输入相应的数字进行计算。
在输入数字时,程序需要进行错误处理,防止用户输入非法字符或除数为0的情况。
案例三:图书管理系统
设计一个图书管理系统,能够实现以下功能:
1. 输入图书信息(书名、作者、出版社、出版日期、价格、库存数量);
2. 查询图书信息;
3. 借阅图书(需要输入借阅者的信息);
4. 归还图书;
5. 修改图书信息;
6. 删除图书信息。
该系统采用C语言编写,使用结构体存储图书信息,使用文件存储数据。
用户可以通过菜单选择需要的功能,系统会根据用户的选择进行相应的操作。
在借阅图书和归还图书时,程序需要进行库存数量的判断,防止借阅数量超过库存数量的情况。
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. 程序设计实践:结合所学知识,设计并实现一个综合性的程序项目。
[3]C语言程序设计实验课程设计-5
C语言程序设计实验课程设计C语言是一种高级语言,具有广泛的应用领域。
在大学教学中,C语言的教学方法与手段受到了相当大的限制,不利于学生对其基本语法、概念及基本思想的掌握,也不利于培养学生的编程能力。
本文提出了一种新的C语言实验课程设计,它结合了C语言与Python 语言的特点。
具体来说,该实验课程设计内容包括两部分:第一部分是编程实践环节,包括用Python编写简单程序、用C语言编写简单程序、用Python编写复杂程序等;第二部分是编程拓展环节,包括利用Python实现一个基于网络的数据管理系统、利用C语言实现一个基于 Web的系统、利用 Python实现一个基于 Web的系统等。
主要内容及完成情况本实验课程设计的主要内容是以 Python作为编程语言,通过实例演示C语言在 Web系统中的应用,培养学生利用Python语言开发Web应用程序的能力。
为了完成实验课程设计,学生首先需要学习 Python语言。
学习 Python语言的方法是阅读 Python官方文档,在此基础上,通过阅读一些简单的教程和参考资料来了解 Python语言。
由于本课程设计要用到C语言编程,因此学生需要学习一门高级程序设计语言——C++,也就是C++标准模块。
学习C++标准模块需要一个月的时间,这个时间安排在学期开始之前。
具体学习过程为:首先学生要阅读一份标准模块教程,并对该标准模块进行简单的学习和了解;然后开始进行C++标准库的安装;最后开始使用标准库来进行C++程序设计,完成实验课程设计。
(1)系统功能与描述该系统的功能模块主要有以下几个方面:①学习和巩固C语言知识,熟练掌握C语言语法规则,包括变量、函数、输入输出流等;②掌握 Python程序设计方法,包括 Python语言基础知识和程序设计的基本思想与方法等;③能够利用 Python实现一个简单的程序,能够分析程序的运行结果和执行流程,并根据需要对结果进行修改;④学习与巩固 Web编程知识,掌握 Web应用的基本开发方法,包括 HTML、 CSS、 JavaScript等;⑤学习与巩固数据库编程知识,包括数据库的基本概念和常用函数的使用方法等;⑥能够利用 Python进行一个 Web系统的开发,包括简单的 Web应用程序的开发以及 Web系统的实现。
c语言课程设计案例精编下载
c语言课程设计案例精编下载一、教学目标本课程旨在通过C语言的教学,让学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识,培养学生独立编程和解决问题的能力。
1.理解C语言的基本语法和编程规范。
2.掌握基本数据类型、运算符和表达式。
3.理解控制结构,如条件语句、循环语句等。
4.掌握函数的定义和调用。
5.能使用C语言编写简单的程序。
6.能运用C语言解决实际问题。
7.具备一定的代码调试能力。
情感态度价值观目标:1.培养学生对编程的兴趣和热情。
2.培养学生独立思考、解决问题的能力。
3.培养学生团队协作、互相学习的良好习惯。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。
1.C语言的基本语法和编程规范。
2.基本数据类型、运算符和表达式。
3.控制结构,如条件语句、循环语句等。
4.函数的定义和调用。
5.编程实践。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学。
1.讲授法:通过讲解C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识,使学生掌握基本概念和理论。
2.案例分析法:通过分析典型代码案例,让学生理解并掌握编程方法。
3.实验法:让学生通过动手编写代码和调试程序,提高实际编程能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。
1.教材:选用权威、实用的教材,如《C程序设计语言》等。
2.参考书:提供相关领域的经典著作和优秀教材,供学生深入学习和参考。
3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高教学质量。
4.实验设备:提供计算机、编程环境等实验设备,保障学生动手实践的机会。
五、教学评估本课程的评估方式包括平时表现、作业和考试等,以全面客观地评价学生的学习成果。
1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。
2.作业:布置适量的课后作业,让学生巩固所学知识,并通过作业完成情况评估学生的掌握程度。
C语言课程设计
C语言课程设计一.实训要求:1、进一步掌握和利用C语言进行程设计的能力。
2、进一步理解和运用结构化程设计的思想和方法。
3、初步掌握开发一个小型实用系统的基本方法。
4、学会调试一个较长程序的基本方法。
5、学会利用流程图或N-S图表示算法。
6、掌握书写程设计开发文档的能力(书写实习报告)。
二.实训内容:通过复习C语言所学习内容,完成如下编程任务,要求每个题目都画出流程图或者是N-S图,并写出解决此问题的实训报告(即详细的解题过程、分析过程和实训心得),并附最终得到的完整的c语言代码。
1、实现学生成绩管理系统:(也可以选择类似的学籍管理系统)系统要求如下a、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息.b、学生成绩查询: 输入一个学号, 在文件中查找此学生, 若找到则输出此学生的全部信息和成绩; 若找不到则输出查找失败的信息.c、新生插入:按照该生的学号,将此生的信息保存进文件。
d、可以把各科的平均成绩,最高和最低分分别全部输出。
e、输出全部学生信息和全部学生成绩。
f、退出系统。
2、计算器。
编写一个计算器程序,实现加、减、乘、除、求平方根(正数)、求平方数等功能。
①要求根据用户从键盘输入的表达式:操作数1 运算符op 操作数2计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)等。
②要求程序能进行浮点数的算术运算。
③程序要求可以连续做多次算术运算,每次运算结束后,程序都给出提示:Do you want to continue(Y/N or y/n)?用户输入Y或y时,程序继续进行其他算术运算;否则程序退出运行状态。
三、实训评分标准实训成绩由三部分构成:实训考勤分数(30%),实训态度分数(20%),实训报告分数(50%)。
实训时间为一周,分上下午分别签到,每次到课可得到3分,共30分,到课不满60%的学生没有实训成绩;实训时玩游戏,看视频及其他与实训无关的动作,将在实训态度分中分别扣除相应的分数。
C语言程序设计实例教程课程设计
C语言程序设计实例教程课程设计一、引言C语言是一门十分受欢迎的计算机编程语言,其流行程度源于其简单性、可移植性和高效性等因素。
C语言的广泛使用范围包括嵌入式系统设计、操作系统编写、游戏开发以及各种应用程序的开发等。
因此,学习C语言程序设计对于计算机科学专业的学生来说至关重要。
本文档为C语言程序设计实例教程课程设计,旨在帮助学生更好地理解和掌握C语言的程序设计方法。
该课程设计将包括实例代码和详细的代码解释,通过这些实例,学生将学习到C语言的基本语法、程序结构、函数和指针等重要知识点,同时还能够提高自己的编程能力。
二、课程设计目标本课程设计以学习C语言的基本程序设计方法为核心,旨在实现以下目标:1.理解C语言的基本语法,包括变量类型、运算符、数据类型等;2.掌握C语言的程序结构,包括顺序结构、选择结构和循环结构等;3.熟悉C语言的函数和指针,能够编写复杂的程序;4.建立编程思维,提高编程能力;5.培养学生的团队合作意识。
三、教学内容3.1 C语言基础1.C语言简介2.C语言程序的基本结构3.C语言中的变量和运算符4.C语言中的数据类型5.C语言中的控制语句6.C语言中的函数3.2 C语言程序设计实例1.实例1:计算数组中元素的平均值2.实例2:冒泡排序3.实例3:字符串反转4.实例4:判断一个数是否为素数5.实例5:文件操作6.实例6:链表数据结构四、教学方法本课程设计采用讲解思路+实例案例的教学方法,以实现学生的基础和编程能力的提升。
具体方法如下:1.首先,老师将讲解课程内容的思路,并简单介绍应用场景;2.其次,老师将通过讲解实例案例的方式,详细阐述程序设计的各个细节,缺陷及处理方法;3.学生可以根据案例代码自行练习,以锻炼自己的编程能力;4.学生可以结合自己的理解,对老师的代码进行添加、修改和注释,以提升自己的编程水平;5.学生还可以通过团队合作的方式来完成课程设计,以培养团队协作能力。
五、教学评价本课程设计将根据以下方法进行评价:1.基于实例作业的评价方式,用于考核学生对于课程内容的理解和掌握程度;2.通过课堂练习和编程作业的评价方式,考核学生的实践能力和编程水平;3.通过学生团队合作的评价方式,考核学生的团队协作能力;4.进行期末考试,考核学生的知识掌握程度。
c语言课程设计案例参考
c语言课程设计案例参考C语言课程设计案例参考标题:学生成绩管理系统概述:学生成绩管理系统是一个用于记录、查询和统计学生课程成绩的软件。
它能够方便地管理学生信息,计算成绩,并提供报表和统计分析功能。
1. 学生信息管理:系统能够记录学生的基本信息,如学号、姓名、性别、年龄等,并能够对学生信息进行增删改查的操作。
2. 课程信息管理:系统能够记录课程的基本信息,如课程编号、课程名称、学分等,并能够对课程信息进行增删改查的操作。
3. 成绩录入:教师可以通过系统录入学生的课程成绩,包括平时成绩、考试成绩等。
系统能够自动计算总评成绩,并将成绩保存至数据库。
4. 成绩查询:学生和教师可以通过系统查询学生的成绩,包括单科成绩和总评成绩。
系统能够根据学生学号或课程编号进行成绩查询。
5. 成绩统计:系统能够根据学生、课程或班级进行成绩统计和分析。
例如,可以统计某个班级的平均成绩、及格率等。
6. 报表生成:系统能够生成各类成绩报表,如学生考试成绩单、班级成绩排名等。
报表可以导出为Excel或PDF格式。
7. 数据备份与恢复:系统能够定期对数据库进行备份,以防止数据丢失。
同时,也提供数据恢复功能,以便在系统故障时恢复数据。
8. 用户权限管理:系统根据用户角色划分权限,如管理员可以对学生、课程信息进行管理,教师可以录入成绩等。
保证系统的安全性和稳定性。
9. 界面友好:系统界面简洁明了,操作简单易懂,用户能够轻松上手使用。
10. 兼容性强:系统能够在不同操作系统和浏览器上运行,具有良好的兼容性和稳定性。
11. 扩展性强:系统具有良好的扩展性,可以根据需求进行功能的扩展和定制。
通过以上设计案例,可以实现一个完善的学生成绩管理系统,方便学校和教师进行学生成绩的管理和统计分析,提高教学质量和效率。
同时,也为学生提供了一个方便快捷的成绩查询平台,方便他们了解自己的学习情况。
c语言课程设计模板
c语言课程设计模板一、课程目标知识目标:1. 理解C语言的基本语法结构,掌握变量定义、数据类型、运算符和表达式等基础知识;2. 学会使用C语言进行顺序结构、选择结构和循环结构的编程;3. 熟悉C语言的标准库函数,了解其功能和使用方法;4. 了解数组、字符串、函数等高级概念,并能运用到实际编程中。
技能目标:1. 能够独立编写简单的C程序,解决实际问题;2. 掌握调试C程序的方法,能够找出并修正程序中的错误;3. 学会使用C语言的输入输出功能,进行数据的读取和结果显示;4. 培养良好的编程习惯,编写结构清晰、可读性强的代码。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发其探究计算机科学的欲望;2. 培养学生的逻辑思维能力,使其能够运用编程解决实际问题;3. 培养学生的团队协作意识,使其能够在合作中共同进步;4. 引导学生遵循道德规范,树立正确的价值观,不编写有损他人利益的程序。
本课程针对的是高年级学生,他们在之前的学习中已经具备了一定的编程基础,因此课程设计以提高学生的编程能力和实际应用为主。
课程要求学生在掌握C语言基础知识的同时,能够将其应用于实际编程中,解决实际问题。
通过课程学习,使学生能够独立编写具有实际意义的C程序,为后续学习其他编程语言和计算机科学相关知识打下坚实基础。
在教学过程中,注重培养学生的逻辑思维能力和团队协作精神,使其在掌握技能的同时,形成良好的情感态度价值观。
二、教学内容1. C语言基础知识:- 变量定义、数据类型、常量与变量- 运算符与表达式- 顺序结构程序设计2. 选择结构:- if语句- switch语句3. 循环结构:- while循环- do-while循环- for循环- 循环控制语句(break、continue)4. 数组与字符串:- 一维数组- 二维数组- 字符串处理5. 函数:- 函数的定义与调用- 递归函数- 变量的作用域和存储类别6. 指针:- 指针的定义与使用- 指针与数组- 指针与函数7. 结构体与共用体:- 结构体的定义与使用- 结构体数组- 共用体与枚举8. 文件操作:- 文件的打开与关闭- 文件的读写操作教学内容按照课本章节进行组织,保证科学性和系统性。
C语言课程设计任务书(18份)详细版
C语言课程设计任务书详细版(18份)C语言课程设计任务书1题目:某学院教学信息管理系统功能:1、每一条记录包括一位教师的职工号、姓名、职称、性别、3门主讲课程(课程名称、开课学期、课程性质(学位与非学位课)和教学效果),教学效果综合评分。
2、输入功能:可以一次完成若干条记录的输入。
3、显示功能:完成全部教师记录的显示。
4、查找功能:完成按姓名或课程查找教师的相关记录,并显示。
5、排序功能:按职工号或教学效果综合评分进行排序。
6、插入功能:按教学效果综合评分高低插入一条教师记录。
7、将教师记录存在文件中。
8、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!要求:1、用C语言实现系统;2、利用结构体数组实现教学信息的数据结构设计;3、系统具有增加,查询,插入,排序等基本功能;4、系统的各个功能模块要求用函数的形式实现;5、将教学信息存在文件中。
课程设计的最后成果是实验报告一份,内容包括:1、预习报告(题目、流程图、程序的设计思想等);2、实验总结报告(测试方案、源程序代码(需打印)、调试中问题及解决方案、小结等)。
C语言课程设计任务书2题目:酒店房间登记与计费管理系统功能:1、屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。
2、对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收费,可根据顾客需要在登记的入住的时候进行选择。
3、在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用。
分步实施:1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2、完成最低要求:建立房间列表,完成登记入住、查询房间入住情况功能。
3、进一步要求:完成计费和费用查询功能。
要求:1、用C语言实现系统;2、函数功能要划分好(结构化程序设计);3、界面友好(良好的人机交互),加必要的注释;4、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行的程序是没有价值的。
大一c语言课程设计案例
大一c语言课程设计案例大一C语言课程设计案例。
在大一C语言课程中,课程设计是非常重要的一部分,它不仅可以检验学生对所学知识的掌握程度,还可以锻炼学生的编程能力和解决问题的能力。
下面我们以一个简单的案例来说明大一C语言课程设计的具体内容和要求。
案例背景:假设学生们已经学习了C语言的基本语法和数据类型,掌握了条件语句、循环语句、函数等基本知识,并且具备一定的编程能力。
案例要求:设计一个简单的学生成绩管理系统,实现以下功能:1. 输入学生的姓名、学号、三门课程的成绩(语文、数学、英语);2. 计算每个学生的总分和平均分,并输出;3. 输出成绩最高和最低的学生信息;4. 按照总分对学生进行排序,并输出排名。
解决方案:为了完成以上要求,我们可以采用以下步骤来设计程序:1. 定义学生的结构体,包括姓名、学号、语文、数学、英语成绩等信息;2. 编写函数来实现输入学生信息、计算总分和平均分、输出成绩最高和最低的学生信息、对学生进行排序等功能;3. 在主函数中调用这些函数,完成整个程序的逻辑。
代码示例:下面是一个简单的代码示例,用来实现上述功能:```c。
#include <stdio.h>。
#include <string.h>。
// 定义学生结构体。
struct Student {。
char name[20];int id;int chinese;int math;int english;int total;float average;};// 输入学生信息。
void input(struct Student s) {。
printf("请输入学生姓名,");scanf("%s", s->name);printf("请输入学生学号,");scanf("%d", &s->id);printf("请输入语文成绩,");scanf("%d", &s->chinese);printf("请输入数学成绩,");scanf("%d", &s->math);printf("请输入英语成绩,");scanf("%d", &s->english);s->total = s->chinese + s->math + s->english;s->average = s->total / 3.0;}。
C语言课程设计报告模版(电子版)
1.熟悉Turbo C的编程环境、主要菜单功能。
2.通过上机验证运算符、表达式、运算规则、函数使用。
3.熟练使用C语言的典型语句编写简单程序。
4.调试典型例题或习题。
5.提高上机编程能力
二、实验类型
设计类型
三、实验学时
40学时
四、实验设备
微型计算机、WINDOWS98以上版本的操作系统、Turbo C2.0软件一套
(3)输出候选人及其得票数。
1.2
(将程序执行图,粘贴在此)
1.3
#include"string.h"
struct person
{ char name[20];
int count;
} leader[5]={"liang",0,"wei",0,"long",0,"chen",0,"chao",0};
main()
float d ;
for(i=0;i<n;i++)
{ d=0.0;
for(j=0;j<4;j++)
d+=p->s[j];
p->sum=d;
p++;
}
}Hale Waihona Puke void sort(struct student *p,int n)
{ struct student t;
int i,j,k;
for(i=0;i<n-1;i++)
。
4.1
需求分析是软件开发中最重要的环节,它直接影响着项目的成功与失败。通过对用户需求进行调查分析,写出需求分析的文档。需求分析的文档可以作为项目设计的基本要求,也可以作为系统分析员进行系统分析和测试人员进行软件测试的手册。
蜘蛛纸牌c语言课程设计
蜘蛛纸牌c语言课程设计一、课程目标知识目标:1. 让学生掌握C语言的基本语法和结构,特别是数组、循环和条件语句的使用。
2. 借助蜘蛛纸牌游戏案例,让学生理解并应用面向过程的编程思想,培养问题分析及解决能力。
3. 让学生掌握利用C语言进行简单的数据结构和算法设计。
技能目标:1. 培养学生运用C语言编写程序的能力,特别是针对蜘蛛纸牌这类逻辑性较强的游戏。
2. 通过课程实践,提高学生调试和优化程序的能力,确保程序的稳定性和高效性。
3. 培养学生在团队协作中有效沟通和共同解决问题的能力。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动探究和创新的意识。
2. 培养学生面对困难时的耐心和毅力,增强克服问题的信心。
3. 引导学生认识到编程在生活中的应用价值,树立正确的科技观念。
课程性质分析:本课程为C语言程序设计实践课程,通过蜘蛛纸牌游戏案例,将理论知识与实际应用紧密结合,提高学生的编程技能。
学生特点分析:学生处于具备一定编程基础知识的年级,对新鲜事物充满好奇心,但个体差异较大,需要针对不同层次的学生设计不同难度的教学活动。
教学要求:1. 注重理论与实践相结合,强调动手实践能力。
2. 以学生为主体,关注个体差异,实施差异化教学。
3. 创设真实问题情境,引导学生主动探究,培养解决问题的能力。
二、教学内容1. C语言基础知识复习:数组、循环、条件语句、函数。
2. 蜘蛛纸牌游戏规则介绍及逻辑分析。
3. C语言实现蜘蛛纸牌游戏的步骤分解:a. 游戏界面设计及数据结构定义。
b. 游戏初始化及牌堆、牌桌管理。
c. 玩家操作及游戏逻辑处理。
d. 游戏结束条件判断及胜负判定。
4. 程序调试与优化技巧。
5. 团队协作与项目管理。
教学内容安排和进度:第1周:C语言基础知识复习,介绍蜘蛛纸牌游戏规则。
第2-3周:分析蜘蛛纸牌游戏逻辑,讲解游戏实现步骤。
第4周:分组讨论,制定编程计划,分工合作。
第5-6周:编写程序,实现蜘蛛纸牌游戏。
C语言程序设计课程设计--歌手成绩管理系统
《C语言程序设计课程设计》课程设计报告题目:歌手成绩管理系统学院:计算机科学与技术歌手成绩管理系统一、系统菜单及任务(1)系统菜单的主要功能(1)输入歌手信息(2)输出歌手信息(3)歌手成绩排序(4)记录歌手信息(5)保存歌手信息(6)添加歌手信息(7)删除歌手信息(8)退出系统(2)实现的任务:完成对歌手比赛信息的各种管理。
歌手比赛系统对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括姓名、歌曲名、各评委的打分成绩,大众评委打分成绩,根据输入计算出总成绩。
2、显示主菜单如下:1)输入信息2)显示信息3)结果排序4)保存信息5)显示结果6)退出系统。
二、设计内容:确定能表述歌手信息的数据结构,至少要有姓名、歌曲名、各评委打分、大众评委打分等信息,它是本程序的核心数据结构,定义为如下的结构体类型:struct Sing{float P1;float P2;float A[M];};struct Singer{int num;float sum;char singerName[10];char singName1[20];char singName2[20];struct Sing singScore1;struct Sing singScore2;};三、程序应具有以下基本功能:❖信息输入:输入每个选手的数据包括姓名、各首歌曲的歌曲名、各评委的打分成绩,大众评委打分成绩❖计算成绩:根据输入计算出各歌手的每首歌得分以及总得分。
❖成绩排序:按歌手的最后得分❖保存结果:将结果保存在文本文件中。
❖要求界面良好四、主要流程图程序各模块(输入,显示等)结构图:五、系统测试程序进行实例如下1、显示主菜单界面:主要功能输入歌手信息输出歌手信息歌手成绩排序记录歌手信息保存歌手信息添加歌手信息删除歌手信息退出系统2、选择1:运行界面如下六、源程序及系统文件使用说明#include<stdio.h>#include<stdlib.h>/*动态存储分配函数*/#include<string.h>/*字符函数和字符串函数*/ #include<math.h>/*数学函数*/#define M 5int N;struct Sing/*歌曲信息结构体*/{float P1;float P2;float A[M];};struct Singer/*歌手信息结构体*/{int num;float sum;char singerName[10];char singName1[20];char singName2[20];struct Sing singScore1;struct Sing singScore2;};struct Singer Sin[200];void print(){printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");printf(" 欢迎进入歌手成绩管理系统\n");printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");}void menu();void input()/*输入歌手信息*/{int i;for(i=0;i<3;i++){printf("请输入歌手编号:");scanf("%d",&Sin[i].num );printf("请输入歌手姓名:");scanf("%s",Sin[i].singerName );printf("请输入歌曲1名称:");scanf("%s",Sin[i].singName1 );printf("请输入歌曲1大众评委打分:");scanf("%f",&Sin[i].singScore1.P1);printf("请输入歌曲1专业评委1打分:");scanf("%f",&Sin[i].singScore1.A[0]);printf("请输入歌曲1专业评委2打分:");scanf("%f",&Sin[i].singScore1.A[1]);printf("请输入歌曲1专业评委3打分:"); scanf("%f",&Sin[i].singScore1.A[2]);printf("请输入歌曲1专业评委4打分:"); scanf("%f",&Sin[i].singScore1.A[3]);printf("请输入歌曲1专业评委5打分:"); scanf("%f",&Sin[i].singScore1.A[4]);printf("歌曲1专业评委打分为:");Sin[i].singScore1.P2=(Sin[i].singScore1.A[0]+Sin[i].singScore1.A[1]+Sin[i].singScore1.A[2]+Sin[i].singScore1.A[3]+Sin[i].singScore1.A[4])/5;printf("%f\n",Sin[i].singScore1.P2);printf("请输入歌曲2名称:");scanf("%s",Sin[i].singName2 );printf("请输入歌曲2大众评委打分:");scanf("%f",&Sin[i].singScore2.P1);printf("请输入歌曲2专业评委1打分:"); scanf("%f",&Sin[i].singScore2.A[0]);printf("请输入歌曲2专业评委2打分:"); scanf("%f",&Sin[i].singScore2.A[1]);printf("请输入歌曲2专业评委3打分:"); scanf("%f",&Sin[i].singScore2.A[2]);printf("请输入歌曲2专业评委4打分:"); scanf("%f",&Sin[i].singScore2.A[3]);printf("请输入歌曲2专业评委5打分:"); scanf("%f",&Sin[i].singScore2.A[4]);printf("歌曲2专业评委打分为:");Sin[i].singScore2.P2=(Sin[i].singScore2.A[0]+Sin[i].singScore2.A[1]+Sin[i].singScore2.A[2]+Sin[i].singScore2.A[3]+Sin[i].singScore2.A[4])/5;printf("%f\n",Sin[i].singScore2.P2);printf("该歌手的总成绩为:");Sin[i].sum = Sin[i].singScore1.P1+Sin[i].singScore1.P2+Sin[i].singScore2.P1+Sin[i].singScore2.P2 ;printf("%lf\n",Sin[i].sum);}menu();}void output()/*输出歌手信息*/{int i;printf("输出歌手信息是:\n");for(i=0;i<3;i++){printf("编号歌手歌曲1 大众评委专业评委歌曲2 大众评委专业评委总分:\n");printf("%d\t%4s\t%4s\t%4.2f\t%6.2f\t%6s\t%8.2f\t%4.2f\t%6.2f\t\n",Sin[i].num ,Sin[i].singerName,Sin[i].singName1,Sin[i].singScore1.P1,Sin[i].singScore1.P2,Sin[i].singName2,Sin[i].singScore2.P1,Sin[i].singScore2.P2,Sin[i].sum);}menu();}void sort()/*对歌手成绩进行排序*/{float t,d,e,g,h;int i,j,m;char b[10],c[20],f[20];for(j=0;j<3;j++)for(i=0;i<2-j;i++)if(Sin[i].sum>Sin[i+1].sum ){t=Sin[i].sum ;Sin[i].sum =Sin[i+1].sum;Sin[i+1].sum =t;/*分数排序*/m=Sin[i].num ;Sin[i].num =Sin[i+1].num ;Sin[i+1].num =m;/*编号排序*/strcpy(b,Sin[i].singerName);strcpy(Sin[i].singerName,Sin[i+1].singerName);strcpy(Sin[i+1].singerName,b);/*名字复制替换进行名字排序*/strcpy(c,Sin[i].singName1);strcpy(Sin[i].singName1,Sin[i+1].singName1);strcpy(Sin[i].singName1,c);/*歌曲1名称排序*/d=Sin[i].singScore1.P1;Sin[i].singScore1.P1=Sin[i+1].singScore1.P1;Sin[i+1].singScore1.P1=d;/*歌曲1大众评委打分的排序*/e=Sin[i].singScore1.P2;Sin[i].singScore1.P2=Sin[i+1].singScore1.P2;Sin[i+1].singScore1.P2=e;/*歌曲1专业评委打分的排序strcpy(f,Sin[i].singName2);strcpy(Sin[i].singName2,Sin[i+1].singName2);strcpy(Sin[i+1].singName2,f);/*歌曲2名称的排序*/g=Sin[i].singScore2.P1;Sin[i].singScore2.P1=Sin[i+1].singScore2.P1;Sin[i+1].singScore2.P1=g;/*歌曲2大众评委打分的排序*/h=Sin[i].singScore2.P2;Sin[i].singScore2.P2=Sin[i+1].singScore2.P2;Sin[i+1].singScore2.P2=h;/*歌曲2专业评委打分的排序*/}printf("排序后的结果为:\n");printf("编号姓名总成绩:\n");for(i=0;i<3;i++)printf("%d\t%s\t%lf\t\n",Sin[i].num,Sin[i].singerName,Sin[i].sum);menu();}void save()/*将歌手信息保存到文本文件中*/{FILE *fp;int i;if((fp=fopen("f:\\lin","wb"))==NULL){printf("cannot open file\n");return;}for(i=0;i<200;i++)if(fwrite(&Sin[i],sizeof(struct Singer),1,fp)==1){printf("文件写入错误\n");break;}fclose(fp);}void WritetoText(int n)/*将所有记录写入文件*/{int i=0;FILE *fp;/*定义文件指针*/char filename[200];printf("将所有记录写入文件:\n");/*输入文件名*/printf("输入文件名:\n");scanf("%s",filename);if((fp=fopen(filename,"a"))==NULL)/*打开文件*/{printf("不能打开文件:\n");system("pause");return;/*终止程序*/}fprintf(fp,"%d\n",n);/*循环写入数据*/fprintf(fp,"编号歌手歌曲1 大众评委专业评委歌曲2 大众评委专业评委总分:\n");while(i<n){fprintf(fp,"%d\t%2s\t%2s\t%lf\t%lf\t%6s\t%lf\t%lf\t%lf\t\n", Sin[i].num, Sin[i].singerName,Sin[i].singName1,Sin[i].singScore1.P1,Sin[i].singScore1.P2,Sin[i].singName2,Sin[i].singScore2.P1,Sin[i].singScore2.P2,Sin[i].sum);i++;}fclose(fp);/*关闭文件*/printf("Successed!\n");//返回成功信息menu();}void Tianjia_a_record()/*添加函数*/{int i,j;int a;printf("请输入一个歌手的编号:");scanf("%d",&a);for(i=0;i<N;i++)if(a==Sin[i].num)/*两个整数进行比较*/{printf("不能进行添加操作");j++;break;}if(j==0)/*新添加的歌手编号与原歌手中没有相同的*/ {Sin[i].num=a;printf("歌手名:");scanf("%s",Sin[i].singerName);printf("歌曲1的名称:");scanf("%s",Sin[i].singName1);printf("歌曲1的大众评委打分:");scanf("%f",&Sin[i].singScore1.P1);printf("歌曲1的专业评委1打分:");scanf("%f",&Sin[i].singScore1.A[0]);printf("歌曲1的专业评委2打分:");scanf("%f",&Sin[i].singScore1.A[1]);printf("歌曲1的专业评委3打分:");scanf("%f",&Sin[i].singScore1.A[2]);printf("歌曲1的专业评委4打分:");scanf("%f",&Sin[i].singScore1.A[3]);printf("歌曲1的专业评委5打分:");scanf("%f",&Sin[i].singScore1.A[4]);printf("歌曲1的专业评委打分:"); scanf("%f",&Sin[i].singScore1.P2);printf("歌曲2的名称:");scanf("%s",Sin[i].singName2);printf("歌曲2的大众评委打分:"); scanf("%f",&Sin[i].singScore2.P1); printf("歌曲2的专业评委1打分:"); scanf("%f",&Sin[i].singScore2.A[0]); printf("歌曲2的专业评委2打分:"); scanf("%f",&Sin[i].singScore2.A[1]);printf("歌曲2的专业评委3打分:"); scanf("%f",&Sin[i].singScore2.A[2]); printf("歌曲2的专业评委4打分:"); scanf("%f",&Sin[i].singScore2.A[3]);printf("歌曲2的专业评委5打分:"); scanf("%f",&Sin[i].singScore2.A[4]); printf("歌曲2的专业评委打分:"); scanf("%f",&Sin[i].singScore2.P2);printf("该歌手的总成绩:");scanf("&f",&Sin[i].sum);save();N++;system("pause");}}void name_Delete() /*按照姓名删除歌手信息*/{int i,j=0;char a[20];printf("\n输入一个歌手的姓名");scanf("%s",a);for(i=0;i<N;i++)if(strcmp(Sin[i].singerName,a)==0){Sin[i].num=Sin[i+1].num;/*编号*/strcpy(Sin[i].singerName,Sin[i+1].singerName);/*歌手名*/strcpy(Sin[i].singName1,Sin[i+1].singName1);/*歌曲1名称*/strcpy(Sin[i].singName2,Sin[i+1].singName2);/*歌曲2名称*/Sin[i].singScore1=Sin[i+1].singScore1;/*歌曲1得分*/Sin[i].singScore2=Sin[i+1].singScore2;/*歌曲2得分*/Sin[i].sum=Sin[i+1].sum;/*总得分*/printf("该歌手信息删除成功");N--;//j++;}if(j==0)printf("系统中无该歌手信息");}void dakai()/*定义打开函数*/{FILE *fp;system("cls");if((fp=fopen("filename","rb"))==NULL){printf("文件不存在\n");return;}}void menu()/*定义菜单函数*/{printf(" 歌手成绩管理系统\n");printf("**********************Menu**********************\n");printf(" * 1.输入信息 2.显示信息*\n");printf(" * 3.结果排序 4.信息保存到文件中*\n");printf(" * 5.信息记录到文件中 6.添加信息*\n");printf(" * 7.删除信息8.退出程序*\n");printf("************************************************\n");printf("请选择所要进行的选项:");}void Quit()/*退出函数*/{printf("结束程序"); exit(0);}void menu_select() /*菜单选择*/{int a;int n=3;printf("输入:");scanf("%d",&a);switch(a){case 1:printf("\n");input();break;case 2:printf("\n");output();break;case 3:printf("\n");sort();break;case 4:printf("\n");save();break;case 5:printf("\n");WritetoText(n);break;case 6:printf("\n");Tianjia_a_record();break;case 7:printf("\n");name_Delete();break;case 8:printf("\n"); Quit(); break;}}void main(){struct Singer Sin[200];print();menu();menu_select();}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计设计期限年月开始至年月结束系别专业班级学生姓名学号指导教师2010年12月3日(一)课程设计题目:学生成绩管理系统(二)课程设计目的:1.进一步掌握和利用C语言进行行程设计的能力;2.进一步理解和运用结构化程序设计的思想和方法;3.初步掌握开发一个小型实用系统的基本方法;4.学会调试一个较长程序的基本方法;5.学会利用流程图表示算法;6.掌握书写程序设计开发文档的能力(书写课程设计报告)。
(三)课程设计内容:1.每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩。
2. 输入功能:可以一次完成若干条记录的输入。
3.显示功能:完成全部学生记录的显示。
4.查找功能:完成按学号查找学生记录并显示。
5.排序功能:按学生总分进行排序。
6.插入功能:按学号插入一条学生记录。
7.将学生记录保存在文件中。
8.应提供一个菜单来调用各个功能,调用菜单的界面应尽可能清晰美观!(四)课程设计要求:1.用C语言实现系统;2.利用结构体链表实现学生成绩的数据结构设计;3.系统具有追加,查询,插入,排序等基本功能;4.系统的各个功能要求用函数的形式实现;5.完成设计任务并书写课程设计报告;6.将学生成绩信息存在文件中。
(五)概要设计:1.制作这样的一个数据库需要实现以下功能:(1)数据库的安全性。
进入数据库需要输入用户的密码,不同的用户可以有不同的权限。
(2)数据库的操作界面设计为菜单显示方式。
用户通过菜单进行选择。
如下图所示:图1 主菜单界面程序的输出格式:图 1本程序利用单链表存储结构完成对学生成绩的动态管理,其基本功能模块图如下图所示:基本功能模块图2.各函数流程图:(1)creat()函数:(2)del()函数:(3)display()函数:(4)search()函数:(5)save()函数:(6)load()函数:(7)computer()函数:(9)modify()函数:(11)sort()函数:(13)fail()函数:(14)five()函数:(六)详细设计:按照概要设计列出的功能模块,设计出与这些模块一一对应的功能函数,以供主函数使用。
(1)函数原型:menu_select()函数功能:主菜单。
用户通过菜单进行选择。
调用各功能函数。
(2)函数原型:student *creat()函数功能:该函数是用来创建单链表。
当在主函数中输入1时,即进入创建链表函数,即开始输入学生信息,按照提示信息输入学号、三门课程的成绩,每输入完一个数就按一下回车键,当输入学号为0时结束输入,返回主函数,显示主菜单界面。
(3)函数原型:student *del(student *head)函数功能:该函数的作用是删除指定学号的学生记录。
首先根据提示信息输入要删除结点的学号,输入后根据学号顺序查找结点,如果没有找到,则输出没有找到的信息;否则,显示找到的信息,然后删除。
调用结束返回主函数,显示主菜单。
(4)函数原型:void display(student *head)函数功能:该函数的作用是显示单链表。
本函数以二维表的形式输出,直观漂亮。
调整格式,对齐表格线。
(5)函数原型:void search(student *head)函数功能:该函数的作用是查找指定学号的学生记录。
根据提示信息输入要查找结点的学号,输入后根据学号顺序查找,如果没有找到,则输出没有找到的信息;否则,显示找到的信息。
调用结束返回主函数,显示主菜单。
(6)函数原型:void save(student *head)函数功能:该函数的作用是将学生记录保存到指定文件中。
在访问链表的过程中将记录写入文件。
(7)函数原型:student *load()函数功能:该函数的作用是将学生记录从文件中取出放到链表中。
Load和creat函数算法相同,不同点在于creat是从键盘上接受数据,而Load函数是从文件中读数据。
(8)函数原型:student *computer(student *head)函数功能:该函数作用是计算每个学生成绩的总分和平均分。
(9)函数原型:void copynew(student *head)函数功能:该函数的作用是把学生记录从原来的文件中复制到新文件中。
(10)函数原型:void sort(student *head)函数功能:排序。
是对链表上的结点按照总分的由大到小的顺序进行排序。
(11)函数原型:void modify(student *head)函数功能:修改数据。
根据提示信息输入要查找结点的学号,输入后根据学号顺序查找,如果没有找到,则输出没有找到的信息;否则,修改找到的信息。
调用结束返回主函数,显示主菜单。
(12)函数原型:student *append(student *head)函数功能:添加记录。
在链表最后添加一个结点记录,返回主函数。
(13)函数原型:void index()函数功能:建立索引。
设置索引是为了分类合计。
(14)函数原型:void fail(student *head)函数功能:查找不及格学生的信息。
顺序查找各结点只要有一门学科分数低于60分就显示该学生的全部信息,返回索引函数。
(15)函数原型:void five(student *head)函数功能:查找全年级前五名的学生,并显示他们的全部信息。
返回索引函数。
(16)函数原型:void average(student *head)函数功能:求各班的平均分。
通过学号字段来区分班级,在这个字段内的记录的总分相加,除以人数,算出各班的平均分并显示。
完毕后返回索引函数。
(17)函数原型:void classscore(student *head)函数功能:显示一个班的学生信息。
输入班级号,通过学号控制顺序查找并显示该班全部学生信息。
(18)函数原型:void main()函数功能:有机调用各个子函数。
使用switch()函数进行菜单的选择。
(七)调试报告:1.在调试菜单函数时,由于文本大小控制不当而出现了乱码,通过几次改正尝试,消除了这个现象。
2.在调试时经常出现语法错误,一些分号和大括号经常被遗漏,导致产生错误。
(八)程序清单:#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<mem.h>#include<ctype.h>#include<string.h>typedef struct s1{ long no;char name[10];float score[3];float sum;float average;int order;struct s1 *next;}STUDENT;int menu_select(){ char *menu[]={"**************MENU**************","1. Enter list","2. Delete arecord from list","3. Print list","4. Search record on number","5. Save the file","6. Load the file","7. Computer the score","8. Copy the file to new file", "9. Sort data","10. modify data","11. Append record to file","12. Index on number","13. total on number","14. Quit"};char s[3];int c,i;clrscr();gotoxy(2,2);printf("Press any key enter menu......\n"); clrscr();gotoxy(1,1);textcolor(1);textbackground(0);gotoxy(10,2);putch(0xc9);for(i=1;i<54;i++)putch(0xcd);putch(0xbb);for(i=3;i<20;i++){ gotoxy(10,i);putch(0xba);gotoxy(64,i);putch(0xba);}gotoxy(10,20);putch(0xc8);for(i=1;i<54;i++)putch(0xcd);putch(0xbc);window(11,3,63,19);clrscr();for(i=0;i<15;i++){ gotoxy(10,i+1);cprintf("%s",menu[i]);}textbackground(0);window(1,1,80,50);gotoxy(20,21);do{ printf(" Enter your choice (0-14):"); scanf("%s",s);c=atoi(s);}while(c<0||c>14);return c;}int menu_select2(){ char *menu[]={"**************MENU**************","1. The student who fail in test","2. The first to fifth in grade","3. Class average on subject","4. Class total record","5. Quit"};char s[3];int c,i;clrscr();gotoxy(2,2);printf("Press any key enter menu\n");clrscr();gotoxy(1,1);textcolor(1);textbackground(0);gotoxy(10,2);putch(0xc9);for(i=1;i<54;i++)putch(0xcd);putch(0xbb);for(i=3;i<12;i++){ gotoxy(10,i);putch(0xba);gotoxy(64,i);putch(0xba);}gotoxy(10,12);putch(0xc8);for(i=1;i<54;i++)putch(0xcd);putch(0xbc);window(11,3,63,11);clrscr();for(i=0;i<6;i++){ gotoxy(10,i+1);cprintf("%s",menu[i]);}textbackground(0);window(1,1,80,50);gotoxy(20,13);do{ printf(" Enter your choice (1-5):");scanf("%s",s);c=atoi(s);}while(c<0||c>14);return c;}STUDENT *creat(){ STUDENT *head,*p,*s;float y,z,w;long x; int i;char na[15];head=NULL;clrscr();printf("Please input student's number:");scanf("%ld",&x);printf("Please input name:");scanf("%s",na);printf("Please input sc1:");scanf("%f",&y);printf("Please input sc2:");scanf("%f",&z);printf("Please input sc3:");scanf("%f",&w);while(x!=0){ s=(STUDENT*)malloc(sizeof(STUDENT));s->no=x;for(i=0;i<10;i++){s->name[i]=na[i];}s->score[0]=y;s->score[1]=z;s->score[2]=w;s->sum=0;s->average=0;s->order=0;if(head==NULL) {head=s;p=head;}else { p->next=s;p=s;}printf("Please input student's number:");scanf("%ld",&x);if(x==0) break;printf("Please input name:");scanf("%s",na);printf("Please input sc1:");scanf("%f",&y);printf("Please input sc2:");scanf("%f",&z);printf("Please input sc3:");scanf("%f",&w);}p->next=NULL;return(head);}void showTable1(){ clrscr();gotoxy(10,3);printf("***************STUDENT INFORMATION***************");gotoxy(1,4);printf("-----------------------------------------------------------------------------\n");gotoxy(1,5);printf("|rec| no | Name | sc1 | sc2 | sc3 | sum | average |order|\n");}void showTable2(){ printf("-----------------------------------------------------------------------------\n");}STUDENT *del(STUDENT *head){ STUDENT *p,*q;long n;int flag=0;clrscr();p=head;q=p;p=p->next;printf("Please input the number you want to delete:");scanf("%ld",&n);if(q->no==n) {head=p;free(q);flag=1;}while(p!=NULL){ if(p->no==n){ q->next=p->next;free(p);flag=1;break;}p=p->next;q=q->next;}if(flag==0)printf("Not find!!!\n");printf("Press any key to return......\n");getch();return(head);}void display(STUDENT *head){ STUDENT *p; int i=1;p=head;clrscr();showTable1();while (p!=NULL){ printf("|%3d|%10ld|%12s| %5.1f| %5.1f| %5.1f| %5.1f| %8.1f|%5d|\n ",i,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);p=p->next;i++;}showTable2();printf("Press any key to return......\n");getch();}void search(STUDENT*head){ long str; int i; int rec=1;STUDENT *p;p=head;clrscr();printf("Please input the number you want to get :");scanf("%ld",&str);while(p!=NULL){ if(str==p->no) i=1;p=p->next;}if(i==1){ showTable1();printf("|%3d|%10ld|%12s| %5.1f| %5.1f| %5.1f| %5.1f| %8.1f|%5d|\n",r ec,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);showTable2();}else printf("Not find!");printf("Press any key to return!");getch();}void save(STUDENT *head){ FILE *fp;STUDENT *p;clrscr();if((fp=fopen("e:kesheyyp","wb"))==NULL){ printf("Can't open the file!\n");exit(1);}printf("\n********Saving file********\n");p=head;while(p!=NULL){ fwrite(p,sizeof(STUDENT),1,fp);p=p->next;}fclose(fp);printf("Save success!!!\n");}STUDENT *load(){ STUDENT *p,*q,*head;FILE *fp;clrscr();head=NULL;if((fp=fopen("e:kesheyyp","rb"))==NULL){ printf("Can't open the file!\n");exit(1);}while(!feof(fp)){ q=(STUDENT *)malloc(sizeof(STUDENT));if(fread(q,sizeof(STUDENT),1,fp)!=1)break;if(head==NULL) {head=q;p=head;}else {p->next=q;p=q;}p=q;}p->next=NULL;fclose(fp);printf("load success!");return(head);}STUDENT *computer(STUDENT *head){ STUDENT *p;int i;p=head;while(p!=NULL){ for(i=0,p->sum=0;i<3;i++)p->sum+=p->score[i];p->average=p->sum/3.0;p=p->next;}return(head);}void copynew(STUDENT*head){ FILE *fp;STUDENT *p;int i;clrscr();printf("press class number you want to save:(1,2)"); scanf("%d,i");switch(i){case 1:if((fp=fopen("e:kesheclass1.dat","wb"))==NULL){ printf("Can't open the file!\n");exit(1);}printf("\n Saving file......\n");p=head;while(p!=NULL){ fwrite(p,sizeof(STUDENT),1,fp);p=p->next;}fclose(fp);printf("Save success!!!\n");break;case 2:if((fp=fopen("e:kesheclass2.dat","wb"))==NULL){ printf("Can't open the file!\n");exit(1);}printf("\n Saving file......\n");p=head;while(p!=NULL){ fwrite(p,sizeof(STUDENT),1,fp);p=p->next;}fclose(fp);printf("Save success!!!\n");break;}}void modify(STUDENT*head){ STUDENT *p;float y,z,w;long x,str; int i;char na[15];clrscr();p=head;printf("Please input the number you want to modify :"); scanf("%ld",&str);while(p!=NULL){ if(str==p->no){i=1;printf("Please input student's new number:");scanf("%ld",&x);printf("Please input new name:");scanf("%s",na);printf("Please input new score1:");scanf("%f",&y);printf("Please input new score2:");scanf("%f",&z);printf("Please input new score3:");scanf("%f",&w);p->no=x;p->name[i]=na[i];p->score[0]=y;p->score[1]=z;p->score[2]=w;p->sum=0;p->average=0;p->order=0;}p=p->next;}if(i==1)printf("modify success!\n");else printf("Not find!");printf("Press any key to return!");getch();}STUDENT *append(STUDENT*head){ STUDENT *p,*s; long x; int i;float y,z,w;char na[10];clrscr();p=head;while(p->next!=NULL){ p=p->next;}printf("Please input student's number:");scanf("%ld",&x);printf("Please input name:");scanf("%s",na);printf("Please input score1:");scanf("%f",&y);printf("Please input score2:");scanf("%f",&z);printf("Please input score3:");scanf("%f",&w);while(x!=0){ s=(STUDENT*)malloc(sizeof(STUDENT));s->no=x;for(i=0;i<10;i++){ s->name[i]=na[i];}s->score[0]=y;s->score[1]=z;s->score[2]=w;s->sum=0;s->average=0;s->order=0;p->next=s;p=s;printf("Please input student's number:");scanf("%ld",&x);if(x==0) break;printf("Please input name:");scanf("%s",na);printf("Please input score1:");scanf("%f",&y);printf("Please input score2:");scanf("%f",&z);printf("Please input score3:");scanf("%f",&w);}p->next=NULL;return(head);}STUDENT *sort(STUDENT *head){int i=0;STUDENT *p,*q,*t,*r;r=head->next;head->next=NULL;while(r!=NULL){ t=r;r=r->next;p=head;q=head;while(t->sum<p->sum&&p!=NULL){ q=p;p=p->next;}if(p==q){ t->next=p;head=t;}else{ t->next=p;q->next=t;}}p=head;while(p!=NULL){ i++;p->order=i;p=p->next;}printf("sort sucess!!!\n");return (head);}void fail(STUDENT *head){ int i,flag=0; int rec=1;STUDENT *p;p=head;clrscr();printf("Please input the subject number(1,2,3) :");scanf("%d",&i);showTable1();while(p!=NULL){ if(p->score[i-1]<60){ flag=1;printf("|%3d|%10ld|%12s| %5.1f| %5.1f| %5.1f| %5.1f| %8.1f|%5d|\n",r ec,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);rec++;}}showTable2();if(flag==0)printf("No one fail in the subject!");printf("\nPress any key to return!");getch();}void five(STUDENT *head){STUDENT *p;int i;p=sort(head);showTable1();for(i=0;i<5;i++){printf("|%3d|%10ld|%12s| %5.1f| %5.1f| %5.1f| %5.1f| %8.1f|%5d|\n",i++,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);p=p->next;}showTable2();printf("\nPress any key to return!");getch();}void average(STUDENT*head){float sum=0,ave;int i,j,t=0;STUDENT *p;printf("which class you want to print(1,2)");scanf("%d",&i);printf("which subject you want to print(1,2,3)");scanf("%d",&j);switch(i){case 1:{p=head;while(p!=NULL){if(p->no>206050500&&p->no<206050600){sum+=p->score[j-1];t++;}p=p->next;}break;}case 2:{p=head;while(p!=NULL){if(p->no>206050600&&p->no<206050700){sum+=p->score[j-1];}p=p->next;}break;}}clrscr();ave=sum/t;printf("class%d sub%d average is: %.2f",i,j,ave);printf("\nPress any key to return!");getch();}void classscore(STUDENT*head){int i,rec=1;STUDENT *p;printf("which class you want to print(1,2)");scanf("%d",&i);printf("class%d\n",i);showTable1();switch(i){case 1:{p=head;while(p!=NULL){if(p->no>206050500&&p->no<206050600){printf("|%3d|%10ld|%12s| %5.1f| %5.1f| %5.1f| %5.1f| %8.1f|%5d|\n",rec,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);rec++;}p=p->next;}break;}case 2:{p=head;while(p!=NULL){if(p->no>206050600&&p->no<206050700){printf("|%3d|%10ld|%12s| %5.1f| %5.1f| %5.1f| %5.1f| %8.1f|%5d|\n",rec,p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);rec++;}p=p->next;}break;}}showTable2();printf("\nPress any key to return!");getch();}void index(STUDENT *head){ int i;clrscr();gotoxy(2,24);printf("Press any key enter menu\n"); getch();for(;;){ switch(menu_select2()){ case 1: fail(head);break;case 2: five(head);break;case 3: average(head);break;case 4: classscore(head);break;case 5: return;}}}void main(){ int i;STUDENT *head;clrscr();gotoxy(2,24);printf("Press any key enter menu\n"); getch();for(;;){ switch(menu_select()){case 1: head=creat();break;case 2: head=del(head);break;case 3: display(head);break;case 4: search(head);break;case 5: save(head);break;case 6: head=load();break;case 7: computer(head);break;case 8: copynew(head);break;case 9: head=sort(head);break;case 10:modify(head);break;case 11:head=append(head);break;case 12:index(head);break;case 13:case 14:exit(0);}}}参考文献1、谭浩强,《C语言程序设计》,清华大学出版社,20052、…………3、…………4、…………。