《2022年文编辑管理系统课程方案实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年文编辑管理系统课程方案实验报告 .pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、个人资料整理仅限学习使用程序设计基础及数据结构课程设计设计题目: 文章编辑管理系统系院) :经济管理学院专业:信息管理与信息系统班级:信管 1111学年学期 : 2018 2018 学年 第 1 学期 2018 年1 月 11 日精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 14 页个人资料整理仅限学习使用课程设计任务书课程设计题目英文编辑管理课程设计目的1)培养学生正确的设计思想,将理论与实际相结合,严肃认真、实事求是的科学态度和勇于探索的创新精神。2)培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力。3)通过课
2、程设计实践,建立系统设计的整体思想,锻炼编写程序、调试程序的能力,学习文档编写规范,培养独立学习、吸取他人经验、探索前言知识的习惯。同时,C+语言程序设计课程设计可以充分弥补课堂教案及普通实验中知识深度与广度有限的缺陷,更好地帮助学生从全局角度把握课程体系。课程设计环境硬件: P4以上计算机软件: Visual C+/Turbo C Microsoft Windows XP课程设计任务和要求任务:用 C语言对学生成绩进行编程;要求: 1 、要充分认识C+ 语言程序设计课程设计的重要性,认真做好各项准备工作;既要虚心接受老师的指导,又要充分发挥主观能动性,要结合课题,独立思考,努力钻研,勤于实践
3、,勇于创新;收集资料,自学相关知识,拓宽知识面,根据课题的基本要求,自行完成设计任务。要按时、独立完成规定的工作任务,不弄虚作假,不抄袭他人;严格遵守学习和劳动纪律,不无故缺席,不迟到早退,不懈怠,不拖拉,要积极主动;严格要求自己,树立严肃、严密、严谨的科学态度,按时、按质、按量完成。工作进度计划序号起止日期工 作 内 容01 2018.12.312018.01.01 查找资料,熟悉操作环境,开始编写程序02 2018.01.022018.01.03 编写程序,调试程序03 2018.01.042018.01.05 写实验报告指导老师签字 Windows操作系统, visualc+ 6.0编译
4、环境3 概要设计3.1 各模块的算法设计说明本程序由输入、输出、统计、查找、删除、选择功能模块组成,以下为重要模块的流程图:统计某一字符串在文章中出现的次数删除某一字符串并输出文章结束统计文章字数输出原文操作界面文章编辑系统精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 14 页个人资料整理仅限学习使用1.输入模块 2. 统计模块3.2 存储结构设计说明线性表是我们最常用的一种简单而基本的数据结构,线性表中数据元素间的关系是一对一的,就是说除了头尾数据元素外,其他元素都是首尾相接的。其逻辑结构简单,便于实现和操作,因此是一种在实际应用中
5、广泛采用的数据结构。4 详细设计为实现本程序功能所包含的库函数有:#include #include 为实现本程序功能所包含的功能模块及注释有:输出模块:代码:#include #include #include #include typedef struct line 开始等待输入回车?将字符输入数组结束开始输出判断字符类型若为回车若为空格若为数字若为字母记录行数记录空格个数记录数字个数记录字母个数判断字符数量是否超出范围结束精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 14 页个人资料整理仅限学习使用char *data。 /字符
6、串指针需要时动态分配内存struct line *next。 LINE。void CreateTXT(LINE * &head 。 /创建一张链表,同时向里面输入文本数据int Count_Space(LINE * &head。 /统计空格数int Count_ZM(LINE * &head 。 / 统计字母数int Count_All_Word(LINE * &head 。 /统计文章的总字数int Find_Word(LINE * &head,char *sch 。 /统计 sch 在文章中出现的次数int Count_Num(LINE * &head 。 /统计数字数void Del_S
7、tring(LINE * &head,char *sch 。 /删除指定的字符串void OutPutTxt(LINE * &head 。 /向屏幕输出文章void Tj(LINE * &head 。 /统计int read_text(LINE * &head。int free_link(LINE *&head 。int free_link(LINE *&head LINE *p=head。do p-data=NULL。free(p-data。 while(p=p-next!=NULL 。head-next=NULL。return 0。 void setcolor(unsigned short
8、 color HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE 。SetConsoleTextAttribute(hCon,color 。 void CreateTXT(LINE * &head head=new LINE。LINE *end=head。 LINE *p 。 /首先为链表 建立一个附加表头结点 / head=p 。 /将 p付给 表头指针 char tmp80。 while(true gets(tmp 。 /输入字符串 !使用 C的输入函数 if(tmp0=5 break 。 /如果发现输入 E,则退出输入 p=new LINE。 p-d
9、ata=new charstrlen(tmp+1。/为结点分配空间 strcpy(p-data,tmp。 end-next=p。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 14 页个人资料整理仅限学习使用 end=p。 if(tmpstrlen(tmp-1=5 /除去最后一个控制符 E p-datastrlen(tmp-1=0。 break 。 p-next=NULL 。 /是最后的一个指针为空。 head=head-next 。 int Count_Space(LINE * &head /统计空格数 LINE *p=head。 i
10、nt asc_space=32 。 /空格的 ASCIC 码值 int count=0。 do int Len=strlen(p-data 。 /计算当前 data 里的数据元素的个数 for(int i=0。i if(p-datai=asc_space count+。 /计算空格数 while(p=p-next!=NULL 。 /遍历链表 return count 。 int Count_Num(LINE * &head /统计数字数 LINE *p=head。 int count=0。 do int Len=strlen(p-data 。 /计算当前 data 里的数据元素的个数 for(
11、int i=0。i if(p-datai=48 & p-datai count+。 /计算数字数 while(p=p-next!=NULL 。 /遍历链表 return count 。 int Count_ZM(LINE * &head / 统计字母数 int count=Count_All_Word(head。 /总的字符数,包含空格 int space_count=Count_Space(head。 /空格数int num_count=Count_Num(head 。/数字数 return count-space_count-num_count 。 /返回文章的字母总数 int Count
12、_All_Word(LINE * &head /统计文章的总字数精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 14 页个人资料整理仅限学习使用 LINE *p=head。 /保存链表的首地址 int count=0。 /总字母数 do count+=strlen(p-data 。 /计算当前行内的字符数 while(p=p-next!=NULL 。 /遍历链表 return count 。 int Find_Word(LINE * &head,char *sch /统计 sch 在文章中出现的次数 LINE *p=head。 int
13、count=0。 / int h=0。 int len1=0。 /保存当前行的总字符数 int len2=strlen(sch 。 /待统计字符串的长度 int i,j,k。 do len1=strlen(p-data 。/当前行的字符数 for(i=0。i if(p-datai=sch0 k=0。 for(j=0。j if(p-datai+j=schj k=k+1。 if(k=len2 count+。i=i+k-1 。 while(p=p-next!=NULL 。 /遍历链表 return count 。 void del_string_word(char *s,char *sch / *s
14、 为输入的字符串 / *sch 为将要删除的字符 char *p=strstr(s,sch 。 /查询结果 char tmp80。 int len=strlen(s。 int i=len-strlen(p。 int j=i+strlen(sch。 int count=0。 for(int k=0。k 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 14 页个人资料整理仅限学习使用tmpcount+=sk 。 for(int kk=j 。kk tmpcount+=skk 。 tmpcount=0。 strcpy(s,tmp。 /返回新的字
15、符串 void Del_String(LINE * &head,char *sch /删除指定的字符串 LINE *p=head。 do while(strstr(p-data,sch!=NULL del_string_word(p-data,sch 。 while(p=p-next!=NULL 。 /遍历链表 void OutPutTxt(LINE * &head /向屏幕输出文章 line *p=head。 while(p!=NULL coutdatanext。 /遍历 链表 void Display(LINE * &p,int i int j,k=0。coutdataendl 。char
16、 ch10。coutch。 for(j=i。j。j+ p-dataj=chk+。 void Display(LINE * &head,char *sch LINE *p=head。 int count=0。 / int h=0。 int len1=0。 /保存当前行的总字符数 int len2=strlen(sch 。 /待统计字符串的长度 int i,j,k。 do len1=strlen(p-data 。/当前行的字符数精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 14 页个人资料整理仅限学习使用 for(i=0。i if(p-
17、datai=sch0 k=0。 for(j=0。j if(p-datai+j=schj k=k+1。 if(k=len2 count+。 break 。 if(i cout 所在文章 。 while(p=p-next!=NULL 。 /遍历链表 if(cout=0 cout没有找到您所要查找的内容 /向屏幕输出文章 line *p=head。coutdata LINE *p=head。 int count=0。 / int h=0。 int len1=0。 /保存当前行的总字符数 int len2=strlen(sch 。 /待统计字符串的长度 int i,j,k。 do len1=strle
18、n(p-data 。/当前行的字符数 for(i=0。i if(p-datai=sch0 k=0。 for(j=0。j if(p-datai+j=schj 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 14 页个人资料整理仅限学习使用k=k+1。 if(k=len2 count+。 break 。 if(i cout 所在文章 。 while(p=p-next!=NULL 。 /遍历链表 if(cout=0 cout没有找到您所要查找的内容 /统计 cout文章统计信息结果如下:endl。 cout英文字母数: endl。 cout
19、空格数 : endl 。 cout文章中共出现数字: endl。 cout统计文章的总字符 : setcolor(10 。LINE *head。int opt。 while(true coutn *请选择操作*endl。cout1、新建。/存储模式:链表没遇到回车就存放一个 一句话存放一个链表空间)cout2、浏览 。/链表的遍历cout3、统计 。/用三个函数三次遍历确定字母、数字、空格以及总共字符的数量cout4、串统计 。/通过遍历来确定所输入的字符串与文章一一比较cout5、删除 。 cout6、查找 。 cout7、修改 。cout8、退出 opt。/ switch (opt cas
20、e 0: 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 14 页个人资料整理仅限学习使用 coutn *请选择操作*endl。cout1、新建。/存储模式:链表没遇到回车就存放一个 一句话存放一个链表空间)cout2、浏览 。/链表的遍历cout3、统计 。/用四个函数三次遍历确定字母、数字、空格以及总共字符的数量cout4、串统计 。/通过遍历来确定所输入的字符串与文章一一比较cout5、删除 。 cout6、查找 。 cout7、修改 。cout8、退出 opt。if (opt!=1&opt!=2&opt!=3&opt!=4&o
21、pt!=5&opt!=6 couterror!不可识别选项 !。 break。 case 1: cout- 新建文本 -endl 。cout。CreateTXT(head。setcolor(10。coutendl-endl。cout按回车调出主菜单 。opt=0。break。 case 2: cout- 浏览输入文本 -。OutPutTxt(head。setcolor(10。coutendl-endl。cout按回车调出主菜单 。opt=0。break。 case 3: 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 14 页个人资料整理仅限学习使用cout- 文本统计 -。Tj(head。setcolor(10。coutendl-endl。cout按回车调出主菜单 。opt=0。break。 case 4: cout-请输入要统计的字符串 - 。 char sch20 。 gets(sch 。 coutendl。 coutsch出现的次数为 :。cout-endl。 cout按回车调出主菜单 endl。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 14 页
限制150内