1、计算机语言(C)课程设计指导书i前言本书是针对在完成前修课程计算机语言(C) 基础上的一个课程设计指导书,指导书选出的程序首先是配合前修课程,目的在前修课程基础上通过程序设计的实践训练提高学生的编程能力。 本书的所选的设计题目有不同的应用类型供学生选择。部分题目的算法没有在前修课程中涉及,需要学生查阅、自学有关参考书籍和资料后才能完成。本书使用对象为本科非计算机类的学生,课程设计的时间为一周。设计环境为学校计算机中心,每人一题,每人一台计算机。软件环境要求:windows 操作系统,C 语言开发工具软件(建议在以下几个版本中选用一种:Turbo C 2.0 、Turbo C 3.0 、 C F
2、ree 4.0) ,Word(用于编写设计报告) 。 附录中的实例在 Turbo C 2.0 环境中调试通过。2007.3计算机语言(C)课程设计指导书ii目录第一篇 C 语言课程设计说明 .- 1 -第二篇 课程设计题目 .- 3 -题目一 计算器 .- 3 -题目二 多项式计算 .- 4 -题目三 通讯录管理软件 .- 5 -题目四 成绩记录簿 .- 5 -第三篇 附录 .- 6 -附录一 详细设计说明书的编写范例 .- 6 -附录二 程序范例 .- 7 -附录三 相关函数 .- 7 -附录四 参考文献: .- 9 -计算机语言(C)课程设计指导书- 1 -第一篇 C 语言课程设计说明一.
3、 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言(C) 课程后进行的一次全面的综合练习。本课程设计的目的和任务:1. 巩固和加深学生对 C 语言课程的基本知识的理解和掌握;2. 掌握 C 语言编程和程序调试的基本技能;3. 利用 C 语言进行基本的软件设计;4. 掌握书写程序设计说明文档的能力5. 提高运用 C 语言解决实际问题的能力。二. 课程设计要求1. 分析课程设计题目的要求;2. 写出详细设计说明;3. 编写程序代码,调试程序使其能正确运行;4. 设计完成的软件要便于操作和使用,有整齐、美观的使用界面;5. 设计完成后提交课程设计报告(按学
4、校要求装订)和源代码文件的电子文档。三. 课程设计的内容1. 在指导书提供的课程设计题目中选择一题,每个题目限一人完成,题目选定后不可更换;2. 用户提供的主操作界面应该为菜单形式。3. 最后提交的课程设计成果包括:a) 课程设计报告打印稿;b) 课程设计报告电子稿;c) 源程序文件;d) 可执行文件。四. 课程设计报告的内容: 1. 课程设计题目名称、班级号、学号、学生姓名和课程设计起止日期; 2. 课程设计目的和要求; 3. 课程设计任务内容;4. 详细设计说明;5软件使用说明;6. 课程设计心得与体会;7. 附录:1 参考文献 2 程序清单。五. 评分标准:1. 根据平时出勤情况和设计时
5、的工作情况; 计算机语言(C)课程设计指导书- 2 -2. 根据课程设计程序的完成情况,必须有可运行的软件。3. 根据课程设计报告的质量。课程设计报告不能雷同,雷同的所有人判为不及格。4. 提高水平六. 进度安排:第一天 选择课程设计题目,分析课题的要求,编写详细设计说明;第二天 编写程序;第三天 编程及调试;第四天 写课程设计报告;第五天 面试,交课程设计报告(打印稿及电子稿) 。计算机语言(C)课程设计指导书- 3 -第二篇 课程设计题目题目一 计算器1. 设计要求:输出计算器的用户界面如下:1 2 3 +4 5 6 -7 8 9 *0 = /实现整数的算术运算(加、减、乘、除) 。程序只
6、接受界面上显示的字符输入。用户按下数字键时立即输入该数字,不需要用回车键输入,到用户按入运算符时表示前面输入的数字组成为一个运算数,随后再输入的数字为第二个运算数,用户按 = 键后输出运算结果。输入时要检查输入数据的合法性,滤除一切不合法的输入。2. 提高水平:计算器中加入小数点,使计算器能计算浮点数。3. 提示:此题适合在 turboc2.0 环境中开发,用 bioskey()函数一个一个的输入字符,判别输入的字符再做出相应的处理。计算机语言(C)课程设计指导书- 4 -题目二 多项式计算1. 设计要求:具备一元多项式加、减、乘的运算功能。 (多项式系数的输入和输出均按次数从高到低排列形式安
7、排系数。 ,最右面的为零次项系数,从右向左依次增加。 )例如:多项式加法 输入: 2 -5 0 7 (表示多项式 2x3-5x2+7)3 1 -8 (表示多项式 3x2+x-8)输出 2 -2 1 -1 (2x3-5x2+7)+( 3x2+x-8)= 2x3-2x2+x-1输入的数据项数是不定长的,最多不超过 10 项,用菜单让用户选择运算类别。菜单格式如下:多项式计算1. 多项式加法2. 多项式减法3. 多项式乘法0. 退出2. 提高水平增加一元多项式相除的运算功能。其中”除”运算结果用商式和余式表示,即 f(x)和 g(x) 相除,存在商式 q(x)和余式 r(x) 使 f(x)= g(x
8、) * q(x) + r(x)。3. 提示:每个多项式的系数分别用一维数组存放,这样可以简化算法。每种运算用函数实现。计算机语言(C)课程设计指导书- 5 -题目三 通讯录1. 设计要求:通讯录至少应该有以下数据项:姓名,地址,手机,邮编,E-mail。对通讯录应该包含有以下操作:向通讯录中添加信息,在通讯录中按姓名查找个人信息,删除通讯录中的个人信息,按不同数据项排序后列表输出通讯录中所有人的信息。通讯录中记录的数量可以是有限制的。程序的主界面如下:通讯录1. 添加2. 查询3. 删除4. 排序5. 全部输出0. 退出2. 提高水平在通讯录中增加将数据写入文本文件和从文件读入通讯录的功能,文
9、件名由用户输入。3. 提示在没有使用文件时,通讯录数据可以保存在一个大的数组中,上面列出的数据项应该是字符串类型。计算机语言(C)课程设计指导书- 6 -题目四 成绩记录簿1. 设计要求:成绩记录簿中记录以下数据:学号、姓名、课程编号、课程名称、成绩、学分,所有成绩都以百分制计分。在程序中可以输入新的成绩记录,可以按学号或姓名查询一个学生的所有成绩,和已完成的总学分。也可以按课程编号查出一个班的成绩表,班成绩表后面要统计平均分,和及格率。程序的主界面如下:成绩记录簿1. 添加2. 删除3. 查学生成绩4. 查班成绩表0. 退出2. 提高水平在程序中增加将数据写入文本文件和从文件中读入数据的功能
10、,文件名由用户输入。3. 提示在没有使用文件时,数据可以保存在一个大的数组中,要注意的数据项的类型。计算机语言(C)课程设计指导书- 7 -第三篇 附录附录一 详细设计说明书的编写范例F.1 程序系统的结构用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称、标识符。F.2 程序 1(标识符)设计说明 从本章开始,逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对一般情况的。 对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层 模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。 F.2.1 程序描述 给出对该程
11、序的简要描述,主要说明安排设计本程序的目的意义,并且,还要说明本程序的特点(如 是否有返回值等) 。F.2.2 功能 说明该程序应具有的功能,可采用输入处理输出的形式。F.2.3 性能说明对该程序的全部性能要求,包括对精度、灵活性和时间特性的要求。F.2.4 输人项 给出对每一个输入项的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、输入的方式。 数量和频度、输入媒体(例如键盘,文件等) 、输入数据的来源和安全保密条件等等。F. 2. 5 输出项 给出对每一个输出项的特性,包括名称、标识、数据的类型和格式,数据值的有效范围,输出的形式、 数量和频度,输出(例如显示器,文件等) 、对输
12、出图形及符号的说明、安全保密条件等等。F.2.6 算法 详细说明本程序所选用的算法,具体的计算公式和计算步骤。F.2.7 流程逻辑 用图表(流程图)辅以必要的说明来表示本程序的逻辑流程。F.2.8 接口用图示的形式说明本程序所隶属的上一层模块及隶属于本程序的下一层模块、子程序,说明参数赋值和调用方式,说明与本程序相直接关联的数据结构(结构体等) 。 F.2.9 存储分配 根据需要,说明本程序的存储分配设计。 F.2.10 注释设计 说明准备在本程序中安排的注释,如:a. 加在模块首部的注释;b加在各分枝点处的注释; 对各变量的功能、范围、缺省条件等所加的注释; d对使用的逻辑所加的注释等等。
13、F.2.11 限制条件 说明本程序运行中所受到的限制条件。计算机语言(C)课程设计指导书- 8 -F.2.12 测试计划 说明对本程序进行单体测试的计划,包括对测试的技术要求、输入数据、预期结果等。附录二 程序范例一个显示菜单的主函数(Turboc 2.0)必须用英文#include “stdio.h“#include “conio.h“main()int x0,y0;char a;while(1)textbackground(1);textcolor(14);clrscr();a=0,x0=30,y0=3;gotoxy(x0+1,y0); puts(“ 主 菜 单“);gotoxy(x0,y
14、0+=3);puts(“1: 打 开 文 件“);gotoxy(x0,y0+=2);puts(“2: 录 入 数 据“);gotoxy(x0,y0+=2);puts(“3: 删 除 数 据“);gotoxy(x0,y0+=2);puts(“4: 数 据 查 询“);gotoxy(x0,y0+=2);puts(“0: 退 出 “);gotoxy(x0-10,y0+=3);printf(“请输入数字选择: “);a=bioskey(0)%256;switch(a)case 1:openfile(); break;case 2:inputdata();break;case 3:deletedata(
15、);break;case 4:finddata(); break;case 0:closefile(); exit(0);default: ;一个显示菜单的主函数(C Free)#includevoid main()void add();void deletedata();void findstudent();void findclass();int a;计算机语言(C)课程设计指导书- 9 -while(1)printf(“ =nn“);printf(“ 成 绩 记 录 簿nn“);printf(“ =nn“);printf(“ 1: 添 加n“);printf(“ 2: 删 除n“);pr
16、intf(“ 3: 查 学 生 成 绩n“);printf(“ 4: 查 班 成 绩 表n“);printf(“ 0: 退 出 nn“);printf(“ =nn“);printf(“ 请输入指令: “);loop1:scanf(“%d“,printf(“n“);switch(a)case 1:add(); break;case 2:deletedata();break; case 3:findstudent();break;case 4:findclass();break;case 0:exit(0);default:printf(“抱歉,你输入的指令错误!nn 请重新输入指令:“); /输
17、入的指令不存在时重新输入指令 goto loop1;void add()void deletedata()void findstudent()void findclass()附录三 相关函数以下函数的原型都在 conio.h 中。1、window 函数:原型:void window (int left, int top, int right, int bottom);计算机语言(C)课程设计指导书- 10 -原型在 conio.h 中。功能:创建矩形字符文本窗口。其左上角的坐标由 left,top 表示;右下角的坐标由 right, bottom 表示。注意:一旦该函数调用成功,所有定位坐标都
18、是相对于窗口,而非相对于屏幕。2、clrscr 函数原型:void clrscr(void);功能:清除当前字符窗口,将光标定位在左上角(1,1)处。3、textbackground 函数原型:void textbackground(int newcolor);功能:设置字符屏幕的背景颜色为 newcolor。4、textcolor 函数原型:void textcolor(int newcolor); 功能:设置字符屏幕下的字符颜色为 newcolor。颜色的枚举说明如下:enum COLORS BLACK, /* dark colors */BLUE,GREEN,CYAN,RED,MAGEN
19、TA,BROWN,LIGHTGRAY,DARKGRAY, /* light colors */LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE;5、gotoxy 函数原型:void gotoxy(int x, int y);功能:将字符屏幕的光标移动到 x,y 所指定的位置。如果其中有一个坐标值无效,则光标不移动。6、gettext 函数原型:int gettext(int left, int top, int right, int bottom,void *buf);功能:将左上角的坐标为(left,top)
20、,右下角的坐标为(right,bottom)矩形上的字符拷贝到由 buf 所指向的内存。计算机语言(C)课程设计指导书- 11 -注意:(1)坐标是屏幕绝对坐标,不是窗口的相对坐标。(2)保存屏幕上一个区域所需要的内存数量可按照公式:rows columns2原因是屏幕上每个字符要求两字节的存储单元,一个字节存放字符本身,另一个字节存放该字符的属性(显示属性) 。7、puttext 函数原型:int puttext(int left, int top, int right, int bottom,void * buf);功能:将原来由 gettext 函数存储到 buf 所指向的内存中的字符拷
21、贝到左上角的坐标为(left,top) ,右下角的坐标为(right,bottom)的矩形区域中。注意:坐标是屏幕绝对坐标,不是窗口的相对坐标。8、bioskey 函数原型:int bioskey(int cmd);该函数原型在 bios.h 中。功能:bioskey 完成直接键盘操作。cmd 的值决定执行什么操作。如果 cmd 的值是 0,bioskey 返回下一个在键盘上键入的值(它将等待到按下下一个键)。它返回一个 16 位的二进制数,包括两个不同的值。当按下一个“普通键”时,它的低 8 位数存放着该字符的 ASCII 码。对于“ 特殊键”,低 8 位为 0。特殊键包括箭头键,功能键,s
22、hift,Alt 键等。高 8 位存放该键的扫描码。当 cmd 的值是 1 时,bioskey 查询是否已经按下一个键。当按下时,它返回它返回非0 值;否则返回 0。例如:while(bioskey(1)=0);/* 查询是否已经按下一个键,没有按,继续查询。*/key=bioskey(0);/* 获取键入的键值*/key=key /* 获取键入的键值*/if(key=45) exit(0); /* 按 Alt+x 或 Alt+X,退出*/if(key=30) /*按 Alt+a 或 alt+A */附录四 参考文献:1谭浩强. C 程序设计( 第三版) . 北京:清华大学出版社, 2005 2谭浩强. C 程序设计题解与上机指导(第三版) . 北京:清华大学出版社, 20053 Herbert Schildt. C 语言大全(第四版). 北京:电子工业出版社, 20044Samuel P.Harbison ,Guy L.Steele. C 语言参考手册(第 5 版). 北京:机械工业出版社,2003