当前位置:文档之家› 课程设计报告撰写格式

课程设计报告撰写格式

(此文档为word格式,下载后您可任意编辑修改!)学院:计算机工程学院专业:计算机科学与技术班级:12计1ZS学号:姓名:缪一帆指导老师姓名:蔡秋茹2015 年 03 月《课程设计》报告要求一、打渔晒网1.问题陈述中国有句俗语叫“三天打鱼两天晒网”。

某人从2000年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是在“打渔”,还是在“晒网”?2.程序代码#include<stdio.(int a){if(a%4==0&&a%100!=0)return 1;if(a%400==0)return 1;return 0;}int sumday(int year,int month,int day){int sum_day=0,a=0;if(month>2)if(fun(year))a=1;if(month>=2) sum_day+=31;if(month>=3) sum_day+=28;if(month>=4) sum_day+=31;if(month>=5) sum_day+=30;if(month>=6) sum_day+=31;if(month>=7) sum_day+=30;if(month>=8) sum_day+=31;if(month>=9) sum_day+=31;if(month>=10) sum_day+=30;if(month>=11) sum_day+=31;if(month>=12) sum_day+=30;sum_day=sum_day+a+day;return sum_day;}int sumyear(int year){int sum_year=0,i;for(i=2000;i<year;i++){sum_year+=(365+fun(i));}return sum_year;}int main(){int year,month,day,sum,t;while(scanf("%d-%d-%d",&year,&month,&day)!=EOF) {sum=sumday(year,month,day)+sumyear(year);t=sum%5;if(t==1||t==2||t==3)printf("He is fishing.\n");if(t==0||t==4)printf("He is drying nets.\n");}return 0;}3.运行结果4.设计体会与总结二、文本文件单词的检索与计数1.问题陈述要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。

2.需求分析该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。

(1)建立文本文件(2)给定单词的计数(3)检索单词出现在文本文件中的行号、次数及其位置(4)主控菜单程序的结构①头文件包含②菜单选项包含:建立文件、单词定位、单词计数、退出程序③选择1-4执行相应的操作,其他字符为非法。

3.概要设计3.1建立文本文件建立文本文件的实现思路(1)定义一个串变量(2)定义文本文件(3)输入文件名,打开该文件(4)循环读入文本行,写入文本文件,其过程如下:While(不是文件输入结束){读入一文本行至串变量;串变量写入文件;输入是否结束输入标志;}(5)关闭文件3.2给定单词的计数该功能需要用到前一节中设计的模式匹配算法,逐行扫描文本文件。

匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。

3.3 检索单词出现在文本文件中的行号、次数及其位置3.4 主控菜单程序的结构(1)头文件包含(2)菜单选择包括:1、建立文件2、单词计数3、单词定位4、退出程序(3)选择1~4执行相应的操作,其他字符为非法4.详细设计4.1给定位置的串匹配算法该算法要求从串S1(为顺序存储结构)中第k个字符起,求出首次与字符串S2相同的子串的起始位置。

该算法与上面介绍的模式匹配算法类似,只不过上述算法的要求是从主串的第一个字符开始,该算法是上述算法的另一种思路:从第k个元素开始扫描S1,当其元素值与S2的第一个元素的值相同时,判定它们之后的元素值是否依次相同,直到S2结束为止。

若都相同,则返回当前位置值;否则继续上述过程,直至S1扫描完为止,其实现算法如下:int PartPosition (SString s1,SString s2,int k){int i,j;i=k-1;j=0;while(i<s1.length && j<s2.length){if(s1.ch[i]==s2.ch[j]){i++;j++;}else{i=i-j+1;j=0;}}if (j>=s2.length)return i-s2.length;elsereturn -1;}4.2检索单词出现在文本文件中的行号、次数及其位置这个设计要求与上一个类似,但要相对复杂一些。

其实现过程描述如下:(1)输入要检索的文本文件名,打开相应的文件;(2)输入要检索统计的单词;(3)行计数器置初值0;(4)while (不是文件结束){读入一行到指定串中;求出串长度;行单词计数器置0;调用模式匹配函数匹配单词定位、该行匹配单词计数;行号计数器加1;If (行单词计数器!=0)输出行号、该行有匹配单词的个数以及相应的位置;}5.程序代码#include<stdio. (SString s1,SString s2,int k){int i,j;i=k-1;j=0;while(i<s1.length && j<s2.length){if(s1.ch[i]==s2.ch[j]){i++;j++;}else{i=i-j+1;j=0;}}if (j>=s2.length)return i-s2.length;elsereturn -1;} 函数结束void CreatTextFile(){SString S;char fname[10],yn;FILE *fp;printf("输入要建立的文件名:");scanf("%s",fname);fp=fopen(fname,"w");yn='n';输入结束标志初值while(yn=='n'||yn=='N'){printf("请输入一行文本:");gets(S.ch);gets(S.ch);S.length=strlen(S.ch);fwrite(&S,S.length,1,fp);fprintf(fp,"%c",10);是输入换行printf("结束输入吗?y or n :");yn=getchar();}fclose(fp);关闭文件printf("建立文件结束!");}void SubStrCount(){FILE *fp;SString S,T;定义两个串变量char fname[10];int i=0,j,k;printf("输入文本文件名:");scanf("%s",fname);fp=fopen(fname,"r");printf("输入要统计计数的单词:");cin>>T.ch;T.length=strlen(T.ch);while(!feof(fp)){ 扫描整个文本文件memset(S.ch,'\0',256);fgets(S.ch,100,fp);S.length=strlen(S.ch);k=0; 初始化开始检索位置while(k<S.length-1) 检索整个主串S{j=PartPosition(S,T,k);调用串匹配函数if(j<0 ) break;else{i++;单词计数器加1k=j+T.length;继续下一字串的检索}}}printf("\n单词%s在文本文件%s中共出现%d次\n",T.ch,fname,i);}统计单词出现的个数void SubStrind(){FILE *fp;SString S,T; 定义两个串变量char fname[10];int i,j,k,l,m;int wz[20]; 存放一行中字串匹配的多个位置printf("输入文本文件名:");scanf("%s",fname);fp=fopen(fname,"r");printf("输入要检索的单词:");scanf("%s",T.ch);T.length=strlen(T.ch);l=0; 行计数器置0while(!feof(fp)){扫描整个文本文件fread(&S,sizeof(S),1,fp); 读入一行文本memset(S.ch,'\0',256);fgets(S.ch,256,fp);S.length=strlen(S.ch);l++; 行计数器自增1k=0;初始化开始检索位置i=0; 初始化单词计数器while(k<S.length-1) 检索整个主串S{j=PartPosition(S,T,k); 调用串匹配函数if(j<0) break;else {i++;单词计数器加1wz[i]=j;记录匹配单词位置k=j+T.length;继续下一字串检索}}if(i>0){printf("行号:%d,次数:%d,位置分别为:",l,i);for(m=1;m<=i;m++)printf("%4d",wz[m]+1); printf("\n");}}}检索单词出现在文本文件中的行号、次数及其位置int main(){void CreatTextFile(),SubStrCount(),SubStrInd();int xz;do {printf("* * * * * * * * * * * * * * * * * * * * * * ** *\n");printf("*文本文件的检索、字串的统计及定位 *\n");printf("* * * * * * * * * * * * * * * * * * * * * ** * *\n");printf("* 1. 建立文本文件 *\n");printf("* 2. 单词字串的计数 *\n");printf("* 3. 单词字串的定位 *\n");printf("* 4. 退出整个程序 *\n");printf("* * * * * * * * * * * * * * * * * * * * * ** * \n");printf(" 请选择(1--4) ");scanf("%d",&xz);switch(xz){case 1 : CreatTextFile();break;case 2 : SubStrCount();break;case 3 : SubStrind();break;case 4 : return 0;default: printf("选择错误,重新选 \n");}}while(1);}6.运行结果与测试1)建立文本文件2)单词字串it的计数3)单词字串meet的定位7.设计体会与总结三、飞机订票系统1.问题陈述假定航空公司共有n个航班,每个航班有一航班号、确定的航线(起始站、终点站)、确定的飞行时间和一定的成员订额。

相关主题