您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > 学生成绩管理系统(C++)
计算机高级语言课程设计报告——学生成绩管理系统班级:191142班学号:姓名:日期:2015年1月22日一课程设计题目与要求(包括题目与系统功能要求)【实习内容】C++语言,面向对象的分析与设计。【基本要求】学生成绩管理是高等学校教务管理的重要组成部分,主要包括学生成绩的录入、删除、查找及修改、成绩的统计分析等等。请设计一个系统实现对学生成绩的管理。系统要求实现以下功能:(1)增加记录:要求可以连续增加多条记录。(2)删除一个学生的记录:要求可以先查找,再删除。删除前,要求用户确认。(3)成绩修改:若输入错误可进行修改;要求可以先查找,再修改。(4)查找:可以根据姓名(或学号)查找某个学生的课程成绩,查找某门课程成绩处于指定分数段内的学生名单等等。(5)统计分析:对某个班级学生的单科成绩进行统计,求出平均成绩;求平均成绩要求实现函数的重载,既能求单科的平均成绩,又能求三科总分的平均成绩。求出一门课程标准差和合格率;(6)排序功能:要求按总分进行排序(从高到低),若总分相同,则按数学排序;若总分和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排序;(7)文件操作:可以打开文件,显示班级的所有学生信息;可以将增加或修改后的成绩重新写入文件;可以将排序好的信息写入新的文件。【较高要求】查找可以实现模糊查询,即输入名字的一部分,可以列出满足条件的所有记录。再从这个记录中进行二次选择。二需求分析【问题描述】在编写过程中,主要的困难有:1.模糊搜索(不能使用string中的find函数)需要自定义一个函数。2.排序,需要自己学习算法。【系统环境】VisualC++6.0三概要设计流程图如下:四详细设计【增加记录】:【删除记录】:先查找出要删除的信息,然后再删除。删除前要求用户是否确认删除。确认则在数据库中删除然后会主菜单。否则回主菜单。【成绩修改】:查找出用户所要修改的信息。然后在数据库中将信息提取出来,修改前要求用户是否确认修改,若要修改,修改后回主菜单。否则直接会主菜单。【查找】:查找分为某门成绩分数段查找和个人信息查找,个人信息查找支持模糊搜索。可根据学号或姓名进行查找,查找后支持二次搜索。【统计分析】:统计分析主要是了解各科的总体情况,平均分、及格率、以及标准差。即可查询单科也可查询全科。【排序】在主菜单中选择排序,然后系统先根据总成绩排序。若总成绩相等,比较数学则按数学排序;若总成绩和数学相同,则按物理排序;若总分和各科成绩都相同,则按学号排序;【退出系统】:在主菜单中选择退出系统。择结束程序。【设计的类的代码】:classmanagement{private:vectorstudentstu;public:voidaddtxt();voiddeletetxt();voidchangetxt();voidfindtxt();voidfindtxt1();voidptxt();voidotxt();voiditxt();voidshow();voidttxt();voidttxt(int,int);};classstudent{private:stringm_id,m_name;intm_math,m_eng,m_phy;public:student(string,string,int,int,int);student(conststudent&);~student(){};stringgetId();stringgetName();intgetMath();intgetEng();intgetPhy();inttotal();studentoperator=(conststudent&);//};五测试【原有数据】20121000290边达宇75606520121000424王晨85959620121000553高佳维86939020121000570初国利85878520121000584利振彬70888820121000818孟珂90869620121000921罗云迪86907520121001121田甜95858720121001248王如男90899420121001316邵叶飞80848620121001375周晨曦87869020121001695王洪96889120121001842尹笛露85909420121002002刘宇坤88869020121002152尹然宇82908820121002162孙史磊80948020121002269陈云锅83958520121002321于文涛88908620121002439景揭俊85928520121002585戴贤铎88867820121002685曹厚臻90879020121002775马晴93859020121003127冯泽宇80897520121003358肖寒88909020121003359张赓87958420121003398刘剑峰88848620121003399龚方怡90939620121004233贾国栋88908620121004415孙一卓869590六结论【亮点】1.能够二次模糊搜索2.代码简便、易懂。【不足】1.算法比较粗糙。七附录#ifndefSTUDENT_H#defineSTUDENT_H#includeiostream#includevector#includefstream#includestring#includeiomanip#includecmathusingnamespacestd;classstudent{private:stringm_id,m_name;intm_math,m_eng,m_phy;public:student(string,string,int,int,int);//构造函数student(conststudent&);//复制构造函数~student(){};//析构函数stringgetId();//自定义接口stringgetName();intgetMath();intgetEng();intgetPhy();inttotal();studentoperator=(conststudent&);//=号重载};#endif#ifndefMANAGEMENT_H#defineMANAGEMENT_H#includestudent.hclassmanagement{private:vectorstudentstu;public:voidaddtxt();//增加记录voiddeletetxt();//删除记录voidchangetxt();//成绩修改voidfindtxt();//模糊搜索voidfindtxt1();//分数段搜索voidptxt();//排序voidotxt();//文件输出voiditxt();//文件写入voidshow();//输出voidttxt();//统计分析voidttxt(int,int);//统计分析重载};#endif#includestudent.hstudent::student(stringid=0,stringname=0,intmath=0,inteng=0,intphy=0){m_id=id;m_name=name;m_math=math;m_eng=eng;m_phy=phy;}student::student(conststudent&s){m_id=s.m_id;m_name=s.m_name;m_math=s.m_math;m_eng=s.m_eng;m_phy=s.m_phy;}stringstudent::getId(){returnm_id;}stringstudent::getName(){returnm_name;}intstudent::getMath(){returnm_math;}intstudent::getEng(){returnm_eng;}intstudent::getPhy(){returnm_phy;}intstudent::total(){return(getMath()+getEng()+getPhy());}studentstudent::operator=(conststudent&s){m_id=s.m_id;m_name=s.m_name;m_math=s.m_math;m_eng=s.m_eng;m_phy=s.m_phy;return*this;}#includemanagement.h#includecmathvoidmanagement::addtxt(){//增加记录stringid,name;intmath,eng,phy,m;intp(0);while(1){cout请输入您所添加的信息:endl;cinidnamemathengphy;students(id,name,math,eng,phy);for(inti=0;istu.size();i++){if((s.getId()==stu[i].getId())&&(s.getName()==stu[i].getName())){cout数据库已有此人!不能再添加!endl;p++;}}if(p==0){stu.push_back(s);otxt();}cout是否继续增加?(继续回复1。否则回复0.)endl;cinm;if(m==0)break;}}voidmanagement::itxt(){//文件写入ifstreamifile;ifile.open(D:\\data.txt);stringid,name;intmath,eng,phy;do{ifileidnamemathengphy;students(id,name,math,eng,phy);stu.push_back(s);}while(!ifile.eof());ifile.close();}voidmanagement::otxt(){//文件输出ofstreamofile;ofile.open(D:\\date.txt);for(inti=0;istu.size();i++)ofilesetw(20)stu[i].getId()setw(6)stu[i].getName()setw(6)stu[i].getMath()setw(6)stu[i].getEng()setw(6)stu[i].getPhy()endl;ofile.close();}voidmanagement::show(){cout学号'\t''\t'姓名'\t'数学'\t'英语'\t'物理'\t'总分endl;for(inti=0;istu.size();i++){coutstu[i].getId()'\t'stu[i].getName()'\t'stu[i].getMath()'\t'stu[i].getEng()'\t'stu[i].getPhy()'\t';coutstu[i].total()endl;}}voidmanagement::findtxt(){//模糊搜索vectorstudents;stringm,n;intp(0),q(0);inti,j,k,x,a,b,c;cout请输入您需要查找的学号或姓名:endl;cinm;for(i=0;istu.size();i++){for(j=0;jm.size();j++){if(m[j]!=stu[i].getId()[j])break;}if(j==m.size()){s.push_back(stu[i]);p++;coutstu[i].getId()'\t'stu[i].getName()'\t'stu[i].g
本文标题:学生成绩管理系统(C++)
链接地址:https://www.777doc.com/doc-7028367 .html