为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C++项目+学生成绩管理系统

2022-04-02 7页 doc 45KB 2阅读

用户头像 个人认证

is_958165

暂无简介

举报
C++项目+学生成绩管理系统C++项目学生成绩管理系统课程设计报告课程名称:计算机高级语言(C++)课程设计课程设计题目:学生通讯管理系统系:数学与计算科学系专业:信息与计算科学年级、班:信计1002姓名:肖会201005002230学号:指导教师:牛志毅职称:讲师2011年12月一、课程设计目的:用本学期学习的C++语言,完成一个管理类型的小型软件。通过控制台小软件的开发过程,进一步掌握C++程序设计方法,培养学生的创新能力和创新意识。二、需求分析:用户需要管理学生成绩信息,这些信息包括:学号、姓名、英语成绩、数学成绩、C++成绩。系统需要对这些信息执...
C++项目+学生成绩管理系统
C++项目学生成绩管理系统课程设计课程名称:计算机高级语言(C++)课程设计课程设计目:学生通讯管理系统系:数学与计算科学系专业:信息与计算科学年级、班:信计1002姓名:肖会201005002230学号:指导教师:牛志毅职称:讲师2011年12月一、课程设计目的:用本学期学习的C++语言,完成一个管理类型的小型软件。通过控制台小软件的开发过程,进一步掌握C++程序设计方法,培养学生的创新能力和创新意识。二、需求分析:用户需要管理学生成绩信息,这些信息包括:学号、姓名、英语成绩、数学成绩、C++成绩。系统需要对这些信息执行的操作包括:求总分、求平均分、按总分排序、删改或增加学生数据、保存.除了满足基本功能外,还尽量使程序设计得简单,高效,而且没有漏洞.三、概要设计:第一,确定要使用类这种数据结构,并且构建三个类。第一个是学生(Student),这样可以把学号、姓名、各科成绩紧密联系在一起;第二个是班级,用户的需要的功能都是建立在班级这个载体上的,所以建立班级(Class)类是理所当然的;第三个菜单(Menu),这个类是沟通程序和用户的重要桥梁,用户通过Menu了解如何使用本程序,而Menu调用程序,来实现各种操作.第二,建立三个类之间的关系,班级类是学生类的友元,具体致可描述如下:“““菜班学调用操作单级生”””类类类四、详细设计:1、主程序流程图:开始显示欢迎页面显示菜单,等待输入输入操作代码执行相应操作是是否继续否是是否保存否结束保存操作2、菜单类共有成员函数包括:ShowMenu(显示菜单)、ShowTip(显示操作提示)、DoMenu(进行相应操作)、Exit(退出前是否保存).3、关于Class类。私有成员为学生人数、学生数组指针、已经改动数据的标识(布尔型)。公有成员为一系列操作(比如显示全体数据,插入或删除学生成绩,清空数据库等等)。五、程序实现思路:1、整体思路:采用C语言的思路:自底向上,逐步求精,模块化的原则.首先写出主函数,然后在把班级和菜单分别在不同的头文件,最后在不同的CPP文件中写实现方法.2、建立一个while(1)循环,如果用户不想退出,则一直执行下去。3、DoMenu函数采用switch语句实现,把类指针(&C),以及班级人数(num)作为函数的参数。4、定义构造函数对班级类初始化,建立文件输入输出流,建立flag来判断数据是否更改;定义析构函数来释放班级数组空间,便于下次操作.5、插入或删除学生成绩时,对该学生进行检查,确定是否存在,然后才执行相应操作.6、使用冒泡排序法(两层for循环),进行学生总成绩排序.7、计算等级时候,采用switch语句,参数为((int)科目/10),然后分支统计各个层次的同学的个数。8、清空数据之前,再次提醒用户,是否执行这次操作,这样做可以防止因操作失误而带来的巨大损失。六、设计:做完这个课程时,差点就激动得泪流满面。首先,为了能够用(class)类的知识完成设计,平时认认真真地把预习后面的知识,然后把习题做一遍,再核对参考。记得这一周,我居然破天荒地泡在图书馆,研读第九章到第十四章。总算把正本书浏览完了,当然,不可能说掌握。然后,我把老师发给我们的“student1”和“student2”看一遍,貌似都理解了。但是我觉得链的方法更加难以理解,于是主攻用类实现的源代码。接着,开始自己尝试编码。花好几天才把有头绪,由于以前都是在一个CPP文件编译的,所以一下子要用多文件编程,感觉非常吃力,居然进行不下去了。最后,利用周六的假期,赌一把拼了,终于在凌晨完工~编译通过,界面满意,验算无误。加起来,有四百七十几行代码呀~除了老师直到完成的两百行,自己也做了一半了,受益匪浅,恭喜自己~七、参考文献:《C++程序设计》(谭浩强著);《全国计算机等级考试公共基础知识》(高等教育出版社);《高质量C++》(网络电子书);八、源代码:见“肖会—源代码”文件。//Main.cpp文件/*************************************************项目名称:学生成绩统计管理系统。编程软件codeblocks。编译器和调试器:mingw32-g++。exe。编程者:信计1002班肖会.学号:201005002230。指导老师:牛志毅.完成时间:2010年12月。***************************************************/#include”Class。h"#include"menu。h"#include〈iostream〉#include〈cstdlib>usingnamespacestd;intmain(){Classxinji2;//创建班级对象“信计1002”Menumenu;//创建菜单对象“菜单”charch;menu.ShowMenu();//显示菜单cout〈<"选择对应数字进行操作:”;while(1){cin〉〉ch;system(”cls");//清除屏幕,所以要包含〈cstdlib>头文件menu.ShowMenu();//显示菜单menu.DoMenu(xinji2,ch);//执行菜单menu。ShowTip();//显示提示}return0;}//Class.h文件#ifndefCLASS_H_INCLUDED#defineCLASS_H_INCLUDED#include〈string〉usingnamespacestd;constintMAXSIZE=50;classStudent{public:friendclassClass;//声明Class类是Student类的友类,以便调用Student类的私有数据Student():id(0),name(”noname”),english(0),math(0),cpp(0){}doubletotal();//计算学生的总成绩protected:intid;//学号stringname;//姓名doubleenglish;//英语成绩doublemath;//数学成绩doublecpp;//C++成绩};classClass{intnum;//学生人数Student*cp;//用于引用Student数组的指针boolflag;public:Class();//无参构造方法~Class();//析构函数boolGetFlag(){returnflag;}voidAdd();//添加一个学生的信息voidShow();//显示所有学生的信息voidPrintHead();//输出表头voidPrintInfo(intn);//输出索引号为n的学生的信息voidSetScore();//录入指定学号的学生的成绩voidDelete();//删除删除指定学号的学生信息voidClear();//清除所有学生intSearch(intsno);//查找学号为n的学生,返回其索引号(数组下标)voidFind();//查找并显示学号为n的学生的信息voidAverage();//求学生的平均成绩,以及等级分布voidRanking();//跟均学生的总成绩进行排名voidSave();//将学生信息保存到文件};#endif//CLASS_H_INCLUDED//Menu。h文件#ifndefMENU_H_INCLUDED#defineMENU_H_INCLUDED#include”Class。h”classMenu{public:voidShowMenu();//显示菜单voidShowTip();//显示操作提示voidDoMenu(Class&C,charn);//执行相应菜单项功能voidExit(Class&C);//退出操作};#endif//MENU_H_INCLUDED//Class.cpp文件//Class.cpp文件#include"Class。h”#include#includeusingnamespacestd;Class::Class()//构造函数,读取“data.txt”文件中的数组构造班级{num=0;ifstreaminfile("data.txt");//创建文件输入流,文件位于项目文件夹中if(!infile){cerr〈<"打开数据文件错误,程序退出~\n";exit(1);}else{infile〉〉num;//读取班级人数cp=newStudent[MAXSIZE];//开辟一个Class类数组for(inti=1;i〈=num;i++){infile>〉cp[i].id;infile〉>cp[i].name;infile〉>cp[i]。english;infile〉〉cp[i].math;infile〉>cp[i].cpp;}}flag=false;//设置数据没改动infile.close();//关闭文件}Class::~Class(){delete[]cp;//释放班级数组空间}voidClass::Save(){ofstreamoutfile(”data.txt”);if(!outfile)cerr〈〈"错误:数据文件不能打开!\n";else{outfile〈cp[n]。english;cout<〈"math:”;cin>>cp[n].math;cout〈〈”C++:”;cin>〉cp[n]。cpp;flag=true;//数据已经改动}}voidClass::Add()//添加一个学生的信息{intsno=0;if(num〉=MAXSIZE-1){cout<<”班级空间已满,添加失败~";}else{cout〈〈"请输入学生的信息:"〈〈endl;cout<<"学号:”;cin>>sno;if(Search(sno)!=0){cout〈<"学号为"<〈sno<〈”的学生已存在”;return;}cp[num+1].id=sno;cout<<"姓名:";cin〉>cp[num+1].name;cp[num+1]。english=0;cp[num+1].math=0;cp[num+1].cpp=0;num++;flag=true;}}intClass::Search(intn){for(inti=1;i<=num;i++)if(cp[i].id==n)returni;//返回找到的学生的索引号(数组下标)return0;//没找到,返回0,}voidClass::PrintHead()//输出表头,以下用到setw语句,所以要注意加头文件#include〈cstdlib>usingnamespacestd;voidMenu::ShowMenu(){cout〈<"?????欢迎来到学生信息管理系统?????”〈〈endl〈〈endl;cout〈<"|+++++++++++++++++++++++++++++++++++++++++++|"<〈endl;cout〈<"|1.显示:显示所有学生的信息|”<〈endl;cout<〈"|2。添加:添加一个学生的信息|"〈〈endl;cout<〈”|3。录入:录入指定学生的成绩|"〈〈endl;cout〈〈”|4。查找:查找指定学生的信息|"<〈endl;cout〈〈”|5。删除:删除指定学号的学生|”〈
/
本文档为【C++项目+学生成绩管理系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索