太原理工大学软件学院课程设计实验报告相邻数对ISBN识别码文本文件单词统计送货.pdf
《太原理工大学软件学院课程设计实验报告相邻数对ISBN识别码文本文件单词统计送货.pdf》由会员分享,可在线阅读,更多相关《太原理工大学软件学院课程设计实验报告相邻数对ISBN识别码文本文件单词统计送货.pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计课程名称:程序设计课程设计设计名称:相邻数对、ISBN 识别码文本文件单词统计、构造最小生成树送货、学生信息管理系统专业班级:学号:学生姓名:指导教师:2017 年 06 月 21 日太原理工大学课程设计任务书学生姓名专业班级课程名称程序设计课程设计(程序设计课程设计(Programming Curriculum Design)设计名称相邻数对,ISBN 识别码,文本文件单词统计等设计周数2设计任务主要设计参数1.1.基本要求基本要求掌握 C 或 C+语言、结构化程序和面向对象程序设计方法、数据结构和离散数学理论知识,熟悉 C 或 C+程序的开发环境及调试过程,巩固和加深对理论课中知识
2、的理解,提高学生对所学知识的综合运用能力。2.2.培养学生以下技能培养学生以下技能培养学生查阅参考资料、 手册的自学能力, 通过独立思考深入钻研问题,学会自己分析、解决问题。通过对所选题目分析, 找出解决方法,设计算法,编制程序与调试程序。能熟练调试程序,在教师的指导下,完成课题任务。按课程设计报告的要求撰写设计报告。设计内容设计要求1.1.设计内容设计内容相邻数对;ISBN 识别码;文本文件单词统计;构造可以使 n 个城市连接的最小生成树;送货;学生信息管理系统2.2.设计要求设计要求至少完成上述设计内容中的 4 个设计题目;对每个题目要给出设计方案、功能模块划分、算法思想;选择使用的数据结
3、构;给出题目的程序实现;按要求撰写设计报告。主要参考资料1.程序设计课程设计指导书;2.程序设计技术、数据结构等课程教材;3. 其他自选的相关资料。学生提交归档文件课程设计报告封面应给出专业、班级、姓名、学号、指导教师和完成日期。每个设计题目的内容包括以下几项:设计题目、问题描述、问题分析、功能实现、测试实例及运行结果、源程序清单。注:1.课程设计完成后,学生提交的归档文件应按照:封面任务书说明书图纸的顺序进行装订上交(大张图纸不必装订)。2.可根据实际内容需要续表,但应保持原格式不变。指导教师签名指导教师签名:日期日期:2017.6.3I目目 录录1. 相邻数对.22. ISBN 识别码.4
4、3. 文本文件单词统计.74. 构造可以使 n 个城市连接的最小生成树.135. 送货.186. 学生信息管理系统.232题目一题目一 相邻数对相邻数对1.11.1【问题描述】【问题描述】给定 n 个不同的整数,问这些数中有多少对整数,它们的值正好相差 1。输入格式输入格式输入的第一行包含一个整数 n,表示给定整数的个数。第二行包含所给定的 n 个整数。输出格式输出格式输出一个整数,表示值正好相差 1 的数对的个数。1 1.2.2【设计及分析】【设计及分析】先设定一个全局数组 a,数组的大小尽量大,数组的下标对应的是输入的整数范围。数组内 0 表示没有对应于该下标的整数,1 表示有对应于该下标
5、的整数。将数组全部初始化为0,表示没有进行输入。然后输入整数个数和相应的整数对数组进行修改,然后进行相邻数对筛选得出数对及数对的个数。数据流图如图 1-1。1 1.3.3【设计功能的实现】【设计功能的实现】#includeint a1005;void inita(int *a)/初始化数组int n=0;for(;n1004;n+)an=0;void main()int n,i,m,count=0;inita(a);printf(请输入整数的个数:n);scanf(%d,&n);printf(请输入整数:n);for(i=0;in;i+)/修改数组内容scanf(%d,&m);am=1;pri
6、ntf(输入的整数中的相邻数对如下:n);for(i=0;i1005;i+)/相邻数对的筛选图 1-13if(ai=1)&(ai+1=1)printf(%d,%d),i,i+1);count+=1;printf(n 输入的整数中共有%d 个相邻数对n,count);1 1.4.4【测试及运行结果】【测试及运行结果】1 1.5.5【总结】【总结】1.该题目比较简单,在经过老师的指导,有了大概的设计思想并进行代码的编写。2.在写代码的过程中,用了全局数组 a,在初始化数组后对其进行调整,但是在编写过程中,没有考虑好各变量的关系, 调整数组时发生了数据与输入数据不一致的情况, 此时虽然没有语法错误,
7、但经过检查后发现了逻辑错误,然后增加了一个变量进行修改。3.该程序比较简单,但是觉得数组大部分的空间没有利用,有一定的资源浪费,在运算速度上也是比较慢的。4题目二题目二 ISBNISBN 识别码识别码2 2.1.1【问题描述】【问题描述】每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括 9 位数字、1 位识别码和 3 位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如 0-670-82162-4 就是一个标准的 ISBN 码。ISBN 码的首位数字表示书籍的出版语言,例如 0 代表英语;第一个分隔符“-”之
8、后的三位数字代表出版社,例如 670 代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。识别码的计算方法如下:首位数字乘以 1 加上次位数字乘以 2以此类推,用所得的结果 mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN 号码0-670-82162-4 中的识别码 4 是这样得到的:对 067082162 这 9 个数字,从左至右,分别乘以 1,2,9,再求和,即 01+62+29=158,然后取 158 mod 11 的结果 4作为识别码。编写程序判断输入的 ISBN 号码中识别码是否正确,如果正确,则仅输出“Right”
9、;如果错误,则输出是正确的 ISBN 号码。输入格式输入格式输入只有一行,是一个字符序列,表示一本书的 ISBN 号码(保证输入符合 ISBN 号码的格式要求)。输出格式输出格式输出一行,假如输入的 ISBN 号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的 ISBN 号码(包括分隔符“-”)。2 2.2.2【设计及分析】【设计及分析】用一个函数来计算正确的 ISBN 码。在主函数中,先输入一个字符串存放于全局数组 a中,然后用对字符串中特定符号-进行删除,并保存与数组 a1 中,原数组不变。处理数组 a1,用 judge 函数来计算正确的 ISBN 码,然后对数组
10、a1 中的 ISBN 码与计算的值是否相等,相等则输出 RIGHT,反之将计算出的 ISBN 码赋值给数组 a 中的 ISBN 码,并输出数组a。数据流图如图 2-1。图 2-152 2.3.3【设计功能的实现】【设计功能的实现】#include#include#includechar a100,a1100;int judge(char *a)/计算正确的 ISBN 码int i=0,l,s=0,m;for(;i9;i+)ai-=48;l=ai*(i+1);s=s+l;m=s%11;return m;void main()int i,m,j=0,l;printf(请输入 ISBN 码:);ge
11、ts(a);l=strlen(a);for(i=0;ai!=0;i+)/将-删除掉便于计算if(ai!=-)a1j+=ai;elsea1j=ai;m=judge(a1);/计算 ISBN 码/printf(%d,m);if(m=(a19-48)/判断 ISBN 码是否正确printf(RIGHT);/正确输出 RIGHTelseal-1=(m+48);/错误则修改 ISBN 码并输出正确的 ISBN 码printf(%s,a);2 2.4.4【测试及运行结果】【测试及运行结果】62 2.5.5【总结】【总结】1、在编写程序框架时,我准备先实现 ISBN 码的正确计算与修改,所以先使用的是整数进
12、行计算,在整数计算成功后修改为题目中所要求的字符串输入。2、在对字符串进行处理时,要考虑字符-在字符串中的位置,最初打算用三个数组来控制计算,但在计算过程中出现了错误。然后采取将字符串中的-删除并存储于新的数组a1 中,原始数组不变。3、在初始框架中,计算是针对整数进行的,在对字符串进行处理时,要考虑其与整数的关系,才能得到正确的计算值。在修改数组 a 时也需要考虑计算值之间的转换。7题目三题目三 文本文件单词统计文本文件单词统计3 3.1.1【问题描述】【问题描述】要统计英文文本文件中出现了哪些单词, 就要从文件中读取字符, 读取出来的连续英文字符认为是一个单词,遇空格或标点符号单词结束。3
13、 3.2.2【设计及分析】【设计及分析】先构建一个结构体用于存放单词及对应的数目, 然后用一个函数来对所获取的单词进行处理,单词相同的则对应数目加 1,总单词数目加 1;单词不同的总单词加 1,对应单词数目加 1。主程序中通过文件进行读取单词,并将大写的字母转换为小写的字母。然后进行单词的排序,先按照单词出现的频率排序,然后按照首字母进行排序,最后对首字母相同的单词进行排序。数据流图如图 3-1。3 3.3.3【设计功能的实现】【设计功能的实现】#include#include#include struct word/结构体,用于存放单词及对应的个数char str30;int num;A10
14、00;int sum;/记录总的单词数void chuli(char s)/处理获取的单词int i,j;int flag=0;图 3-18for(i=0;i=sum;i+)if(strcmp(Ai.str,s)=0)/相同的单词,单词总数加 1,对应单词数量加 1,标志 flag变成 1Ai.num+;flag=1;sum+;if(flag=0)/单词不同,则加入单词,并将对应的单词数和单词总数量加 1for(j=0;j30;j+)Asum.strj=sj;Asum.num+;sum+;int main()char ch,s30;int i,flag=0,l;int ii,jj;struct
15、 word a;FILE *fp;fp=fopen(tyut.txt,r);if(fp=NULL)printf(文件为空!);sum=0;ch=NULL;for(i=0;i1000;i+)Ai.num=0;/将所有单词对应的数目设置为 0while(ch!=-1)for(i=0;i=65&ch=97&ch=65&ch=65&ch=97&ch=122)continue;else break;chuli(s);/处理所获取的单词 s9/将单词按照出现的频率排序,便于后面的按字母顺序排序,由于之前初始化 A 的 sum=0,/所以去掉这一步按字母排序顺序会打乱for(ii=0;iisum;ii+)f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 太原 理工大学 软件 学院 课程设计 实验 报告 相邻 ISBN 识别码 文本文件 单词 统计 送货
限制150内