《高级语言课程设计任务书.doc》由会员分享,可在线阅读,更多相关《高级语言课程设计任务书.doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、高级语言课程设计指导一、课程设计的目的“高级语言程序设计课程设计”是在学完高级语言程序设计之后开设的一门独立的实践性课程,是对高级语言程序设计的综合实践,其目的在于加深对高级语言程序设计的基本思想、基础知识和方法的理解,进一步锻炼分析、解决比较复杂问题的能力,提高学生独立编程的能力,为实际软件开发和后续课程的学习打下坚实的基础。二、课程设计的基本要求首先要明确课程设计的目的和重要性,选择适当的题目,分组或独立有计划地按照软件工程的思想,在教师的指导下,对题目进行分析、设计和实现,并按照一定的格式写出设计报告。在课程设计过程中,要学会如何运用所学知识和技巧,如何查阅、搜集、归纳整理相关资料,注意
2、如何有意思的按照软件工程的基本规范进行分析、设计和实现。选定题目之后,需要经历下面几个阶段进行课程设计。1) 题目分析:弄清楚问题到底要干什么,明确设计目标,搜集和查阅相关资料。 2) 系统设计:怎么做才能实现系统的目标。首先确定问题中有哪些数据,该如何存储,是用多个单个的数组呢,还是用结构体数组,是连续的数组存储,还是不一定连续存储,结构体之间通过指针链接起来呢;数据是怎样输入的,是在运行时通过键盘输入,还是从文件读入,有哪些数据需要输出,输出格式如何,输出到屏幕上还是写到文件中。然后确定解决该问题有哪些功能模块,每个功能的名字什么,给出对应的函数原型,画出主函数的流程图和典型功能模块的流程
3、图;对所有的功能模块,从主模块,到各个层次的子模块,画出各个功能模块之间的调用层次图。其次设计一个系统操作界面,确定用户如何使用系统,是命令窗口界面还是图形界面,如何操作。 3) 系统实现:建立一个工程文件,其中至少包含三个文件,第一个是主函数所在的源文件,第二个是各个功能子模块对应的函数所在的源文件,第三个是各个功能子模块的函数原型所在的头文件。4) 调试程序:上机调试。未必要等把所有的代码都写好才进行编译调试。可以先实现主模块,只调试主函数,所有的子模块函数均使用所谓的树桩函数进行测试。然后逐个实现各个模块,一个一个添加,实现一个调试一个。5) 系统测试:通过精心准备的测试数据,对系统进行
4、测试,如果发现错误要查找原因改正错误。检查系统是否真正实现了系统的设计目标,操作界面是否方便使用。测试数据最好是通过文件加载,这样可以避免重复输入。 6) 撰写报告:按照给定的格式写出完整、规范的报告并打印。其中模块图、流程图要画得清楚、规范,尽量避免错别字。(另附报告模板) 7) 答辩:告知指导教师设计任务已经完成,进入考核阶段。首先展示和讲解设计报告然后运行系统,演示系统功能和运行结果,准备回答指导教师提出的问题。三、课程设计的基本内容(题目) 课程设计题目按“高级语言程序设计”课程的成绩分成两组A/BA组同学首先重做 期末考试题单号:程序填空题 1.(5分)功能:将一个字符串中的前N个字
5、符复制到一个字符数组中去,不许使用strcpy函数。#includevoid main ( ) char str180,str280; int i,n; gets(str1); scanf(%d,&n); for (i=0; _(1)_ ;i+) str2i=str1i; _(2)_; printf(%sn,str2);窗体顶端2.(5分)功能:用冒泡法对数组a 进行由小到大的排序。#includevoid fun(int *a,int n) int i,j,t; for (j=0;_(1)_;j+) for (i=0;_(2)_;i+) if(aiai+1) t=ai;_(3)_; ai+1
6、=t; int main() int i,n,a100; printf(Please input the number of the case:n); scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); _(4)_; for(i=0;in;i+) printf(%3d,ai);3.(5分)功能:产生并输出杨辉三角的前七行。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1#includevoid main ( ) int a77; int i,j,k; for (i=0;_(1)_;i+) ai0=1
7、; aii=1; for (i=2;i7;i+) for (j=1;ji;j+) aij= ai-1j-1+_(2)_; for (i=0;ij;j+) printf(%6d,_(3)_); printf(n); 4.(5分)功能:输入n个整数数据求它们的平均值。设n=2并且n=100。#include float ave(int *a, int n) int i; int s=0; for(i=0;_1_;i+) s+=a _2_; return _3_;int main () int data100; int i,n; float av; scanf(%d,&n); for(i=0;in;
8、i+) scanf(%d,&datai); _4_; printf(%.2fn,av); return 0;编程题 1. (10分)两个整数的和、差、积、商题目描述输入两个整数,输出它们的和、差、积、商。输入描述输入两个整数,第二个数不能为0,以空格间隔输出描述四个数在同一行中输出,中间以空格分隔,商保留两位小数输入样例3 4输出样例7 -1 12 0.752. (10分)数值统计题目描述统计给定的n个数中,负数、零和正数的个数。输入描述每组输入数据的第一个数是整数n,表示需要统计的数值的个数,然后是n个实数;输出描述对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个
9、数。输入样例6 0 1 2 3 -1 0输出样例1 2 33. (10分)求阶乘的和题目描述输入正整数n, 在主函数中输出1!+2!+3!+.n!的值,要求将计算阶乘的运算写成函数JC(n)。输入描述输入一个int型的正整数n输出描述输出阶乘的和输入样例3输出样例94. (10分)求最大值与最小值题目描述定义一个函数max_min,求一组数据的最大值和最小值.在主函数中输入n和n个数据,调用max_min函数求出最大最小值,然后在主函数中输出这n个数的最大值和最小值。输入描述输入n和n个数输出描述输出最大值占一行,保留2位小数输出最小值占一行,保留2位小数输入样例6 5.2 -7 8 0.84
10、 4 1输出样例8.00-7.00期末考试双号填空题1.(5分)功能:已定义一个含有30个元素的数组s,函数fun1的功能是按顺序分别赋予各元素从2开始的偶数,函数fun2则按顺序每五个元素求一个平均值, 并将该值存放在数组w中。#includedouble s30,w6;void fun1(double *s) int k,i; for(k=2,i=0;i30;i+) _(1)_; k+=2; void fun2(double *s,double *w) double sum=0.0; int k,i; for(k=0,i=0;i30;i+) sum+=si; if( _(2)_ ) wk=
11、sum/5; _(3)_; k+; int main() int i; fun1(s); _(4)_; for(i=0;i30;i+) if(i%5=0) printf(n); printf(%8.2lf,si); printf(n); for(i=0;i6;i+) printf(%8.2lf,wi); 2.(5分)功能:删除一个字符串中的所有数字字符。#include void delnum(char *s) int i,j; for(i=0,j=0; _(1)_0 ;i+) if(si9) _(3)_; j+; sj=0;int main () char item1001; printf(
12、input a string:n); gets(item); _(4)_; printf(n%s,item);3.(5分)功能:计算个人与各科平均成绩及全班平均成绩,并在屏幕上显示出来。#define M 5 #define N 4 #include void aver(double sco_(1)_) int i,j; for(i=0;i_(2)_;i+) for(j=0;jN;j+) scoiN += scoij; scoMj += scoij; scoMN += scoij; scoiN _(3)_ N; for(j=0;jN;j+) scoM_(4)_ /= M; scoMN=scoM
13、N/M/N; int main() int i,j; static double scoreM+1N+1=78,85,83,65, 88,91,89,93, 72,65,54,75,86,88,75,60,69,60,50,72; aver(score); printf(学生编号 课程1 课程2 课程3 课程4 个人平均n); for(i=0;iM;i+) printf(学生%dt,i+1); for(j=0;jN+1;j+) printf(%6.1ft,scoreij); printf(n); for(j=0;j8*(N+2);j+) printf(-); printf(n课程平均); fo
14、r(j=0;j=2且n=100。#include float ave(int *a, int n) int i; int s=0; for(i=0;_1_;i+) s+=*( _2_); return _3_;int main () int data100; int i,n; scanf(%d,&n); for(i=0;in;i+) scanf(%d,&datai); printf(%.2fn,_4_); return 0;编程题1. (10分)长方形的周长和面积题目描述输入长方形的长和宽,计算并输出其周长和面积。输入描述输入长方形的长和宽,输入数据以空格分隔输出描述输出在同一行中,以空格分隔
15、,输出结果保留2位小数。输入样例2.3 1.6输出样例7.80 3.682. (10分)统计非负数之和题目描述输入n个(1n200)整数,统计非负数的个数,并计算非负数之和。输入描述先输入n(1n200),再输入n个整数输出描述输出“非负数的个数 非负数之和”如果n值越界,输出“Error”输入样例100 5 6 9 -8 4 3 -7 1 25-1 -2 -3 -4 -5400输出样例8 300 0Error3. (10分)求1到n个数阶乘的和题目描述在主函数中输出1!+2!+3!+.+n!的值(n小于等于10)。要求将计算阶乘的运算写成函数。输入描述n输出描述输出1!+2!+3!+.+n!
16、的值(n小于等于10)。输入样例5输出样例1534. (10分)最大最小值位置题目描述从键盘任意输入10个整数,用函数编程实现计算最大值和最小值,并在主调函数中得到它们所在数组中的位置。输入描述输入10个整数输出描述输出最大值和最小值在数组中的位置输入样例7 48 18 9 21 14 30 50 47 32输出样例7 0然后 A组:必须完成下列所有题目题目1:写一个函数计算下列函数的值f(0),f(3),f(-3)。测试之 题目2: 写一个函数void maxMinAver(int *data, int *max, int *min,float * ave,int size), 求一组数据的
17、最大值、最小值和平均值,测试之。其中data指向给定数据的数组的指针,max、min、ave分别指向最大值、最小值和平均值,size是数组的大小。要求第一个实参是数组,第2、3、4个实参都是对普通的简单变量的某种操作,最后一个实参是数组的大小。测试之题目3 写一个函数用指针型字符串实现两个字符串比较,int mystrcmp(const char *str1, const char *str2),如果大于返回1,等于返回0,小于返回-1,测试之题目4定义一个学生结构体,取别名STU,包含学号、姓名、数学、语文、计算机、英语等课程成绩,还有总分和平均分,写一个函数实现求一组学生每个学生各门课程的
18、平均值,函数原型为float ave(STU stu,int size)。测试之。题目5 写一个函数能够从文件读入一组学生STU的信息,保存到一个结构体数组中。题目6 写一个函数能够输出某一学生结构体数组STU stu10的信息和每个人的总分、平均分到某一文本文件中,测试之。输出格式是: “%s %s %d %d %d %d %d %5.2f” 题目7 写一个函数能够打印输出学生结构体数组STU stu10的信息到屏幕上,测试之题目8 写一个函数能够把一组学生成绩信息按总分进行排序,测试之。题目9 写一个函数能够查找给定学号的学生成绩信息,如果找到打印成绩信息,如果没有,显示“not foun
19、d!”.测试之。题目10 设计一个界面函数,包含上述11个题目的调用,即 请选择1 调用第一个函数(具体的函数名)2 调用第二个函数(具体的函数名)34 。 。5 9 调用第9个函数(具体的函数名) 继续吗?输入y继续下一次选择,输入n结束题目11创建一个工程文件,包含三个文件,第一个是主函数所在的源文件,含有显示界面,选择1-10,调用不同的函数,第二个是各个函数所在的源文件,第三个是各个函数原型所在的头文件。 B组: 必做题:1 几种排序方法进行比较编一程序对几种排序方法进行比较:交换法、选择法、插入法、冒泡法四种方法选2。具体比较方法是: 随机生成一组(300个)的100以内的整数数据,
20、用选定的几种排序方法进行排序。纪录排序过程中数据比较和交换的次数,输出比较结果。2 指针作为函数的参数写一个函数void maxMinAver(int *data, int *max, int *min,float * ave,int size), 求一组数据的最大值、最小值和平均值,测试之。其中data指向给定数据的数组的指针,max、min、ave分别指向最大值、最小值和平均值,size是数组的大小。要求第一个实参是数组,第2、3、4个实参都是对普通的简单变量的某种操作,最后一个实参是数组的大小。测试之。 3. 下列题目必选其一题目1:基于结构体数组的学生成绩管理系统的设计与实现具体要求:
21、 (1)系统具有打开已有数据文件、添加一条学生纪录(即一条学生成绩信息)、删除一条学生纪录、修改一条学生纪录,查看所有的成绩信息、按照学号查找学生成绩信息、按照总分降序排序学生成绩信息、按照平均值查询平均值大于90的学生信息、按照平均值查询平均值小于60的学生信息等功能。注意添加、修改、删除学生纪录之后要把修改后的数据输出到相应的文件中。(2) 程序应该能进行简单的异常处理。如检查用户输入数据的有效性,在用户输入数据有错误(如类型错误)或无效时,不应中断程序的执行,应该给出提示。打开文件时检查文件是否存在。除数是否为零的检测。(3)从文件中读入的数据保存在一个结构体数组中,对数组的操作可以用指
22、针,也可以只用下标,最好有用指针的函数模块,如通过文件加载数据到数组。 题目2:基于链表的学生成绩管理系统的设计与实现具体要求: (1)系统具有打开已有数据文件、添加一条学生纪录(即一条学生成绩信息)、删除一条学生纪录、修改一条学生纪录,查看所有的成绩信息、按照学号查找学生成绩信息、按照总分降序排序学生成绩信息、按照平均值查询平均值大于90的学生信息、按照平均值查询平均值小于60的学生信息等功能,注意添加、修改、删除学生纪录之后要把修改后的数据输出到相应的文件中。(2) 程序应该能进行简单的异常处理。如检查用户输入数据的有效性,在用户输入数据有错误(如类型错误)或无效时,不应中断程序的执行,应
23、该给出提示。打开文件时检查文件是否存在。除数是否为零的检测。(3)从文件中读入的数据保存在一个结构体链表中,对数据的访问是遍历已经建好的链表。 题目3:通讯录管理系统问题描述: 写一个通讯录管理程序,使其具有增加(插入)、删除、排序输出、查询功能。输入输出样例:1please inputname:aaaaatelnum:address:ajkfshdffs2please inputname:bbbbbtelnum:address:akfjklsdjfl3please inputname:ccccctelnum:asdkljsdlkfjaddress:aslsdkfZ address book=
24、 name: aaaaa telnum: taddress: ajkfshdffs- name: bbbbb telnum: taddress: akfjklsdjfl- name: ccccc telnum: asdkljsdlkfjtaddress: aslsdkf-query what name:bbbbb name: bbbbb telnum: taddress: akfjklsdjflquery what telnum: name: bbbbb telnum: taddress: akfjklsdjfldelete which name:bbbbb address book= nam
25、e: aaaaa telnum: taddress: ajkfshdffs- name: ccccc telnum: asdkljsdlkfjtaddress: aslsdkf-选做其它类型的题目:题目4模拟简单的计算器设计一个程序来模拟一个简单的手持计算器。程序支持算术运算+、-、*、/、=、以及(清除)、A(全清除)操作。基本要求程序运行时,显示一个窗口或菜单界面,等待用户选择运算类型,并输入数据,回车后输出计算结果(不用考虑运算符的优先级)测试数据程序输入不少于5种不同的表达式进行测试。题目5 写一个日历显示程序 基本功能: 1)输入任一年将显示出该年的所有月份日期,对应的星期 2) 注
26、意闰年情况其显示格式要求如下:1)月份:中文英文都可以,2)下一行显示星期,从周日到周六,中英文都可以3)下一行开始显示日期从1号开始,并按其是周几实际情况与上面的星期数垂直对齐当输入2004显示如下:Input the year:2004Input the file name:aThe calendar of the year 2004. Januray 1 February 2 Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 1 2 3 1 2 3 4 5 6 7 4 5 6 7 8 9 10 8 9 10 11 12 13
27、14 11 12 13 14 15 16 17 15 16 17 18 19 20 21 18 19 20 21 22 23 24 22 23 24 25 26 27 28 25 26 27 28 29 30 31 29 = = March 3 April 4 Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat 1 2 3 4 5 6 1 2 3 7 8 9 10 11 12 13 4 5 6 7 8 9 10 14 15 16 17 18 19 20 11 12 13 14 15 16 17 21 22 23 24 25 26 27
28、 18 19 20 21 22 23 24 28 29 30 31 25 26 27 28 29 30 = =题目6钟表显示程序 要求: 能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。(如下图)提示:可以使用Turbo C或Grx图形库或者课件中提供的postscript的格式的图形库题目7 贪吃蛇游戏程序要求:游戏时,一条蛇在密闭的围墙内, 围墙内会随机出现一个食物,通过键盘上的4个光标键控制蛇向上下左右4个方向移动,蛇头接到食物,则表示食物被蛇吃掉,这时蛇的身体加长一节,同时计10分。接着又出现食物等待被蛇吃掉。如果蛇在移动过程中,撞到
29、墙壁或身体交叉(蛇头撞到自己的身体),则游戏结束。提示:使用Turbo C的图形库四. 学时安排: 课程设计的时间是一周。 具体地点:学校计算中心,北教1号楼 具体时间:周1: 1、2节集中辅导,3-6实验 周2: 1-6实验 周3: 1-4实验 周4: 1-6实验 周5: 1-6考核 其它时间自由利用。 五. 程序设计可选编译器或集成开发环境 (1) Turbo C 或 WinTC (机房电脑已安装) (2) Visual C+ 6.0(机房电脑已安装) (3)Gcc 和 Code:Blocks (下载后自行安装,下载codeblocks-13.12 mingw-setup.exe 六、建议
30、教材和参考书建议教材: 自编教材问题求解与程序设计以及本课程设计指导参考书:1 C程序设计语言(第2版新版),(美)Brian W.Kernighan,Dennis M.Ritchie 著,许宝文等译,机械工业出版社,20042 C语言程序设计现代方法(美)K.N.King著,吕秀锋译,人民邮电出版社,20073 C Primer Plus中文版(第五版),(美)Stephen Prata著,云巅工作室译,人民邮电出版社,20054 C大学教程(第5版),(美)H.M.Deitel,P.J.Deitel著,苏小红等译,电子工业出版社,20085 你必须知道的495个C语言问题,(美) STEV
31、E SUMMIT著,孙云等译,人民邮电出版社,20096 C陷阱与缺陷,(美)Andrew Koenig著、高巍译,人民邮电出版社,20087 C专家编程,(美)Peter vander Linden(著),徐波(译),人民邮电出版社, 20088 C语言程序设计(C99版),陈良银等编著,清华大学出版社,2006 9 C程序设计课程设计,刘振安,孙忱,机械工业出版社,2004七、考核方式与评分办法或标准考核方式:演示和口试相结合评分标准:1. 程序的基本功能是否实现2. 数据结构是静态还是动态3. 是否包含文件操作(游戏类除外)4. 是否考虑异常处理5. 文档和代码书写是否规范 5回答问题是
32、否清晰 6是否使用了多文件建立工程 7是否有旷课 最终的成绩按五分制评定:优、良、中、及格和不及格。 高级语言程序设计课程设计题目: 专 业 班 级 学 生 学 号 指导教师 起止时间 _年 _月报告内容A组和B组必做题 写出题目 每个题目给出完整实现代码 每个题目做一个简短的评论,指出解决该问题的关键所在B组必选题题目 -*1系统分析系统要做什么?什么样的数据需要处理,数据要求怎么输入怎么输出,有哪些基本功能,2系统设计1 数据结构设计:即怎么表示数据,如何存储数据?用数组还是链表,数据结构体怎么定义的2 功能设计,有哪些功能,画出总体功能结构图给出主函数流程图 3 给出每个功能对应的函数原型和该功能对应的流程图4 系统界面设计:给出操作界面3系统实现 写出每个子函数和主函数的实现代码 按照下列顺序分别写出1. 函数原型构成的头文件2. 主函数所在的文件代码3. 各个函数模块对应的文件代码4运行测试 设计测试数据,并输入,给出运行结果5心得体会6参考文献 其它可选做题完成情况附在最后 包括算法设计和实现代码