下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录第一章课程设计的目的和要求 11.1 课程设计的目的 11.2 课程设计的要求 1第二章课程设计任务内容 32.1 课程设计要求 32.2 功能需求 32.3 功能模块图 4第三章详细设计说明 53.1 程序设计思路 53.2 函数说明 53.2.1 main ()主函数 53.2.2 menu_select 菜单选择函数 73.2.3 enter 输入函数 83.2.4 delete_text 删除函数 93.2.5 find函数 103.2.6 list函数 113.2.7 save函数 123.2.8 load函数 123.3 调试 14第四章软件使用说明 15第五章课程设计心得与体
2、会 18附录1 参考文献 19附录2 程序清单 20程序设计综合课程设计简单的行编辑器第一章 课程设计的目的和要求此章节详细介绍了课程设计的目的和要求。1.1 课程设计的目的课程设计的目的是通过实践环节的训练,使学生进一步加深对C语言知识的综合 理解,提高C语言应用技能,并结合专业特点培养学生计算机程序的应用能力。结合计算机科学专业的特点是培养学生阅读本专业相关领域C语言程序的能力,分析并掌握程序的设计思想和方法。通过课程设计,培养学生查阅C语言相关资料能 力、分析和阅读程序的能力,应用 C语言基本知识设计小型应用程序的能力。其中, 需要掌握C语言中的结构体,指针,函数(系统函数,自定义函数)
3、,文件操作等知 识,通过对系统的分析和设计,进一步巩固C语言的学习,以提高对开发环境的进一 步认识和综合编程能力。在学习课程设计之前,要掌握好程序设计的基本概念、方法和思维方式。开发程 序的目的是为了解决问题,而解决问题首先需要找出合适的解决方案,然后用合适的 语言把方案描述出来。显然,该过程的关键是分析问题并找出解决方案,而不是描述 方案。因此,程序设计的首要目标,是培养解决问题的基本思维方式,其次才是语言 知识。1.2 课程设计的要求程序设计报告应该能够反映学生完成课程设计题目的全部情况,包括对课程设计题目要求的分析、应用程序的设计、程序的测试过程以及程序的运行情况等,因此, 编写课程设计
4、报告是课程设计一个不容忽视的重要环节。一个高质量的报告需要学生 掌握以下几点:1)运用有关课程的基础理论和技能解决实际问题;2)能用文字、图形和现代设计方法系统地、正确地表达设计成果;3)分析应用的功能构成、数据对象及其关联,实现系统的类的设计;4)对所设计应用进行调试。29第二章课程设计任务内容此章节主要从课程设计的要求,功能需求两方面讲述课程设计的有关内容。2.1课程设计要求1)设置一个简单的行编辑器,每行以回车结束;2)数据以文件形式存储;3)编辑器具有查找、替换、修改数据的功能。2.2 功能需求该程序具有行的查找、替换、删除的功能。行编辑器是文本编辑器的一种,针对行进行编辑。现在看来当
5、然非常地老式,这 种编辑器起源于操作员还使用电传打字机的年代, 也就是一个打印机连着键盘,因为 没有显示屏,也就无法在文档中移动光标。行编辑器只能从事最基本的文本输入与输出。输入、编辑、文档显示并不能同步 地进行。一般而言,用户无法直接输入文本,而只能在文本终端上通过简要的命令, 对已区”的做法显然不是最恰当的。 较好的做法是,设立一个输入缓冲区,用以接受 用户输入的一行字符,然后逐行存入用户数据区。允许用户输入出差错,并在发现有 误时可以及时更正。例如,当用户发现刚刚键入的一个字符是错的时, 可补进一个退 格符"#",以表示有文档进行添加或编写。命令和文本,以及编辑器的相
6、应输出,会 根据他们的输入顺序,从底部开始逐一显示。虽然命令一般会显示被修改的行, 但如 果要将行连同文档中的上下文一起显示,则需要另外单独的命令。现在常见的编辑器,都是通过移动光标,来选取要编辑的文本段落,与此不同的 是,行编辑器只能对“当前行”进行编辑。一般也可在行内进行上下文匹配,或者选 择特定行,以决定哪部分文档将被编辑或显示。当然,这些编辑每次都只能针对一行。一个简单的行编辑程序的功能是:接受用户从终端输入的程序或数据,并存入用 户的数据区。由于用户在终端上进行输入时,不能保证不出差错,因此,若在编辑程序中,“每 接受一个字符即存入用户数据前一个字符无效;如果发现当前键入的行内差错较
7、多或 难以补救,则可以键入一个退行符”,以表示当前行中的字符均无效。2.3 功能模块图根据上面的功能需求分析,可以将这个系统的设计分为如下六大模块:输入,替换,删除,查找,修改,保存(见图 2-1)。图2-1功能模块图第三章详细设计说明此章节通过程序设计思路,函数说明两大章节详细的描述了程序的函数功能说 明,参数说明等。3.1 程序设计思路课程设计要求设计一个简单的行编辑器,该程序具有行的查找、替换、删除等功能,设计这个程序是为了对行的各种功能进行了解。定义一个结构体来包含对行编辑 器的一般操作,如输入函数printf (),删除需要一个删除函数delete_text (),保 存一个文件需要
8、使用save ()等,主函数模块中需要运用 switch ()多分支选择语 句和do while ()循环语句来调用上述所需要的函数。3.2 函数说明3.2.1 main ()主函数主函数是程序入口,采用模块化设计。其主要功能有:1)使用一个主菜单来显示编辑器的各项操作;2)运用一个多选择分支switch()语句来实现要进行的操作; 3)菜单函数通过do while() 循环中的get来输出,内嵌套switch语句来总体实现 主函数的所有功能;其中用到了字符串数组argv,用来存放指向字符串参数的指针数组,即每一个元素指向一个参数,整数 argc ,用来统计你运行程序时送给 main函 数的命
9、令行参数的个数,代码中包括六个case。程序如下(见图3-1):char s80,choice,fname80;/ struct line *info;int linenum=1; start=NULL; last=NULL;if(argc=2) load(argv1);/*装入命令行上的文件 */do choice=menu_select();switch(choice)case 1:printf("t 行号:");gets(s);linenum=atoi(s);enter(linenum);break;case 2:delete_text();break;case 3:
10、list();break;case 4:printf("t 文件名:");gets(fname);save(fname);break;case 5:printf("t 文件名:");gets(fname);load(fname);break;case 6:exi4t(0);while(1);3.2.2 menu_select 菜单选择函数这是一个菜单显示界面,显示:输入,删除一行,显示一行等,之后输入数字选 择所需要的功能。定义整型变量c,使用printf输出函数实现。程序如下(见图3-2): char s80;int c;printf("tt
11、1.输入 n");printf("tt2.删除一行 n");printf("tt3.显示一行 n");printf("tt4.文件存盘 n");printf("tt5.装入文件 n");printf("tt6.退出 n");doprintf("nntt请按数字选择:");gets(s);c=atoi(s);while(c<0|c>6);return(c);_Lprintft" WnXHt 请按数reiumfcii图3-2 menu_select
12、菜单选择函数3.2.3 enter输入函数此函数是将所需要的文本信息插在指定行端部,其中,使用到了内存分配函数,如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL使用操作符sizeof ,判断数据类型长度符,其作用是返回一个对象或者类型所占的内存字节数, 程序中使用了 if语句,printf输出函数,gets输入函数(见图3-3)。3.2.4 delete_text 删除函数此函数主要实现行编辑器的删除功能,其中主要使用条件语句 if - else -,输入 函数gets,输出函数printf,代码中atoi的作用是把字符串转换成整型数,并多次使 用指针的指向语句,比如:info-
13、>next->prior=info->prior (见图 3-4)。图3-4 delete text 删除函数3.2.5 find 函数查找函数主要用来根据用户的需要查找一行文本。程序如下(见图 3-5):struct line *info;info=start;while(info)if(linenum=info->num) return(info);info=info->next;return(NULL);图3-5 find 函数3.2.6 list 函数显示文本,显示用户在查找函数中选择的文本。程序如下(见图 3-6): struct line *info;
14、info=start;while(info) ("%d:%sn",info->num,info->text);info=info->next;printf("nn");3.2.7 save 函数将文件储存在指定的文件夹里,以备以后查找使用。其中,定义了字符型的指针 p,使用了 while循环语句,输出函数putc(见图3-7)。atn>cdine*Lnfci;pnnttt",;文件prints "正女(1 2一一p inTextputc(*p+Jp);felusri rp),图3-7 save储存函数3.2.8
15、 load 函数将文件以.txt的形式装入,如果文件打不开,则装入不成功,如果文件正在装入, 结束后,按任意键退出。定义整型变量 size,inch ,其中,使用if判断语句,while 循环语句,printf输出函数,定义了字符型指针变量p,使用了指针的指向语句,如: start=start->next; info->prior=temp 等(见图 3-8)。pnntiEt 止装 A Z .pnnttC Mt内f匚七一rtturri;prmtK"' tff 内 l7 已¥reium;teimp-next-NULL.图3-8 load 函数3.3 调试编
16、辑执行时,出现一个 warming,错误出现在 menu_select()中,丢掉了 return 语句,return表示中止当前函数的运行,并将操作权返回给调用者,就算不写,在 函数执行完毕后也会返回操作权给调用者。写 return是一种清晰的风格,可以防止 一些意外的错误。如图所示:1 gUr j 1 oST - 7j1r32 Debu gConpilirig =»*a,cppsYDocuments andl S;ettingisAdlninietratDra Bcpp(6S)i : warninq OB日:'merau_Eelect1 i f unction shoul
17、d returna .Oli j . U err10 nlm).R u1ahiningfs:)图3-9调试框所显示错误>whlie(c<D| 104);j八以 *杠 Uti =£3且上T7图3-10错误所在处c=atoi(s);while(c<0|c>6); return(c);图3-11错误修改后ConFiguraition: a - Uin32 Debug Compilinga .cppa . ob j - 0 error(s) , 0 naming (s)图3-12编译Configuration: a - Win32 Debug Linking.a.ex
18、e - 0 error(s), 0 earning(s)图3-13执行第四章软件使用说明简单的行编辑器,主要包括五个内容:第一,字符的按行录入及储存;第二,文 件内容的显示;第三,文件内容的查找;第四,文件内容的替换第五,文件的修改。开始进入初始化界面,按数字进行所需要的操作:匚'C:Docuaents and Sett1 .蒯入I2 .删除一直3 .显不一行4 .文件存盘S .装入文件61退出请按数字选择:图4-1 王画面按数字一,任意输入行号:*C:DocuBents and SettincsXcaoshu?ingXDebug12 3 4 5 6入除示件入出翦显文装退尊盘件二存文请
19、按数字选择.1行节:图4-2输入界面按数字二,选择所需要删除的行号:箕仃盘件 二存文 (除示件入出 蒯显文装退12 3 4 5 6请按数字选择;2 行号:图4-3删除界面按数字三,显示删除后其余的行号:12 3 4 5 6后仃盘件二存文人除示件入出输删显文装退请按数字选择;31战入2 .删除一近 "显示一行 4 .文件存盘 5 .装入文件6.退出请按数字选择:图4-4显示界面按数字四,输入某个文件命名,将该文件存盘:图4-5存储界面按数字五,将选定的文件装入:立仃盘件一 一存文A除示件入出哥显文装退12 3 4 5 6请按数字选择;5文件名工正装入文件!Jress ani/ key
20、to continue图4-6装入界面第五章课程设计心得与体会三周的课程设计,终于结束了,这次课程设计,让我明白了很多,自己以前学的 那些东西,只是皮毛,是为了应付考试才看书学习的,自己根本没有真正掌握所学的 专业知识,这次的课程设计,下了很大功夫,一开始,以为课程设计很简单,在网上 随便百度一个课程设计报告就可以了, 可是没想到,网上找的都不能用,代码都是有 错误的,只好自己编写代码,重新开始好好看书,学习 C语言知识,上网查阅资料, 去图书馆翻阅有关书籍,每天想的只有课程设计,因为自己基础很差,编写起来代码 很困难,一开始编写出来的代码错误很多,很沮丧,很伤心,想着这次课程设计一定 完蛋了
21、,停下来休息了一天继续修改自己的程序, 最终把代码修改到完善,心里终于 落下了一块大石头,以为一切搞定了,却发现,还有写报告这件重头戏,每天继续奔 波于机房和图书馆之间,通过老师的帮助和自己不断的努力, 终于完成了报告。看着 自己的报告,又激动又害怕,第一次自己下很大心血完成的东西,让人很兴奋,却也 担心自己的报告得不到老师的肯定。这次课程设计,让我明白了,一个报告里,最重要的是编写代码以及流程图,虽 然自己基础很差,不过通过这次课程设计,我的专业知识提高了很多,明白了,只有 通过真正的实践,才能明白自己真正学了多少知识,自己有多少知识能拿到实际中运 用,比如说编写代码时,当你把代码编译并让其
22、运行,发现很多错误,再回头检查错 误出在哪里,是很费力的一件事情,因此分析和规划代码是很重要的, 最重要的是要 把整体的逻辑结构写好,这样就不会出现大问题,写代码就要先找出核心的内容,用 多种方法来实现核心部分,这样可以尽可能的避免发现逻辑或编译不支持的错误。通过这次的课程设计,让我初步学会了一个课程设计的基本方法有哪些,学会了如何借鉴别人的方法和经验,如何将所有的资料整合起来并加以运用,这次报告的设 计,为以后课程设计以及毕业论文打下了很好的基础。三周当中,会因为程序的事而心烦意乱,不过,人总是在挫折中成长的,积累的失败的经验多一些,对成长有很大 的帮助。这次的报告,有很多不尽人意的地方,很
23、感谢荀老师的帮助,报告的完善, 大部分都是在老师的帮助下完成的, 这次的报告,融入了自己很大的心血,我觉得我 的报告很好,以后,需要更加刻苦的学习自己的专业知识,不断的提高自己的能力。附录1参考文献1谭浩强编著.C+程序设计.北京:清华大学出版社,20052谭浩强编著.C+程序设计解题与上机指导.北京:清华大学出版社,20053谭浩强编著.C程序设计(第二版).北京:清华大学出版社,19994谭浩强编著.C程序设计设计解题与上机指导(第二版).北京:清华大学出社,19995黄迪明主编C+语言程序设计基础.北京:电子工业出版社2003.66钱能 主编C+程序设计教程.北京:清华大学出版社1999
24、.4口郑莉、董渊 编着C+语言程序设计.北京:清华大学出版社1999.128吴访升编着C+程序设计.北京:机械工业出版社20029吴访升 编着C+程序设计学习指导与上机实践.北京:机械工业出版社出版200210孙淑霞等C/C+程序设计教程(第2版),电子工业出版社,2007.211郑莉 董渊C+邮言程序设计,清华大学出版社,郑莉、董渊, 1999.1212王正军Visual C+6.0 程序设计从入门到精通北京:人民邮电出版社2006.1附录2程序清单#include "stdio.h" #include "stdlib.h" struct line c
25、har text81;int num; /* 行号*/struct line *next; /*指向下一个输入项目的指针*/struct line *prior; /*指向前一个项目的指针*/;struct line *start; /*指向表中第一个项目的指针*/struct line *last; /*指向表中作后一个项目的指针*/struct line *find(int),*dls_store(struct line *);void patchup(int,int),delete_text(),list(),save(char *),load(char *); menu_select(
26、);enter(int linenum);void main(int argc,char *argv口)char s80,choice,fname80;/ struct line *info;int linenum=1;start=NULL;last=NULL;if(argc=2) load(argv1);/*装入命令行上的文件 */dochoice=menu_select();switch(choice)case 1:printf("t 行号:");gets(s);linenum=atoi(s);enter(linenum);break;case 2:delete_tex
27、t();break;case 3:list();break;case 4:printf("t 文件名:");gets(fname);save(fname);break;case 5:printf("t 文件名:");gets(fname);load(fname);break;case 6:exit(0);while(1);/*显示菜单,供用户选择*/menu_select()char s80;int c;printf("tt1.输入 n");printf("tt2.删除一行 n");printf("tt3
28、.显示一行 n");printf("tt4.文件存盘 n");printf("tt5.装入文件 n");printf("tt6. 退出 n");doprintf("nntt请按数字选择:");gets(s);c=atoi(s);while(c<0|c>6);return(c);/*将文本插在指定行端部*/enter(int linenum) struct line *info;/char t81;for(;) /* */ info=(struct line *)malloc(sizeof(st
29、ruct line);if(!info)printf("t! 内存不够! n");return(NULL);printf("%d:",linenum);gets(info->text);info->num=linenum;if(*info->text)if(find(linenum) patchup(linenum,1);if(*info->text) start=dls_store(info);else break;linenum+;return(linenum);/*当文本内容插在文件中间时其下面的内容的行号必须增加1,而*/
30、*删除时,被删除的文本后面的行号必须减1 */void patchup(int n,int incr)struct line *i;i=find(n);while(i)i->num=i->num+incr;i=i->next;/*按行号排序后插入*/struct line *dls_store(struct line *i)struct line *old,*p;if(last=NULL)i->next=NULL;i->prior=NULL;last=i;return(i);p=start;old=NULL;while(p)if(p->num)old=p;p
31、=p->next;elseif(p->prior) p->prior->next=i;i->next=p;p->prior=i;return start;i->next=p;i->prior=NULL;p->prior=i;return(i);old->next=i;i->next=NULL;i->prior=old;last=i;return start;/*删除一行*/void delete_text()struct line *info;char s80;int linenum;printf("t 行号:&
32、quot;);gets(s);linenum=atoi(s);info=find(linenum);if(info)if(start=info)start=info->next;if(start) start->prior=NULL;else last=NULL;elseinfo->prior->next=info->next;if(info!=last)info->next->prior=info->prior;else last=info->prior;free(info);patchup(linenum+1,-1);/*查找一行文本*
33、/struct line *find(int linenum)struct line *info;info=start;while(info)if(linenum=info->num) return(info);info=info->next;return(NULL);/*显示文本*/ void list() struct line *info;info=start;while(info)("%d:%sn",info->num,info->text); info=info->next; printf("nn");/*存文件*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能穿戴体温监测传感器校准技师(初级)考试试卷及答案
- 车工技师理论考试试卷及答案
- 产后康复课程培训师岗位招聘考试试卷及答案
- 区域影像云平台生态构建策略
- 梯子凳施工方案(3篇)
- 校园照明施工方案(3篇)
- 公共场所宾馆管理制度(3篇)
- 游戏活动策划方案论文(3篇)
- 区块链在医疗数据共享中的隐私保护合规实践
- 区块链在医疗数据共享中的访问控制优化
- T/CEPPEA 5023-2023风光储充一体化充电站设计规范
- 物业法律培训课件
- 孝义六中教育集团学校规章制度修改版
- 学习雷锋好榜样 课件
- 消防工程施工设备及检测仪器配置计划
- 有机化合物概述
- 2025新修订版《英语课程标准》学习心得体会
- 工程质量监理精细化管理实施细则
- 统编版小学语文四年级下册9 短诗三首 (教学设计)
- 多联机空调维保方案
- 费斯汀格法则原文
评论
0/150
提交评论