您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > C++课程设计完整版
综合模拟实习第1页共24页信息管理与系统开发设计综合模拟实习一、实习目的通过模拟实习,要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。信管11级学生的模拟实习主要是复杂程序和简单软件的实现。通过该模拟实习,可以将学生课堂上掌握的理论知识与处理数据的业务相结合,以检验我们同学们掌握知识的宽度、深度及对知识的综合运用能力。二、实习环境计算机硬件配置:VC++6.0操作系统:Win7旗舰版开发环境:单核CPU;内存1G或以上,硬盘空间320G或以上,100M或1000M网卡。三、实习内容内容一:纸牌游戏。任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:这时正面向上的牌有哪些?内容二:文章编辑。功能:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行;要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出全部字母数、综合模拟实习第2页共24页数字个数、空格个数、文章总字数(3)输出删除某一字符串后的文章;内容三:设计学生成绩管理系统。该系统中存储学生的学号、姓名、性别、年龄、课程成绩等信息。要求:1)浏览学生信息2)添加学生信息3)删除学生信息4)查找学生信息5)修改学生信息6)对成绩的处理7)按照学生某门课程的成绩对学生排序①求出每个学生各门课程的总成绩、平均成绩、最高分和最低分。②求出某一门课程所有学生的总成绩、平均成绩、最高分和最低分。四、算法分析、设计与描述1.算法分析和设计内容一:由题目可知,总共有52张牌,且最开始的状态都是正面朝上,所以我们先定义一个数组flag[],这个数组存储52个数据,下标是0-51,我们用一个for循环将所有牌的状态值都赋值为1,代表正面向上。如果反面朝上,则将其赋值为0。然后用一个for循环来控制基数的增加,用j变量代替,它的取值范围是[2,52],再用一个for循环嵌套在上一个for循环中,用来遍历所有牌,由于数组下表是从0开始,所以要用(i+1)%j==0作为条件来给相应的牌赋状态值。这样就实现了当基数是2时,找出符合条件的牌并翻转;当基数是3时,找出相应的牌并翻转……依此类推,直到基数j52,不符合j=52的条件,而跳出循环。至此,flag数组中元素的值将不会再是都为1,如果仍是正面朝上,flag[i]的值仍为1,否则为0。最后我们再用一个for循环来遍历flag数组,并将flag[i]的值为1的牌对应的i值加1再输出,即输出i+1,代表第i+1张牌是正面朝上的。综合模拟实习第3页共24页内容二:本程序是对一段英文文章的内容进行处理,存储方式采用链式存储,没有文件操作,故本程序对其文本内容的所有操作都是在链表中进行的。对于文本的输入,采用头插法将文本信息存储到链表已申请好的存储空间中,在此部分设计中最大的问题在于输入文章过程中输入的字符数大于80时如何换行;对于文本内容的统计,使用循环对已存储的文章进行匹配,大写字母数、小写字母数、空格数、数字数直接通过比较即可得到,标点符号通过ASCⅡ比较即可得到;对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同的记录相同的个数及位置并输出个数及位置。删除部分先使用程序的查找功能对文章中需要删除的字符或者字符串进行查找,然后对其进行删除。插入部分为通过输入的插入位置(行、列)将字符或者字符串插入到文章制定位置。内容三:该程序分6个模块完成各项功能,通过主函数调用个函数完成实验,以达到实验目的。1、显示模块:用于对学生的基本信息的显示,可以用函数voidprint(ID*head)来实现,2、添加学生信息模块:其中包括学生的学号,姓名,年龄,性别以及学生的高数成绩、线代成绩、英语成绩;可用函数ID*cin(ID*head)来实现此操作。3、查询模块:用于对学生的基本信息查询,通过学生的学号进行查找,可用ID*find(ID*head)来实现。通过学好查询,找到学生信息,输出包括初始是输入的一切信息。4、排序模块:可用函数ID*sort(ID*head来实现。其中通过平均分的高低来比较,并且以此来排序。5、删除学生信息模块:通过学生的学号来查找,找出相应信息确定删除,可以通过函数ID*delet(ID*head)实现此功能。6、修改学生信息模块:通过对学生学号查找,找出相应的信息进行修改,可以通过函数ID*alter(ID*head)实现此操作。7、安全退出系统与自动保存文件模块:可用一个函数综合模拟实习第4页共24页ID*over(ID*head)来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。2.算法描述(可插入流程图)内容一:开始建立一个线性表L,将所有变量赋初值为1,表示牌正面向上i=2&&i=52j=i&&j=52,j%i=0翻牌,如果flag[j]=1,则变为0翻牌,如果flag[j]=1,则变为0j++输出线性表中正面向上的牌的编号结束综合模拟实习第5页共24页内容二:(1)、统计字符个数算法流程图(2)、查找某一字符串出现的次数算法流程图(3)、删除某一字符串算法流程图i=0n=0iNi=Nc=strstr(wz[i],s)c!=0c=0c=strstr(c+lens,s)n++i++returnn算法结束i=0n=0iNi=Nj=0len=strlen(wz[i])jlenj=lenif(wz[i][j]=n1&&wz[i][j]=n2)n++j++i++returnn算法结束综合模拟实习第6页共24页内容三:根据本系统的模块划分及流程,分别从学生学籍管理,成绩管理,和用户管理等主要功能模块进行分析。用户管理模块图用户登陆学籍添加学籍删除i=0n=0iNi=Nc=strstr(wz[i],s)c!=0c=0leni=strlen(wz[i]);lenc=strlen(c);p=leni-lencreturnn算法结束for(k=1;k=lens;k++){for(j=p;j=leni;j++)wz[i][j]=wz[i][j+1];leni=strlen(wz[i])wz[i][j-1]='\0';leni=strlen(wz[i]);}c=strstr(wz[i],s);i++综合模拟实习第7页共24页学生信息管理功能管理模块图成绩管理模块五、程序设计1.程序设计的基本思路内容一:第一步:定义i,j变量和flag[52]数组。即inti,j,flag[52];第二步:利用一个for循环,将flag数组中所有元素的值赋为1,表示正面朝上。即for(i=0;i52;i++)flag[i]=1;成绩管理添加成绩查询成绩成绩的汇总信息:总分,平均分,排序等。成绩的修改成绩的删除综合模拟实习第8页共24页第三步:用一个for循环控制基数的变化,再用一个for循环控制牌的数量并嵌套在上一个循环中,再用一个if判断,判断其是否符合被翻转的条件。即for(j=2;j=52;j++)for(i=0;i52;i++)if((i+1)%j==0)flag[i]=flag[i]?0:1;printf(正面向上的牌:\n);第四步:对flag数组进行遍历,输出正面向上的牌。即for(i=0;i52;i++){if(flag[i])printf(%d\n,i+1);}内容二:存储结构:采用单链表结构存储文章,每个结点存储一行,每行最长不超过80个字符。一、输入模块结构定义:typedefstructlinechar*data;//字符串指针需要时动态分配内存structline*next;}LINE;算法描述:用gets函数接收输入,每遇到一个回车换行就新建一个结点,将当前行存入其data域。当发现输入为^E时,在Data的最后加上字符串结束标志,并置当前结点的Next指针域为NULL。二、统计模块模块包括统计全部字母数,统计数字个数,统计空格个数,以及统计文章总字数,这四个部分的实现算法大体相同,四者的关系是:全部字母数+数字个数+空格个数=文章总字数,也就是说可以在统计出其中三者的前提下计算出第四个的数综合模拟实习第9页共24页量。另外一个重要的统计功能是统计某一字符串在整篇文章中出现的次数,这个需要用到串的模式匹配算法来实现。三、删除模块删除模块的算法思想类同统计字符串的算法思想,由于采用了链表的存储结构,使得删除算法的时间复杂度大大减少。voidDel_String(LINE*&head,char*sch){//删除指定的字符串LINE*p=head;do{while(strstr(p-data,sch)!=NULL)del_string_word(p-data,sch);}while((p=p-next)!=NULL);//遍历链表内容三:该系统由以下功能模块组成:1.登录模块:输入相应的信息登陆该系统。2.系统维护模块:课程设置子模块:在每学期开始需要进行本学期需要开设课程的设置。在某一课程发生变动时可以进行课程的维护。3.学生信息管理模块:新生信息录入子模块:在每学年开始或中间可以进行学生信息的录入,包括学生的基本信息等。学生信息查询子模块:方便教务管理人员快速的查找某一学生。分为按照学生的姓名进行查找和按照学生的所在班级名进行查找。利于管理人员随时掌握学生信息。更新学生信息子模块:教务管理人员可以随时更改学生的某些信息,包括学生姓名、身份证号、班级等信息的更改。4.学生成绩管理模块:学生成绩录入子模块:按照学生考试的时间和课程录入学生的考试成绩。学生成绩查询子模块:方便教务管理人员快速的查找某一学生的综合模拟实习第10页共24页成绩。分为按照学生的姓名进行查找和按照学生的所在班级名进行查找。利于管理人员随时掌握学生考试信息。该系统的所有模块的设计均采用VC++6.0为开发环境,在各个模块的设计中都使用主要应用的函数和语句有循环,查找,删除等。2.程序代码内容一:#includestdio.hvoidmain(){inti,j,flag[52];for(i=0;i52;i++)flag[i]=1;for(j=2;j=52;j++)for(i=0;i52;i++)if((i+1)%j==0)flag[i]=flag[i]?0:1;printf(正面向上的牌:\n);for(i=0;i52;i++){if(flag[i])printf(%d\n,i+1);}}内容二:#includestring.h#includestdio.htypedefstructline{char*data;structline*next;}LINE;//创建链表,向里面输入文本数据//向屏幕输出文字voidOutPut(LINE*&head){LINE*p=head;printf(输入的文章为:\n);do{printf(%s\n,p-data);}while((p=p-next)!=NULL);//遍历链表printf(\n);}voidmenu()综合模拟实习第11页共24页{printf(*********************文章编辑**********************\n);printf(*************************************
本文标题:C++课程设计完整版
链接地址:https://www.777doc.com/doc-4973914 .html