您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 2017太原理工大学软件课程设计
课程设计课程名称:程序设计课程设计设计名称:相邻数对、ISBN识别码文本文件单词统计、构造可以使n个城市连接的最小生成树专业班级:软件1502班学号:2015005509学生姓名:冯旭超指导教师:吕进来2017年06月23日太原理工大学课程设计任务书学生姓名专业班级软件课程名称程序设计课程设计(ProgrammingCurriculumDesign)设计名称相邻数对,ISBN识别码,文本文件单词统计等设计周数2设计任务主要设计参数1.基本要求掌握C或C++语言、结构化程序和面向对象程序设计方法、数据结构和离散数学理论知识,熟悉C或C++程序的开发环境及调试过程,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。2.培养学生以下技能①培养学生查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。②通过对所选题目分析,找出解决方法,设计算法,编制程序与调试程序。③能熟练调试程序,在教师的指导下,完成课题任务。④按课程设计报告的要求撰写设计报告。设计内容设计要求1.设计内容①相邻数对;②ISBN识别码;③文本文件单词统计;④构造可以使n个城市连接的最小生成树;⑤送货;⑥学生信息管理系统2.设计要求①至少完成上述设计内容中的4个设计题目;②对每个题目要给出设计方案、功能模块划分、算法思想;③选择使用的数据结构;④给出题目的程序实现;⑤按要求撰写设计报告。主要参考资料1.《程序设计课程设计》指导书;2.《程序设计技术》、《数据结构》等课程教材;3.其他自选的相关资料。学生提交归档文件课程设计报告封面应给出专业、班级、姓名、学号、指导教师和完成日期。每个设计题目的内容包括以下几项:设计题目、问题描述、问题分析、功能实现、测试实例及运行结果、源程序清单。注:1.课程设计完成后,学生提交的归档文件应按照:封面—任务书—说明书—图纸的顺序进行装订上交(大张图纸不必装订)。2.可根据实际内容需要续表,但应保持原格式不变。指导教师签名:日期:2017.6.3I目录1.相邻数对................................................................................................................................12.ISBN识别码........................................................................................................................33.文本文件单词统计……………………………………………………………….54.构造可以使n个城市连接的最小生成树………………………………………111题目一相邻数对1.1【问题描述】给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。输入格式输入的第一行包含一个整数n,表示给定整数的个数。第二行包含所给定的n个整数。输出格式输出一个整数,表示值正好相差1的数对的个数。1.2【设计及分析】输入输出610263783测试数据输出说明值正好相差1的数对包括(2,3),(6,7),(7,8)。所以输出:3数据约定1=n=1000,给定的整数为不超过10000的非负整数。1.3【设计功能的实现】#includestdafx.h#includeiostreamusingnamespacestd;intmain(){intn;intm=0;cout请输入数字个数:;cinn;intA[1000];cout分别为:\n;for(inti=0;in;i++){cinA[i];}for(inti=0;in;i++){for(intj=i+1;jn;j++){if(((A[i]-A[j])==1)||((A[j]-A[i])==1)){m++;}}}cout相邻数对个数为:mendl;2return0;}1.4【测试及运行结果】1.5【总结】这个实验主要使用两个循环即可完成实验。3题目二ISBN识别码2.1【问题描述】每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。识别码的计算方法如下:首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,…,9,再求和,即0×1+6×2+……+2×9=158,然后取158mod11的结果4作为识别码。编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出是正确的ISBN号码。输入格式输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。输出格式输出一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。2.2【设计及分析】输入1输出10-670-82162-4Right输入2输出20-670-82162-00-670-82162-42.3【设计功能的实现】#includestdafx.h#includeiostreamusingnamespacestd;chara[13];intmain(){inti=1,sum=0;intx;cout请输入标准ISBN码(X-XXX-XXXXX-X):;for(inti=1;i=13;i++){4cina[i];}sum=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;sum=sum-45*'0';x=sum%11;if(x==10&&a[13]=='X'){coutRightendl;return0;}elseif(x==a[13]-'0'){coutRightendl;return0;}elsefor(inti=1;i=12;i++){couta[i];}if(x==10){coutXendl;return0;}elsecoutxendl;return0;}2.4【测试及运行结果】52.5【总结】这个的关键点在于字符必须减去‘0’才可以进行运算。题目三文本文件单词统计3.1【问题描述】假设有如下的英文文本文档:(此处为太原理工大学学校简介英文版)TAIYUANUNIVERSITYOFTECHNOLOGYTaiyuanUniversityofTechnology(TUT)hasitshistorytracedallthewaybacktotheWesternLearningSchoolofShanxiGrandAcademy(1902),whichwasoneofthethreeearliestnationaluniversitiesinChina.Withthetraditionanddevelopmentofover100years,TUTisnowageneraluniversitywithengineeringasthemajor,sciencesandtechnologyintegratedandcoordinatedevelopmentofmultipledisciplines.Itisauniversitythatisincludedinthe“Project211”---thenationalhighereducationpromotionprogramfor100topuniversitiesinChina.……Recollectingthecentennialhistory,generationsofTUThavecreateditsmissionandgloryofacenturywithresponsibilityandconfidence;expectingthepromisingtomorrow,over30,000TUTstudentsandfacultyareproducingsplendorandperspectivesbytheirwisdomanddiligence.Inthenewera,TaiyuanUniversityofTechnology,followingtheConceptionofScientificDevelopment,isdeterminedtofurtherthereformationoneducation,toreinforcetheteachingmanagementsoastoupgradeitsteachingandresearchinglevels.TaiyuanUniversityofTechnologywillbeturningitselfintoaresearch-baseduniversity.设计C或C++程序,统计在这样的英文文本文件中,出现了多少个单词,每个单词出现了几次。连续的英文字符都认为单词(不包括数字),单词之间用空格或标点符号分隔。3.2【设计及分析】要统计英文文本文件中出现了哪些单词,就要从文件中读取字符,读取出来的连续英文字符认为是一个单词,遇空格或标点符号单词结束。使用线性表记录单词以及每个单词出现的次数。线性表中的单词按字典顺序存储。线性表的顺序存储结构如下:#defineLIST_INIT_SIZE100//线性表存储空间的初始分配量#defineLISTINCREMENT10//线性表存储空间的分配增量typedefstruct{6charword[21]//存储单词,不超过20个字符intcount;//单词出现的次数}ElemType;typedefstruct{ElemType*elem;//存储空间基址intlength;//当前长度intlistsize;//当前分配的存储容量-4-}Seqlist;3.3【设计功能的实现】3.3.1实现顺序表的基本操作⑴顺序表的初始化:InitList(SqList&L)⑵顺序表上查找指定的单词:LocateElem(SqList&L,char*s)若找到,单词的出现次数增1,返回0,否则返回该单词的插入位置。⑶在顺序表上插入新的单词:InsertList(SqList&L,inti,char*s)要求按字典顺序有序。新单词的出现次数为1.⑷输出顺序表上存储的单词统计信息:PrintList(SqList&L)输出文件中每个单词出现的次数以及文件中总的单词数(可输出到文件中)。3.3.2统计单词数统计过程如下:(1)输入要统计单词的文本文件名,打开相应的文件;(2)初始化顺序表;(3)从文本文件中读取字符,直到文件结束。具体描述如下:while(读文件没有结束结束){过滤单词前的非字母字符;读取一个单词,以字符串形式存储在一个字符数组中;在线性表中查找该单词,若找到,单词的出现次数加1,否则返回其插入位置;上一步中,若没找到,则进行插入操作;处理下一个单词。}(4)关闭文件,输出统计结果。#includestdafx.h#includestdio.h#includestring.h#includestdlib.h#defineLIST_INIT_SIZE100//线性表
本文标题:2017太原理工大学软件课程设计
链接地址:https://www.777doc.com/doc-4946047 .html