您好,欢迎访问三七文档
一、设计内容与设计要求1.课程设计目的:全面熟悉、掌握计算机系统与系统软件基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉C++语言编程,养成提供文档资料的习惯和规范编程的思想,为后继课程的实验以及课程设计打下较扎实的基础。进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。2.课题题目1、学生成绩管理系统2、职工信息管理系统3、图书管理系统程序系统4、教师工作量统计系统3.设计要求:主要模块1、学生成绩管理系统具有功能:1、显示统计数据2、查找学生成绩3、修改学生成绩4、删除学生成绩5、插入学生成绩6、按平均分降序排列7、显示全部学生成绩8、退出本系统课程设计报告规范1、完成系统需求分析:包括系统设计目的与意义;系统功能需求;输入输出的要求。2、完成系统概要设计:程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。3、完成系统详细设计:包括采用C++语言定义相关的数据类型;写出各模块的类C++码算法;画出函数的调用关系图。4、调试分析、设计体会、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。5、关键源程序(带注释)6、其他1)设计正确,方案合理。2)界面友好,使用方便。3)程序精炼,结构清晰。4)设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。5)实际操作过程中遇到的问题及解决方法:设计总结及心得体会.6)上机演示。二、进度安排第16周星期一14时:00分星期二14时:00分星期四14时:00分星期五14时:00分第17周星期一14时:00分星期二14时:00分目录1系统需求分析......................................................12总体设计..........................................................12.1总体设计图...................................................12.2各函数之间的调用关系.........................................23详细设计..........................................................33.1采用C++语言定义的相关数据类型...............................33.2各模块的c++类代码...........................................43.2.1构造函数.................................................43.2.2查找函数.................................................43.2.3修改函数.................................................53.2.4删除函数.................................................63.2.5排序函数.................................................64调试分析及设计体会................................................84.1程序运行的结果...............................................84.2程序调试中的问题............................................115使用说明.........................................................136心得体会.........................................................147.附录.............................................................168评分表...........................................................2511系统需求分析利用C++语言和相关指针的知识创建一个班级管理系统,实现学生相关信息的查询,即实现:(1)录入学生数据(2)查找学生成绩(3)修改学生成绩(4)删除学生成绩(5)插入学生成绩(6)按降序排列(7)退出本系统在实现这个程序系统需求的过程中,出了掌握C++的基本知识之外,最主要的还要掌握指针的熟练应用,在这个程序过程中,主要是利用查找指针,对应匹配指针值,交换指针链表,实现删除指针的过程看来实现上面的功能,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的基础。2总体设计2.1总体设计图班级管理系统录入查找修改删除排序退出22.2各函数之间的调用关系学生成绩管理系统录入学生信息退出该系统实现学生成绩系统的各项功能查询删除排序修改按照姓名查询按照学号查询按照降序进行排列3(1)student类函数,定义一个学生类,包含了所有的学生信息,比如学生的姓名,学号,以及各相关课的成绩和平均成绩。还有建立一个studentmessgae类,实现学生成绩的录入,查询,修改和删除,排序等。(2)在该课设中实现的前提是建立了一个指针,通过指针的方式实现数据的录入,并将其存入到文件中,便于后面的查询。(3)函数的查询过程是通过姓名和学号查询的,通过函数,巽宅相匹配的姓名或者学号,实现其相关信息的查询,在查询的过程中,是通过指针的形式实现的。(4)删除函数就是在文件中删除这个学生的信息,也就是寻找该指针,吧它的下一个指针赋值给它,而将它的指针清空。(5)排序是通过他们的平均分进行排序,并将他们按照降序的方式进行排序。3详细设计3.1采用C++语言定义的相关数据类型该班级成绩管理系统主要采用的是类的基本数据类型,建立相关的学生类和学生信息类,包含学生的所有相关信息,同时在将学生定义为一个指针的类型,为方便后面功能的实现。classStudent//学生类的创建{public:charname[20];charId[20];intCnum;//C++课程得分intMath;//数学课程得分intEnglish;//英语课程得分intchinese;intavergae;//总分Student*Next;//将学生定义为一个指针};创建的是学生信息类,主要将要实现的各类函数放在这样的一个类中,便于后面程序的进一步实现。classStudentmassage//Studentmassage类4{public:Studentmassage();//构造函数~Studentmassage();//析构函数voidShowMenu();//菜单函数voidFind();//查找函数voidSave();voidModifyItem();//修改函数voidRemoveItem();//删除函数voidSwap(Student*,Student*);//交换函数voidSort();//排序函数intListCount();};3.2各模块的c++类代码3.2.1构造函数构造函数,是一种特殊的方法。主要用来在创建对象时初始化对象,即为对象成员变量赋予初值,总与new运算符一起使用。特别的一个类中可以有多个构造函数。此构造函数就实现了对初始对象的创建,要注意此构造函数的函数名与类名是相同的。由于在建立的此学生是一个指针的类型,所以在初始化它时,要根据指针赋值的方式进行,具体的代码如下:Studentmassage::Studentmassage(){Head=newStudent;Head-Next=newStudent;End=Head-Next;}3.2.2查找函数班级成绩系统中查找函数主要实现的功能是准确实现用户想要查询的学生相关的信息。这里可以查询的方式有姓名查询和学号查询。由于在初始焕姓名和学号时使用的是数组的方式,故在此处也要结合数组和指针的方式进行查询。首先定义一个p指针为空,在按照姓名查询的时候,如果用户查找的姓名所指向的指针与文件中保存的姓名所指向的指针相匹配的,则将该学生所指向的指针的值返5回给用户,如果匹配不成功,则输入任意的值进行继续。学号查询也是一样的原理。有关具体的实现过程如下:Student*p=NULL;//定义一个p指针为空cout\t\t请输入要查找的学生的姓名:;cinname;//按照姓名进行查询if(p=FindItem(name)){p-Next-Show();cout输入任意字符!继续……;getch();}else{cout\t\t没有找到该姓名的学生!'\n'endl;cout输入任意字符!继续……;getch();}}break;3.2.3修改函数修改函数在本班级成绩系统中,主要指通过姓名查询找到相关的学生的信息,在用户想要修改的地方进行修改。此过程的实现与上面查找函数的实现差不多。同样也是定义一个学生指针p,并将它置空,然后再输入学生姓名,并将其指向的指针赋值给p,从头依次进行匹配,如果文件保存的数据中有与它相匹配的指针,则将它的内容赋予p,并进行显示,并让用户进行修改,具体的实现过程如下显示:Student*p=NULL;cinname;if(p=FindItem(name)){cout\t\t已找到学生的信息,请输入新的信息!endl;p-Next-Input();cout修改成功!endl;cout输入任意字符!继续……;getch();}else{cout\t\t没有找到!endl;cout输入任意字符!继续……;getch();}6}3.2.4删除函数删除函数主要实现的功能是根据用户需求,适当删除学生的信息。在这个函数的实现过程中,也采用的是指针相匹配的运行过程,输入姓名后依次进行所输入姓名指向的指针和文件指针中相匹配的指针,如果在该文件中有此指针,则将该指针进行相应的运算后置为空。Student*p=NULL,*temp=NULL;cinname;if(p=FindItem(name)){temp=p-Next;p-Next=p-Next-Next;deletetemp;cout\t\t删除成功!endl;cout输入任意字符!继续……;getch();}else{cout\t\t没有找到!endl;cout输入任意字符!继续……;getch();}}3.2.5排序函数本程序中的排序就比较复杂一些,它并不是按照成绩直接进行排序的,而是按照该学生所指向的指针形成的链表进行排序的。如果当前所在的学生的成绩比后面的学生的成绩低的话,这将它们所指向的指针的位置进行调换,而不是将它们的值进行调换,从头到尾依次进行比较,直到所有的程序排名结束为止。Student*p=NULL,*p1=NULL,*k=NULL;intn=Studentmassage::ListCount();if(n2)return;for(p=Head-Next;p!=End;p=p
本文标题:班级成绩管理系统
链接地址:https://www.777doc.com/doc-2194551 .html