制作人:王帜易成。
班级:控制科学与工程系物流管理0804班。
时间: 2009.11.6
一. 软件概述。
本软件的编写目的在于为用户提供一仿turbo c,实现汉化菜单界面下进行对非汉字字符的编辑功能以及对文本打开、保存功能的类记事本程序,可通过鼠标和键盘控制。其用户界面友好,人机交互方便,操作简单,功能实用。
1.功能介绍。
本软件模仿了记事本界面,分主菜单、弹出式菜单、编辑窗口、**及关于、退出几个模块。主菜单包括文件、编辑、**及关于、退出几个菜单项,其中每一个项目有下拉菜单或弹出式菜单。编辑窗口中有蓝色闪动光标,用于字符编辑选定及复制等操作的定位,窗口上端显示正在编辑的文本标题,右端和下端有编辑快捷键的操作提示,使用户操作起来更加方便。
文件”下拉菜单的选项包括新建、打开和保存,新建时创建新文件或者清除原有编辑痕迹,重新建立名为noname的文件。打开文件输入文件名时不区分大小写,若文件名不存在则弹出提示框,显示无法打开文件,按任意键继续,返回主界面。本软件可以打开记事本和word等文本编辑器创建的不含汉字及汉字标点符号的文本文件。
打开后可进入编辑功能对文本进行编辑。保存文件时根据输入的文件后缀名以相应的文件格式图标存储在output文件夹下的磁盘目录区,同样,可以通过记事本和word打开此文本文件并进行编辑。
本软件的编辑区菜单分为编辑、全选,复制,剪切和粘贴,每一个功能项都有相应的快捷键与之对应,显示在编辑窗口的右方及下方。快捷键与菜单栏编辑项的下拉菜单所示功能一一对应,完全兼容。进入编辑功能后,当前正在编辑文件的文件名显示在编辑窗口上方的方框中。
文本编辑区适合大小英文及各种键盘字符的输入。编辑窗口内闪动的光标和记事本中的光标移动方式相同,不能在无字符处显示,进入文本最后一行时自动跳到最后字符或最后字符的左侧。用方向键控制光标的移动,通过f1(编辑),f2(选定),f3(全选),f4(复制),f5(剪切),enter(粘贴)进行快捷操作,backspace用于删除字符,可删除光标左边的单个字符。
本软件的一大亮点在于具有一般文本编辑器所没有的背景**切换功能,主菜单栏**项点击确定后弹出选择**的提示信息。作者提供了两款精美的背景**图案供使用者选择,相信对于早已厌倦记事本单调又空洞的编辑界面的广大用户来说,本软件会是一个不错的选择。
关于”提供软件的制作信息,,点击或回车确定“退出”则退出整个程序。
2.功能模块与流程图。
3.程序设计用到的数据结构和关键函数。
struct menu
int coor[4];
int itemcoor[4*inum];
int itemdispxy[2*inum];
int select;
int itemnum;
char **itemname;
int command_id[inum];
;包含菜单各项参数的结构体。
struct options
int **er;
int x,y;
int x_length,y_height,nums,nume;
int dw[2];
make; 定位光标和字符的结构体。
char *string主字符串,用于文本的输入和存储
operaed_str操作字符串,用于复制等编辑操作。
void funcproc(int id,int *flag,struct options *make,char *operaed_str,char *title,char *string);/菜单与功能的接口函数。
void managemainmenu(struct menu *mainmenu,struct menu *submenu,unsigned char *allcolors,int id,int minx,int maxx,int miny,int maxy,int *mousex,int *mousey,int *button);/整个程序的主控函数。
void editing(struct options *make,int *flag,char *string,char *operaed_str);/编辑函数。
void show_str(struct options *make,char *string);/主字符串显示函数。
void copy_str(struct options *make,char *operaed_str,char *string);/复制选定的字符串。
void new_file(struct options *make,char *title,char *string ,char *operaed_str);/新建文件。
4.软件特点与缺陷。
本软件具有**切换功能,界面大方而清新。可以通过鼠标和键盘同时控制主菜单。弹出式菜单较多,操作更加简单明了。编辑功能完善,支持快捷键和菜单的同时控制。
由于采用一维数组显示,需要不断刷屏,编辑文本时光标和字符的显示稍微有些迟缓。
二. 课程设计心得与体会。
在c语言课程设计过程中收获很大!!!
首先,我和易成所完成的课题是全屏汉化编辑器,在课设过程中,我主要完成的是菜单部分,并实现了鼠标和键盘的同时控制,以及两套**界面的绘制。软件介绍。帮助和退出等功能。
最大的感受就是经受了一次洗礼,大一下学期学的c语言,当时只是写一些很简单的程序,最长的都不会超过100行。而这次却要上千行!起初一个月基本在迷茫中度过,根本无从下手,后来从图形模式初始化开始,在画图中开始慢慢了解各个函数的功能实现方法。
渐渐从实现一些很小的功能中兴奋起来,发现大一学的c语言竟然有如此强大的功能!!!
开始做菜单时,是先从做英文菜单开始的,查阅了大量的资料,最开始做出个文本模式下的菜单(是仿照书上的做的),后来发现这样不符合课设的要求,就改变策略,虽然这段程序对后来的程序没有任何用处,但还是受到了一些启发。之后开始写图形模式下的菜单,这也是整个课设过程中最纠结的时候了。
显示汉字的函数是从网上找到的,其中的原理已经掌握,而且可以运用自如,但是其中的多重循环还是看不懂。之后对整个软件界面有了总体的设计,开始绘制。吸取之前菜单的经验,先对菜单移动功能的实现进行了实际,在草纸上分化出菜单的具体实现流程,然后开始一个函数一个函数的写,功能渐渐完善,最后实现了很人性化的菜单。
其实最终的菜单是再一次次“重写”中实现的,虽然最初设计好了流程图,但是真正写起来还是遇到了这样那样的问题,不停的纠结,不停地修改,感触最深的就是那个菜单结构体,它包含了有关菜单的所有参数,之后通过那个结构体对参数进行传递,根据传递的值进行操作控制。为了参数传递方便,起初定义了几个全局变量,这不符合课设的要求,于是就将那些变量都定义在了main函数中,然后以形参的形式在个子函数中传递,这个是很难的,在改全局变量的过程中自己真正的认识到了c语言中“地址”的概念,因为传递变量时如果只传值而不传地址,是根本无法改变其值的,这让我透彻地理解了“*”和“&”菜单中还有一个关键的设计,那就是菜单和功能的接口,我做的菜单中设置了一个function函数,并对每个菜单赋了一个id号,在function中通过switch(id)来进入相应的功能。这也使得菜单部分和功能部分的分工得以实现,我和同伴同时进行,最后只需function那个接口即可连接,提高了效率。
在菜单完善之后,我开始做视图。帮助和退出的函数,在做了很长时间菜单后,对图形的显示和覆盖已经很熟悉,后三个菜单的功能很快就实现了。
在完成了自己的分工后,我想增加菜单的功能,因此加入了鼠标的控制,查阅了一些资料,了解了鼠标中断的原理,开始从显示鼠标尝试,移动鼠标,在键盘控制部分的对立位置写入了鼠标控制函数,由于不想在传地址,没有将鼠标控制部分独立为一个函数,而是直接加在菜单函数中,其中不到100行的包含11对花括号的程序就实现的全部菜单的控制,其中利用到了很多之前写的函数,通过逐层深入,一点点的添加,虽然让其他同学看时没有人能看懂,但是自己对其中的程序还是既清楚又深爱的,我最得意的程序就是这一部分了,里边的逻辑很强,而且有多重while循环,其中使用了从未用过的goto语句,这里最得意!!!最终鼠标有些小bug,就是它一直在闪动,由于时间关系没有作修改,个人认为已经瑕不掩瑜了。
最后就和同伴调了一些文件和编辑功能中的bug,这部分不是我做的,只是达到了了解的程度。
完成了课设松了好大的一口气,真的好锻炼人,真正知道了什么是程序的模块化,真正知道了什么是合作。。。
---王帜。
本次c语言课程设计前后历时近两月,中间酸甜苦辣实不可一言以蔽之。在编写过程中我们会为一个小bug的调试成功而欢呼雀跃,也为一个难题的进展缓慢而愁眉不展,终日苦苦思索。在失望甚至可以说绝望中不断发现亮光,终于寻到了柳暗花明的路途。
这次的编程经历,无疑大大提升了我们各方面的能力,从技术层面讲,编程的宏观思维和结构化思想,小细节的处理和各模块的衔接,一些关于语法规则的扎实的理论基础也在这过程中打下。从做事方法层面讲,学会了怎样与队友进行高效率的协作和深入有效的交流,历练了承受失败的勇气和不达成功不罢休的毅力,这对养成一个做事认真、踏实的好习惯起到了重要作用。
我和搭档王帜的合作由来已久,早在今年暑假就一起准备航空飞豹杯的比赛,我们一起学习,一起交流,在深厚的友谊之外,更多了一起做事的默契和熟练。由于九月份我们的智能车制作进入到关键阶段,我主要投入到这项工作当中,商定让组长王帜进行前期的工作,如图形界面的绘制以及菜单的制作。因此我实际上是从10月份开始着手课程设计。
我主要的工作是完成编辑模块的所有功能,以及相应的文件处理功能(如新建打开保存等)。我们首先从往届学长那里熟悉了整个程序的框架,对结构化的思想有了初步的了解。然后仔细钻研学长们的源**。
c语言课程设计总结报告
附表2c 或c 语言课程设计总结报告。学生学号。姓名。专业。班级。所属学期。一 项目介绍与设计目的。项目介绍 这是一个 学生通讯录管理系统 的程序。它具有如下功能 1 产生一个菜单选项,根据用户的需要进行选择,附表2 c 或c 语言课程设计总结报告。注 该 由学生填写,内容采用小四号宋体。源 学生通...
c语言课程设计总结报告
附表2c 或c 语言课程设计总结报告。学生学号。姓名。专业。班级。所属学期。一 项目介绍与设计目的。项目介绍 这是一个 学生通讯录管理系统 的程序。它具有如下功能 1 产生一个菜单选项,根据用户的需要进行选择,附表2 c 或c 语言课程设计总结报告。注 该 由学生填写,内容采用小四号宋体。源 学生通...
c语言课程设计总结报告
附表2c 或c 语言课程设计总结报告。学生学号。姓名。专业。班级。所属学期。一 项目介绍与设计目的。项目介绍 这是一个 学生通讯录管理系统 的程序。它具有如下功能 1 产生一个菜单选项,根据用户的需要进行选择,附表2 c 或c 语言课程设计总结报告。注 该 由学生填写,内容采用小四号宋体。源 学生通...