还剩15页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
电子信息工程学院课程设计汇报设计名称________数据构造课程设计.简朴行编辑程序姓名学号专业班级电子信息工程学院系(院)___________________________设计时间______________________设计地点__________EDA试验室指导教师评语:成绩:struct line*next;/*指向下一种输入项目/V指针*/struct line*prior;/*指向前一种项目日勺指针*/};struct line*start;/*指向表中第一种项目的I指针*/struct line*last;/*指向表中最终一种项目的I指针*/struct line*findint,*dls_storestruct line*;void patchupint,int,delete_text,list,savechar*,load char*;menu_select;enter int linenum;void mainintargc,char*argv[]char s
[80],choice,fname
[80];int linenum=l;start=NULL;last二NULL;if argc==2loadargv[l];/*读取命令行上的文献*/do{choice=menuselect;switchchoice case1:printf/z\tlinenum:〃;getss;linenum=atois;enter linenum;break;case2:delete_text;break;case3:list;break;case4:printf〃\t:〃;gets fname;savefname;break;case5:printf〃\t:〃;getsfname;loadfname;break;case6:exit0;}}whilel;/*显示菜单,供顾客选择*/menu_select{char s
[80];int c;printf〃\t\tl.Enter\n〃;printf,z\t\t
2.Delete aline\n,z;printf/z\t\t
3.Display aline\n〃;printf,z\t\t
4.Save the file\n〃;printf,z\t\t
5.Read the file\n〃;printf,z\t\t
6.Quit\n〃;do{printf,z\n\n\t\t Please choice a num:〃;getss;c=atois;}whilec0||c6;return c;/*将文本插在指定行端部*/enter int linenum{struct line*info;for;;info=struct line*mallocsizeofstruct line;if!infoprintf,z\t!内存不够!\n〃;returnNULL;printf〃%d:〃,linenum;gets info-text;info-nuni=l inenum;if*info-textiffindlinenum patchuplinenum,1;if*info-text start=dls_storeinfo;else break;linenum++;returnlinenum;/*当文本内容插在文献中间时其下面的内容区I行号必须增长1,而*//*删除时,被删除日勺文本背面日勺行号必须减1*/void patchupintn,int incrstruct line*i;i=findn;whilei{i-num=i-num+incr;i=i-next;/*按行号排序后插入*/struct line*dls_storestructline*istruct line*old,*p;if last二二NULLi-next=NULL;i-prior=NULL;last=i;return i;}p=start;old=NULL;whilep ifp-numold=p;p=p-next;else ifp-priorp-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 s
[80];intlinenum;printf/z\tlinenum:〃;getss;linenum=atois;info=findlinenum;if infoif start==infostart=info-next;if startstart-〉priornNULL;else last=NULL;else{info-〉prior-next=info-next;if info!=lastinfo-next-prior=info-prior;else last=info-prior;free info;patchuplinenum+l,-1;/*查找一行文本*/struct line*findint linenumstruct line*info;info二start;whileinfoif linenum==info-num returninfo;info=info-next;return NULL;/*显示文本*/void liststruct line*info;info=start;whileinfoprintf info-num,info-text;info=info-next;printf〃\n\n〃;/*存文献*/void savechar*fnamestruct line*info;char*p;FILE*fp;if fp=fopen fname,z,wz,==NlJLLprintf z,\t Can,t open thefile!\n〃;exit0;printf,z\t Saving:\n〃;info二start;whileinfop=info-text;while*p putc*p++,fp;putc,\n,fp;info=info-next;}fclosefp;/*读取文献*/void loadchar*fnamestruct line*info,*temp;char*p;FILE*fp;int size,inct;if fp=fopenfname,〃r+〃=二NULL{printfzz\t Cant open thefile!\n〃;exit0;whilestart{temp=start;start=start-next;freetemp;printf,z\n\t Reading...\nz,;size=sizeof struct line;start=struct line*mallocsize;if!startprintf〃\n\t内存已经用完!〃;return;info=start;p=info-text;inct=l;while*p=getcfp!=EOF{p++;while*p=getcfp!=,\n,p++;*p=\0;info-num=inct++;info-next=struct line*mallocsize;if!info-nextprintf C\n\t内存已经用完!〃;return;info-prior=temp;temp=info;info=info-next;p=info-text;temp-next=NULL;last二temp;free info;start-prior=NULL;fclose fp;参照文献
1.严蔚敏,吴伟民.数据构造(C语言版).北京大学出版社,20232,谭浩强.C语言程序设计教程.高等教育出版社,
19983.[美]Robert L.Kruse.数据构造与程序设计(C语言第二版),清华大学出版社,
20234.课程设计心得通过对数据构造的课程设计,我理解并发现了诸多调试程序的措施,并且懂得了怎样处理错误的措施对C语言以和C++时使用得到了深入的提高针对数据构造的书本知识得到了深入日勺巩固对程序的深层理解,清晰程序中每一步的功能,在程序的运行中是十分重要的,一种好的构造在运行中可以充足日勺发挥程序的功能构造设计的合理性决定了这个程序的价值在此后日勺学习中我要注意这方面,使得我的编程能力能有深入的提高不过我在写程序的时候也有诸多困难,上网和在图书馆找有关的C函数,由于代码分别保留在不一样的头文献中,怎样协调各个头文献之间代码的通讯是个很难处理的问题,曾经一度想放弃使用头文献,但如此一来会导致代码所有堆在一起,很难阅读和编写最终通过申明的措施终于处理了问题通过这次课程设计,对c语言时掌握提高到了一种新的I水平,可以运用C语言编写出一种实用的程序,很大程度提高了程序综合设计能力、分析能力和编程能力掌握了诸多新的编程技巧,积累了某些编程经验我更学到了编程的思想,这对于后来的学习以至到后来的工作中都是很有用的同步我认为我们后来日勺工作是一种团体的工作,团体需要个人,个人也离不开团体,必须发扬团结协作的精神某个人的I离群都也许导致导致整项工作的I失败实习中只有一种人懂得原理是远远不够日勺,必须让每个人都懂得,否则一种人的错误,就有也许导致整个工作失败团结协作是我们实习成功的一项非常重要的保证而这次实习也恰好锻炼我们这一点,这也是非常宝贵日勺签名_________________年月日课程设计目的
1.
1、训练学生灵活应用所学数据构造知识,独立完毕问题分析,结合数据构造理论知识,编写程序求解指定问题
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本措施和技能;
3.提高综合运用所学日勺理论知识和措施独立分析和处理问题的J能力;
4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨日勺科学态度和良好的工作作风课程设计任务与规定
5.任务问题描述文本编辑程序是运用计算机进行文字加工的基本软件工具,实现对文本文献的插入、删除等修改操作限制这些操作以行为单位进行的编辑程序称为行编辑程序被编辑的I文本文献也许很大,所有读入编辑程序的数据空间(内存)日勺做法即不经济,又不总能实现一种处理措施是逐段的编辑任何时刻只把待编辑文献的一段放在内存,称为活区试按这种措施实现一种简朴日勺行编辑程序,设文献每行不超过320个字符,很少超过80个字符规定实现如下4条基本的J编辑命令⑴行插入格式i〈行号X回车X文本>.〈回车>将〈文本〉插入活区中第〈行号》行之后⑵行删除格式d〈行号1>[<空格X行号2〉.回车》例如删除活区中第〈行号1>行(到第〈行号2>行)例如例如“diO」”和dl014」
(3)活区切换格式n〈回车》将活区写入输出文献,并从输入文献中读入下一段,作为新的活区
(4)活区显示格式p〈回车》逐页地(每页20行)显示活区内容,在每显示的一页之后请顾客决定与否继续显示后来各页(假如存在)印出的每一行要前置行号和一种空格符,行号固定占4位,增量为1各条命令中的行号均须在活区中各行号范围之内,只有插入命令的行号可以等于活区第一行行号减一,表达插入目前的屏幕中第一行之前,否则命令参数非法课程设计阐明书
6.一需求分析
1、被编译的文本文献也许很大,所有读入编辑程序的I数据空间内存的做法既不经济,也不总能实现任何时刻只把待编辑文献日勺一段放在内存,称为活区
2、活区区J大小用行数ActiveMaxLen可设为100来描述可以以原则行块为单位为各行分派存储,每个原则行块可含81个行块
3、将输入文献中的J内容区JActiveMaxLen-x x由顾客自己定义行的I内容读入活区中然后分别对活区中的内容进行编辑
4、分别实现各命令欧I函数,然后对客户的I需求实行对应的I操作对命令格式不对欧I的I进行处理二概要设计ADT line{基本操作enterlinenum初始条件有内存操作成果linenum+
1.delete_text初始条件line存在操作成果若删除日勺最终一行,则直接删除若删除中间一行,则背面日勺linenum-1Load初始条件存在文献file操作成果打开文献}ADT line三详细设计将文本插在指定行端部1enter intlinenumstruct line*info;for;;info=struct line^mallocsizeofstruct line;if!infoprintf,z\t!内存不够!\n〃;return NULL;}printf〃%d:〃,linenum;gets info-text;info-num=linenum;if*info-textiffindlinenum patchuplinenum,1;if*info-text start=dls_storeinfo;else break;linenum++;return1inenum;删除一行2void delete_textstruct line*info;char s
[80];intlinenum;printf CAtlinenum:〃;getss;linenum=atoi s;info=f indlinenum;ifinfoifstart==infostart=info-next;ifstartstart-prior=NULL;else last=NULL;elseinfo-prior-next=info-next;if info!=lastinfo-next-prior=info-prior;else last=info prior;free info;patchup1inenum+1,-1;存文献3void savechar*fnamestruct line*info;char*p;FILE*fp;if fp=fopenfname,〃w〃二二NULLprintf,z\t Cantopenthefile!\n〃;exit0;printfz,\t Saving:\n〃;info=start;whileinfo p=info-text;while*p putc*p++,fp;putcJ\n,fp;info=i nfo-next;fclosefp;读取文献4void loadchar*fnamestruct line*info,*temp;char*p;FILE*fp;int size,inct;if fp=fopenfname,〃r+〃==NULL printf〃\t Can,topenthefile!\n〃;exit0;while starttemp=start;start=start-next;free temp;printf zz\n\t Reading...\n〃;size=sizeof struct line;start=struct line*mallocsize;if!startprintf〃\n\t内存已经用完!〃;return;info=start;p=info-text;inct=l;while*p=getcfp!=EOFp++;while*p=getcfp!=,\n,p++;*p=\0;info-num=inct++;info-next=structline*mallocsize;if!info-nextprintf〃\n\t内存已经用完!〃;return;i nfo-pr ior=t emp;temp=info;info=info-next;p=info-text;temp-next=NULL;last=temp;freeinfo;start-prior=NULL;fclose fp;四设计与调试分析这个程序的源程序是我在图书馆资料上找的,当时不能运行,main的界面也不是目前这样源程序里面也没有存文献和读取文献的功能,我先对源程序进行调试分析,把里面的错误一一改正,编写出mian程序然后在里面添加了存文献和打开文献的功能,使H勺程序愈加完善本程序在运行时,必须选择
3.Display aline才能将输入,删除或者打开后的文献显示出来,这就有点挥霍时间,使得操作有点复杂五顾客手册
1.本程序在win-tc下运行
2.在进行输入,删除或者打开文献时操作后,再选择“
3.Display aline”将输入,删除或者想要打开的文献内容显示出来
3.在执行“
5.Open thefile”时,输入想要打开文献的对口勺途径,回车假如想要打开区I文献不存在,则跳出运行
4.在进行保留文献的操作时,在提醒后输入想要保留的对的途径名,再按回车,文献即被保留六测试成果图1C:UMCUME-1\ADMINI11墟面iWfei.exe□lxCA
1.Enter
2.Delete aline
3.Display aline
4.Saue thefile
5.Read the£ile
6.Quit工Please choicea nun1linenum
11.Enter
2.Delete aline
3.Display aline
4.Saue thefile
5.Read thefile
6.QuitPlease choicea num3图2CA C加0CUME~1\ADMINI~1堞面、飞Uei.exePlease choicea nun31:1232:4563:
7891.Enter
2.Delete aline
3.Display aline
4.Saue thefile
5.Read thefile
6.QuitPlease choicea nun2linenun
27.Enter
8.Delete aline
9.Display aline10Saue thefile
5.Read thefile
6.Quit234258369Pleasechoicea num3图3C:U0CUME11WMINI-1熄画飞Vei.exeCA
1.Enter
2.Delete aline
3.Display aline
4.Saue thefile
5.Read thefile
6.QuitPlease choicea nun5filenanef\
1.txtReading___
1.Enter
2.Delete aline
3.Display aline
4.Saue thefile
5.Read thefile
6.QuitPlease choicea nun3图4C:U0CUME-1\ADMINk1V^ffi\lSVei.exe filenamef\
1.txtCAReading...
7.Enter
8.Delete aline
9.Display aline10Saue theFile
5.Read thefile
6.QuitPlease choicea nun31adasasdfdghh2fahjfhklafkasjl
1.Enter
2.Delete aline
3.Display aline
4.Saue thefile
5.Read thefile
6.QuitPlease choiceanum七附录源程序清单#include〃stdio.h〃ttinclude stdlib.h〃ttinclude string.h〃structline{char text
[81];int num;/*行号*/。
个人认证
优秀文档
获得点赞 0