2017太原理工大学软件课程设计_第1页
2017太原理工大学软件课程设计_第2页
2017太原理工大学软件课程设计_第3页
2017太原理工大学软件课程设计_第4页
2017太原理工大学软件课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计课程名称:程序设计课程设计设计名称:相邻数对、ISBN识别码文本文件单词统计、构造可以使n 个城市连接的最小生成树专业班级:软件 1502班 学号:2021005509学生姓名:冯旭超指导教师:吕进来2021年06月23日太原理工大学课程设计任务书学生姓名专业班级软件课程名称程序设计课程设计(Programming Curriculum Design)设计名称相邻数对,ISBN识别码,文本文件单词统计等设计周数2设计任务主要设计参数1. 根本要求掌握C或C+语言、结构化程序和面向对象程序设计方法、 数据结构和离 散数学理论知识, 熟悉C或C+程序的开发环境及调试过程, 稳固和加深对理

2、论课中知识的理解,提升学生对所学知识的综合运用水平.2. 培养学生以下技能 咛学生查阅参考资料、手册的自学水平,通过独立思考深入钻研问题, 学会自己分析、解决问题. 通过对所选题目分析, 找出解决方法,设计算法,编制程序与调试程序. 能熟练调试程序,在教师的指导下,完成课题任务. 按课程设计报告的要求撰写设计报告.设计内容设计要求1. 设计内容相邻数对;ISBN识别码;文杰文件单词统计; 构造可以使n个城 市连接的最小生成树;送货;学生信息治理系统2. 设计要求至少完成上述设计内容中的4个设计题目;对每个题目要给出设计方案、功能模块划分、算法思想;选择使用的数据结构;给出题目的程序实 现;按要

3、求撰写设计报告.主要参考资 料1. «程序设计课程设计?指导书;2. 程序设计技术?、数据结构?等课程教材;3. 其他自选的相关资料.学生提交归档文件课程设计报告封面应给出专业、班级、姓名、学号、指导教师和完成日期.每个设计题目的内容包括以下几项:设计题目、问题描述、问题分析、功能实 现、测试实例及运行结果、源程序清单.1. 课程设计完成后,学生提交的归档文件应根据:封面一任务书一说明书一图纸的顺序进行装订上交大张图纸不必装订.2. 可根据实际内容需要续表,但应保持原格式不变.指导教师签名日期:2021.6.31. 相邻数对12. ISBN识别码33. 文本文件单词统计 54. 构造

4、可以使n个城市连接的最小生成树 11题目一相邻数对1.1【问题描述】给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1.输入格式输入的第一行包含一个整数n,表示给定整数的个数.第二行包含所给定的n个整数.输出格式输出一个整数,表示值正好相差1的数对的个数.1.2【设计及分析】输入输出610 2 6 3 7 83测试数据输出说明值正好相差1的数对包括(2, 3), (6, 7), (7, 8).所以输出:3数据约定1<=n<=1000,给定的整数为不超过10000的非负整数.1.3【设计功能的实现】#include "stdafx.h"#include

5、 <iostream>using namespacestd;int main()int n; int m = 0;cout << "请输入数字个数:"cin >> n;int A1000;cout << 分别为:n"for ( int i = 0; i < n; i+)|cin >> Ai;for ( int i = 0; i < n; i+)for ( int j = i + 1; j < n; j+)|if (Ai - Aj) = 1) | (Aj - Ai) = 1)m+;cout

6、 << "相邻数对个数为:"<< m << endl;return 0;1.4【测试及运行结果】caw C:W nddvj§em32cmd.exe情辎j入数字个数字 铜为10 2 6 3 7 8»ia:.1.5【总结】这个实验主要使用两个循环即可完成实验.题目二识别码2.1【问题描述】每一本正式出版的图书都有一个ISBN号与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如"x-xxx-xxxxx-x ,其中符号"-"是分隔符键盘上的减号, 最后位是识别码,例如0-670

7、-82162-4就是一个标准的ISBN码.ISBN码的首位数字表示书籍的出版 语言,例如0代表英语;第一个分隔符"-之后的三位数字代表出版社,例如 670代表维京出版 社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码.识别码的计算方法如下:首位数字乘以1加上次位数字乘以2以此类推,用所得的结果 mod 11,所得的余数即为 识别码,如果余数为10,那么识别码为大写字母 X.例如ISBN号0-670-82162-4中的识别码 4是这样得到的:对067082162这9个数字,从左至右,分别乘以 1 , 2,9,再求和,即 0X 1+6 X 2+2 X 9=158,然后

8、取158 mod 11的结果4作为识别码.编写程序判断输入的ISBN号中识别码是否正确,如果正确,那么仅输出“Right ;如果错误,那么输出是正确的ISBN号.输入格式输入只有一行,是一个字符序列,表示一本书的ISBN号保证输入符合ISBN号的格式 要求.输出格式输出一行,假设输入的ISBN号的识别码正确,那么输出“ Right ,否那么,根据规定的格 式,输出正确的ISBN号包括分隔符"-".2.2【设计及分析】输入10-670-82162-4输入20-670-82162-0输出1Right输出20-670-82162-42.3【设计功能的实现】#include &qu

9、ot;stdafx.h#include <iostream>using namespacestd;char a13;int main()int i = 1, sum = 0; int x;cout << "请输入标准 ISB测(X-XXX-XXXXX-X :"for ( int i = 1; i <= 13; i+)cin >> ai;sum = a1 * 1 + a3* 2 + a4 * 3 + a5 * 4 + a7 * 5 + a8 * 6 + a9 * 7 + a10* 8 + a11 * 9;sum = sum - 45

10、*'0x = sum % 11;if (x = 10 && a13 ='X')cout << "Right" << endl;return 0;else if (x = a13-'0' )cout << "Right" << endl;return 0;else for ( int i = 1; i <= 12; i+) cout << ai; |if (x = 10)cout << "X" <&

11、lt;endl;return 0;else cout << x << endl;return 0;2.4【测试及运行结果】SJind52cmc.exe请输入标准I曙N码OTXXTXXXX-X)潟-由0T21S-4 Hight蒲按任意键继续.四 CWi ndowsVyst-em 3 Scmd-exe请输入标准MBH码(X-XXXTXXXX-H)泅0-67(3-82162-1请按任意键继续. - .2.5【总结】这个的关键点在于字符必须减去0'才可以进行运算.题目三 文本文件单词统计3.1【问题描述】假设有如下的英文文本文档:(此处为太原理工大学学校简介英文版)TA

12、IYUAN UNIVERSITY OF TECHNOLOGYTaiyuan University of Technology (TUT) has its history traced all the way back to the Western Learning School of Shanxi Grand Academy (1902), which was one of the three earliest national universities in China. With the tradition anddevelopment of over 100 years, TUT is

13、now a general university with engineering as the major, sciences and technologyintegrated and coordinate development of multiple disciplines. It is a university that is included in the " Project 211the national higher education promotion program for 100 top universities in China.Recollecting th

14、e centennial history, generations of TUT have created its mission and glory of a century with responsibilityand confidence; expecting the promising tomorrow, over 30,000 TUT students and faculty are producing splendor andperspectives by their wisdom and diligence. In the new era, Taiyuan University

15、of Technology, following theConceptionof Scientific Development, is determined to further the reformation on education, to reinforce the teaching management soas to upgrade its teaching and researching levels. Taiyuan University of Technology will be turning itself into a research-based university.设

16、计C或C+程序,统计在这样的英文文本文件中,出现了多少个单词,每个单词出现了几 次.连续的英文字符都认为单词(不包括数字),单词之间用空格或标点符号分隔.3.2【设计及分析】要统计英文文本文件中出现了哪些单词,就要从文件中读取字符,读取出来的连续英文字符认为是一个单词,遇空格或标点符号单词结束.使用线性表记录单词以及每个单词出现的次数.线性表中的单词按字典顺序存储.线性表的顺序存储结构如下:#define LIST_INIT_SIZE 100 / 线性表存储空间的初始分配量#define LISTINCREMENT 10 /线性表存储空间的分配增量typedef structchar word

17、21 /存储单词,不超过 20个字符int count; /单词出现的次数 ElemType;typedef struct(ElemType *elem; / 存储空间基址int length; /当前长度int listsize; /当前分配的存储容量-4 - Seqlist;3.3【设计功能的实现】3.3.1实现顺序表的根本操作顺序表的初始化:InitList(SqList &L)顺序表上查找指定的单词:LocateElem(SqList &L,char *s)假设找到,单词的出现次数增1,返回0,否那么返回该单词的插入位置.在顺序表上插入新的单词:InsertList(S

18、qList &L,int i, char *s)要求按字典顺序有序.新单词的出现次数为1.输出顺序表上存储的单词统计信息:PrintList(SqList &L)输出文件中每个单词出现的次数以及文件中总的单词数(可输出到文件中).3.3.2统计单词数统计过程如下:(1) 输入要统计单词的文本文件名,翻开相应的文件;(2) 初始化顺序表;(3) 从文本文件中读取字符,直到文件结束.具体描述如下:while (读文件没有结束结束)(过滤单词前的非字母字符;读取一个单词,以字符串形式存储在一个字符数组中;在线性表中查找该单词,假设找到,单词的出现次数加 1,否那么返回其插入位置;上一

19、步中,假设没找到,那么进行插入操作;处理下一个单词.(4) 关闭文件,输出统计结果.#include "stdafx.h"#include <stdio.h>#include <string.h>#include <stdlib.h>#define LIST_INIT_SIZE 100 /线性表存储空间的初始分配量#define LISTINCREMENT0 /线性表存储空间的分配增量typedefstruct (char word21;/存储单词,不超过 20个字符int count; /单词出现的次数 ElemType;typedef

20、 struct (ElemType *elem; /存储空间基址int length; /当前长度int listsize;当前分配的存储容量-4 - SqList ;int lnitList( SqList * p)( p->elem = ( ElemType*)malloc( LIST_INIT_SIZE *sizeof (ElemType); if ( p->elem = NULI) return 0;p->length = 0;p->listsize = LIST_INIT_SIZE ; return 1;int LocateElem( SqList * p,

21、char * word)int low, high, mid;low = 0; high = p->length - 1;while (low <= high)(mid = (low + high) / 2;if (strcmp( word, p->elemmid.word) = 0)/ 表中进行二分查找(p->elemmid.count+;return 0;)else if (strcmp( word, p->elemmid.word) < 0)high = mid - 1;elselow = mid + 1;)return low + 1;int lns

22、ertList( SqList * p, int i , char * word)(int j;ElemType *base;if ( p->length >= p->listsize)(base = ( ElemType*)realloc(p->elem, ( p->listsize +LISTINCREMENTsizeof (ElemType);if (base = NULI) returnC);p->listsize = p->listsize + LISTINCREMENT/ 扩充表长)p->elem = base;for (j = p-

23、>length; j >=i ;.-) p->elemj = p->elemj - 1;strcpy( p->elem i - 1.word,word);p->elem i - 1.count = 1;p->length+;return 1;)void PrintList( (SqList * p, int nun)FILE *fw;int i;int no = numfprintf(fw,"*5,);fclose(fw);/主函数void main()SqList L;char word21, ch, filename30, filenam

24、e150;int num = 0, i, j = 0, mark = 0;FILE *fp;lnitList(&L);printf请将要检索的文本文件放入D根目录,然后输入文件名不用写后缀:"scanf( "%s, &filename);sprintf(filename1,if (fp = fopen(filename1,"D:%s.txt, filename); getchar();"r" ) = NULLprintf"翻开文件失败,请输入文件名与文件路径n"getchar();exit(0);)ch =

25、fgetc(fp);while (ch != EOFif (ch >='A' &&ch <= 'Z' ) | (ch >='a' &&ch <= 'z')ch = ch >='A' &&ch <= 'Z' ? ch + 32 : ch;wordj+ = ch;mark = 1;fw = fopen(单词计数.txt""w");fprintf(fw,该文早共有昨单词n以下子母顺序来显示每个

26、单词出现的个数n*n",no);fprintf(fw,"单词出现次数n" , no;for (i = 0; i <p->length; i+)fprintf(fw, "%-24s %-5dn" , p->elemi.word, p->elemi.count);if (mark = 1) if (j > 20) printf"文章中局部单词太长不予统计;)num+;wordj='0'mark = 0;j = 0;i = LocateElem(&L, word);if (i >

27、0)lnsertList(&L, i, word);ch = fgetc(fp);fclose(fp);printf("统计结束¥¥请查看翻开的单词统计.txt里面便是检索结果.n");PrintList(&L, num);system(单词计数.txt");getchar();3.4【测试及运行结果】谩计SS -记本丈也El 碱曰»IWH|Taiyuan Uni ver bi ty of TechnjaloEy (TUI has its history traced -all the way back to the

28、Ne-stem Learning School of Shanxi Giand Academy (.1902), which was one off the three earliest natianal uniwrsities in China. With the tradition and Jfivelspjrerit. of over 10DTUT is heni a general univtrsity bdtK engineering thsselffinees teehmloyintegrated and coordinate djevelppment df nultiple di

29、sciplines. It is >1 university that is incluwLed in the ,tfProject 211 thfi national higher e4ucatian promotion prosran for 1(K> top urLivErsities in China.RacoIlectin the eentmnial history, j.enftratiatis of TUT have created its nissian and glory of a emtury with respcnsibility an4 cOTifidcrK

30、c; u/puiting the prgnrisingov?r 30j.0Q0 TUT studtents 叫4 famlty wv pruduinE sp)?r>dijr onlperspectives by their iflisdam and diligence. In the new erd Taiyuan Ifniviersity of Techrwlogyi fol 1 owing the Cornceptinn of Scientific DeviclaE:-3>entk is deternnnE-d ta further the rDform-atiDn an ed

31、ucatiat to reinforce tbr teachinE nFanaseaKni: aa as to upgriie its teaching artdlevels. Taiyuan University of Technaloiy will bt turning itself into areread ch-based uni vEFiity.单词计数记事本文件(F) 疟垣I匚 下吝订i.; 查看Vi 帮助(H)惯奔营枢基堪暮个单词出现的个数单词 a academy all andare as back based be by . cent emi al cent ury chin

32、aI conception confidence coordinate created determined development diligence disciplines earliest education engineering era expecting faculty following for further general general ions glory grand has have higher出现次数41191211111121111131112111111111111113.5【总结】这个实验要熟悉线性表的各个操作,才能做出来完整的程序.题目四构造可以使n个城市连

33、接的最小生成树4.1【问题描述】给定一个地区的n个城市间的距离网,用 Prim算法或Kruskal算法建立最小生成树,并讨 算得到的最小生成树的代价.4.2【设计及分析】1、城市间的距离网采用邻接矩阵表示,邻接矩阵的存储结构定义采用课本中给出的定义, 假设两个城市之间不存在道路,那么将相应边的权值设为自己定义的无穷大值.2、要求在屏幕上显示得到的最小生成树中包括了哪些城市间的道路,并显示得到的最小生成树的代价.3、表示城市间距离网的邻接矩阵(要求至少 6个城市,10条边).4.3【设计功能的实现】#include "stdafx.h"#include <stdlib.

34、h>#include <stdio.h>#include <iostream> using namespacestd;#define MaxVextexNum30 /* 最大顶点数为 30 */*#define INFINITY 1000定义一个权值的最大值*/typedef struct (int vexs MaxVextexNum;/* 顶点表 */int arcsMaxVextexNuM MaxVextexNum/*邻接矩阵,即边表*/int n;/*顶点数和边数*/) MGraph/* MGragh是以邻接矩阵存储的图类型 */typedef struct

35、(int adjvertex;/*某顶点与已构造好的局部生成树的顶点之间权值最小的顶点*/int lowcost; /*某顶点与已构造好的局部生成树的顶点之间的最小权值*/ ClosEdge MaxVextexNum /*用prim算法求最小生成树时的辅助数组*/void CreatGraph( MGraph* G) /*建立有向图 G勺邻接矩阵存储*/(:int i, j;printf("请输入顶点数n :");scanf( "%d", &( G>n); /*输入顶点数和边数*/ printf( "n请输顶点字符信息(共井):&

36、quot;, G>n);for (i = 0; i<G>n; i+)(scanf( "%d", &( G>vexsi);/* 输入顶点信息,建立顶点表*/)printf( "n请输入邻接矩阵,不存在那么输入1000n");for (i = 0; i < G>n; i+)for (j = 0; j <G>n; j+)printf("此连邻接矩阵为(1000为不存在):n");for (i = 0; i<G>n; i+)for (j = 0; j<G>n; j

37、+)printf( "%8d", G>arcsij);printf( "n");)void PRIM(MGraphG int u, ClosEdge closedge)/*从第u个顶点出发构造图G勺最小生成树,最小生成树顶点信息存放在数组closedge中*/int i, j, w, k, cost = 0;for (i = 0; i< Gn; i+)/*辅助数组初始化*/if (i != u) closedge i.adjvertex = u;closedge i.lowcost =G.arcs ui;)closedge u.lowcost = 0;/* 初始,U=u */for (i = 0; i< Gn - 1; i+)/* 选择其余的 G.n-1 个顶点 */w = 1000;for (j = 0; j< Gn; j+)/*在辅助数组closedge中选择权值最小的顶点*/if ( closedge j.lowcost != 0 && closedge j.lowcost<w) w = closedge j.lowcost;k = j;/*求出生成树的下一个顶点k */c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论