第一篇:教学成败、课程设计与“学生的语言”
儿童智力发展的研究突出了一个事实,即在每个发展阶段,儿童都有自己的方式观察世界,解释世界和理解世界。成功的关键在于教学,也就是按照独特的方式儿童认识世界,符合儿童的思维方式,澄清教学内容的形式。良好的教学必须翻译成学生的语言,并用孩子的语言与孩子谈话。
从教师的角度来看,不成功的教学往往是因为教师没有成功地将学生的语言翻译成学生的语言,从超出儿童能力范围的形式语言开始(例如公式或精确语言概念)来表达主题内容,并且事先不允许学生直观地理解这些想法,首先熟悉定义和泛化所需的各种个人事实,甚至孩子们已经看到,感觉和爱好事情都不是做任何有机联系;在这个教学中使用的语言,对于学生,只是一些空的或纯的符号,学生只记得一些僵硬和穷人没有活力的概念,老师似乎教了很多,但很少教会彻底。从学生的角度来看,所谓的贫困学生 通常因为他们不能适应,不能理解老师在教授中使用的那种语言,而不是因为他们不能理解主题内容。
n根据这一点,作为教学课程(学习计划)的基础,有必要根据学生的心理特点,根据学生的语言设计。nSo,学生的语言是什么?孩子们知道世界的方式是什么?孩子如何思考?你如何根据学生的语言设计课程?
n(A)学生的语言:三种表征系统,两级操作
nBruner认为,任何知识领域(或这个领域的任何问题)都可以用三种方式表达:一种是由一组适合实现结果的动作表示的(动作表示);用一组求和的图像或图像来替换未完全定义的概念来表示(图像表示);第三是来自系统的一组符号,从某种规则和法律约束的形式或转换命题导出符号或逻辑命题(符号表示)。
这三个表示或表征系统本质上是在输入,转换,存储和提取时呈现或编码信息的三种不同方式。感知和理解,维持,再现三种不同的认知方式。(用布鲁纳的话来说,系统的特征或特性是一套规则,个人要保持各种各样的事情。)
三种表征系统作为观察世界,解释世界和理解世界的三种不同方式,即学生理解和掌握世界三种不同的语言。
我们每个人都在不断地使用这三种不同的表征系统来表征我们的学习经验和思考。
然而,并不是所有年龄的孩子都有这三种表征系统;在儿童认知发展的过程中,他们反过来又依赖于前者的表征,显示出连续性和秩序。因此,三种表征系统的出现和发展具有一定的年龄特征。然而,我们不能简单地,机械地代表具有年龄组的系统一个一个,因为:一方面,一定年龄的儿童在输入,转换信息中使用的表示或编码,以及在存储,提取信息对使用的表示或编码方法往往不同;另一方面,即使只对信息进行输入,转换或只进行信息存储,提取,由某一年龄的儿童呈现或编码的信息将根据正在处理的信息的类型而变化。例如,高中或初中的孩子可以以符号方式存储和提取一些数学逻辑规则(例如,∩(b∪c)=(a∩b)∪(a∩c)转换阶段只能是学习这种规律的方式的形象。至于具体的概念(实体概念),如表,学前儿童已经能够使用符号表示的方式来存储,提取关于表的信息,虽然他们只能以图像表示的方式来学习表概念。n表征系统有一个变换,它可以从一种表达方式转换为另一种表示方式,Brunner的翻译教学是指系统变换的表示。
nBruner使用表征系统的概念来说明人们知道和掌握世界(或理解和掌握世界的不同语言)的不同方式,而Piaget使用计算的概念。
在Piaget有两个层次的计算:需要使用fiddable对象(在现实世界或在他的想象力)推理具体运输(7-11,12岁)和正式操作阶段(11,12-15岁)的正式操作阶段(11?12岁)))获得和开发。普通成年人也有这两种能力。
n对于年轻人(11,12岁)具有相同形式的计算能力,同样的操作问题,虽然已经能够正式操作,但如果有具体的图像和实际操作支持进行具体操作,它自然会使问题容易:
n很难再现一个动作,并将其与实践进行比较,例如,通过单独旋转一个正方形,在色彩位置的每一侧重复90度,这实际上不同于正方形的实际旋转,并观察结果。
在所有水平,包括青春期和各种初级水平,系统的形式,学生可以做得很好的“做”和“行动理解”比他在他自己的语言中表达的更多。
nBut为计算能力的形式已经完全成熟,行动支持往往不再有必要,他们往往更愿意抽象 在简单(因而有效和节省时间)的操作形式中,他们宁愿考虑命题而不是种类;对他们来说,操作的形式不比特定操作困难。总之,不同年龄段的孩子,在感知,理解阶段和在存储,再现阶段,不同事物的表征方式不同,其操作能力水平不同。因此,教学和教学作为教学的基础必须将教学内容(翻译)转化为学生的语言,以学生的适应能力的形式,将问题与学生的能力相匹配,或者找到问题命令做这样的匹配。n(B)螺旋课程
由于表征系统是可转换的,所以可以使得只能通过运动表示或图像表示来使用或更容易地感知这些方法,只要将较高级别表示(转换)转换为较低级别表示儿童谁知道外面的世界可以直观和具体地了解和掌握。这样,对于一些想法,如果孩子不能在符号层面理解概念,他至少可以在表示或行动的层面上理解这个概念。
例如,幼儿不能理解数学的使用 杠杆的类型,但无论他是多么小,只要他有能力坐在跷跷板上,通过仔细的指导,可以使孩子们发现,坐在跷跷板上的孩子的重量与他们的距离的支点关系的种类:如果另一个孩子比我更轻,那么他(她)必须离中间更远一点,我必须更靠近中间。在Bruner看来,这是行动层面的杠杆原则,或者孩子已经以适合他的发展水平的方式理解杠杆原则。
n对于一些操作问题,只要具体形象和实际支持,7,8-11,12岁儿童已经能够面对具体操作的水平。
简而言之,可以肯定的是,幼儿可以以适合其发育水平的方式学习许多学科的许多基本概念,或者对于比平均年龄更年轻的幼儿学习许多学科。基本概念的学科可以学习,前提是为他们的学习找到合适的发展水平,用学生的语言来表达这些想法。(Bruner对这个前提的实现充满自信。)Bruner说,只有当这些基本想法是正式术语时,例如 方程式或复杂的语言概念,他们是超出儿童的能力范围,如果他们从来没有理解这些想法提前,他们没有机会亲自试试。
nBruner指出:我们的学校可能太难了,作为推迟许多重要学科教学的原因,浪费了宝贵的时间。对欧几里德或测量几何到低年级结束的教学,特别是投影几何没有教给学生更早,似乎是极端武断,而且大多是错误的。物理教学也是如此。事实上,使用某些教导,有可能向比传统时代更小的儿童教授自然科学和数学的基本概念。一些基本概念可以接受为7-10岁的儿童,如果这些基本概念不使用数学术语来学习通过孩子可以触摸的具体材料。
因此,儿童应该以一种方式(以与世界所知道的语言或使用的语言相匹配的方式)尽快暴露于该学科的基本思想。然后在此基础上,在连续过程中,通过日益复杂的形式连续使用这些基本概念,重复回到这些基本概念并加深他们的理解,即:以新的形式重新编码它们;然后使用新编码系统生成的新结果继续组织新的结构模式直到学生掌握了适应这些想法的系统的完整形式。
n这个循环的学习基本概念的学科达到更高层次的学习设计,布鲁纳称为螺旋课程(螺旋课程)。布鲁纳认为,这个组织的内容的基本概念的设计不仅适用于数学和自然科学的主题,而且还适用于社会科学甚至文学的科目。
nBruner进一步指出课程设计的优点或必要性:
在课程的过程中,如果自然科学和数学中心的基本思想和生命和文学的基本主题被给予尽可能简单和强大,忠实忠实的儿童观察世界和解释独特的方式的世界,以同样的方式思考孩子的方式)教孩子,那么这个早期的准备课程,这个早期有序的教学 学习使儿童能够对这些基本概念和主题提前直观和直观的理解,并让儿童有机会亲自尝试使用它们为儿童学习未来的基本概念和容易的基础。
在从教育早期准备,通过深化螺旋,到完整形式的学习过程的这样一个过程中,儿童的具体经验被转化为更强大的标志体系和更有序的体系;在过程中,儿童的学习知识主体,不记得那些结果,而是参与知识的重建。这种做法的效果将使主体知识的学习更加连续,并使孩子更加准确地理解概念,并能够更有效地应用这些概念。如果孩子没有这个早期的基础,Will只能使用这些概念的使用概念。
这个螺旋课程的好处也是动机的方面:这种早期的教学准备是有趣的儿童;以及以后对于深化和促进的理解,已经成为智力劳动的灵感来源,这种更深入的理解的激励比我们所做的努力更诱人。(C)准备课程(大纲)
从上述分析可以清楚地看出,布鲁纳的螺旋式课程的特点是强调早期准备教育的前期课程,早期学习的需要,强调的需要,以及强调教学以适应特点的儿童。这也是其螺旋形课程的核心思想。
nPiaget,英国海德,早前指出,需要这样一个数学和自然科学课程:
nM数学教学应从幼儿园准备,通过一系列逻辑和数学为活动的收集,长度和面积如打,开始准备数学教学。
使用小学的突出显示,乘法,包容,序列等基本逻辑,进行一系列练习,例如小学和中学子女的操作,分组和顺序安排。因为这些逻辑运算是所有特殊计算和数学和自然科学概念的基础是真的。也许真相是,这样一个早期的自然科学和数学前言在建立对儿童的直观理解和更多 也许这种理解的好处可能反映在正式的数学和自然科学课程中。
可以看出,这种预备教育的目的是为儿童提供一种可能不太精确但更直观的理解行动的表示的基本概念,图像表示的水平,以奠定未来学习的基础。例如,学前教育作为教育的准备主要是感觉运动的教育,这种预备教育只在于训练观察,这个阶段的独特数量和直觉的空间这些初始活动可以是逻辑运作准备本身。应选择基本概念作为准备课程的内容。布鲁纳也强调:自然科学,数学,社会科学和文学早期教学应该在教学中教授知识和教学方法,使用的是精心挑选,正确的,而且要强调的概念直观的理解和使用这些基本概念。
n幼儿园和小学的教学方法主要是利用活动教学方法来研究行为表现,形象表现等方面的具体操作水平,给学生更多机会和机会尝试证明或否认他们自己 说活动的假想设备是一种基本现象,让学生自发探索,通过重新发现这里的重点强调这里个人而不是直观的边线教学,因为当孩子看实验而不是动手,它失去了行动本身提供的那种信息和文化的价值。
此外,这些概念的准备经常清楚地忽略严格的定义,因为:孩子对世界的感知随着他的经验而改变,成熟结论的概念通常不适合儿童,开始孩子不可能叙述成熟的结论一些想法,第一时间做出任何对与错。我们需要一种适合孩子发展阶段的东西来取代它。为了通过推导推理和经验数据的组合来理解一些基本现象,儿童必须经历一些阶段。这些阶段的特点是一些想法,然后将被判断是错误的,但为了终于找到正确的解决方案,似乎有必要使未被认可的概念慢慢吸收人。
最后,重要的是要注意,除非学生认识到后来的重新编码的基本思想是早期的行动形式 在发展中,否则他不能更多地了解后期学习,早期准备后期学习的好处不能充分发挥;和这个预备性研究和晚期深化研究(重新编码)之间的链接必须与成人教师的帮助找到。因此,在教学的后半部分,教师应该用新的种类的东西与早期的各种理论上的经验联系起来,指导孩子尽可能多地重新发现。
第二篇:语言课程设计-学生成绩管理系统
1、课程设计的目的、任务
《汇编语言》课程设计对于巩固汇编语言理论知识,加强学生的实际动手能力和提高学生综合素质十分必要。课程设计的目的主要是通过程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
2、软件需求分析和设计
2.1学生成绩管理系统是对学生成绩的管理,其中包括以下几个模块:(1).插入一个数据(插入学生学号以及语数外三个成绩)。(2)修改一个数据。(3)删除学生成绩数据。(4)查找学生成绩。(5)查看学生成绩的排名(6)查看学生成绩分布(7)按esc键退出系统
2.2学生成绩管理系统应该包含以下信息:学号,语文成绩,英语成绩,数学成绩。因此,系统应该提供以下功能:(1)输出显示菜单。(2)输入学生的成绩(3)修改学生成绩(4)删除学生成绩(5)查询学生成绩(6)显示学生成绩排名(7)显示成绩分布统计(8)按esc键退出系统
2.3依据程序的功能需求,该系统的功能结构图如下
系统功能结构图
2.4 程序流程图:
主程序流程图
查找学生成绩
插入学生学号及成绩
修改学生的成绩
显示各个学科各分数段的人数
3、程序实现说明
3.1学生管理系统中各子程序如下:
(1).输入全部学生学号以及语文,英语,数学三科的成绩。子程序名:insert 子程序描述:该子程序为输入字程序。系统在开始的时候是没有数据的,通过该子程序可以初始化系统,将学生的学号及成绩输入系统。
代码:
insert proc near;定义进程子程序:插入学生,学号及 成绩 call input;调用input add n,1 ret insert endp
(2).修改输入的成绩。子程序名:modify 子程序描述:通过子程序修改学生的成绩 代码:
modify proc near;定义进程子程序:修改学生学号,成绩 md1:output mess1;输出mess1 shuru;调用宏shuru:二位数据输入 mov bl,n mov bh,0 mov al,dl mov si,0 md: cmp al,xh[si];先查找输入的学生是否存在
je qq1_1;查到的话,就跳转到qq1_1输入修改的值,也就是重新输入。;结果相等则跳转到qq1_1 add si,1
cmp si,bx jbe md;小于等于则跳转到md output mess;输出mess jmp md1;不相等继续输入学号
qq1_1:;转入修改的值重新输入。mov di,si output mess2 output mess4 mov si,0 mov cx,3
qq3_1:shuruu;cmp dx,78h;
jbe qq2_1;output ts3;jmp qq1_1;qq2_1:mov buf[si],dl output bg;add si,1 loop qq3_1 mov al,buf[0];mov chi[di],al mov al,buf[1]
分别输入语文,英语,数学成绩,并将其放 在缓冲区buf中 比较输入的成绩是否大于120,如果大于120的 话,那么重 新输入成绩 小于等于则转移到qq2_1 输出ts3 跳转到qq1_1 输出空格 将存入buf中的成绩,分别赋值给存放对应科 目的成绩的数组
mov eng[di],al mov al,buf[2] mov mat[di],al ret modify endp
(3).删除学生的成绩。子程序名:delete 子程序描述:通过子程序删除学生的成绩 代码:
de proc near;删除某个学生的记录 sc1:output mess1 shuru;调用宏shuru,接受输入的学号 mov bl,n mov bh,0 mov al,dl mov si,0 sc: cmp al,xh[si];查询输入学号的学生信息是否存在,不存在的话,重新输入学号 je sc2;相等则转移到sc2 add si,1 cmp si,bx jbe sc;小于等于则转移到sc output mess;输出mess jmp sc1 sc2: sub bx,si cmp bx,0 je sc3;相等则转移到sc3 mov cx,bx
sc4:mov dl,chi[si+1] mov chi[si],dl mov dl,eng[si+1] mov eng[si],dl mov dl,mat[si+1] mov mat[si],dl mov dl,xh[si+1] mov xh[si],dl add si,1 loop sc4;loop循环指令,执行操作(cx)<--(cx)-1.若 cx!=0,跳转到标号sc处循环执行;cx=0,则推出
循环,执行loop的下一条指令 sub n,1 sc3: ret de endp
(3).查询学生的成绩。子程序名:find 子程序描述:通过子程序查询学生的成绩 代码:
find proc near;定义进程子程序:查找学生成绩 call sum;求学生的总成绩 call ping;求学生的平均成绩
bj1:output mess1;输出mess1 shuru;二位数数据输入 mov bl,n mov bh,0 mov al,dl
mov si,0
bj: cmp al,xh[si];将输入的学号与输入的学号相比,je i;存在的话,将此学生的成绩输出。je表示结果相
等则转移。add si,1 cmp si,bx jbe bj;output mess jmp bj1 i: output strr2 shuzi xh[si];shuzi output bg;mov al,chi[si] cbw;shuzii ax;shuzii output bg;mov al,eng[si] cbw;shuzii ax;shuzii output bg
mov al,mat[si] cbw shuzii ax output bg;
mov al,pj[si] cbw
小于等于则转移到bj 为二位数据输出 输出空格 将字节变为字
为三位数据输出。输出空格 将字节变为字
为三位数据输出 输出空格的字符串,用于与标题栏对齐
shuzii ax output bg
mov ax,si mov bl,2 mul bl mov bx,ax shuzii zc[bx];shuzii为三位数据输出
output bg;输出空格的字符串,用于与标题栏对齐 shuzi mc[si];shuzi为二位数据输出 ret find endp
(4).显示学生的成绩排名。子程序名:show 子程序描述:通过子程序显示学生的成绩排名 代码:
show proc near;定义进程子程序:显示结果排名 call sum;调用宏sum call ping;调用宏ping call rank;调用宏rank call shuchu;调用宏shuchu ret show endp
3.2程序运行抓图:
主菜单
修改学生成绩
删除学生成绩
显示各个学科各分数段的人数
4、程序总结
通过两个星期的学习,努力,终于完成了报告。系统可以很好的运行。这两个多星期的时间,几乎每天不是在敲代码,就是在看代码,查书,上网。系统中用到了很多最近才学习的知识,比如宏,子程序。这些都使得代码的运行效率提高了,代码行数减少了。系统还用到了bios的清屏功能。这些功能如果不是做课程设计,我想我很难会接触到这些知识。
由于自己对知识掌握的不是很牢固,其中也会碰到一些困难。每当遇到问题的时候,我会先上网去查找,看看有没有人提过这方面的问题。互联网是强大的,大部分的问题通过网络都可以解决。部分找不到的问题,我就去请教班里学得好的同学。他们对知识的掌握远超过我。这样下来,很多问题都迎刃而解了。
课程设计是一个很好的掌握书本上知识的过程。平时上课之后,自己都不会想着去敲一些代码联系联系。通过做课程设计,将理论与实践结合了起来,对知识的理解更加深入了。
第三篇:C语言课程设计学生选课系统
题目
一、学生选课管理系统
第一部分:课程设计名称、目的、要求
第二部分:程序总体设计思路
第三部分:程序功能划分、图示及流程图
第四部分:程序设计数据、运行结果
第五部分:程序的优缺点
第六部分:心得体会
第七部分:附录(源程序)
第八部分:附录(参考文献)
目录
..............................................................................第一部分:课程设计名称、目的、要求
名称:学生选修课程系统设计
目的:运用C语言提高解决实际问题的能力 实验环境:Microsoft Visual C++ 6.0 内容:
假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。【功能】
系统以菜单方式工作
课程信息录入功能(课程信息用文件保存)--输入 课程信息浏览功能--输出
查询功能:(至少一种查询方式)--算法 按学分查询 按课程性质查询 学生选修课程(可选项)
第二部分:程序总体设计思路
由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
具体的设计思路如下:
程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。然后定义各种函数的功能包括查看,查询,删除等。另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。通过函数的层层调用来实现程序的逻辑结构。中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。
整个程序的设计思路到此结束。
第三部分:程序功能划分、图示及流程图
【功能模块划分及其流程图】
本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这9个部分来完成。这9个部分依次是:
1.登录界面函数;void login()2.学生登录界面据函数:void stu_login()3.管理员登录界面函数:void man_login()4.退出界面函数:void bye_sys()
5.课程选择函数:void c_select()6.课程浏览函数:void c_view()7.课程查询函数:void c_search()8.课程增加函数:void c_add()9.课程删除函数:void c_delete()10.菜单函数:void index()11.主函数部分; main()
总体设计:
学生选课系统管理员登录学生登录新增课程删除课程课程浏览查询课程学生选课课程浏览课程查询c_add函数c_delete函数c_view函数c_search函数c_select函数c_view函数c_search函数
系统功能模块图
部分函数流程图:
1、课程选择函数:
开始输入要选择的课程的编号j=0;j
2、课程查询函数
开始输入要查询的课程的编号j=0;j 3、课程增加函数 开始输入要增加的课程的编号j=0;j 4、课程删除函数 开始输入要删除的课程的编号nj=0;j 本程序是一款应用软件,故数据设计、程序运行结果应在程序的 运用中得以体现,现在通过一个程序的运用事例来对程序运行结果进行演示与实现。【软件运用举例】 1、程序开始界面如下: 选择某个选项,如进行管理员登录,进行课程的增加 进入管理员界面: 2、再选择所要进行的操作,如进行课程增加,结果如下: 下面可以进行继续增加课程或者退出: 3、选择课程浏览,可以分页查看相应的课程信息: 第一页: 第二页: 4、课程查询 查找结果: 4、管理员课程删除操作: 删除后可以进行浏览,观察删除后的结果: 可见删除后只有一条记录。删除操作完成正确。下面进行学生操作的使用方法: 1、学生登陆界面: 2、选择学生选课选项: 3、学生登陆也可进行课程浏览和查询函数,其结果与管理员登陆相同,不再演示。 第五部分:程序的优缺点 【程序的优点】 算法是程序的灵魂,程序的优点首先表现在算法上的优点,其次才是功能上的。 [算法上的优点]主要体现在以下三点: 1.程序采用main主函数方式设计,程序的主体的功能大都由该功能 完成。程序如此设计有利于程序的进一步改进及有助于程序执行效率的提高。 2.程序对文件数据的读写采用了fread和fwrite块读写函数,能够将文件中的数据完全读出,然后赋到定义的数组中,再在相应的数组中进行一系列操作,最终再写入文件。 3.插入操作在本程序中将课程信息直接插入数组最后一个节点,从而减少了数据的相互移动,节省了时间。 [功能上的优点] 主要体现在以下两点: 1. 简洁明了的程序菜单。程序主要采用了层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。2. 人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地看懂程序并进行操作。 【程序的缺点】 主要表现在以下两点: 1、本程序没有进行相应的密码操作,所以对于使用者来说可能存在比较大的不保密性。需要改善。 2、本程序没有使用文本读写函数fscanf和fprintf,所以的到的课程文件和选课文件都是二进制形式。 第六部分:心得体会 选课系统程序比起通讯录程序来讲好写一些,由于本程序用到了数组,对于数组的操作掌握的比较熟练,所以在编写程序的时候困难没有那么多。 本程序在编写的过程中用到了许多通讯录中的模块化设计和函数互相调用的思想,使得编写比较方便和好用。 通过该系统的课程设计分析,我掌握了模块化设计的方法,理解和运用了结构化程序设计的思想和方法,掌握和提高了运用C语言进行程序设计的能力。 程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常叫做流程,在程序设计过程中理清楚整个问题的流程很重要,然后采取逐步细化的方法实现整个程序。 对于一个较大的应用程序,一般不可能一次就设计出一个很完善的系统。通常要先设计满足基本要求的系统,然后再测试或者在使用的过程中不断完善,慢慢地做成一个功能很完善选修课程管理系统。所以在进行调试的时候需要对许多变量理解和掌握其变化规律等,这对于我更好的掌握visual C中调试的工具有很大的帮助。 总之经过这次课程设计,我对c语言的使用和理解都有了很大的加深,对于编程的思想也有了很多新的理解和感受。 第七部分:附录 一、参考文献: 1、李丽娟主编,C语言程序设计教程(第二版),人民邮电出版社 2、严蔚敏主编,数据结构(C语言),清华大学出版社 3、崔单主编,C语言程序设计案例精粹,电子工业出版社 4、谭浩强主编,程序设计(第三版),清华大学出版社 二、源程序 #include“stdio.h” #include“stdlib.h” #include“windows.h” #include“string.h” void index();//首页 void login();void bye_sys();//退出界面 void stu_login();//学生登录菜单 void c_select();void c_view();//课程浏览 void c_add();//增加课程 void c_delete();void c_searchs();//学生查询函数 void c_searchm();//管理员查询函数 void c_viewm();//管理员浏览函数 void c_views();//学生浏览函数 struct course//定义课程结构体 { int c_num; char c_name[20]; int c_score; int c_nelepeo;//课程已选人数 int c_melepeo;//课程人数上限 };struct student { char s_number[10]; char s_password[10];};struct manager { char m_name[10];char m_password[10];}; void index()//首页 { char input; printf(“nnttt*****************************n”); printf(“ttt 湖南大学学生选课系统n”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt**********设计者:刘晓斌******nnn”); input=getchar(); system(“cls”);} void login()//登陆界面 { void stu_login(); void man_login(); void bye_sys(); int input; do { system(“cls”); printf(“nnnt1.学生登录n”); printf(“t2.管理员登陆n”); printf(“t3.退出本系统n”); printf(“t请选择服务类别:”); scanf(“%d”,&input); if(input!=1&&input!=2&&input!=3)//输入数不等于选项的时候打印画面 { printf(“nt输入出错!请重新选择~n”); printf(“nt按任意键返回选择页面~nt”); getchar();getchar(); system(“cls”); } if(input==3)//如果输入3退出系统 { bye_sys(); } }while(input!=1&&input!=2&&input!=3); switch(input) { case 1:stu_login();break; case 2:man_login();break; } } void bye_sys()//退出界面 { exit(0);} void man_login(){ void c_add(); void c_delete(); void c_view(); void c_searchm(); int in; do { system(“cls”); printf(“nnt1.新增课程n”); printf(“t2.删除课程n”); printf(“t3.课程浏览n”); printf(“t4.课程查询n”); printf(“t5.退出n”); printf(“nnt请选择服务种类:”); scanf(“%d”,&in); if(in!=1&&in!=2&&in!=3&&in!=4&&in!=5) { printf(“nt没有这项服务t按任意重新选择”); getchar();getchar(); } }while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5); switch(in) { case 1:c_add();break; case 2:c_delete();break; case 3:c_viewm();break; case 4:c_searchm();break; case 5:login();break; } } void stu_login()//学生登录菜单 { void c_select(); void c_view(); void c_searchs(); void login(); int input; do { system(“cls”); printf(“nnnt--学生登陆--”); printf(“nnt1.学生选课n”); printf(“t2.课程浏览n”); printf(“t3.课程查询n”); printf(“t4.退出n”); scanf(“%d”,&input); if(input!=1&&input!=2&&input!=3&&input!=4) { printf(“nt没有这项服务~n”); printf(“t按任意键重新选择”); getchar(); getchar(); } }while(input!=1&&input!=2&&input!=3&&input!=4); switch(input) { case 1:c_select();break; case 2:c_views();break; case 3:c_searchs();break; case 4:login();break; } } void c_select(){ int n,in,i=0,j;int flag=0; FILE *fp; FILE *fp1; char input; struct course courses[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判断是否存在课程 { printf(“nnnt课程不存在nn”); printf(“t<按任意键返回管理菜单>nt”); input=getchar(); input=getchar(); stu_login();//进入学生登陆菜单 } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件读完后关闭 } printf(“nntt请输入你要选课程的编号:”); scanf(“%d”,&n); if((fp1=fopen(“courseselect.dat”,“rb”))==NULL) { fp1=fopen(“courseselect.dat”,“wb”); } else { fclose(fp1); fp1=fopen(“courseselect.dat”,“ab”); } for(j=0;j if(courses[j].c_num==n) flag++; if(flag==0) { printf(“nntt不存在对应课程n”); printf(“nntt继续选课请按1,退出请按2:n”); scanf(“%d”,&in); switch(in) { case 1:c_select();break; case 2:stu_login();break; default: printf(“输入错误,将返回登录界面!n”); login();break; } } else { fwrite(&courses[j],sizeof(struct course),1,fp1); fclose(fp1); printf(“nntt选课成功t请选择:”); printf(“nntt1.继续选课”); printf(“nntt2.退出,返回登录界面!”); scanf(“%d”,&in); switch(in) { case 1:c_select();break; case 2:stu_login();break; default:break; } } } void c_viewm()//课程浏览 { void stu_login(); void c_view(); int inp,i=0,n=0; FILE *fp; char input; struct course courseview[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判断是否存在课程 { system(“cls”); printf(“nnnt课程不存在nn”); printf(“t<按任意键返回管理菜单>nt”); getchar();getchar(); stu_login();//进入学生登陆菜单 } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&courseview[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件读完后关闭 do { system(“cls”); if(i==1) { printf(“nnnttt没有记录!n”); getchar();getchar(); man_login(); } else { printf(“nt------共有%d条记录-------”,i-1); printf(“nnt课程编号: %dn”,courseview[n].c_num); printf(“nnt课程名字: %sn”,courseview[n].c_name); printf(“nnt课程学分: %dn”,courseview[n].c_score); printf(“nnt课程已选人数: %dn”,courseview[n].c_nelepeo); printf(“nnt课程人数上限: %dn”,courseview[n].c_melepeo); printf(“nnt1.上一页t2.下一页t3.回目录”); printf(“n请选择:”); scanf(“%d”,&inp); switch(inp) { case 1: { if(n==0) { printf(“nt已到达首页 t按任意键返回”); input=getchar(); input=getchar(); } else { n=n-1; } break; } case 2: { if(n==i-2) { printf(“nt已到达尾页t按人意见返回”); input=getchar(); input=getchar(); } else { n=n+1; } break; } case 3:{man_login();break;} default: { printf(“nt操作错误t按任意键返回”); getchar();getchar(); break; } } } }while(inp!=3); } } void c_views()//课程浏览 { void stu_login(); void c_view(); int inp,i=0,n=0; FILE *fp; char input; struct course courseview[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判断是否存在课程 { system(“cls”); printf(“nnnt课程不存在nn”); printf(“t<按任意键返回管理菜单>nt”); getchar();getchar(); stu_login();//进入学生登陆菜单 } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&courseview[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件读完后关闭 do { system(“cls”); if(i==1) { printf(“nnnttt没有记录!n”); getchar();getchar(); stu_login(); } else { printf(“nt------共有%d条记录-------”,i-1); printf(“nnt课程编号: %dn”,courseview[n].c_num); printf(“nnt课程名字: %sn”,courseview[n].c_name); printf(“nnt课程学分: %dn”,courseview[n].c_score); printf(“nnt课程已选人数: %dn”,courseview[n].c_nelepeo); printf(“nnt课程人数上限: %dn”,courseview[n].c_melepeo); printf(“nnt1.上一页t2.下一页t3.回目录”); printf(“n请选择:”); scanf(“%d”,&inp); switch(inp) { case 1: { if(n==0) { printf(“nt已到达首页 t按任意键返回”); input=getchar(); input=getchar(); } else { n=n-1; } break; } case 2: { if(n==i-2) { printf(“nt已到达尾页t按人意见返回”); input=getchar(); input=getchar(); } else { n=n+1; } break; } case 3:{stu_login();break;} default: { printf(“nt操作错误t按任意键返回”); getchar();getchar(); break; } } } }while(inp!=3); } } void c_searchs(){ void stu_login(); void c_searchs(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear[10]; if((fp=fopen(“course.dat”,“rb”))==NULL) //判断课程信息是否存在 { system(“cls”); printf(“nnt课程不存在t按任意键返回”); getchar();getchar(); stu_login(); } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&coursesear[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } system(“cls”); printf(“nnttt请输入你要查询的课程编号:”); scanf(“%d”,&id); do//检查输入是否符合要求 { for(j=0;j { if(id==coursesear[j].c_num) { flag++; k=j; } } if(flag==1) { system(“cls”); printf(“nnt课程编号:%dn”,coursesear[k].c_num); printf(“nnt课程名字:%sn”,coursesear[k].c_name); printf(“nnt课程学分:%dn”,coursesear[k].c_score); printf(“nnt课程已选人数:%dn”,coursesear[k].c_nelepeo); printf(“nnt课程人数上限:%dn”,coursesear[k].c_melepeo); getchar();getchar(); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchs(); case 2:stu_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } else { system(“cls”); printf(“nnt不存在对应记录n”); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchs(); case 2:stu_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } }while(inp!=1); } void c_searchm(){ void stu_login(); void c_searchm(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear[10]; if((fp=fopen(“course.dat”,“rb”))==NULL) //判断课程信息是否存在 { system(“cls”); printf(“nnt课程不存在t按任意键返回”); getchar();getchar(); stu_login(); } else//存在的话循环读取文件中的信息直到文件指针到文件尾部 { do { fread(&coursesear[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } system(“cls”); printf(“nnttt请输入你要查询的课程编号:”); scanf(“%d”,&id); do//检查输入是否符合要求 { for(j=0;j { if(id==coursesear[j].c_num) { flag++; k=j; } } if(flag==1) { system(“cls”); printf(“nnt课程编号:%dn”,coursesear[k].c_num); printf(“nnt课程名字:%sn”,coursesear[k].c_name); printf(“nnt课程学分:%dn”,coursesear[k].c_score); printf(“nnt课程已选人数:%dn”,coursesear[k].c_nelepeo); printf(“nnt课程人数上限:%dn”,coursesear[k].c_melepeo); getchar();getchar(); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchm(); case 2:man_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } else { system(“cls”); printf(“nnt不存在对应记录n”); printf(“nnt1.回目录继续查询t2.退出查询系统n”); printf(“请选择:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchm(); case 2:man_login(); default: { printf(“nt没有这项服务t请按任意键重新输入”); getchar();getchar(); } } } }while(inp!=1);} void c_add()//增加课程 { void c_add(); void man_login(); int i=0,j,inp; FILE *fp; struct course course_new; struct course courses[10]; system(“cls”); printf(“nntt请输入课程信息”); printf(“nntt1.课程编号:”); scanf(“%d”,&course_new.c_num); printf(“nntt2.课程名字:”); scanf(“%s”,course_new.c_name); printf(“nntt3.课程学分:”); scanf(“%d”,&course_new.c_score); printf(“nntt4.课程已选人数:”); scanf(“%d”,&course_new.c_nelepeo); printf(“nntt5.课程人数上限:”); scanf(“%d”,&course_new.c_melepeo); if((fp=fopen(“course.dat”,“rb”))!=NULL) { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); for(j=0;j<=i-1;j++) if(course_new.c_num==courses[j].c_num) { system(“cls”); printf(“nnttt对不起,这个编号已经使用过nntt按任意键返回管理菜单”); getchar();getchar(); man_login(); break; } } if((fp=fopen(“course.dat”,“rb”))==NULL) { fp=fopen(“course.dat”,“wb”); } else { fclose(fp); fp=fopen(“course.dat”,“ab”); } fwrite(&course_new,sizeof(struct course),1,fp); fclose(fp); printf(“nntt信息输入完毕t按任意键继续”); getchar();getchar(); do { system(“cls”); printf(“nntt1.继续输入”); printf(“nntt2.返回管理菜单”); printf(“nntt请选择”); scanf(“%d”,&inp); if(inp!=1&&inp!=2) { printf(“输入不符合要求t按任意键重新选择”); getchar();getchar(); } }while(inp!=1&&inp!=2); switch(inp) { case 1:c_add();break; case 2:man_login();break; } } void c_delete()//查询后删除 { FILE *fp; int i=0,j,n,k,flag=0; struct course courses[10]; void c_delete(); void man_login(); printf(“nntt请输入你要删除的课程编号:”); scanf(“%d”,&n); if((fp=fopen(“course.dat”,“rb”))!=NULL) { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } else { printf(“nntt不存在任何课程t按任意键返回”); getchar();getchar(); man_login(); } for(j=0;j { if(courses[j].c_num==n) { flag=1; fp=fopen(“course.dat”,“wb”); for(k=0;k fwrite(&courses[k],sizeof(struct course),1,fp); fclose(fp); fp=fopen(“course.dat”,“ab”); for(k=j+1;k { fwrite(&courses[k],sizeof(struct course),1,fp); } printf(“nntt记录已删除!t按任意键返回ntt”); getchar();getchar(); man_login(); fclose(fp); } } if(flag==0) { printf(“nntt不存在对应的课程t按任意键返回”); getchar();getchar(); man_login(); } // printf(“nntt记录已删除!t按任意键返回ntt”); } int main(){ index();login();return 0;} C语言课程设计 飞机空战小游戏 一、实验环境 运行系统 WINDOWSXP 编程工具C++6.0 地点 程序设计与仿真实验室 桌号19电脑IP地址221.12.10.218 二、实验目的和要求 实验目的: (1)使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作算法。 (2)使学生进一步掌握程序设计、编写、调试能力。(3)使学生了解软件开发的基本步骤和内容。 实验要求::飞机空战小游戏。功能要求: 1)有主菜单界面,能让用户选择开始、退出、难度等级、查看用户积分功能; 2)飞机能通过A、S、D、W或上下左右键控制移动方向,使用空格键发射子弹; 3)屏幕随机出现从上到下的敌方子弹; 4)当打中敌方子弹时,积分加1; 5)当敌方子弹打正飞机时,游戏结束,并提示用户是否保存记录(记录包括用户名及积分值),保存后退回到主菜单; 6)当选择主菜单中的“查看用户积分”选项时,进入第二级菜单,用户可查看全部用户积分记录,也可仅查看积分最高者,也可根据用户输入的用户名查看;(此处要求使用到链表,用于临时存储用户积分数据);(对链表的查找操作) 7)所有用户积分信息使用文件进行永久性保存; 8)用户选择“难度等级”,可设定游戏不同难度,难度越高,出现敌方子弹数目及间隔将增加。 三、实验内容和结果 系统总体设计:编写出c语言代码,运行程序,并调试程序,最终实现游戏的功能。本程序主要包含游戏控制函数、设置是否继续游戏函数、输出函数、子弹移动函数、敌机移动函数、设置函数、菜单函数等7个主要函数,包含了不同的功能,对原来的程序作出了很大的改进,用到的主要语句有if语句,for语句、while语句、printf语句、switch语句等等,添加了颜色函数。 系统模块设计:包含游戏控制函数、设置是否继续游戏函数、输出函数、子弹移动函数、敌机移动函数、设置函数、菜单函数等7个主要函数,其中是否继续游戏函数,菜单函数主要运用了SWITCH语句和If语句,子弹移动函数,敌机移动函数通过数组内各数值的变化来完成,设置函数主要用PRINTF和SCANF语句进行各项数值的设置,游戏控制函数使用if函数,kbhit()函数,switch函数组合控制数组中飞机进行的移动和图案的变换。最后用打印数组的方式打印出数组变换。最后运用SWITCH函数进行各项菜单内容的操作。 实验的测试和结果: 四、实验中的问题及心得 通过本次试验,使我对c语言有了更深一层次的了解,对for语句、while语句、printf语句、switch语句、颜色函数等等的了解及使用更加详细了一些,明白了这些语句的用法,明确了c语言的使用环境,功能。同时我了解到了一些方法来实现一些C语言作为一个基础性编程语言是我们在以后编程中不可或缺的语言,使用率肯定会进一步增高。掌握了c语言就相当于掌握了一门技术,同时c语言相对而言简单一些,更容易理解。自己虽然对这个小游戏进行一部分的改造,但是我也感觉这只是其中的很很小的一部分,肯定会有更加强大的功能等待着我们去改善。 同时,我也发现了自己很多的不足,需要进一步加强这一方面的学习,在数据结构链表的使用上还很欠缺,无法使用链表进行数据的读取和输入,还有在两个程序的连接上还有困难,对于头文件的理解不到位,链表的结构,定义,使用指针的方式„„这些都需要提高。这些技能的欠缺导致了在 这个小游戏中无法顺利完成有关用户名和记录的一些要求。„„ 附录:程序清单 #include void movebul(int [][N]);//子弹移动函数 void movepla(int [][N]);//敌机移动函数 void setting(void);//设置函数 void menu();//菜单 int scr[50][N]={0},pl=9,width=15,speed=16,density=40,score=0,death=0,length=18,y=0,x=5,z=15,life=1,max=0;//全局变量:界面、我机初始位、界面宽度、敌机速度、敌机密度、得分、死亡,子弹,飞机,敌机初始图案,生命 char name[N];char first[N];void main(){ menu();getch();} void print(int a[][N])//输出函数 { int i,j;system(“cls”);for(i=0;i a[i][width-1]=4; for(j=0;j { if(a[i][j]==0)printf(“ ”); if((a[i][j]==1)&&(x<15))printf(“%c”,x);//输出我机的符号 if((a[i][j]==2)&&(z<35))printf(“%c”,z);//子弹 if((a[i][j]==3)&&(y<4))printf(“%c”,y+1);//输出敌机符号 if(i==1&&j==width-1)printf(“总积分:%d”,score);//显示得分 if(i==2&&j==width-1)printf(“已经死亡了%d 次,剩余 %d 条命”,death,life-death);//右上角显示死亡次数 if(i==3&&j==width-1)printf(“普通按键:AD控制左右飞行”); if(i==4&&j==width-1)printf(“ W 发射子弹”);if(i==5&&j==width-1)printf(“特殊按键:+-号加减敌机速度”);if(i==6&&j==width-1)printf(“ /*号单列敌机密度减小增大(均有限制)”); if(i==7&&j==width-1)printf(“VIP按键:X键变化飞机图案,Y键变化敌机图案”); if(i==8&&j==width-1)printf(“tZ键变化子弹图案,P键增加生命(均有限制)”); if(i==9&&j==width-1)printf(“注意:向下移动后按其他方向键飞机显现”); } printf(“n”);} } void movebul(int a[][N]){ int i,j;for(i=0;i { if(i==0&&a[i][j]==2) a[i][j]=0; if(a[i][j]==2) { if(a[i-1][j]==3)//加分 { score+=1; printf(“7”); } a[i][j]=0,a[i-1][j]=2; } } } void movepla(int a[][N]){ int i,j;for(i=length-1;i>=0;i--)//从最后一行往上是为了避免把敌机直接冲出数组。 for(j=0;j if(i==length-1&&a[i][j]==3) a[i][j]=0;//消除敌机,在最低层 if(a[i][j]==3)a[i][j]=0,a[i+1][j]=3;//敌机移动 } if(a[length-2][pl]==3&&a[length-1][pl]==1)death++;//死亡 } void continuegame()//继续游戏 { printf(“用户%s”,name);printf(“你的得分是%dn”,score);if(score==0)printf(“tttt 恭喜你刷新了最低记录na”,score);if((score>0)&&(score<20)) printf(“tttt 回家再练 练吧na”,score);if(score>19) printf(“tttt 你真厉害 na”,score);printf(“游戏结束n”);printf(“按y键继续游戏,空格键退出游戏(y/n)?n”);printf(“ttt”);switch(getch())//是否要继续游戏 { case 'y': case 'Y':system(“cls”),death=0,score=0,life=1,x=5,y=0,z=15;menu();break;} } void setting(void)//设置函数 { system(“cls”);//清屏 printf(“n 输入游戏界面的大小(默认3):1-10 ”);scanf(“%d”,&width);width=(width+1)*5;printf(“n 请输入敌机密度大小(默认3):1-5 ”);scanf(“%d”,&density);density=(7-density)*10;printf(“n 输入敌机的飞行速度大小(默认3):1-10 ”);scanf(“%d”,&speed);speed=(11-speed)*2;printf(“n 输入我机的生命(默认1):1-100 ”);scanf(“%d”,&life);printf(“n 输入飞机的图案(默认1):1-2 ”);scanf(“%d”,&x);x=x+4;printf(“n 输入子弹的图案(默认1):1-10 ”);scanf(“%d”,&z);z=z+14;printf(“n 输入敌机的图案(默认1):1-3 ”);scanf(“%d”,&y);y=y-1;} void run(){ int i=0,j=0,k=0,b=0;printf(“请输入用户名:”);scanf(“%s”,name);printf(“您的用户名是:%s”,name);if(getch()==27)setting();printf(“游戏说明:按AWSD控制我机左右飞行,空格键发射子弹n特殊按键:-号敌机减速,+号敌机加速n特殊按键:/号单列敌机密度减小,*号单列敌机密度增大n”);printf(“VIP按键:X键变化飞机图案,Y键变化敌机图案ntZ键变化子弹图案,P键增加生命n”);printf(“任意键开始游戏,esc键进入游戏设置n”);printf(“游戏时也可更改游戏设置任意键开始nn”);system(“color a”);//设置背景颜色 if(getch()==27)setting();scr[length-1][pl]=1;//我方飞机初始位置 scr[0][5]=3;while(death { if(kbhit()) switch(getch())//控制设置按键 { case 'a': case 'A':if(pl>0) scr[length-1][pl]=0,scr[length-1][--pl]=1;break; case 'd': case 'D':if(pl scr[length-1][pl]=0,scr[length-1][++pl]=1;break;case 'W': case 'w':if(length>10) { scr[length-1][pl]=0,scr[length-2][pl]=1; length=length-1; };break; case '+':if(speed>2) { speed=speed-2; };break; case '-':speed=speed+1;break;case '*':if(density>5) { density=density-5; };break; case '/':density=density+10;break; case 'l':if(width<40) { width=width+2; };break; case 's':if(length<30) { scr[length-1][pl]=0; length=length+1; scr[length-1][pl]='5'; };break; case ' ':scr[length-2][pl]=2;break; case 'y':y=(y+1)%4;break; case 'x':x=(x)%2+5;break; case 'z':if(z<25) { z=z+1; } else z=15;break; case 'p':life=life+1;break;} if(++j%density==0)//控制生产敌机的速度 { j=0; srand(time(NULL));//产生随机数 scr[0][rand()%width]=3; scr[rand()%3][rand()%(width+2)]=3; scr[rand()%2][rand()%(width+1)]=3; scr[rand()%4][rand()%(width+4)]=3;//生成随机敌方飞机 } if(++i%speed==0)//控制敌机移动速度,相对于子弹移动速度 movepla(scr);//飞机移动 movebul(scr);//子弹移动 print(scr);//绘制游戏画面 } if(score>=max){ max=score; for(i=0;i { name[i]=first[i]; } } if(score score=score;} continuegame();getch();} void menu(){ printf(“n1:游戏设置n2:游戏说明n3:开始游戏n4:查看用户信息n5:退出游戏n”); switch(getch()){ case '1': setting();menu();break; case '2':printf(“游戏说明:按AWSD控制我机左右飞行,空格键发射子弹n特殊按键:-号敌机减速,+号敌机加速n特殊按键:/号单列敌机密度减小,*号单列敌机密度增大n”);printf(“VIP按键:X键变化飞机图案,Y键变化敌机图案ntZ键变化子弹图案,P键增加生命n”);printf(“ 任意键开始游戏,esc键进入游戏设置n”);printf(“ 游戏时也可更改游戏设置”);menu();break; case '3':run();menu();break; case '4':seerecord();menu();break; case '5':exit(0);break;default:menu();break;} } seerecord(){ printf(“最高纪录为%s,%d”,first[N],max);} C语言程序设计课程设计 设计题目:专业:计算机科学与技术班级:2010级计算机二班组长姓名:马得才【P101712944】成员姓名:孙丽欣【P101712927】 赵广峰【P101712926】 迟成凯【P101712928】 冶成意【P101712930】 2010年5月20日 题目: 指导教师:普措才仁 一、案例需求 二、案例分析 三、案例设计 四、案例实现 五、参考文献第四篇:C语言课程设计
第五篇:C语言课程设计范文