学生信息管理系统(C++).docx_第1页
学生信息管理系统(C++).docx_第2页
学生信息管理系统(C++).docx_第3页
学生信息管理系统(C++).docx_第4页
学生信息管理系统(C++).docx_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息科学与工程学院C+课程设计报告起止日期: 2013年 06月 17 日 至 2013 年 07 月 05 日学生姓名班级电气信息类学号指导教师2013年07月03号目录1引 言.3 1.1 课题背景及意义3 1.2 课程设计的目的及内容42系统需求分析.52.1 功能需求分析.52.2 系统总体结构设计53详细设计63.1 数据结构设计.63.2系统函数的组成、功能、参数说明、相互调用关系84设计测试流程105课程设计总结17参考文献.17附录.171引 言 为方便对学生成绩进行高效的管理,编写该程序以提高学生成绩管理效率。使用该程序之后,学校管理者可以查询某位学生、某个科目的成绩情况,还可以对学生成绩进行排名,对学生的数据进行修改和删除,其中排名包括总分排名和各个科目的排名,学生可以更具自己的个人信息进行成绩查询,查询结果包括各个科目的分数、总分和平均分。通过本系统可以很好的掌握学生成绩的分布,减轻管理人员的负担,也使学生的成绩和信息长时期的保留。1.1 课题背景及意义一直以来人们使用传统的人工方式管理学生成绩,在计算机尚未在学校广泛使用之前,学生成绩管理主要依靠手工。一个最典型的手工处理过程就是:当考试完后,老师就要把学生成绩登记到文档中,当老师或学生要查询成绩的时候要一个一个去找,总分、平均分都需要一个一个累加起来算,很麻烦,不过最麻烦的还是排名,不能一目了然。以上所描述的手工过程的不足之处显而易见,首先处理学生成绩的效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的。利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。我们很清晰的看到自己的各个科目成绩和每个科目的排名和总分排名以及所有学生的成绩分布,而且还是零失误,所有的都是一目了然。极大的方便了学生和老师。为提高成绩管理效率,管理人员的工作负担,有必要开发一个小型成绩管理系统来对学生成绩实施有效管理。1.2 课程设计的目的及内容目的:1、使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法;2、使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力;3、使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。内容:(一)小型学生成绩管理系统1、需要处理的基础数据 学生基本信息:如班级、学号、姓名、性别、年龄、宿舍号码、电话号码等。 学生选修课程的基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。2、系统的基本功能 数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息; 数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息; 数据的插入:插入某个学生信息; 数据的查询:如按学号查询、按姓名查询等; 数据的删除:如删除指定学号、或者指定姓名的学生及其选修课程信息; 平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息; 列出不及格学生清单(学号、姓名、不及格的课程和成绩)。 考虑用文件把数据保存起来(可选)。2系统需求分析2.1 功能需求分析0)录入数据:将学生的信息利用函数写入对象数组内。1) 增加人员:增加学生,将学生的信息利用函数写入对象数组内。2) 删除人员:删除学生信息和成绩。3) 修改数据:修改学生成绩。4) 按学号查询:根据学生学号,查询学生信息。5) 按姓名查询:根据学生姓名,查询学生信息。6) 输出所有学生成绩。7) 按总平均分排名:按照总平均分从高到低排序。8) 列出不及格学生:按照总平均分列出不及格学生信息。2.2 系统总体结构设计对学生成绩进行管理的系统,主要划分为以下三个模块:1) 操作:包括录入数据、增加人员、删除人员、修改数据。2) 查询:包括按总成绩查询、按姓名查询、输出所有学生成绩。3) 排名:按总分排名、按语文成绩排名、按数学成绩排名、按英语成绩排名根据需求分析的结果,总体结构如图2-1所示。 学生成绩管理系统 排序查询操作列出不及格学生按平均分排名 录入数据输出全部数据按学号查询按姓名查询增加人员删除人员修改数据图2.1系统总体结构3详细设计3.1 数据结构设计(1) 类的设计表3-1 Stu类成员列表Stu类char name20 char cla20int numberchar sexint ageint telechar class1100 char class2100 char class3100 double C11 double C12 double C21 double C22double C31double C32double C1 double C2double C3double sumdouble averdouble getsum();double getaver();(2)系统包含的类库#include输入输出流#includeString类(2) 各个变量的定义和作用char name20; /姓名char cla20;/班级int number; /学号char sex20; /性别int age;/年龄int tele;/电话char class1100; /课程为字符串 char class2100; char class3100; double C11; /C12的平时成绩 double C12; /C11的考试 成绩double C21; double C22;double C31;double C32;double C1; /为这门课的综合成绩double C2;double C3;double sum; /总成绩double aver; /平均成绩Stu *s50; 对象数组记录学生成绩3.2系统函数的组成、功能、参数说明、相互调用关系主函数 main()调用菜单操作函数handle_menu()实现菜单的输出和操作,调用index()打印首页。以及删除动态对象。菜单操作函数 void handle_menu()这是一个无参的函数,通过调用菜单函数menu()实现菜单的输出,利用do-while()语句和switch()语句实现各函数的调用,系统根据输入的字符选项来调用相应的函数,进行相应的操作。菜单函数 void menu()这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的十一大功能,根据每个功能前面的序号进行选择。打印首页函数 void index()这是一个无参函数,主要功能是打印本系统的相关信息。默认构造函数Stu: Stu()这是Stu类中的一个默认构造函数,实现对象的初始化。求总分函数double Stu:getsum()这是一个无参函数,主要功能是将每个对象的语文、数学、英语三科成绩求和,返回总分sum。求平均分函数double Stu:getaver()这是一个无参函数,调用double Stu:getsum()平均分,返回平均分aver操作0数据录入函数void operate0()这是一个无参函数,是Stu类的一个友元函数,该函数可将用户输入的学生的信息在每一个对象数组内,输入完成后会提示用户是否要继续录入。操作1增加人员函数void operate1()这是一个无参函数,是Stu类的一个友元函数,该函数可以增加学生人数,提示用户输入的学生的信息,输入完成后会提示用户是否要继续录入。操作2删除人员函数void operate2()这是一个无参函数,是Stu类的一个友元函数,进入后系统会提示用户输入需要删除学生的姓名,然后查找该学生,删除该学生数据,并将其后数组往前移动一位,最后提示用户是否继续删除。操作3修改数据函数void operate3()这是一个无参函数,是Stu类的一个友元函数,进入后系统会提示用户输入需要修改学生的姓名,该函数的功能是修改学生的成绩,防止了录入数据时的错误,保证了系统的完备性。操作4按总成绩查询函数void operate4()这是一个无参函数,是Stu类的一个友元函数,进入后系统会提示用户输入需要查询的总分,然后输出所有该分数的学生的成绩,并提示用户是否需要继续查询。操作5按姓名查询函数void operate5()这是一个无参函数,是Stu类的一个友元函数。进入后系统会提示用户输入需要查询的学生姓名,然后输出该学生的成绩,并提示用户是否需要继续查询。操作6输出所有学生的数据函数void operate6()这是一个无参函数,是Stu类的一个友元函数,进入后系统将自动输出该系统下所有学生的成绩,但并不排序,而是按照录入是的顺序输出,输出之后提示用户是否需要进行其它操作。操作7按平均分分排名函数void operate7()这是一个无参函数,是Stu类的一个友元函数,进入后系统将按照平均分分从高到低自动输出该系统下所有学生的成绩,输出之后提示用户是否需要进行其它操作。操作8按这平均分是否大于60列出不及格学生void operate8()这是一个无参函数,是Stu类的一个友元函数,进入后系统将按照总平均分是否大于60列出不及格学生的成绩,输出之后提示用户是否需要进行其它操作。4设计测试流程1. 进入系统,显示本系统相关信息。如图。2. 根据系统提示,进入菜单界面。如图3. 输入0,回车,按提示输入数据。如图4. 回到菜单界面在输入1,回车,增加人员,按提示输入数据。如图5. 回到菜单界面再输入6,回车,输出所有学生的数据,检测操作0和操作1。运行结果如图6. 回到菜单界面再输入7,回车,测试按总分排名。运行结果如图7. 回到菜单界面再输入3,回车,测试修改数据。修改完后,进入菜单,选择操作6输出所有学生数据。修改如图运行结果如图8. 运用修改后的数据,测排名9. 列出不及格学生信息:10. 回到菜单界面再输入4,测试按学号查询,运行结果如图11. 回到菜单界面再输入5,测试按姓名查询,运行结果如图12. 测试完毕。输入n,退出系统。5结束语在本次课程设计过程中,老师从选题、构思、资料收集到最后定稿的各个环节给予细心指导,使我对软件工程有了更深刻的认识,在此表示衷心地感谢。在整个过程中,我查阅了大量的关于书籍借阅管理系统的资料和网站,在老师的指导和自己的努力下,终于完成了本次课程设计。在为期两周的课程设计过程中,使我熟悉了C+编程语言,但也体现了我的种种不足,希望在以后的学习生活当中能够改正。同时我还要感谢指导过我的老师,他们给了我很大的指导和帮助,还有在我陷入困境时帮助过我的同学们。参考文献1 杨路明,C语言程序设计教程.北京:北京邮电大学出版社,2005(2009.7)2 谭浩强,C+程序设计. 北京:清华大学出版社,2004.63 杨路明,C语言程序设计上机指导与习题选解.北京:北京邮电大学出版社,2005附录设计源程序清单#include#include using namespace std;extern int j=0; /定义全局变量 /* 声明Stu类 */ class Stu public: char name20;char cla20;int number;char sex20;int age;int tele;char class1100; /课程为字符串 char class2100; char class3100; double C11; /C12的平时成绩 double C12; /C11的考试 double C21; double C22;double C31;double C32;double C1; /为这门课的综合成绩double C2;double C3;double sum;double aver;public: Stu();double getsum(); /声明求总分函数 double getaver(); /声明求平均分函数 friend void operater(); /声明有友元函数操作0 数据录入 friend void operate1(); /声明有友元函数操作1 增加人员 friend void operate2(); /声明有友元函数操作2 删除人员 friend void operate3(); /声明有友元函数操作3 修改数据 friend void operate4(); /声明有友元函数操作4 按总成绩查询 friend void operate5(); /声明有友元函数操作5 按姓名查询 friend void operate6(); /声明有友元函数操作6 输出所有学生数据 friend void operate7(); /声明有友元函数操作7 按总分排名 friend void operate8(); /声明有友元函数操作8 列出不及格的学生信息 ; Stu s50; /定义对象数组 /* 声明函数原型 */ void index(); void menu(); /声明菜单函数 void handle_menu(); /声明菜单操作函数 double Stu:getsum() /定义求总分函数 sum=C1+C2+C3; return (sum); double Stu:getaver() /定义求平均分函数 aver=(C1+C2+C3)/3); return (aver); /* *操作0数据录入函数定义*/ void operate0() char c; int flag2=0; do cout请输入姓名:;cout请输入班级:sj.cla;cout请输入学号:sj.number;cout请输入年龄:sj.age;cout请输入性别:sj.sex;cout请输入电话号码:sj.tele;cout请输入所选课程1:sj.class1;cout请输入所选课程2:sj.class2;cout请输入所选课程3:sj.class3;coutsj.class1考试成绩: 平时成绩:sj.C11sj.C12;coutsj.class2考试成绩: 平时成绩:sj.C21sj.C22;coutsj.class3考试成绩: 平时成绩:sj.C31sj.C32;sj.C1=(sj.C11)*0.7+(sj.C12)*0.3); sj.C2=(sj.C21)*0.7+(sj.C22)*0.3);sj.C3=(sj.C31)*0.7+(sj.C32)*0.3);j+; cout数据录入成功,想继续录入吗(y/n)c; flag2=0; do if(c!=y&c!=n) cout指令错误!请重新输入!c; else flag2=1; while(flag2=0); while(c=y); /* *操作1增加人员函数定义*/ void operate1() char c; int flag2=0; do cout请输入姓名:;cout请输入班级:sj.cla;cout请输入学号:sj.number;cout请输入年龄:sj.age;cout请输入性别:sj.sex;cout请输入电话号码:sj.tele;cout请输入所选课程1:sj.class1;cout请输入所选课程2:sj.class2;cout请输入所选课程3:sj.class3;coutsj.class1考试成绩: 平时成绩:sj.C11sj.C12;coutsj.class2考试成绩: 平时成绩:sj.C21sj.C22;coutsj.class3考试成绩: 平时成绩:sj.C31sj.C32;sj.C1=(sj.C11)*0.7+(sj.C12)*0.3); sj.C2=(sj.C21)*0.7+(sj.C22)*0.3);sj.C3=(sj.C31)*0.7+(sj.C32)*0.3);j+; cout数据录入成功,想继续录入吗(y/n)c; flag2=0; do if(c != y & c != n) cout指令错误!请重新输入!c; else flag2 = 1; while(flag2 = 0); while(c = y); /* *操作2删除人员函数定义 */ void operate2() char n20; char c; int flag3=0; do cout请输入您要删除的学生姓名:n;for(int h=0;hj;h+) if(strcmp(n, ) = 0) cout删除成功endl;flag3 = 1; j-; do sh=sh+1; h+; while(h=j); if(flag3=0) cout您要求删除的对象本来就不存在!请检查输入的正确性!; cout要继续删除吗?(y/n)c; if(c!=y&c!=n) cout指令错误!请重新输入!c; while(c=y); /* *操作3修改数据函数定义 */ void operate3() int num;char c;int flag2=0; do cout请输入您要修改的学生的学号:num;for(int h=0;hj;h+) if(num=sh.number) flag2=1;cout请输入新的姓名:;cout请输入新的班级:sh.cla;cout请输入新的性别:sh.sex;cout请输入新的年龄:sh.age;cout请输入新的电话号码:sh.tele;cout请输入所选课程1:sh.class1; cout请输入所选课程2:sh.class2; cout请输入所选课程3:sh.class3; coutsh.class1考试成绩: 平时成绩:sh.C11sh.C12; coutsh.class2考试成绩: 平时成绩:sh.C21sj.C22; coutsh.class3考试成绩: 平时成绩:sh.C31sj.C32; sh.C1=(sh.C11)*0.7+(sh.C12)*0.3); sh.C2=(sh.C21)*0.7+(sh.C22)*0.3); sh.C3=(sh.C31)*0.7+(sh.C32)*0.3);cout数据修改成功!; if(flag2=0) cout您要修改的学生本来就不存在!请检查重新输入!endl; cout想继续修改吗(y/n)c; if(c!=y&c!=n) cout指令错误!请重新输入!c; while(c=y); /* *操作4按学号查询函数定义 */ void operate4() char c; int num; do int flag1=0;cout请输入你要查询学生的学号num; for(int q=0;qj;q+) if(sq.number=num) flag1=1; cout您要查询的学生是:endl; cout班级:sq.cla 学号: sq.number 性别: sq.sex 年龄: sq.ageendl; coutsq.class1考试成绩: 平时成绩: 综合成绩:endl; coutsq.C11 sq.C12 sq.C1endl;coutsq.class2考试成绩: 平时成绩: 综合成绩:endl; coutsq.C21 sq.C22 sq.C2endl;coutsq.class3考试成绩: 平时成绩:综合成绩:endl; coutsq.C31 sq.C32 sq.C3endl;cout您想继续查询吗?(y/n)c; if(flag1=0) cout对不起!您要查询的学生不存在!endl; cout您想继续查询吗?(y/n)c; if(c!=y&c!=n) cout指令错误!请重新输入!c; while(c=y); /* *操作5按姓名查询函数定义 */ void operate5() char c;char name20; do int flag=0; cout请输入你要查询的学生姓名name; for(int q=0;qj;q+) if(strcmp(name,)=0) flag=1; cout您要查询的学生是:endl; cout班级:sq.cla 学号: sq.number 性别: sq.sex 年龄: sq.ageendl; coutsq.class1考试成绩: 平时成绩: 综合成绩:endl; coutsq.C11 sq.C12 sq.C1endl;coutsq.class2考试成绩: 平时成绩: 综合成绩:endl; coutsq.C21 sq.C22 sq.C2endl;coutsq.class3考试成绩: 平时成绩:综合成绩:endl; coutsq.C31 sq.C32 sq.C3endl; cout您想继续查询吗?(y/n)c; if(flag=0) cout对不起!您要查询的学生不存在!endl; cout您想继续查询吗?(y/n)c; if(c!=y&c!=n) cout指令错误!请重新输入!c; while(c=y); /* *操作6输出所有学生的数据函数定义 */ void operate6() char name20; char c; int flag2=0; cout本系统所有学生数据如下:endl; if(j=0) cout管理系统中没有录入数据或者数据已经被删除!endl; for(int q=0;qj;q+) cout姓名: 班级:sq.cla 学号: sq.number 性别: sq.sex 年龄: sq.ageendl; coutsq.class1考试成绩: 平时成绩: 综合成绩:endl; coutsq.C11 sq.C12 sq.C1endl;coutsq.class2考试成绩: 平时成绩: 综合成绩:endl; coutsq.C21 sq.C22 sq.C2endl;coutsq.class3考试成绩: 平时成绩:综合成绩:endl; coutsq.C31 sq.C32 sq.C3endl; /* *操作7按平均成绩排序 */void operate7() char c; int flag2=0; int t; Stu b; cout本系统所有学生排名如下:endl; for(int x=0;xj-1;x+) t=x; for(int y=x+1;yj;y+) if(st.getaver()(sy.getaver() t=y; b=st;st=sx;sx=b; if(j=0) cout管理系统中没有录入数据或者数据已经被删除! endl; for(int q=0;qj;q+) /数据输出 cout姓名: 班级:sq.cla 学号: sq.number 性别: sq.sex 年龄: sq.ageendl; cout平均成绩:sq.getaver()endl;coutsq.class1考试成绩: 平时成绩: 综合成绩:endl; coutsq.C11 sq.C12 sq.C1endl;coutsq.class2考试成绩: 平时成绩: 综合成绩:endl; coutsq.C21 sq.C22 sq.C2endl;coutsq.class3考试成绩: 平时成绩:综合成绩:endl; coutsq.C31 sq.C32 sq.C3endl; /* *操作8列出不及格的学生名单 */void operate8()for(int k=0;kj;k+)if(sk.C160|sk.C260|sk.C360) 学号: sk.numberendl;if(sk.C160)cout 课程:sk.class1 综合成绩:sk.C1endl; if(sk.C260)cout 课程:sk.class2 综合成绩:sk.C2endl; if(sk.C360)cout 课程:sk.class3 综合成绩:sk.C3endl; if(j=0) cout管理系统中没有录入数据或者数据已经被删除!endl; int main() index(); coutendl; cout *欢迎进入学生成绩管理系统* endl; cout 诚朴 自信 励志 拼搏 endl;coutendl;cout 相信自己的成绩! p; system(cls);if(p=0&p=8) flag2=1; els

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论