《C语言程序设计》课程设计指导书.docx

上传人:b****8 文档编号:23692857 上传时间:2023-05-20 格式:DOCX 页数:18 大小:23.18KB
下载 相关 举报
《C语言程序设计》课程设计指导书.docx_第1页
第1页 / 共18页
《C语言程序设计》课程设计指导书.docx_第2页
第2页 / 共18页
《C语言程序设计》课程设计指导书.docx_第3页
第3页 / 共18页
《C语言程序设计》课程设计指导书.docx_第4页
第4页 / 共18页
《C语言程序设计》课程设计指导书.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

《C语言程序设计》课程设计指导书.docx

《《C语言程序设计》课程设计指导书.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》课程设计指导书.docx(18页珍藏版)》请在冰豆网上搜索。

《C语言程序设计》课程设计指导书.docx

《C语言程序设计》课程设计指导书

 

河南工程学院

《C语言程序设计》

课程设计指导书

 

 

适用专业:

软件工程

适用班级:

专升本20级

 

2020年9月1日

《C语言程序设计》课程设计指导书

一、课程基本知识

1、课程设计目的

通过课程设计,巩固C语言程序设计的基础知识,进一步理解数组和指针的应用,理解函数的重要性,学会为涉及的数据定义适当的结构体,使用结构体设计;另一方面,通过课程设计,复习巩固二进制磁盘文件的建立,使用结构体数组作磁盘文件输入输出的中介,使用二进制磁盘文件存盘,增强数据抽象能力和程序设计的能力,为后续课程,特别是软件编码打下坚实的知识基础。

2、课程设计主要目标

教育目标是在学生学习了C语言程序设计的基本知识、基本理论的基础上,通过综合课程设计,培养学生的动手能力,培养学生学习新知识的能力,提高学生分析问题和解决问题的综合能力,培养学生的团队合作精神,为今后从事专业工作打下必要的基础。

知识目标:

(1)掌握模块化程序设计的方法;

(2)进一步学习和掌握C语言中的文件操作函数及其应用;

(3)学习和掌握C语言中的库函数及其应用。

能力培养目标:

(1)能正确分析现实生活中的问题,并抽象成数学模型,进行模块分析和编程;

(2)在程序调试过程中,能根据运行环境给出的错误提示,正确解决程序中的语法错误;

(3)在程序调试过程中,能根据运行结果,运用相应的手段,正确地找出并解决程序中的逻辑错误;

(4)在课程设计过程中,适当进行小组分工,培养团队谐调和团队合作的能力;

(5)提交课程设计成果报告,培养专业文档书写的能力。

3、课程设计所用设施

PC机、VisualC++6.0或Dev-C++ 集成开发环境等。

4、课程设计任务及要求

根据提供的题目,认真完成软件设计的全部过程,并以最终软件设计成果来证明其独立完成实际任务的能力,从而,反映出理解和运用C程序知识的水平和能力,最后完成软件设计和程序调试并提交文档:

课程设计成果报告,成果报告中包含设计方法、算法及部分程序代码。

二、课程设计基本操作方法

1、按照系统用户手册及文档规范要求进行操作,养成查阅手册、文档的良好习惯。

2、对特殊疑难问题采用讨论、协作等方式进行解决,有意识地训练团队合作意识。

3、课程设计报告应多包含在课程设计过程中出现的错误及解决方法。

三、课程设计项目

1、猜数游戏

涉及知识点:

循环、随机数操作。

计算机“想”一个数([1,100])请人猜,如果猜对了,提示正确信息;否则告诉所猜的数是大还是小,同时提示下一次猜数的范围,直到猜对结束,最后给出游戏者猜测的次数。

要求,程序以菜单方式工作。

2、万年历显示

涉及知识点:

循环、格式化输出。

设计一个程序实现万年历的显示,要求:

(1)输入一个年份(1900-2040),在屏幕上输出该年的日历。

(2)输出年历时,以月份和星期做表头。

(3)系统以菜单方式工作。

3、显示月历

涉及知识点:

循环、格式化输出。

设计一个程序实现月历的显示,要求:

(1)输入年月信息,在屏幕上输出该月的日历。

(2)输出日历时,以月份和星期做表头。

(3)系统以菜单方式工作。

4、英文单词统计助手

涉及知识点:

循环、字符串数组(二维字符数组)、一维字符数组、数组元素的排序。

设计一个程序实现英文短文单词的统计任务,要求:

(1)输入若干行英文,语句之间用逗号,句点分隔,单词之间用空格分隔。

(2)统计并输出单词的总数。

(3)统计各英文字符出现的次数(标点符号及空格不统计),并按出现的次数降序输出。

(4)系统以菜单方式工作。

5、简单文本编辑器

涉及知识点:

循环、字符串数组(二维字符数组)、一维字符数组、字符串处理函数。

设计一个程序实现英文文本的编辑,要求:

(1)输入若干行英文,语句之间用逗号,句点分隔,单词之间用空格分隔。

(2)单词的查找:

输入一个单词,查找该单词在短文中出现的次数及所在的行数和列数。

(3)单词的替换:

输入一个单词,在文中查找该单词,并将其替换为新单词。

(4)大小写转换:

将文中的所有单词转换为大写或小写。

(5)系统以菜单方式工作。

6、简单数学测验

涉及知识点:

循环、文本文件操作、格式化读写文件、随机数、全局变量。

设计程序实现一个数学测验,随机选择两个整数和加减法形成算式要求学生解答,要求:

(1)电脑随机出10道题,每题10分,程序结束时显示得分。

(2)只允许进行100以内的加减法,不允许两数的和或差超出0—100的范围。

(3)每道题有两次机会输入答案,第一次输入错误答案时,提醒重新输入,若两次输入

均错误,则给出正确答案。

(4)判分规则:

第一次回答正确得10分,第二次回答正确得5分,否则不得分。

(5)程序提供查看错题功能,能查看本次测验的错题。

(6)系统以菜单方式工作。

7、数学测验

涉及知识点:

循环、文本文件操作、格式化读写文件、随机数、全局变量。

设计程序实现一个数学测验,随机选择两个整数和乘除法形成算式要求学生解答,要求:

(1)电脑随机出5道题,每题20分,程序结束时显示得分。

(2)只允许进行100以内的乘法,不允许两数的积超出0—100的范围。

(3)做除法时,只允许做整除运算(即本次除法运算的余数为0)。

(4)每道题有两次机会输入答案,第一次输入错误答案时,提醒重新输入,若两次输入均错误,则给出正确答案。

(5)判分规则:

第一次回答正确得20分,第二次回答正确得10分,否则不得分。

(6)程序提供查看错题功能,能查看本次测验的错题。

(7)系统以菜单方式工作。

8、简单计算器

涉及知识点:

循环、随机数、数学函数。

设计程序实现一个计算器,要求:

(1)能完成任意两个数的四则运算(加、减、乘、除)。

(2)能完成三角函数运算(sin(x),cos(x),tan(x),sin-1(x),cos-1(x),tan-1(x)。

(3)能完成对数运算(lnx,log10x)。

(4)其它运算(ex,平方分计算,xy)。

(5)系统以菜单方式工作,每个功能里的运算用二级菜单实现,例如:

加、减、乘、除的选择需用二级菜单提示。

9、记忆力大挑战

涉及知识点:

循环、随机数、数组。

设计程序实现一个记忆力挑战游戏,要求:

(1)游戏分为5个等级,每个等级的游戏规则如下。

(2)入门级:

电脑随机出5个数字(1~20),每个数字上面显示其所在的位置序号(从1开始),数字在屏幕上显示5秒钟,然后消失,要求游戏者凭借记忆按顺序答出5个数字,答错一个即算挑战失败。

(3)修炼级:

电脑随机出5个数字(1~20),数字在屏幕上显示4秒钟,然后消失,要求游戏者凭借记忆按顺序答出5个数字,答错一个即算挑战失败。

(4)大师级:

电脑随机出5个数字(1~20),数字在屏幕上显示3秒钟,然后消失,要求游戏者凭借记忆按顺序答出5个数字,答错一个即算挑战失败。

(5)大仙级:

电脑随机出5个数字(1~20),数字在屏幕上显示2秒钟,然后消失,要求游戏者凭借记忆按顺序答出5个数字,答错一个即算挑战失败。

(6)系统以菜单方式工作。

10、学籍查询系统

涉及知识点:

循环、二进制文件操作、结构体数组、排序。

设计程序实现学生学籍的查询,具体要求如下:

(1)用二进制数据文件存放学生的学籍信息。

(2)学籍的添加:

根据输入的新生的学号、姓名、性别、出生日期、系别、专业信息,注册该生的学籍。

(3)学籍的显示:

输出所有学籍。

(4)学籍的查询:

根据学号,查询并显示该生的学籍。

(5)学籍的查询:

根据系别,查新并显示该系的学籍。

(6)学籍的排序:

按学号降序输出所有学籍。

(7)系统以菜单方式工作。

11、学籍管理系统

涉及知识点:

循环、二进制文件操作、结构体数组、文件的随机读写。

设计程序实现学生学籍的管理,具体要求如下:

(1)用二进制数据文件存放学生的学籍信息。

(2)学籍的添加:

根据输入的新生的学号、姓名、性别、出生日期、系别、专业信息,注册该生的学籍。

(3)学籍的修改:

根据学号,查找并修改该生的成绩,并显示修改后所有学生的成绩信息。

(4)学籍的删除:

根除输入的学号,删除该生的学籍,并显示修改后所有学生的学籍。

(5)系统以菜单方式工作。

12、成绩查询系统

涉及知识点:

循环、二进制文件操作、结构体数组。

设计程序实现学生成绩的查询,具体要求如下:

(1)用二进制数据文件存放学生的成绩信息。

(2)成绩的添加:

根据输入的学生成绩信息(学号、姓名、班级、学期、英语成绩、高数成绩、C语言成绩),添加该生的成绩。

(3)成绩的显示:

输出所有学生的成绩。

(4)成绩的查询:

根据学号,查询并显示该生的成绩。

(5)成绩的查询:

根据班级,查询并显示该班的成绩。

(6)成绩的查询:

根据课程名,查询并显示该课程所有不及格成绩。

(7)系统以菜单方式工作。

13、成绩管理系统

涉及知识点:

循环、二进制文件操作、结构体数组、文件的随机读写、排序。

设计程序实现学生成绩的管理,具体要求如下:

(1)用二进制数据文件存放学生的成绩信息。

(2)成绩的添加:

根据输入的学生成绩信息(学号、姓名、班级、学期、英语成绩、高数成绩、C语言成绩),添加该生的成绩。

(3)成绩的修改:

根据学号,查找并修改该生的成绩,并显示修改后所有学生的成绩。

(4)成绩的删除:

根除输入的学号,删除该生的成绩,并显示修改后所有学生的成绩。

(5)成绩的排序:

降序输出某班某课程的成绩。

(6)系统以菜单方式工作。

14、宿舍查询系统

涉及知识点:

循环、二进制文件操作、结构体数组。

设计程序实现学生宿舍信息的查询,具体要求如下:

(1)用二进制数据文件存放学生的宿舍信息。

(2)每个房间最多住4人。

(3)宿舍信息的添加:

根据输入的宿舍信息(楼号、房间号、实际入住人数、入住学生姓名),添加该宿舍的信息。

(4)宿舍信息的显示:

输出所有宿舍的信息。

(5)宿舍信息的查询:

根据楼号与房间号,查询并显示该宿舍的信息。

(6)宿舍信息的查询:

根据楼号,查询并显示该宿舍楼的实际入住人数。

(7)宿舍信息的查询:

根据楼号,查询并显示该宿舍楼中尚有空床位的宿舍信息。

(8)系统以菜单方式工作。

15、宿舍管理系统

涉及知识点:

循环、二进制文件操作、结构体数组、文件的随机读写。

设计程序实现学生宿舍信息的管理,具体要求如下:

(1)用二进制数据文件存放学生的宿舍信息。

(2)每个房间最多住6人。

(3)宿舍信息的添加:

根据输入的宿舍信息(楼号、房间号、实际入住人数、入住学生姓名),添加该宿舍的信息。

(4)宿舍信息的修改:

根据楼号及房间号,查找并修改该宿舍的信息,并显示修改后该楼的所有宿舍信息。

(5)宿舍信息的删除:

根除输入的楼号及房间号,删除该宿舍的信息,并显示修改后该楼的所有宿舍信息。

(6)系统以菜单方式工作。

16、火车信息查询系统

涉及知识点:

循环、二进制文件操作、结构体数组、排序。

设计程序实现火车信息的查询,具体要求如下:

(1)用二进制数据文件存放学生的宿舍信息。

(2)车票信息的添加:

根据输入的车票信息(车次、始发地、目的地、出发时间、到达时间、票价、余票数、总票数),添加该车次信息。

(3)车次查询:

根据输入的车次,查询并输出该车次的列车信息。

(4)始发地查询:

根据输入的始发地,查询并输出相应的列车信息。

(5)目的地查询:

根据输入的目的地,查询并输出相应的列车信息。

(6)按票价降序输出所有的列车信息。

(7)系统以菜单方式工作。

17、火车信息管理系统

涉及知识点:

循环、二进制文件操作、结构体数组、文件的随机读写。

设计程序实现火车票信息的查询,具体要求如下:

(1)用二进制数据文件存放学生的宿舍信息。

(2)车票信息的追加:

根据输入的车票信息(车次、始发地、目的地、出发时间、到达时间、票价、余票数、总票数),添加该车次信息。

(3)订购车票:

根据输入的车次及票数,订购车票,并显示订票后该次列车的余票信息。

(4)查询并输出票已售罄的列车信息。

(5)退票:

根据输入的车次及票数,进行退票,并显示退票后该次列车的余票信息。

(6)系统以菜单方式工作。

18、短信模拟管理器

涉及知识点:

循环、二进制文件操作、结构体数组、文件的随机读写。

设计程序实现手机短信的模拟管理,具体要求如下:

(1)用二进制数据文件存放短信信息。

(2)短信的保存:

编辑一条短信(日期、发送者、接收者、短信内容),保存该短信。

(3)短信查询:

根据输入的发送者姓名,查找并显示其所发的所有短信。

(4)短信删除:

根据输入的发送者姓名,删除其所发的所有短信。

(5)短信删除:

根据输入的接收者姓名,删除发送给该用户的所有短信。

(6)系统以菜单方式工作。

19、员工工资查询系统

涉及知识点:

循环、二进制文件操作、结构体数组、排序。

设计程序实现员工工资的查询,具体要求如下:

(1)用二进制数据文件存放员工工资信息。

(2)工资信息的追加:

根据输入的员工工资信息(工号、姓名、性别、月份、基本工资、奖金、应扣额、实发工资),添加该员工工资信息。

(3)每月应扣额计算方法:

应扣额=基本工资*0.1+奖金*0.15

每月实发工资计算方法:

实发工资=基本工资+奖金-应扣额。

(4)按月查询工资:

输入一个月份,查询并输出该月所有员工的工资信息。

(5)按工号查询工资:

输入一个工号,查询并输出该员工每月的工资信息及全年的工资总额。

(6)工资排序:

降序输出所有员工的全年工资总和。

(7)系统以菜单方式工作。

20、员工工资管理系统

涉及知识点:

循环、二进制文件操作、结构体数组、文件的随机读写。

设计程序实现员工工资的管理,具体要求如下:

(1)用二进制数据文件存放员工工资信息。

(2)工资信息的追加:

根据输入的员工工资信息(工号、姓名、性别、月份、基本工资、奖金、应扣额、实发工资),添加该员工工资信息。

(3)每月应扣额计算方法:

应扣额=基本工资*0.1+奖金*0.15

每月实发工资计算方法:

实发工资=基本工资+奖金-应扣额。

(4)工资信息修改:

输入一个工号,修改该员工的工资信息,并保存修改结果。

(5)工资信息删除:

输入一个工号及月份,删除该员工该月份的工资信息,并输出删除操作后该员工全年的工资信息。

(6)系统以菜单方式工作。

四、课程设计要求及说明

1、代码书写要求

为保证开发团队的协作和后期修改能有效进行,使学生遵照统一的排版风格、注释标准、命名规则及编码诸原则进行C语言编程,特提出以下规范要求。

缩进:

(1)程序块要采用缩进风格编写,缩进以4个空格(Space)键为单位,不使用"TAB键"。

(2)函数体、结构体、循环体以及分支结构中的语句行都须采用缩进风格。

(3)所有的if、while、for、do结构中的语句即使只有一行也须用括号括起来。

(4)if、while、for、do语句单独占一行,左、右花括号也各占一行且不缩进。

例:

if(uperhero==theTick)

{

printl(“Spoon!

”);

}

间隔:

所有的标识符都必须被空白字符包围。

例如:

inttheTick=5;

if(theTick==5)

空行:

代码段之间须以一个空行进行间隔;

空格的位置:

(1)在一个关键字和左括号“(”之间。

注意:

不要在函数名和左括号之间加空格;

(2)在参数列表的每个逗号“,”之后;

(3)二元操作符前后。

注意:

一元操作符前后都不加空格。

例如:

inta=10;a=a+1;a++;

(4)for语句的每个表达式之间。

例如:

for(inti=0;i<20;i++)…。

代码行:

(1)不允许把多个短语句写在一行中,即一行只写一条语句;

(2)长语句、参数、表达式(超过80个ASCII字符)应分行书写,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。

示例:

#001perm_count_msg.head.len = NO7_TO_STAT_PERM_COUNT_LEN

#002    + STAT_SIZE_PER_FRAM ;

#003act_task_table[STAT_TASK_CHECK_NUMBER + index].occupied

#004    = stat_poi[index].occupied;

命名规则:

所有的标识符只能用字母(A-Z或a-z)和数字(0-9)。

不得包含货币符号或其它非AS-CII字符。

(1)变量的命名应尽可能采用有意义的名词,力求可顾名思义。

(2)可以采用一个单词或多个单词的缩写作为名字,缩写单词的每个字母都要大写。

(3)对于难以使用英文的情况,可以参考相关行业标准,比如使用国标。

(4)采用约定俗成的习惯用法。

注释:

(1)为确保程序易读性,注释语句不得小于全部代码行的30%。

(2)说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg)

头部应进行注释,注释必须列出:

版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。

(3)源文件头部应进行注释,列出:

版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。

(4)函数头部应进行注释,列出:

函数的目的/功能、输入参数、输出参数、返回值、调用关系(函数、表)等。

(5)边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。

不再有用的注释要删除。

(6))注释的内容要清楚、明了,含义准确,防止注释二义性。

(7)避免在注释中使用缩写,特别是非常用缩写。

(8)注释应与其描述的代码相近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。

(9)对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。

变量、常量、宏的注释应放在其上方相邻位置或右方。

(10)数据结构声明(包括数组、结构、类、枚举等),如果其命名不是充分自注释的,必须加以注释。

对结构中的每个域的注释放在此域的右方。

(11)全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它,以及存取时注意事项等的说明。

(12)注释与所描述内容进行同样的缩排。

(13)将注释与其上面的代码用空行隔开。

(14)对变量的定义和分支语句(条件分支、循环语句等)必须编写注释。

(15)对于switch语句下的case语句,如果因为特殊情况需要处理完一个case后进入下一个case处理,必须在该case语句处理完、下一个case语句前加上明确的注释。

2、编码原则

(1)注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。

(2)避免使用不易理解的数字,用有意义的标识来替代。

涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。

(3)去掉没有必要的公共变量。

(4)仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。

(5)明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。

(6)当向公共变量传递数据时,要十分小心,防止赋予不合理的值或越界等现象发生。

(7)防止局部变量与公共变量同名。

(8)严禁使用未经初始化的变量。

(9)对所调用函数的错误返回码要仔细、全面地处理。

(10)明确函数功能,精确(而不是近似)地实现函数设计。

五、课程设计的组织与纪律

1、课程设计项目以小组为单位,完成课程设计要求的课程设计内容。

本次课程设计的实施步骤为:

(1)根据设计题目要求的指标,通过查阅有关资料分析其功能并进行个人分工;

(2)画出程序流程图,完成程序各部分的内容分析;

(3)计算各模块的参数设计,模块内部操作及模块返出的结果;

(4)验证模块功能的完整性;

(5)对模块功能进行程序设计;

(6)对模块功能进行调试;

(7)组合功能模块并完成设计要求;

(8)撰写设计报告、答辩。

2、由班长负责学生考勤,教师负责监督课堂纪律。

3、端正课程设计态度,遵守机房制度,认真完成课程设计任务。

4、设计结束时按时上交一份工整清晰的课程设计成果报告。

六、参考书目

参考书目:

谭浩强著,《C语言设计题解与上机指导》,清华大学出版社,2006.3

谭浩强著,《C语言设计》,清华大学出版社,2006.3

七、设计教学内容与建议学时分配

分析设计准备阶段(1天)

编程调试阶段(3天)

撰写课程设计报告、考核(1天)

八、课程设计考核标准及方式

1.考核方式

以大组为单位学生自愿参加现场答辩(不参加答辩者,课程设计成绩不能为优、良)。

2.考核标准

通过提交编写的代码和报告的方式,并结合学生的动手能力,独立分析解决问题的能力和创新精神,总结报告和学习态度综合考评。

成绩分优、良、中、及格和不及格五等。

具体的考核项目如下:

(1)平时考核(20%):

课程设计期间的出勤情况、态度、效率、协作精神;知识掌握情况、基本操作技能、知识应用能力、获取知识能力;

(2)课程设计能力:

包括:

设计思想(20%):

需求分析能力,算法分析设计能力

编码、调试分析(50%):

编制代码能力,调试分析能力

包涵几个方面:

实际动手、创新、解决问题、与他人协调、沟通、表达等能力;知识点的掌握情况及在合作小组中负责工作的完成情况。

(4)文档资料及答辩(20%+10%):

表达能力、文档写作能力和文档的规范性;对所做系统的理解等。

(5)课程设计效果:

高质量完成课程设计任务或项目开发、有创意的加分

根据以上考核结果给出相应成绩。

3.不及格情况判定

(1)点名3次及以上未到者

(2)系统编程部分代码及说明完全相同(视为抄袭,直接不及格)

(3)没有完成选定题目的代码编写及调试,没有输出指定结果

(4)课程设计报告书写不规范或过于简单者

九、其它注意事项

1、注意课程设计时间安排,准时参加课程设计,遵守学院考勤制度,不得迟到、早退。

如有事必须履行请假手续,写书面请假条,班主任签字同意后,交课程设计指导老师处。

2、上机时间和地点以学院通知为准,如有变动另行通知。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1