C++课程设计实训报告_c课程设计实训报告

其他范文 时间:2020-02-28 10:33:38 收藏本文下载本文
【www.daodoc.com - 其他范文】

C++课程设计实训报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c课程设计实训报告”。

大连科技学院

C++课程设计报告

稿件管理数据系统 小组成员

吕荣兴

学生姓名

吕荣兴

专业班级

信管10-1班

所在系部

信息科学系

指导教师

曾维佳

职称

讲师

目 录

一 题目...........................................................2 二 实验目的.......................................................2 三 实验内容.......................................................2 四 实验结果.......................................................5 五 体会...........................................................5 六 小组分工......................................................14 七 部分程序代码..................................................14

C++课程设计报告

一 题目

稿件数据管理系统 二 实验目的稿件管理系统,即是一个帮助人们管理大量稿件信息的系统。其应包括以下几项基本的功能:1)将稿件的一些基本信息(如稿件的编号,稿件名,第一作者的名字,投稿的日期,作者的省份等等)录入到系统中;

2)显示信息,即将系统中所有的稿件信息全部显示出来,方便人们的查看; 3)删除信息功能,即可以将一些不需要或是错误的文件删除; 4)修改,即将一些错误的稿件信息更正;

5)查看,即可以查看系统中一些稿件的信息,而不需要将所有的信息都显示出来,可更精确的查询某一个稿件的信息,找到并显示出来;

6)统计,即按照稿件作者的省份将每个省投稿的总的篇数统计出来并从高到低排列显示; 7)添加信息,即在原有数据的基础上增加一组或多组稿件的信息; 8)将输入系统的稿件信息写入到指定的文件中,便于保存; 9)将已有文件中的稿件信息读入到系统中,便于查看; 10)

退出系统。

三 实验内容

1、系统描述

统计稿件管理数据,要求能用菜单实现如下功能:

1输入每件稿件的第一作者名字,稿件名称,投稿日期,作者的省份。2输入每件稿件的发表日期,审稿意见。3按作者的省份,从高到低排出每个省的总发表篇数。4根据用户要求输出某作者某月(从键盘输入作者名和月份)的所有稿件数据。5 根据用户输入,绘制稿件按省份的百分比饼图。

2、系统需求分析

1、对于稿件管理系统要有一个清晰的认识,要知道一篇稿件包含哪些信息,而且要了解其中具体有哪些数据及变量,这就需要做一些查询或者询问的工作。

2、对其变量定义时是用整型、浮点型、还是字符型,这些都是稿件类中必须要解决的问题。

3、要考虑函数成员的实现。

4、要考虑整个程序要用到那些语句及前后逻辑。

5、更重要的是,我们要明确该程序的目的:能够有把握程序总的方向。编写一个简单的稿件管理程序,帮助管理大量的稿件信息。要求利用类实现,数据采用文件输

入。稿件管理包括稿件信息的录入,添加,显示,查询,删除,修改等功能。

3、设计思想

我的总体思路是先定义一个稿件的结构体数组,用于储存稿件的各项信息,在定义了数组以后,接下来便是定义一些函数用于实现各项功能,最后定义主函数,并应用switch语句等调用定义过的各项子函数来实现该系统的各项功能。

明白了应该做的功能以后,接下来就是实现这些功能,编写出正确的稿件管理系统。在编写程序的时候,最关键的地方就是算法的设计,这一步,我想也该是整个课程设计中最困难的地方。算法设计好了,整个程序基本上就算是完成了一大半了。下面便是我在设计算法时的一些基本想法:

首先是定义一个结构体数组,用于存放稿件的一些基本信息:稿件编号Number,其类型为int型,稿件名M_Name,其为char型数组,作者名字Author,同样为char型数组,投稿时间Time,char型,作者省份Province,char型数组。、在定义好了结构体数组后,便是写一些用于实现各项功能的子函数。

功能函数1:稿件信息录入功能

定义信息录入函数Input(),首先是清除多余的数据,在判断适合以后,再交互输入稿件的各项信息,在输入完成以后利用get(x)将多余的输入清除。

功能函数2:显示所有稿件信息的功能

定义显示信息功能函数Display(),先是判断系统中是否有稿件的信息,如果没有,则输出提示“没有记录”,如果有稿件的信息,则输出"编号 名称 作者名字 投稿日期 作者省份"再在下面显示相关的稿件信息,包括稿件的编号,稿件的名称,第一作者的名字,投稿日期,作者的省份等等。显示稿件信息的时候用的是循环输入。显示后输出提示“按任意键继续”。

功能函数3:按作者的省份统计出各省发表高见的总篇数,先是定义几个int型变量i,a,sa,并赋给初始值0;以及各省的名称:如A省,char A;再使用for循环语句统计出各省所发表的稿件的总的篇数。在统计好了各省的投稿总篇数后再使用冒泡或是选择排序将其按照从高到低的顺序重新排列,并显示出来包括稿件的编号,稿件的名称,第一作者的名字,投稿日期,作者的省份等等。

功能函数4:查找信息

定义一个查找稿件的函数,并可以将找到的稿件信息显示出来,Search(),文件内容是,先是输入提示:“输入需要查找的稿件的编号”,接下来便是在在系统的已有数据中查找,如果没有相关的稿件信息,则输出提示:“对不起,无法找到该稿件的信息!”相应的,输入信息失败,然后返回。相反,如果找到了该稿件的信息,则逐个将该稿件的信息输出显示出来包括稿件的编号,稿件的名称,第一作者的名字,投稿日期,作者的省份等等。在查找稿件信息的时候,还可以根据稿件的名称,第一作者的名字,投稿日期,作者的省份等信息进行查找并将其删除。

功能函数5:插入信息功能

定义函数Insert(),其主要功能就是将一个已知的稿件信息添加到系统之中。该函数开始是用一个字符型数组char x[10]将多余的输入清除,然后再用交互输入的方法将稿件的各项信息逐个写入

系统之中,包括稿件的编号,稿件的名称,第一作者的名字,投稿日期,作者的省份等等。并输出提示“成功插入稿件信息!”。

功能函数6:修改信息功能

定义修改稿件信息函数Modify(),运行时,先是输入提示“输入需要修改的稿件的编号”,然后进行查找判断,若查找到了,则显示“编号 名称 作者名字 投稿日期 作者省份”,并在相应的位置将相应的稿件信息显示出来,显示出来以后的一步便是对该稿件的信息进行修改,先是将修改后的稿件信息逐个输入(交互输入),再将修改后的信息与原来的信息赋给原来的那组稿件,这样,一组稿件信息的修改便完成了。可以在显示稿件信息的功能函数里进行查看,看是否修改信息成功,最后,输出提示“稿件信息修改成功”。若没有找到相应的函数,则说明输入有误,系统中不存在所输入得稿件,并且输出提示“对不起,无该稿件的信息”。在查找稿件信息的时候,还可以根据稿件的名称,第一作者的名字,投稿日期,作者的省份等信息进行查找并将其删除。

功能函数7:信息删除功能

定义一个删除稿件信息的函数Delete(),输入提示“请输入需要删除的稿件的编号”,查找判断,如果没有找到相应的编号的稿件信息,则说明该系统中没有要查找的稿件信息,返回信息失败,输出提示“提示:对不起,无法找到该编号!”。

相反,如果找到了相应编号的稿件以及稿件的信息,以其后一位的稿件的各项相关的信息将其覆盖,即将其删除。并输出提示“已成功删除!”。

删除功能还可以根据稿件的名称,第一作者的名字,投稿日期,作者的省份等信息进行查找并将其删除。

功能函数8:将已知文件中的稿件信息读入到系统之中

定义读入数据函数Duru()。打开指定的文件“**.Txt”,再将该文件中的各个稿件信息以循环的方式读入到文件f1中,然后关闭文件f1.close。并显示“提示:读入数据成功,可选择【显示所有信息】查看”。

功能函数9:将系统中的稿件信息写入到指定的文件之中

定义写入文件函数Save()。打开文件f2,按循环方式将系统中的所有稿件信息写入到指定的文件之中。,在写入成功以后显示“提示:稿件信息已成功存入文件”。

在上面的这些功能函数定义好了以后,接下来的便是菜单函数Menu()和主函数void main()的编写设计。

1)编写菜单函数:实行逐行输入形成一个整体菜单的方法,用cout

2)主函数void main()的编写:

使用switch语句,选择判断,在菜单函数中选择需要执行的相关函数,在主函数中调用相应的功能函数(子函数)来实现相应的功能,实现完一个功能后再跳出主函数,重新在菜单函数中选择相应的功能,再通过主函数中的选择判断调用相应的子函数来实现相应的功能。最后,选择功能“0”

退出该系统,并显示“谢谢您的使用!”。算法的设计到此结束。下面进行的便是上机调试。

四 实验结果

编写好稿件管理系统的源代码以后,在上机调试的过程中遇到了不少的错误,调试的时候也不是一两次就能通过的,主要的就是一些语法上的错误等,还有就是头文件的使用,有时候又,调试怎么都不能通过,但却怎样也找不到错误在哪里,结果,加了一个头文件,一切的问题迎刃而解;也有的时候,一处的一个小小的输入错误会导致后面一大片的错误,只要发现了并正确地修改,很多问题都会得到解决。在连续了两个星期的时间后,终于,我所编写的程序可以编译通过了,大部分功能也都能得以实现了。

在编写这个稿件程序管理系统时,我主要是运用了结构体数组,而没有用类,链表和指针等,因为我一直以来对这些东西都不是和懂,一开始以为这并没什么伪问题,但是,通过这两星期的课程设计课,我认识到了自己在学习专业课上的很多毛病,原来我连最最基本的一些的都不知道,不清楚,不能完全的、熟练地去掌握它们。通过这一次的学习,我认识到,时间不是让我们浪费在那些无聊的事情上,尽管这里是大学,不像高中那样,但是我们不能就此认为浪费时间就是理所当然的。我们应该将更多的时间花在一些有意义的事情上,一些可以增加我们的知识,开阔我们的眼界,增强我们身心健康的事情上。

调试成功后的主菜单显示如下:

如菜单中所示,共有0—9是个选项,分别对应了该稿件管理系统的十个相应的功能,选择相应的功能可以执行想要的一些功能。

功能一:稿件信息录入功能的测试结果:输入稿件的基本信息,其结果如下:

该功能可以连续输入,在写入一组稿件信息后还可以选择“y”继续写入更多的稿件信息,选择“n”则结束这项功能,进入主菜单,继续选择新的功能。

功能二:显示所有的稿件信息功能的测试结果,显示所有稿件的各项信息,其结果如下:

可以看出,该项功能可以将系统中所有的稿件信息一一显示出来,便于查看,在结果显示出来以后可以按任意键退出该功能回到主菜单进行新的功能选项;

功能三统计篇数的功能:

该功能可以按作者的省份将每个省的稿件发表总的篇数统计出来,并按照从高到低的顺序将其排列显示出来。

功能四:查找稿件信息功能的测试,其测试结果如下:

输入稿件的编号,便可将改建的所有信息一一显示出来,如稿件的编号,稿件名,作者名字,投稿日期,作者省份等等,显示后可按任意键退出该功能,回到主菜单进行下一功能的选择运用。

功能五:添加稿件信息功能的测试,其结果如下图所示:

选择功能5后,将出现提示:“插入一组稿件信息”,接下来可以根据提示信息将所要插入的稿件信息逐一录入系统,并可在功能2中显示出来看是否插入成功,按任意键同样可以退出该功能,进入主菜单重新进行新的任务;

功能六:信息修改功能的测试,其测试结果如下:

首先,找出需要修改的稿件信息,并将其显示出来,然后再进行修改功能,修改完成后可以按任意键退出该功能;同样,可以在功能2中检查是否修改成功;

功能七:删除文件功能的测试,其测试结果如下图所示:

稿件删除成功后,按任意键返回主菜单进行新的任务;

功能八:读入数据功能,其测试结果为:

读入文件后,按任意键回单主菜单,再在主菜单里选择功能2查看读入数据是否成功;

功能九:将系统中的稿件信息写入指定文件的功能的测试,其结果如下图所示:

功能0:即退出该系统,其显示如下:

安全退出系统。

五 体会

由于上课时没有认真听C++课程老师的讲解,学得相当糟糕,但要设计的又是一个较大的程序,便去请教老师。老师建议我们找一个模板,认真仔细地看,去理解它,看懂它,然后根据自己的实践内容适当修改,应该就没多大问题了。

老师的话给了我莫大的鼓励,但不自觉地滋生了傲慢的态度。只要有个模板不就行了嘛,小事一桩啊!但结果并非如此在后来的实践过程中,我还是碰到了许多麻烦。一个大程序都是环环相扣的,类的对象,函数的定义,变量的使用都是互相有联系的。我认为只要把模板略加改动,就能够完成这次作业了。这种投机取巧的想法让我很快尝到了苦头。程序编好后,执行时出现了许多错误,大多是定义的不规则,究其原因,我根本没看懂模板。还是仔细研究模板吧!我首先声明头文件,然后分别定义稿件数据类、稿件省份类,再是函数声明语句,主函数的定义(switch语句的应用)。接着,我浏览了成员函数,每个成员函数看起来并不很难,简单的输入输出(AddItem),指针取值(基本都涉及到了)还有交换变量的数据域(swap)。但对指针还是相当模糊的,不能透彻地理解它,在C++机试中就是因为不了解指针,导致相关的试题都不会做。看完每一个函数,心里算是有些程序雏形了。对于按省份给每个省的总发表篇数进行排序这一问题,刚开始真的不会弄,老师让我用一维数组,可还是不太明白。于是,我询问了周边同学。他们用了多重循环语句,并且调试成功了,听他们讲解后我便用了他们的方法。,与同学讨论向同学请教有时候也不失为一个好方法,一个人的智慧毕竟是不全面的,集体的力量才是强大的!

六 小组分工

程序设计 系统调试 吕荣兴

七 部分程序代码

#include /*引用库函数*/ #include #include #include #include #include typedef struct {

int Number;//稿件编号

char M_Name[20];//稿件名称

char Author[20];//作者名字

char Time[20];//投稿日期

char Province[20];// 作何省份 }Manuscript;Manuscript Manus[100];/*结构体数组变量*/

int menu()/*菜单函数*/ { char c;do { system(“cls”);/*运行前清屏*/ cout

c=getchar();/*读入选择*/ }

while(c'9');return(c-'0');/*返回选择*/ } /////////******

功能1

*************

录*************************************************/////////////////////

int Input(Manuscript Manus[],int n)/*录入信息*/ { int i=0;char sign,x[10];/*x[10]为清除多余的数据所用*/ while(sign!='n'&&sign!='N')/*判断*/ { cout>Manus[n+i].Number;cout>Manus[n+i].M_Name;cout>Manus[n+i].Author;cout>Manus[n+i].Time;cout>Manus[n+i].Province;gets(x);/*清除多余的输入*/ cout提示:继续写入?(Y/N)";cin>>sign;/*输入判断*/ i++;} return(n+i);} ///////////////////////////////////////////////////////////////////

入信息

下载C++课程设计实训报告word格式文档
下载C++课程设计实训报告.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文