《C语言程序设计》课程设计指导书.docx
- 文档编号:23692857
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:18
- 大小:23.18KB
《C语言程序设计》课程设计指导书.docx
《《C语言程序设计》课程设计指导书.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》课程设计指导书.docx(18页珍藏版)》请在冰豆网上搜索。
《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、上机时间和地点以学院通知为准,如有变动另行通知。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 课程设计 指导书