C语言课程设计指导书.doc
《C语言课程设计指导书.doc》由会员分享,可在线阅读,更多相关《C语言课程设计指导书.doc(32页珍藏版)》请在咨信网上搜索。
1、C 语 言 课 程 设 计 指 导 书第二版刘跃峰 李天博 陆继远编江苏大学电气学院2007.5课程设计目标一、课程设计目标C语言课程设计的目的是通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力,最终目标是通过这种形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。本课程设计具有如下特点:(1)重点在于C语言的基本特征上,涵盖了C语言的重要基础知识。(2)结合了实际应用的要求,使课程设计既涵盖知识点,又接近工程实际需要。通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力以及编程能力,并养成良好的编程习惯。(3)每个课程设计均
2、给出要求与算法,为学生创造独立思考的条件。学生在吃透要求与算法的前提下,完全可以设计出自己的应用程序。(4)有些课程设计还提出了一些改进措施或要求,可以供有兴趣的同学扩充自己的设计。(5)课程设计分为基本部分与扩展部分,以满足不同学生的要求。(6)提供两个综合课程设计,以期进一步锻炼学生的动手能力。还可以将其分为几个子项目,让学生分工合作,以培养团队精神。另外,在实际编程中,为了提高编程质量,希望学生在书写代码时,对空行、空格和注释严格按要求处理,以建立良好的编程风格。二、课程设计结构C语言的组成是函数调用,所以课程设计的重点是函数。函数设计的难点是选择函数类型及其参数的传递方式。数据类型及程
3、序控制方式是C语言的基础;数组、指针和结构的使用技术是编程的核心技术,也是程序设计人员必备的知识,因此本课程设计特意加强这方面的训练。本课程设计共选择了六个设计课题,不使用一个独立的课题涵盖所有知识点,而是按层次逐步深入。这些课题及其简要说明如下:1、使用数组和指针统计成绩数组和指针是C语言的重要概念,数组与指针之间的关系又容易混淆。另外,字符串数组的使用方法与普通的数值型数组的用法也有所不同,它们与指针之间的关系也较特殊。该课题围绕以上问题展开,同时有意拓宽字符串数组的用途,引入多维字符串数组及数组指针。为了适应不同层次学生的需要,将它们分为几个不同的设计要求,以便灵活取舍。2、统计工资该课
4、程设计要求设计一个公司职员的数据结构,并使用结构指针数组存储职员信息,统计公司员工工资总额和平均工资,目的是深入了解函数参数类型和结构之间的关系。3、职工档案及简明信息生成该课程设计涉及到的知识点是结构数组及其指针的关系,尤其是结构数组的读取问题。因为要求使用菜单选择各项功能,这又涉及到函数类型及其参数传递问题。为了编制满足该课程设计要求的函数,需要进一步深入理解函数的性质。4、链表信息管理该课程设计的重点集中在链表,包括创建链表,使用链表存储结构信息,增加链表结点及删除链表结点等基本操作。5、简单通信录程序该课程设计可在链表程序的基础上,增加检索与排序,并且能够打开指定文件或修改指定文件,还
5、可将多个文件组成一个文件。6、学籍管理程序该课程设计是设计一个实用的小型学生成绩管理程序,要求不用链表,而用数组来设计。它具有排序和检索等功能,并且能够对指定文件操作,还可将多个文件组成一个文件。第一章 使用数组和指针统计成绩1.1 设计题目本课程设计主要练习数组和指针的使用。假定给定班级各科考试平均成绩的原始资料如下:数学:75物理:80外语:83政治:85体育:86人数:30要求统计出全班学期总平均成绩以及得分最低的科目和该科目的成绩。要求的输出结果如下:全班各科平均成绩如下:数学:75物理:80外语:83政治:85体育:86则统计结果如下:人数:30平均成绩:81最低分科目的成绩:75最
6、低分数的科目:数学1.2 设计要求对存放原始数据的要求如下:(1)使用整型数组a存放数学、物理、外语、政治、体育、人数、平均成绩、最低分数科目的成绩。(2)使用字符串数组name存放数学、物理、外语、政治、体育、最低分数的科目。(3)使用字符串数组MeanLow存放人数、平均成绩、最低分数科目的成绩、最低分数的科目。实现本设计功能的方法很多,在此给出3种难易程度不同的要求,以便加深对数组和指针知识的理解。1、使用数组实现使用数组和指针数组实现。2、使用分配的内存实现要求将数组a的内容存入到分配的内存中,使用指针实现对内存内容的存取和计算。3、将数组内容全部存入内存为字符分配内存,并将字符数组的
7、内容存入所分配的内存中,使用指针来实现。第二章 统计工资2.1 设计题目本课程设计要求设计一个公司职员的数据结构,并使用结构指针数组存储职员信息,统计公司员工工资总额和平均工资。2.2 设计要求设计要求实现如下功能:(1)使用结构指针数组设计一个公司职员的数据结构,使用下述的结构定义:typedef struct employeeint age;char *name;double salary;*PEMP;(2)在主函数里构造一个指针数组company,用来存放职工信息。(3)设计一个update函数,用来给company赋值。函数update(company, id, age, name,
8、salary)的四个参数为:company: 结构指针数组id: company的下标age: 年龄,整数类型salary: 薪水,实数(4)设计一个readin函数,直接采用调用update函数的方式进行赋值。例如:update(company, 2, 30, “LI MING”, 3000.0);(5)编写total函数对工资求和。这个函数应该能对全体职工和某一年龄段的职工的工资求和。(6)编写mean函数求平均工资。这个函数应该能对全体职工和大于某一年龄段的职工的工资求和并计算相应的平均值。2.3 算法分析为了简单起见,假设在主函数main中定义结构数组指针如下:PEMP company
9、num;下面说明几个函数的设计问题:(1)readin函数数组company属于main函数,它是不可见的,所以必须作为readin函数的参数。因为参数传递是传地址的方式,所以不需要返回值。以数据为例,这个函数的定义和使用方法如下:void reading(company)PEMP company;update(company, 2, 23, “张文”,3000.0);update(company, 1, 33, “王微”,2400.0);update(company, 2, 23, “李小”,3055.0);(2)total函数它也必须以数组company作为参数,而且要返回工资总额。可将它
10、的原型设计为:double total (PEMP *);total函数应该允许输入年龄范围,如果年龄不合理,应该允许重新输入。对输入数据进行判别,确保无误再进行计算。for( ; ; )printf(“输入年龄范围”);scanf(“%d%d”,&age1, &age2)if(age1age2)i=age1;age1=age2;age2=i; if(age1=0)&(age2=0)&(age2age1)break;(3)mean函数mean函数也必须以数组company作为参数,而且要返回平均工资。将它的函数原型设计为:double mean (PEMP *);mean函数应该允许输入年龄范
11、围。对输入字符进行判别,确保无误再进行计算,注意允许大小写。printf(“求某一年龄段以上的职工的平均工资n”);printf(“默认是全体职工的平均工资,要改变计算方式请输入Y/yn”);getchar();ch=getchar();if(ch=Y|ch=y)printf(“age:”);scanf(“%d”,&age);(4)申请内存在update函数中,需要申请内存空间。PEMP empIf(emp=(PEMP) malloc (sizeof(struct employee)=NULL)return;注意emp是指针,所以要使用sizeof(struct employee)。第三章 职
12、工档案及简明信息生成3.1 设计题目本设计要求使用头文件和菜单,并组成一个工程文件,对职工的档案进行管理并生成职工的简明信息。3.2 设计要求设计要求实现如下功能:(1)建立wkrs职工数据结构,结构含有姓名、序号、性别和年龄信息。(2)建立一个结构数组,以便存储10个职工信息。(3)设计一个readin函数,以便采用问答式输入10个职工的信息。(4)编写一个display函数,要求使用结构指针作为参数,用来输出结构数组的内容。(5)建立wks职工简明数据结构,结构中只含有姓名和年龄信息。(6)编制一个srt函数,根据wks结构建立的职工情况,把职工姓名和年龄信息抽出来,另外建一个只含职工姓名
13、和年龄的wkshort结构的数组。(7)编制一个delwk函数,可以从简明数据结构中删去指定的职工数据。如果数组中没有要删去的职工,则输出没有这个职工的信息;如果将内容全部删去,应该给出内容已空的提示信息。(8)将上述函数编制在一个文件里,共用一个头文件。(9)用一个简单的菜单提供上述操作。菜单信息为:1、输入数据2、显示原始数据3、制作简明数据4、删除简明数据5、结束退出Please Input 1-5: 3.3 算法分析1、结构数组根据要求,可以定义它们各自的数据结构及其结构数组如下:struct wkrschar num10;char name10;char sex3;int age;w
14、k10;struct wkrchar name10;int age;wkshort10;因为直接定义它们各自的结构数组,所以各个函数可以直接对这些数组进行操作。2、函数类型如上所述,因为直接定义了结构数组,所以以下函数均不需要参数,也不需要返回值。void reading();void disp();void delwk();void srt();int menu_select();3、结构指针显示数据的display函数,本身不需要使用结构指针,但题目要求使用结构指针实现,所以其原型可以设计为:void display(struct wkrs *);它的程序代码如下:void display
15、(struct wkrs *p)char *c4=“序号”,“姓名”,“性别”,“年龄”;int i;p=wk;printf(“n%8st%8st%6st%4sn”, c0,c1,c2,c3);for(i=0;inum,p-name,p-sex,p-age);printf(“n”);与普通数组一样,结构数组名即结构数组的首地址。结构作为参数传递时,也是传值方式。如果要修改普通的结构数据,必须使用传址方式。下面的disp函数可以完成同一功能,但不用参数。void disp()char *c4=“序号”,“姓名”,“性别”,“年龄”;int i;printf(“n%8st%8st%6st%4sn”
16、, c0,c1,c2,c3);for(i=0;inext=NULL;count=0;handle_menu(top);3删除全部数据后的处理因为在删除操作中,可能将全部记录删除。这时就必须在退出之前恢复初始值。算法如下:(1)首先判别是否有记录,没有就退出操作if(count=0)printf(“记录已经为空,请退出删除操作!”);return top;(2)对查找的方式进行判别while(1)cn=atoi(choose);if(cn!=1 & cn!=2)printf(“输入错误,重新选择1-2:”);gets(choose);else break;(3)删除指定数据,如果删除的是最后一个
17、,恢复到初始值。if(count=0)ASK(top);ASK(star);top-next=NULL;return top;第五章 实用的小型通讯录5.1 设计题目本课程设计是设计一个实用的小型通讯录程序,它是在链表程序的基础上,增加查询功能,并且能够打开指定文件或修改指定文件及将多个文件组成一个文件。5.2 设计要求5.2.1 功能设计要求本设计要求完成如下功能:1建立文件(1)存储文件可以使用默认文件名或指定文件名;(2)可以不保存输入记录,但需要确认是否保存输入记录;(3)如果已经有文件,只能在其后追加;(4)新增的记录可以不存入原文件中,也可以用原来的文件覆盖内存的内容;(5)可以将
18、两个文件合并到一个文件中。2文件的存取和显示(1)可以单独存取文件;(2)可以随时显示内存中记录的全部内容;(3)可以直接存取默认文件或指定文件。3删除记录(1)可以按“姓名”或“电话”方式删除记录并更新内存链表内容;(2)能给出被删除记录的信息;(3)如果已经是空表,删除时应给出提示信息并返回主菜单;(4)如果没有要删除的信息,输出没有找到的信息;(5)删除操作仅限于内存,只有执行存记录时,才能覆盖原记录。4查询记录(1)可以按“姓名”或“电话”方式查询记录;(2)能给出查询记录的信息;(3)如果查询的信息不存在,输出没有找到的信息。5整体功能(1)应该可以随时检索、删除或增加新记录,保存或
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 指导书
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【Fis****915】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【Fis****915】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。