第一篇:数据结构 简易文本编辑器(共)
题目:
【2】.简易文本编辑器 要求:
1)具有图形菜单界面;
2)查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除
3)可正确存盘、取盘; 4)正确显示总行数。
1需求分析
一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。
2概要设计
为实现数据的有序存储,该编辑器应该用顺序表来存储输入的信息。顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。在编辑器的主界面中应有如下提示信息:
⑴ 清空以前的文本信息:将用数组存的数据内容全部置为0;
⑵ 显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上; ⑶ 编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数; ⑷ 替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;
⑸ 插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;
⑹ 移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息; ⑺ 删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;
⑻ 退出编辑器:显示感谢使用该软件并退出。详细设计
void menu();
void shuru(char text[]);void bc(char text[]);
void dakai(char text[]);void dayin(char text[]);void chazhao(char text[],int l);void tihan(char text[],int l);int strindex(char text[],char t[],int i2,int l);void shanchu(char p[],int l);void cs(char text[]);void charu(char text[],int l);void tuichu(int status);char text[MAX]=“";//文本编辑域 char name[20]=”“;//文件保存的位置 int status=0;//显示是否保存过的状态 int ntext;
//文本编辑的位置
4用户使用说明
⑴ 清空以前的文本信息:将用数组存的数据内容全部置为0;
⑵ 显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上; ⑶ 编辑信息:定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数; ⑷ 替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;
⑸ 插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;
⑹ 移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息; ⑺ 删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;
⑻ 退出编辑器:显示感谢使用该软件并退出。
5调试分析 /测试结果
文本编辑器主界面
主界面功能,如图2—2所示。
图2—2 文本编辑器主界面
系统功能
⑴ 输入文本信息功能,如图2—3所示。
图2—3 输入界面
⑵ 查找文本信息,如图2—4所示。
图2—4查到功能界面 ⑶ 显示文本信息,如图2—5。
图2—5 {4}删除操作,如图2--6
图2—6(删除123)功能 {5}插入操作
如图2—7所示。
图2—7(在789前插入123)界面 {6}替换文本内容,如图2—8所示。
图2—8(替换456为abc)的内容 6心得体会
程序的运行结果与理论推导结果完全吻合,即该算法与程序设计满足课程设计要求。该程序的主要优点是简单易懂,不存在理解上的障碍,也很自然地能想到这种解法。通过数据结构的课程设计使我们对所学知识有了更好的理解,也增强了大家的动手能力。同时也发现了自己的很多不足之处,对知识的应用能力很是欠缺,应用软件的能力及编程水平与课程要求更是存在很大的差距。
7程序
#include
void shuru(char text[]);void bc(char text[]);
void dakai(char text[]);void dayin(char text[]);void chazhao(char text[],int l);void tihan(char text[],int l);int strindex(char text[],char t[],int i2,int l);void shanchu(char p[],int l);void cs(char text[]);void charu(char text[],int l);void tuichu(int status);char text[MAX]=”“;//文本编辑域 char name[20]=”“;//文件保存的位置 int status=0;int ntext;//显示是否保存过的状态
//文本编辑的位置
//在vs中取消warning的警告
void dakai(char text[]){
system(”cls“);
FILE *fp;char pd,ch;char name[30];int i=0;printf(”输入A:确定打开文件(未保存的数据将会丢失)M:返回主菜单“);fflush(stdin);pd=getchar();if(pd=='A'||pd=='a'){
printf(”请输入要打开文件名字(例如c:a.txt)“);
scanf(”%s“,name);
while((fp=fopen(name,”r“))==NULL)
{
printf(”n打开文件失败,请重新输入要打开的文件名:“);
scanf(”%s“,name);
}
cs(text);
while(!feof(fp))
{
ch=fgetc(fp);
text[i]=ch;
i++;
}
text[i]=' ';
ntext=i;
fclose(fp);
printf(”n文件读取成功n文件内容为n“);
dayin(text);
} if(pd=='M'||pd=='m')
menu();
} void bc(char text[]){ system(”cls“);FILE *fp;char pd;char tmp;int i;printf(”n输入【A】保存;任意键返回主菜单不保存n“);
fflush(stdin);pd=getchar();if(!(pd=='A'||pd=='a')){
menu();} else
{
if(name[20]==NULL)
{
printf(”n请输入保存文件名(例如: c:a.txt):“);scanf(”%s“,name);
}
while((fp=fopen(name,”w+“))==NULL)
{
printf(”文件不存在,请重新输入文件名:“);
scanf(”%s“,name);
}
printf(”nA:确定;B:取消:“);
while(scanf(”%c“,&tmp)!=EOF)
{
if(tmp=='A' || tmp=='a')
{
for(i=0;i fprintf(fp,”%c“,text[i]); fclose(fp); status=1; printf(”n文件保存成功n“); break; } if(tmp=='B' || tmp=='b') { break; } } } } void cs(char text[]){ int i;for(i=0;i text[i]=' ';} ntext=0;status=0;} int strindex(char text[],char t[],int i2,int l)//查找要操作的数据的位置(模式匹配){ int i1=l,j=0;while(i1 if(text[i1]==t[j])//继续匹配下一个字符 { j++; i1++; //主串和子串依次匹配下一个字符 } else //主串、子串指针回溯重新开始下一次匹配 { i1=i1-j+1; //主串从下一个位置开始匹配 j=0; //子串从头开始匹配 } } if(j>=i2){ return(i1-i2);} //返回匹配的第一个字符的下标 else return(-1); //模式匹配不成功 } void menu(){ system(”cls“);time_t timep; time(&timep);printf(”%s“,ctime(&timep));printf(”nnnnnnnnntttWelcom to use our TXT edition system!n“);printf(”nnttt 欢迎您使用文本编辑器软件!n“);printf(”nnnnnnnnnpress Enter to continue...n“);getchar();loop: system(”cls“);printf(”nnnntt******************简易文本编辑器*****************nn“);printf(”tttt----0.清空内容--n“);printf(”tttt----1.打开文件--n“);if(ntext==0){ printf(”tttt----2.输入内容--n“);} else { printf(”tttt----2.继续输入--n“);} printf(”tttt----3.查找------n“);printf(”tttt----4.插入------n“);printf(”tttt----5.删除------n“);printf(”tttt----6.替换------n“);printf(”tttt----7.显示内容--n“);printf(”tttt----8.保存------n“);printf(”tttt----9.退出------n“); printf(”ntt*********************选项************************n“);printf(”ntttt输入选项0-9:“);char n; fflush(stdin);n=getchar();if(n>='0'&&n<='9'){ switch(n) { case '0': cs(text);break; case '1': dakai(text);break; case '2': shuru(text);break; case '3': chazhao(text,0);break; case '4': charu(text,1);break; case '5': shanchu(text,0);break; case '6': tihan(text,0);break; case '7': dayin(text);break; case '8': bc(text);break; case '9': tuichu(status); default : break; } } else { printf(”n输入有误,请重新输入:“); fflush(stdin); n=getchar();} system(”pause“); goto loop;} void chazhao(char text[],int l){ system(”cls“);int i,t,a=-1;char pattern[20],bd,pd;printf(”原文为:n“);dayin(text);printf(”请输入您要查找的内容“);scanf(”%s“,pattern);printf(”您查找的内容是:%sn“,pattern);t=strlen(pattern);loop: a=strindex(text,pattern,t,l);if(a!=-1){ l=a+t;} int hs=1,ls=0;for(i=0;i<=a;i++){ ls++; if(text[i]=='n') { hs++;ls=0; } } if(a==-1) { printf(”查找到结尾没有找到n输入【R】将重头查找;任意键返回主菜单“); l=0; fflush(stdin); pd=getchar(); } else { printf(”已经找到在第%d行第%d列,输入【R】继续查找下一处;任意键返回主菜单“,hs,ls); fflush(stdin); bd=getchar(); if(bd=='R'||bd=='r') goto loop; } if(pd=='R'||pd=='r') {l=0;chazhao(text,l);} } void dayin(char text[]){ system(”cls“);printf(”现在文本的内容为:n“);printf(”%sn“,text); int hs=1,i; for(i=0;i if(text[i]=='n') { hs++; } } printf(”n文本共有%d行n“,hs);} void shuru(char text[]){ system(”cls“);printf(”请输入内容(输入@结束输入并返回主菜单):n“);printf(”%s“,text);char c;int i=ntext,j=ntext;fflush(stdin); while((c=getchar())!='@'){ text[i]=c; i++; ntext=i; continue;} int cout=0,zf=0,h=1,hs=1,zfs=0; for(;cout { zf++; if(text[cout]=='n') {h++;zf--;} if(text[cout]==' ') zf--; } for(cout=j;cout { zfs++; if(text[cout]=='n') {hs++;zfs--;} if(text[cout]==' ') zfs--; } printf(”统计:文本一共有%d个字符,%d行,本次输入了%d个字符,%d行n“,zf,h,zfs,hs);} void shanchu(char p[],int l){ int i,a=-1,t2=0;char x[20],px,pd,pdx,c;system(”cls“);printf(”%s“,p);printf(”n输入【A】执行查找删除内容;任意键返回主菜单:“);fflush(stdin);px=getchar(); if(px=='a'||px=='A'){ printf(”n输入您要删除的内容,以@结束:“); fflush(stdin); while((c=getchar())!='@') { if(c=='@') { break; } else { x[t2]=c; t2++; continue; } } loop: a=strindex(p,x,t2,l); int hs=1,ls=0;for(i=0;i<=a;i++) { ls++; if(p[i]=='n') { hs++;ls=0; } } if(a==-1) { printf(”已查找结束,您要删除的内容不存在n输入【R】重新输入要删除的内容;其他键将返回主菜单:“); l=0; fflush(stdin);pdx=getchar(); } else { printf(”你要删除的内容在第%d行第%d列n 输入【A】确定删除;输入【B】寻找下个词;其他键将返回主菜单:“,hs,ls); fflush(stdin); pd=getchar(); l=t2+a; if(pd=='a'||pd=='A') { for(i=a;i { p[i]=p[i+t2]; } ntext=ntext-t2; printf(”删除成功,删除后的内容为:n%sn“,text); } else if(pd=='b'||pd=='B') goto loop; } if(pdx=='r'||pdx=='R')shanchu(text,l);} } void charu(char text[],int l) //向文本中插入内容 { system(”cls“);int i=0,t=0,t2=0,a=-1,b;char cr[20]=”“,pd,x[500],c,d;printf(”n当前文本信息为:n“);printf(”%s“,text);printf(”n输入您要在哪个内容前插入,以@结束:“);fflush(stdin);while((c=getchar())!='@') //用一个数组接收要插入在哪个内容之前 { if(c=='@') { break; } else { cr[t]=c; t++;continue; } } loop: a=strindex(text,cr,t,l); //查找并返回要插入的位置点 int hs=1,ls=0;for(b=0;b ls++; if(text[b]=='n') { hs++; ls=0; } } if(a==-1){ printf(”n查找到结尾没有找到插入点,输入【R】查找其他;按其他键返回菜单:n“); l=0; fflush(stdin); d=getchar(); fflush(stdin);} else { printf(”n您要插入的位置是第%d行,第%d列之前n【A】.不是此位置向后继续找插入点n【B】.在此位置插入n按其他键返回菜单n请选择:“,hs,ls+1); fflush(stdin); pd=getchar(); if(pd=='a'||pd=='A') { l=a+t; goto loop; } else if(pd=='b'||pd=='B') { printf(”nn输入您要插入的内容,以@结束:“); fflush(stdin); while((c=getchar())!='@') { if(c=='@') { break;} else { x[t2]=c; t2++; continue; } } for(i=ntext;i>=a;i--) { text[i+t2]=text[i]; } for(i=0;i { text[i+a]=x[i]; } ntext=ntext+t2; printf(”n当前文本信息为:n“); for(i=0;i<=ntext-1;i++) printf(”%c“,text[i]); printf(”n文本插入成功n“); fflush(stdin); getchar(); } } if(d=='r'||d=='R'){ l=0;charu(text,l);} status=0;} void tihan(char p[],int l) //内容替换 { int t=0,t1=0,i,a,b;char c,th[20],d,d1,bth[20];int i2;system(”cls“);printf(”n当前文本信息为:n“);for(i2=0;i2<=ntext-1;i2++)printf(”%c“,p[i2]);printf(”n输入要被替换的内容,以@结束:“); fflush(stdin);while((c=getchar())!='@') //t指替换前内容的长度 { if(c=='@') { break; } else { bth[t]=c; t++; continue;} } loop: a=strindex(p,bth,t,l); //查找要被替换的内容的位置 int hs=1,ls=0;for(b=0;b ls++; if(p[b]=='n') { hs++; ls=0; } } if(a==-1){ printf(”n查找到结尾没有找到要被替换的内容n输入【R】查找其他内容,按其他键返回主菜单键n“); l=0; d=getchar();fflush(stdin);} else { printf(”nn已经找到要查找的数据在第%d行第%d列n输入【A】继续向后查找相同内容n输入其他键将进行替换操作n请选择:“,hs,ls+1); fflush(stdin); l=t+a;char pd; { pd=getchar();if(pd!='a'&&pd!='A')printf(”n是否要替换该内容?nA:替换给内容;其他键返回主菜单n请选择:“);fflush(stdin);d1=getchar();if(d1=='a'||d1=='A'){ printf(”n输入要替换的内容,以@结束:“); fflush(stdin); while((c=getchar())!='@') { if(c=='@') { break; } else { th[t1]=c; t1++; continue; } } if(t==t1) 进行长度比较 { for(i=0;i p[i+a]=th[i]; } else { if(t>t1) { for(i=0;i { p[i+a]=th[i]; } for(i=a+t1;i { p[i]=p[i+t-t1]; } ntext=ntext+t1-t; } else //t1指替换后的内容长度 //将要被替换的内容和替换后的内容12 { for(i=ntext;i>=a;i--) { p[i+t1-t]=p[i]; } for(i=0;i { p[i+a]=th[i]; } ntext=ntext+t1-t; } } printf(”替换成功“); printf(”n当前文本信息为:n“); for(i2=0;i2<=ntext-1;i2++) printf(”%c“,p[i2]); getchar(); status=0; } } else goto loop;} if(d=='r'||d=='R')tihan(text,l);} void tuichu(int status){ char pd;if(status) exit(0);else printf(”还未保存文件,确定退出?(Q.直接退出;Y.保存后退出"); fflush(stdin);pd=getchar();if(!(pd=='Q'||pd=='q')) bc(text);exit(0);} int main(){ menu();return(0);} 西华大学数学与计算机学院上机实验报告 西华大学数学与计算机学院上机实验报告 课程名称: linux操作系统 指导教师:刘世林 上机实验名称:vi编辑器 上机实验编号: 年级:级 姓名:学号: 组号: 上机实验成绩:上机实验日期: 上机实验时间:12:30-13:30 提示:(教材p312)。一些实用的vi命令 yy复制当前行;3yy复制当前行开始的以下3行;4yy复制当前行开始的以下4行;….p粘贴复制的内容 dd删除当前行;3dd删除当前行开始的以下3行;4dd删除当前行开始的以下4行;…./模式查找;例,/count查找文本中的字符串”count”,/[0-9][0-9] /模式替换;例,:1,9s/abc/xyz将1-9行的字符串abc替换成xyz。若有每行只替换1个。例,:1,9s/abc/xyz/g将1-9行的字符串abc替换成xyz。每行全替换。将第7章所讲的程序均用vi编辑,在编辑中注意使用本实验所提到的命令 一、实验目的学习使用vi编辑器建立,编辑,显示及加工处理文本文件。 二、实验内容 1.2.3.4.进入和退出vi 利用文本插入方式建立一个文件 在信笺的文本文件上移动光标位置 对该文件执行删除,复原,修改,替换等操作。 三、使用环境 1.硬件环境 微型计算机一台(intel® core CPU)(内存2G) 2.软件环境 VMware Workstation、Ubuntu11 四、核心代码及调试过程 五、总结 注:给出x,dd,u,c,r,等命令的功能,和你的体会 学院名称学生姓名专业名称班 级VB课程设计报告 ——文本编辑器 : : : : 一、课程设计题目 用Visual Basic程序设计语言编写一个简易的文本编辑器 要求:有最基本的文本编辑功能,包括复制、剪切、粘贴、字体设置、背景颜色设置、字体颜色设置;同时拥有文本管理功能,包括打开文件、保存文件;以及完整的系统运行退出等功能,所有的操作可选择设定的快捷键。 二、课程设计目的 虽然本学期的Visual Basic课程是自学的,相对于课堂学习有些不足,但通过平时的上机实验,初步掌握了VB程序设计的各种方法,学会了编写最基本的VB程序;对于完整的VB程序设计来讲是很不足的,平时掌握的只是单独的窗体(Form)程序编写,以及各种简单控件的使用,没有做到很好连贯性,所以有必要做一次完整的VB程序设计,结合所学的基本知识,使用多个窗体自成一套系统,加上各种控件的综合运用,初步设计一个合格的VB应用程序;这样在巩固VB所学的同时,更好地学会程序设计的一些思想和方法,对于以后的编程学习或是工作有重要的实践意义。 三、课程设计说明 题目为文本编辑器,即是最基本的文本编辑程序,首先必须做好文本编辑器本身的功能,然后对其完善,做成一个完整的小程序 功能设计说明:功能是这个文本编辑器的核心内容,也就是程序的作用,它是用来做什么的;本程序就是用来编写文本的,编写过程中要利用到窗体(Form)一个,控件包括:RichTextBox1(超文本框)、CommonDialog(通用对话框),以及InputBox(消息框)、菜单编辑器等。要做的工作就是编写代码把这些控件和窗体等结合为一体,使得程序能够成为一体,顺畅运行。 本次设计在按照题目要求的前提下,为了完整地展示一个应用程序,在最初就设计为最基本的文本的编辑器,所以取名为“易记本”,就是简易记事本的简称,然后加入图标,在程序完成之后还进行了大包操作,得到应用程序的安装文件,最后安装在电脑上运行使用。四.源代码 Private Sub Command1_Click()Dim i As Integer If Text2.Text <> “123456” Then i = MsgBox(“密码错误”, 5 + vbExclamation, “警告”)If i <> 6 Then End Else Text2.Text = “" Text2.SetFocus End If End If Form1.Hide Form2.Show End Sub Private Sub Form_Load()Text1.Text = ”“ Text1.MaxLength = 6 Text2.Text = ”“ Text2.MaxLength = 6 Text2.PasswordChar = ”*“ End Sub Private Sub Text1_LostFocus()If Not IsNumeric(Text1.Text)Then MsgBox ”帐号必须为数字“, , ”警告“ Text1.Text = ”“ Text1.SetFocus End If End Sub Private Sub Command1_Click()Form2.Hide Form3.Show End Sub Private Sub Command2_Click()Form2.Hide Form4.Show End Sub Private Sub Command3_Click()Form2.Hide Form5.Show End Sub Private Sub Color_Click()CommonDialog1.Action = 3 Text1.ForeColor = CommonDialog1.Color End Sub Private Sub Command1_Click()Form3.Hide Form2.Show End Sub Private Sub Copy_Click()Dim st As String st = Text1.SelText End Sub Private Sub Cut_Click() Dim st As String st = Text1.SelText Text1.SelText = ”“ End Sub Private Sub Exit_Click()End End Sub Private Sub Font_Click()CommonDialog1.Flags = cdlCFBoth Or cdlCFEffects CommonDialog1.Action = 4 Text1.FontName = CommonDialog1.FileName Text1.FontSize = CommonDialog1.FontSize Text1.FontBold = CommonDialog1.FontBold Text1.FontItalic = CommonDialog1.FontItalic Text1.FontStrikethru = CommonDialog1.FontStrikethru Text1.FontUnderline = CommonDialog1.FontUnderline Text1.ForeColor = CommonDialog1.Color End Sub Sub New_Click()Text1.Text = ”“ Me.Caption = File End Sub Sub Open_Click()CommonDialog1.Action = 1 Text1.Text = ”“ Open CommonDialog1.FileName For Input As #1 Do While Not EOF(1)Line Input #1, inputdata Text1.Text = Text1.Text + inputdata + vbCrLf Loop Close #1 End Sub Private Sub Paste_Click()Text1.SelText = st End Sub Private Sub Print_Click()CommonDialog1.Action = 5 For i = 1 To CommonDialog1.Copies Printer.Print Text1.Text Next i Printer.EndDoc End Sub Private Sub SaveAs_Click()CommonDialog1.FileName = ”vb课设用.txt“ CommonDialog1.DefaultExt = ”txt" CommonDialog1.Action = 2 Open CommonDialog1.FileName For Output As #1 Print #1, Text1.Text End Sub Dim arr As Long, sum As Long, a As Integer Private Sub Command1_Click()a = HScroll1.Value Text1.Text = plus(a)Call isprime(a)End Sub Private Sub Command2_Click()End End Sub Private Sub HScroll1_Change()Label2.Caption = HScroll1.Value End Sub Sub isprime(max As Integer)Dim x As Integer, i As Integer, j As Integer For i = 2 To max x = 0 For j = 2 To ictP * 2 Show1 ctDu(I), &HFFFFFF /(ctDuS + 1)* I * 0.6 Next Dim x As Single, y As Single Static J As Single Picture1.DrawWidth = 15 x0 = Picture1.ScaleWidth * 0.5: y0 = Picture1.ScaleHeight * 0.5 Picture1.PSet(x0, y0), 255 x = 1200: y = 0: J = JJ x = S * Cos(J + ToJ): y = S * Sin(J + ToJ)End Sub Private Sub Command1_Click()End End Sub 五、运行结果 六. 心得体会 通过本次课程设计,使我对VB的认识更加深入了一层,VB主要由两部分组成,一个是Visual可视化界面设计,另一个是Basic程序设计。对于第一部分,我觉得还是比较容易的,因为它比较直观。就目前我所学的,对于第二部分还是比较困难。在做设计的过程中发现自己存在不少问题,由于word知识欠缺,我没有办法为我的课程设计创建目录,这让我觉得很遗憾,尤其是对VB编程语句的不熟悉而造成在运行过程的很多次出错。具体说文本编辑器的设计,首先是控件的使用要注意,例如不能使用平时一般的Text文本框,因为其只适用于一般的文本显示,使用RichTextBox,可拥有文本的完整功能,不用再添加滚动条等控件,而是使用其自带的滚动条;其实是菜单的设计,应注意菜单的名称书写,不能出现重复现象,否则要使用索引,不仅增加麻烦更不利于程序编写,然后编写代码的时候应注意必须与菜单中的名字一一对应,否则会出现错误;最后要注意程序的完整性以及实用性、便捷性,能够有友好的UI设计,给用户最好的体验。 MP3歌词编辑器 LRCEDIT 所谓LRC歌词是指与播放的MP3歌曲同步显示的歌词,对于音文秀VT3100还包括与外语语音同步播放的文字。LRC歌词制作实质上是把歌词或文字,与歌曲或语音建立起一种时间对应关系。为叙述方便以下无论是与歌曲同步的歌词还是与外语语音同步的文字都统称为“歌词”。 您在制作LRC歌词之前,请首先将光盘的所有文件连同目录结构复制到硬盘上,在硬盘上进入Winamp2.74子目录,然后按以下步骤操作。 1. 输入歌词: 1)运行LRC歌词编辑器LrcEditor.exe。 2)在LRC歌词编辑器中将歌词输入到文本编辑框中 2.启动MP3文件 运行MP3播放器winamp.exe。点击MP3播放器winamp左上角的“+”图标,选择“播放/文件”菜单,打开您要播放的MP3文件。文件打开后,后面的播放或停止等操作完全由LRC编辑器控制,完全可以不必再理睬MP3播放器的工作状态。 3. 加入时间标签 重新回到LRC编辑器中,点击“停止”按钮,停止由上步打开的MP3文件的播放。然后点击“播放”按钮,重新开始从头播放,边播放边对照歌词。当要播放该句歌词时,点击“加入标签”按钮。如此重复,直到所有标签加入完毕。注意:有些句在歌曲中会重复演唱,只要在该句前重复加入标签即可。如下图所示最后一句:“快乐是永远的家”一句,该句前有[04:23.61][03:49.39][02:55.82][01:29.93]四个标签,表示在04:23.61、03:49.39、02:55.82、01:29.93四个时间之后都要播放该句歌词。 4.存盘 标签加入完后,选择“文件/另存为”,将该文件保存为与MP3文件同名的、扩展名为lrc的文件。如“快乐老家.lrc”。注意LRC文件与所对应的MP3文件必须具有相同的文件名,仅扩展名不同。 5.生成tnt文件 首先安装“音文秀VT3000系列支持软件”并运行(参考产品使用说明书)。选择编辑好的lrc文件,点击支持软件中的“工具TNT文件生成”菜单,弹出TNT文件转换窗口,点击“转换”按钮,即可将选择的lrc文件转换成TNT文件。到现在为止一个带歌词的歌曲节目就制作完成了。 6. 下传节目 上面制作好的节目,可以通过“音文秀VT3000系列支持软件”下传到音文秀VT3100中。注意,需要将MP3歌曲与制作的TNT文件一并下传,之后播放该MP3歌曲时,就可以看到歌词了。 Photoshop里等高线是Photoshop软件中将像素图里同一明度的像素为之等高,归为一线。等高线编辑器是Photoshop软件中图层样式里对阴影或光泽的明度调节工具。 [PS里,滤镜和图层样式皆有等高线运用。图解,不如自个实际操作。 请有心学习者,打开PS,建立新图,填充颜色。再新添一透明层,在该一图层上画上三角形、矩形、圆形。 然后打开图层样式。在图层混合选项里,将填充不透明度降为0.【不明上下作用的,可以在实验后,适当将添加不透明度。来观察上下问题】 然后自行,对我的阐述,做适当的操作实验。] 滤镜中的等高线 将同一明度的像素点称为等高。256阶即用256条等高线将图片划分。当你选择某一阶时,代表图像只显现该阶的等亮度的像素点,其他255阶则都不显现。等高线编辑器详解 严格上说,PS曲线,x轴就是等高线数值构成的,曲线用同亮度的等高线来统计调控像素,而等高线编辑器可以用同亮度或暗度来调控。鉴于图层样式里,虚拟图层的光影中运用等高线,光影的特性,距光暗源同等级的光暗密度一致,故该等高线环源围绕。若调控操作,则是绚丽的明暗环状圈圈。 等高线编辑器是将阴影或光亮的像素点同等暗度或同等亮度划分,将所有同亮度或同暗度的像素点统一成一条等高线。 于是,一个从阴影到光亮过渡的虚拟图层图像里,可以分成n条等高线。 我们若以阴影来划分等高线,自然是从阴影最低的等高线记为0,即最亮的那段像素点的等高线数值是最低的,而阴影浓度最高的,即最暗的数值最高; 若我们用光泽来划分等高线,则,没有光泽的地方,即最暗部等高线为0,最亮部等高线数值最高。 在等高线编辑器里 x-y轴等高线输入输出图里,用百分比来划分等高线、即亮度浓度最高-亮度浓度最低 或者 暗度浓度最高-暗度浓度最低 用百分比,鉴于百分比输入值通常用整数,故可以这么说,将可以无数条计数的等高线,刻画了可以计数的一百条等高线。 等高线编辑器,将这100条等高线按等高线数值低到高分布。 x轴是图像原图像等高线分布数值,下方的输入就是对X轴的操作,Y轴是我们要将X轴的线点数值调高或调低后的值,代表输出。XY汇聚处,等高线数值为0。记住了,在等高线图里,每个等高线点代表他原来图像里相应同亮度或暗度的那些个像素点。所以,该等高线数值被调整后,对应的那些像素点的明度就发生改变。 等高线曲线里,常规默认是斜率为1的斜线。即,输入输出一致,也就是没有调整过该虚拟图像的明度。等高线编辑器里操作: 输入[X]:定位原图等高线数值。输出[Y]:原等高线改变后的数值。 边角:当瞄点可操作时,就是便黑色实心时,点击该选项,瞄点右边的线将被矫正为直的线段。 按shift键,可以同时点黑多个瞄点,同时操作多个瞄点。 按alt键,“取消”按钮将出现“复位”,则可重新操作。该键通用在PS编辑器中。 PS里运用等高线编辑器的几项 投影等高线编辑器 等高线是用暗度划分,最暗处输出为0【即最亮】 投影:图层样式里,投影是对实际图层下方添加一个以实际图层形状的阴影。当大小为0时,该投影的像素点所有亮度一致,故统一为1条同一梯度的等高线。故此时调节等高线曲线图,是对整体的一致的调节。等高线里,便只有Y轴上点高低变化有效。 当有大小时,等同边缘羽化,投影扩散,范围变大,明暗有了梯度,故此时可以分割成无数条等高线,x 0-100%代表从最亮到最暗,你调节了,就有各种亮环暗环。扩展时,该暗源辐射范围暗的浓度升高,从辐射中点开始。内阴影等高线编辑器 内阴影:是模拟物体,投射出实际图层的阴影,在图上方形成一个虚拟图层,其从图层边缘开始,最大扩散可以抵达整个实际图层。故等高线操作时,其给予等高划分的范围是整个图层形状大小。 我们的用光、暗源说法:黑暗来临,光明退却。在实际图层图形上方,占据这满满的光源。当黑暗自该图像边缘的一个角落升起,光明无奈退却。所以是黑暗步步贴近,光明以其原有的形状整体位移后退,故该图形状的光明,可以部分原型抵达到另外一个图形上,并且起到到入侵黑暗的作用。黑暗可以无止境逼近,故完全可以该图层所有的形状都便暗。 距离:就是黑暗来临的脚步。距离图形边缘的距离。【黑暗是源】 大小:就是黑暗辐射的范围:距离越远,受到的影响越小。【辐射是源散播的黑暗元素】 堵塞:就是,辐射出去时,暗元素参与辐射的密集程度。堵塞百分比越大,等同于辐射范围内,暗元素越多,越暗。 方式:以阴影划分等高线,最亮的区域对应的等高线值为0。 外发光等高线编辑器 外发光是给实际图层里图像外围形状边缘下方添加一个虚拟的与该形状相同的一圈闭合光源。该当大小增大时,代表处于该图像边缘的光明开始背对图像,往图层外辐射延伸。因像素只分布在外围。 故,外发光等高线操控范围是外发光的那个圈。扩展:光元素的密集程度。 应用光泽划分等高线,最暗的区域等高线值为0。内发光等高线编辑器 内发光是实际图层里图像外围形状边缘上方添加一虚拟的与该边缘形状相同的一圈闭合光源。大小为0时,暗源占据该领土,当大小增大时,代表该处图像边缘的光明源360度开始向图像里面辐射延伸,驱散黑暗。堵塞:光元素密集程度。越堵塞,越亮。操作范围:该层所有图像。 方式:光泽划分等高线,最暗的区域等高线值为0。 浮雕与斜面的光泽等高线编辑器 内斜面:在图层上方添加一个以图层外围形状相同的一条状虚拟素光、暗源,一半主光,一半主暗。该当大小增大时,代表处于该图像边缘的光明、黑暗开始往图层里辐射延伸,所以,距离边缘越远的,光暗辐照量越少。 外斜面:在图层外围形状边缘下方添加一条状虚拟的光、暗源,一半主光,一半主暗。当该大小增大时,便背离图层,往图层外延伸。 枕形浮雕:给实际图层外围形状边缘添加一对连体的条状虚拟的光、暗环。环半光,一半暗。同侧上下搭配的正是一光、一暗。当大小增大时,图层上环状的光明、黑暗内辐射,图层下的光明、黑暗外辐射。呈现的图像等同:内斜面+外斜面。 深度:代表光、暗元素的浓度,深度升高,将会让光、暗浓度升高。 我们的曲线,在这里,运用光泽等高线:即光来划分等高线。那黑暗的区域等高线的数值最低。 操控范围:被光明、黑暗辐射过的区域。方式:光泽划分,最暗的区域等高线值为0。光泽等高线编辑器 通常系统默认一种等高线曲线图为一曲线,让图像直接成就光泽。但我们可以自定,来构造各种奇妙的光泽。 光泽:在实际图层形状边缘上方一条状光源。当移动距离时,该条状光源以其角度的垂直方向分割,于其水平方向向对方移动。移动的最大范围为该图像该角度的宽度。该光泽图形。开始是黑暗占据整个图形。光明来临,黑暗退却。只是该光明自相对的两边入侵。故,黑暗无奈无路可逃,只好被压消退。阳极阴生,当两大光明交汇处,黑暗重现。 大小:光源的辐射范围。该光源两边辐射。若图层里没有实际像素的区域,辐射不显现。鉴于某光源可以移动到该形状外围,鉴于,该光源在图层上方起作用,故,若实际图层上有多个图形,则统一实际图层里,不同形状的图形光源可以相互影响,只要他们在一方角度宽度两倍范围内。操控范围:整个实际层图形。 方式:光泽划分,最暗的区域等高线值为0.第二篇:实验2-vi编辑器
第三篇:VB课程设计-文本编辑器
第四篇:MP3歌词编辑器 LRCEDIT[范文模版]
第五篇:解说ps等高线编辑器