学生成绩管理系统文档王斌.docx
- 文档编号:15070921
- 上传时间:2023-06-30
- 格式:DOCX
- 页数:19
- 大小:65.92KB
学生成绩管理系统文档王斌.docx
《学生成绩管理系统文档王斌.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统文档王斌.docx(19页珍藏版)》请在冰点文库上搜索。
学生成绩管理系统文档王斌
《高级语言课程设计》
实验项目:
学生成绩管理系统
学号:
1027328255
姓名:
王斌
专业:
网络工程
班级:
10-5
指导教师:
徐素锦
成绩:
2011年12月22日
2.2.3学生成绩管理模块设计…………………………………………………………6
1、系统分析
1.1系统分析结构图:
1.2系统功能分析:
学生成绩录入模块中:
管理人员能通过手动输入学生信息,同时可以通过文档流导入大量学生信息。
学生信息管理模块中:
管理人员能查看、添加、删除、修改学生信息。
学生成绩管理模块中:
管理人员能查看所需要的各种学生信息,以及查询某个学生或某个班级的学生成绩。
权限:
全部可用
2、
系统设计
2.1数据结构设计
2.1.1定义课程分数类Score
classScore{//课程成绩类
private:
charname[40];//课程名
intcredit;//学分
floatscore;//成绩
public:
voidsetInfo(char*courseName,intcre,floats);
char*getName();
intgetCredit();
floatgetScore();
voidprint();
}
2.1.2定义Person类
classPerson{//Person类
protected:
charname[20];
intage;
charsex;
public:
voidsetInfo(char*pName,intpAge,charpSex);
voidprint(){
cout<<"\t姓名:
"< "< } }; 2.1.3定义学生类型Student classStudent: publicPerson{//学生类Student继承自Person类 private: charstuId[10];//学号 charclassName[10];//班级 floattotal;//总成绩 floatave;//平均成绩 intallCredi;//总学分 intcourseNum;//课程数 boolisLess60;//60分以下课程 public: vector voidsetInfo(char*sID,char*sName,intage,charsex,char*clas);//设置学生信息 voidaddScore(Score&one);//添加课程成绩信息 voidprint();//输出学生信息 voidprintLess60();//输出60分以下的课程 char*getStuId(); char*getClassName(); vector floatgetTotal(); floatgetAve(); intgetAllCredi(); intgetCourseNum(); boolgetIsLess60(); char*getName(); }; 2.1.4定义班级类Class classClass{//班级类 private: charclassName[10];//班级名 intnum;//班级人数 public: vector voidaddStu(Student&one);//向学生向量stu中添加学生 voidprintAll();//输出该班级的所有学生信息 char*getClassName(); intgetNum(); vector vector voidsetClassName(char*cName); booldelSut(char*id);//删除学生信息 voidsortById();//按学号排序 voidsortByScore();//按分数查找 }; 2.1.5定义全局变量 intstuNum;//全局变量stuNum存放当前学生人数 vector 2.2各功能模块设计 2.2.1学生记录录入模块设计 1从键盘输入学生各种信息,学号,姓名,年龄,性别,班级,成绩: 课程名称,学分,成绩。 遍历全局变量,把学生对象添加到相应的班级中,不存在班级,新建班级对象,把该学生添加进去, 2从文件中录入学生信息,运用文件流从文件读取相应信息 2.2.2学生信息管理功能模块设计 1学生信息显示,遍历allClass,再遍历相应班级里的学生。 输出学生信息, 2学生信息添加,调用从键盘输入信息的方法。 3删除学生信息,遍历全部学生信息,查找该学生,找到了则删除该学生对象,找不到返回“未找到该学生” 4学生修改信息,遍历全部学生,查找指定,找到该学生,修改学生各种信息,然后重新赋值给该对象。 2.2.3学生成绩管理功能模块设计 1按学号排大小: 遍历allClass先确定班级,再遍历该班级的每个学生,根据每个学生的学号,用冒泡方法排序。 2按总成绩高到低排列: 遍历allClass,先确定班级,然后遍历该班级的每个学生,根据每个学生的总成绩,用冒泡方法排序。 3输出所有60分一下的学生: 遍历全部学生成绩。 假如有低于60分的课程,则输出该学生信息。 4输出所有80分以上的学生: 遍历全部学生成绩。 假如有高于80分的课程,则输出该学生信息。 5查询指定学生的信息: 遍历全部学生信息,根据学号查找该同学,存在,输出该学生信息, 不存在,输出“不存在该学生” 6查找指定姓名的学生信息: 遍历全部学生信息,根据学生姓名查找该同学,存在,输出该学生信息,不存在,输出“不存在该学生” 7查询指定班级的学生信息: 遍历全部班级,输出每个班级全部学生信息, 3、系统实现 3.1学生记录录入模块的实现 3.1.1键盘录入学生信息 voidreadFormKeyboard(){//键入学生信息 intn; cout<<"请输入需要录入的学生人数: "< cin>>n; charstuId[10]; charname[40]; intage; charsex; charclassName[10]; charcourseName[40]; intcredit; floatscore; intc; system("cls"); inti=0; intb=0; cout<<"\t\t\t录入学生信息"< while(n){ i++; cout<<"请依次输入第"< cin>>stuId>>name>>age>>sex>>className; Studentstu; stu.setInfo(stuId,name,age,sex,className); do{ b++; cout<<"请依次输入第"< cin>>courseName>>credit>>score; ScoreoneScore; oneScore.setInfo(courseName,credit,score); stu.addScore(oneScore); c=getchar(); }while(c! ='#'); if(getClass(className)==NULL){ Classc1; c1.setClassName(className); c1.addStu(stu); allClass.push_back(c1); }else{ Classc2=*getClass(className); c2.addStu(stu); } stuNum++; n--; } system("pause"); } 3.1.2文件导入学生信息 voidreadFromFile()//导入文件 { M: charstid[10];charstuName[40];floatAge;charsex;charclassname[10];charkechen[40];intcredit;floatsoc; intnum;intcourceNum;charfileName[40];floattotal; stringstr; cout<<"请输入你要录入的文件名: "; cin>>fileName; ifstreamfin(fileName); if(! fin)//文件不存在 { cout<<"不存在文件! "< gotoM; } getline(fin,str); istringstreamsin(str); if(sin>>num)stuNum+=num; for(inti=0;i { Studentstu; getline(fin,str);//读入第一行 istringstreamsin1(str);//定义字符串流对象sin1 sin1>>stid>>stuName>>Age>>sex>>classname; stu.setInfo(stid,stuName,Age,sex,classname); getline(fin,str); istringstreamsin2(str);//定义字符串流对象sin2 sin2>>courceNum; //getline(fin,str); for(intj=0;j { getline(fin,str); istringstreamsin3(str); sin3>>kechen>>credit>>soc; ScoreoneScore1; oneScore1.setInfo(kechen,credit,soc); total+=soc; stu.addScore(oneScore1); //getline(fin,str); } if(getClass(classname)==NULL) { ClassaClassname; aClassname.setclassname(classname); stu.settotal(total);total=0; aClassname.addStu(stu); allClass.push_back(aClassname); } else { Classoneclass=*getClass(classname); stu.settotal(total);total=0; oneclass.addStu(stu); *getClass(classname)=oneclass; } } }- 3.2学生信息管理功能模块的实现 3.2.1学生信息显示 voidprintAll(){//输出所有信息 system("cls"); for(inti=0;i ClassCla=allClass[i]; Cla.printAll(); } system("pause"); } voidClass: : printAll(){ for(inti=0;i Studentst1=stu[i]; st1.print(); } } 3.2.2学生信息添加 同键入学生信息 3.2.3学生信息删除 voiddelStu(){//删除指定学生信息 char*c=0; cout<<"请输入学号: "< cin>>c; boolisFind=false; for(inti=0;i boolcheck=allClass[i].delSut(c); if(check){ isFind=true;break; }else{ isFind=false; } if(isFind){ cout<<"删除信息成功! "< }else{ cout<<"未找到学生! "< } system("pause"); } } boolClass: : delSut(char*id){//删除学生信息 boolisFind; isFind=false; for(inti=0;i if(strcmp(stu[i].getStuId(),id)==0){ stu.erase(&stu[i]); returnisFind=true; } } returnisFind; } 3.2.4学生信息修改 boolClass: : reviseStu(char*id)//修改信息 { charsid[10];charname[40];intage;charsex;charClassname[10];stringstr;intnum;charaid[10];longnend; for(intt=0;t { Classccls=allClass[t]; for(inty=0;y { Studentcst=ccls.stu[y]; if(strcmp(cst.getStuId(),id)==0)//比较字符串是否相同 { cout<<"请输入用户的新信息"; cout<<"学号"; cin>>sid; cout<<"姓名"; cin>>name; cout<<"年龄"; cin>>age; cout<<"性别"; cin>>sex; cout<<"班级"; cin>>Classname; Studentostu; ostu.setInfo(sid,name,age,sex,Classname);//重新设置对象属性; ccls.stu[y]=ostu; allClass[t].stu[y]=ostu;//赋值 returntrue; } } returnfalse; } } 3.3.学生成绩管理功能模块实现 3.3.1按学号从小到大排序 voidsortById(){//按学号排序 cout<<"按学号从小到大排序后结果: "< for(into=0;o { cout<<"这是"< allClass[o].sortById(); } } voidClass: : sortById(){//按学号排序 char*s[100]={"ABV"};char*h="abcdfghi";Studentastu; for(inti=0;i s[i]=stu[i].getStuId(); } for(inti=0;i for(intj=0;j if(stu[j].getStuId() h=s[j];s[j]=s[j+1];s[j+1]=h; } } } cout< } 3.3.2按成绩从高到低排序 voidsortByScore(){//按成绩排序 Classclass2; class2.sortByScore(); } voidClass: : sortByScore(){//按成绩排序 intSOC=0;inta[5];char*b[100];ints=0;intnum=0;ScoreaSco; for(inti=0;i { ClassCcls=allClass[i]; for(intk=0;k { Studenttstu=Ccls.stu[k]; for(intj=0;j { num=Ccls.stu.size(); aSco=tstu.score[j]; SOC+=aSco.getScore(); } a[s]=SOC;b[s]=tstu.getName();SOC=0; s++; } } inttemp;char*btemp="abcdefg"; for(intkk=0;kk<5;kk++) { for(intak=0;ak<5-kk;ak++) { if(a[ak] =NULL&&a[ak+1]! =NULL) { temp=a[ak];a[ak]=a[ak+1];a[ak+1]=temp; } } } for(intbk=0;bk {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 文档