太原理工大学软件课程设计.docx

上传人:b****7 文档编号:15939498 上传时间:2023-07-09 格式:DOCX 页数:23 大小:251.23KB
下载 相关 举报
太原理工大学软件课程设计.docx_第1页
第1页 / 共23页
太原理工大学软件课程设计.docx_第2页
第2页 / 共23页
太原理工大学软件课程设计.docx_第3页
第3页 / 共23页
太原理工大学软件课程设计.docx_第4页
第4页 / 共23页
太原理工大学软件课程设计.docx_第5页
第5页 / 共23页
太原理工大学软件课程设计.docx_第6页
第6页 / 共23页
太原理工大学软件课程设计.docx_第7页
第7页 / 共23页
太原理工大学软件课程设计.docx_第8页
第8页 / 共23页
太原理工大学软件课程设计.docx_第9页
第9页 / 共23页
太原理工大学软件课程设计.docx_第10页
第10页 / 共23页
太原理工大学软件课程设计.docx_第11页
第11页 / 共23页
太原理工大学软件课程设计.docx_第12页
第12页 / 共23页
太原理工大学软件课程设计.docx_第13页
第13页 / 共23页
太原理工大学软件课程设计.docx_第14页
第14页 / 共23页
太原理工大学软件课程设计.docx_第15页
第15页 / 共23页
太原理工大学软件课程设计.docx_第16页
第16页 / 共23页
太原理工大学软件课程设计.docx_第17页
第17页 / 共23页
太原理工大学软件课程设计.docx_第18页
第18页 / 共23页
太原理工大学软件课程设计.docx_第19页
第19页 / 共23页
太原理工大学软件课程设计.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

太原理工大学软件课程设计.docx

《太原理工大学软件课程设计.docx》由会员分享,可在线阅读,更多相关《太原理工大学软件课程设计.docx(23页珍藏版)》请在冰点文库上搜索。

太原理工大学软件课程设计.docx

太原理工大学软件课程设计

 

课程设计

课程名称:

程序设计课程设计

设计名称:

相邻数对、识别码

文本文件单词统计、构造可以使

n个城市连接的最小生成树

专业班级:

软件1502班学号:

2015005509

 

学生姓名:

冯旭超

 

指导教师:

吕进来

 

2017年06月23日

太原理工大学课程设计任务书

学生姓名

专业班级

软件

课程名称

程序设计课程设计()

设计名称

相邻数对识别码,文本文件单词统计等

设计周数

2

设计

任务

主要

设计

参数

1.基本要求

掌握C或语言、结构化程序和面向对象程序设计方法、数据结构和离散数学理论知识,熟悉C或程序的开发环境与调试过程,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。

2.培养学生以下技能

①培养学生查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。

②通过对所选题目分析,找出解决方法,设计算法,编制程序与调试程序。

③能熟练调试程序,在教师的指导下,完成课题任务。

④按课程设计报告的要求撰写设计报告。

设计内容

设计要求

1.设计内容

①相邻数对;②识别码;③文本文件单词统计;④构造可以使n个城市连接的最小生成树;⑤送货;⑥学生信息管理系统

2.设计要求

①至少完成上述设计内容中的4个设计题目;②对每个题目要给出设计方案、功能模块划分、算法思想;③选择使用的数据结构;④给出题目的程序实现;⑤按要求撰写设计报告。

主要参考

资料

1.《程序设计课程设计》指导书;

2.《程序设计技术》、《数据结构》等课程教材;

3.其他自选的相关资料。

学生提交

归档文件

课程设计报告封面应给出专业、班级、姓名、学号、指导教师和完成日期。

每个设计题目的内容包括以下几项:

设计题目、问题描述、问题分析、功能实现、测试实例与运行结果、源程序清单。

注:

1.课程设计完成后,学生提交的归档文件应按照:

封面—任务书—说明书—图纸的顺序进行装订上交(大张图纸不必装订)。

2.可根据实际内容需要续表,但应保持原格式不变。

指导教师签名:

日期:

2017.6.3

1.相邻数对1

2.识别码3

3.文本文件单词统计……………………………………………………………….5

4.构造可以使n个城市连接的最小生成树………………………………………11

题目一相邻数对

1.1【问题描述】

给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。

输入格式

输入的第一行包含一个整数n,表示给定整数的个数。

第二行包含所给定的n个整数。

输出格式

输出一个整数,表示值正好相差1的数对的个数。

1.2【设计与分析】

输入输出

6

1026378

3

测试数据输出说明

值正好相差1的数对包括(2,3),(6,7),(7,8)。

所以输出:

3

数据约定

1<<=1000,给定的整数为不超过10000的非负整数。

1.3【设计功能的实现】

""

<>

;

()

{

n;m=0;

<<"请输入数字个数:

";

>>n;

A[1000];

<<"分别为:

\n";

(i=0;i

>>A[i];

}

(i=0;i

(j=i+1;j

(((A[i]-A[j])1)((A[j]-A[i])1))

{

;

}

}

}

<<"相邻数对个数为:

"<

0;

}

1.4【测试与运行结果】

1.5【总结】

这个实验主要使用两个循环即可完成实验。

题目二识别码

2.1【问题描述】

每一本正式出版的图书都有一个号码与之对应,码包括9位数字、1位识别码和3

位分隔符,其规定格式如“”,其中符号“-”是分隔符(键盘上的减号),最后一位是

识别码,例如0-670-82162-4就是一个标准的码。

码的首位数字表示书籍的出版语言,

例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二

个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。

识别码的计算方法如下:

首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果11,所得的余数即为

识别码,如果余数为10,则识别码为大写字母X。

例如号码0-670-82162-4中的识别码4是

这样得到的:

对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即

0×1+6×2+……+2×9=158,然后取15811的结果4作为识别码。

编写程序判断输入的号码中识别码是否正确,如果正确,则仅输出“”;如果错误,

则输出是正确的号码。

输入格式

输入只有一行,是一个字符序列,表示一本书的号码(保证输入符合号码的格式

要求)。

输出格式

输出一行,假如输入的号码的识别码正确,那么输出“”,否则,按照规定的格

式,输出正确的号码(包括分隔符“-”)。

2.2【设计与分析】

输入1输出1

0-670-82162-4

输入2输出2

0-670-82162-00-670-82162-4

2.3【设计功能的实现】

""

<>

;

a[13];

(){

i=1,=0;x;

<<"请输入标准码():

";

(i=1;i<=13;)

{

>>a[i];

}

=a[1]*1+a[3]*2+a[4]*3+a[5]*4+a[7]*5+a[8]*6+a[9]*7+a[10]*8+a[11]*9;

=-45*'0';

x=%11;

(x10a[13]'X')

{<<""<<;

0;

}

(xa[13]-'0'){

<<""<<;

0;

}

(i=1;i<=12;){<

(x10){

<<"X"<<;

0;

}

<

0;

}

2.4【测试与运行结果】

2.5【总结】

这个的关键点在于字符必须减去‘0’才可以进行运算。

题目三文本文件单词统计

3.1【问题描述】

假设有如下的英文文本文档:

(此处为太原理工大学学校简介英文版)

()

(1902),.

100,a,

.a“211”

100.

……

a

;,30,000

.,,

,

.a

.

设计C或程序,统计在这样的英文文本文件中,出现了多少个单词,每个单词出现了几

次。

连续的英文字符都认为单词(不包括数字),单词之间用空格或标点符号分隔。

3.2【设计与分析】

要统计英文文本文件中出现了哪些单词,就要从文件中读取字符,读取出来的连续英文字符

认为是一个单词,遇空格或标点符号单词结束。

使用线性表记录单词以与每个单词出现的次数。

线性表中的单词按字典顺序存储。

线性表的顺序存储结构如下:

100线性表存储空间的初始分配量

10线性表存储空间的分配增量

{

[21]存储单词,不超过20个字符

;单词出现的次数

};

{

*;存储空间基址

;当前长度

;当前分配的存储容量

-4-

};

3.3【设计功能的实现】

3.3.1实现顺序表的基本操作

⑴顺序表的初始化:

()

⑵顺序表上查找指定的单词:

(*s)

若找到,单词的出现次数增1,返回0,否则返回该单词的插入位置。

⑶在顺序表上插入新的单词:

(i,*s)

要求按字典顺序有序。

新单词的出现次数为1.

⑷输出顺序表上存储的单词统计信息:

()

输出文件中每个单词出现的次数以与文件中总的单词数(可输出到文件中)。

3.3.2统计单词数

统计过程如下:

(1)输入要统计单词的文本文件名,打开相应的文件;

(2)初始化顺序表;

(3)从文本文件中读取字符,直到文件结束。

具体描述如下:

(读文件没有结束结束)

{

过滤单词前的非字母字符;

读取一个单词,以字符串形式存储在一个字符数组中;

在线性表中查找该单词,若找到,单词的出现次数加1,否则返回其插入位置;

上一步中,若没找到,则进行插入操作;

处理下一个单词。

}

(4)关闭文件,输出统计结果。

""

<>

<>

<>

100线性表存储空间的初始分配量

10线性表存储空间的分配增量

{

[21];存储单词,不超过20个字符

;单词出现的次数

};

{

*;存储空间基址

;当前长度

;当前分配的存储容量-4-

};

(*p){>=(*)(*());

(>)0;

>=0;

>=;1;

}

(*p,*)

{

,;

=0;=>-1;

(<=)

{

=(+)/2;

((,>[])0)表中进行二分查找

{

>[];

0;

}

((,>[])<0)

=-1;

=+1;

}

+1;

}

(**)

{

j;

*;

(>>=>)

{

=(*)(>,(>+)*());

()0;>=>+扩充表长

>=;

}

(j=>;j>=i;)>[j]=>[j-1];

(>[i-1],);

>[i-1]=1;

>;

1;

}

(*p,)

{

*;

i;

=;

=("D:

\\单词计数","w");

(,"该文章共有个单词\n以下字母顺序来显示每个单词出现的个数\n*******************************\n",);

(,"单词出现次数\n",);

(i=0;i<>;)

(,"24s5d\n",>[i],>[i]);

(,"*******************************\n");

();

}主函数

()

{

L;

[21],,[30],1[50];=0,i,j=0,=0;

*;

();

("请将要检索的文本文件放入D盘根目录,然后输入文件名(不用写后缀):

");

("",);

(1,"D:

\\",);();

((=(1,"r")))

{

("打开文件失败,请输入文件名与文件路径\n");

();

(0);

}

=();

()

{

((>='A'<='Z')(>='a'<='z'))

{

=>='A'<='Z'?

+32:

;

[]=;

=1;

}

{

(1)

{

(j>20)

{

("文章中部分单词太长不予统计");

};

[j]='\0';

=0;

j=0;

i=(,);

(i>0)

(,i,);

}

}

=();

}

();

("统计结束¥¥请查看打开的单词统计里面便是检索结果。

\n");

(,);

("\"\"D:

\\单词计数");

();

}

3.4【测试与运行结果】

3.5【总结】

这个实验要熟悉线性表的各个操作,才能做出来完整的程序。

题目四构造可以使n个城市连接的最小生成树

4.1【问题描述】

给定一个地区的n个城市间的距离网,用算法或算法建立最小生成树,并计算

得到的最小生成树的代价。

4.2【设计与分析】

1、城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义,

若两个城市之间不存在道路,则将相应边的权值设为自己定义的无穷大值。

2、要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成

树的代价。

3、表示城市间距离网的邻接矩阵(要求至少6个城市,10条边)。

4.3【设计功能的实现】

""

<>

<>

<>

;

30/*最大顶点数为30*/

/*1000定义一个权值的最大值*/

{

[];/*顶点表*/

[][];/*邻接矩阵,即边表*/

n;/*顶点数和边数*/

};/*是以邻接矩阵存储的图类型*/

{

;/*某顶点与已构造好的部分生成树的顶点之间权值最小的顶点*/

;/*某顶点与已构造好的部分生成树的顶点之间的最小权值*/

}[];/*用算法求最小生成树时的辅助数组*/

(*G)/*建立有向图G的邻接矩阵存储*/

{

i,j;

("请输入顶点数n:

");

("",&(>n))*输入顶点数和边数*/

("\n请输顶点字符信息(共个):

",>n);

(i=0;i<>n;)

{

("",&(>[i]));/*输入顶点信息,建立顶点表*/

}

("\n请输入邻接矩阵,不存在则输入1000\n");

(i=0;i<>n;)

{

(j=0;j<>n;)

{

>>>[i][j];

}

}

("此连邻接矩阵为(1000为不存在):

\n");

(i=0;i<>n;)

{

(j=0;j<>n;)

("%8d",>[i][j]);

("\n");

}

}

(G,u,)

{/*从第u个顶点出发构造图G的最小生成树,最小生成树顶点信息存放在数组中*/

i,j,w,k,=0;

(i=0;i<;)/*辅助数组初始化*/

(iu)

{

[i]=u;

[i]=[u][i];

}

[u]=0;/*初始,{u}*/

(i=0;i<-1;)/*选择其余的1个顶点*/

{

w=1000;

(j=0;j<;)/*在辅助数组中选择权值最小的顶点*/

([j]0[j]

{

w=[j];

k=j;

}/*求出生成树的下一个顶点k*/

[k]=0;/*第k顶点并入U集*/

(j=0;j<;)/*新顶点并入U后,修改辅助数组*/

([k][j]<[j])

{

[j]=k;

[j]=[k][j];

}

}

("\n最小生成树中包括的城市间的道路:

\n");

(i=0;i<;)/*打印最小生成树的各条边*/

(iu)

{

(">\n",i,[i],[i][[i]]);

=+[i][[i]];

}

("\n最小生成树的代价为\n\n",);

}

()

{

t;

G;

;

();

("请输入起始点:

");

("",);

(G,t,);

1;

}

4.4【测试与运行结果】

4.5【总结】

这个实验必须把普利姆算法搞懂,将思路理清晰,才能让程序完整的被写出来。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2