您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 学生学籍管理系统课程设计报告c++
南昌航空大学学院:软件学院学号:10203204姓名:未猛猛指导老师:王星目录一、需求分析.......................................................错误!未定义书签。二、概要设计.......................................................3三、详细设计.......................................................5四、调试分析.......................................................15五、用户手册.......................................................错误!未定义书签。六、测试数据.......................................................错误!未定义书签。七、附录..........................................................错误!未定义书签。一、需求分析先看题目要求:用数据文件存放学生的学籍,可对学生学籍进行注册,增加,修改,删除,查找,学籍变化等操作。系统必须以菜单方式工作;登记学生的学号,姓名,年龄,籍贯,系别,专业,班级;修改已知学生的学号信息;删除已知学号的学生信息;查找已知学号的学生信息;按学号,专业输出学生籍贯表;查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业;1.本题目要求做出学生学籍管理系统,系统以菜单方式工作,我们可以用一个类的成员函数来单独完成菜单功能,然后在主函数调用。2.根据题目我们首先确定用两个类去实现,一个可类为student,里面为学生的信息,例如学号,姓名等,另一个类为operate;实现各个操作,例如注册,增加等。3.需要对学生学籍进行注册,那么我们就用input()输入函数去完成注册,在opetate类体里面完成,在student中用input()去实现输入功能,在operate中用input()对student中的input()进行调用,具体调用及实现会在下面详细介绍。4.需要对学生信息进行增加,那么我们就增加个add()函数,实现注册玩后的增加功能。5.可以在operate中添加mend()函数和del()函数实现修改和删除功能,用found()函数和show()函数实现查找和统计功能,单独用一个xueji()函数去实现学籍变化操作,如入学,转专业等,并按学号和专业去输出学生籍贯表。6.主函数执行命令:1.初始化对象2.初始化菜单3.操作执行,结果显示二、概要设计1.两个类模块:第一个classstudent,首先在student中定义几个保护型的数据成员,学号num,姓名name,性别sex,a年龄age,籍贯address,学院collge,班级classes,专业zhuan;再定义一个student的next指针student*next;这样是将两个类联系起来的桥梁。成员函数介绍stringgetname()//返回姓名name;Intgetnum()//返回学号num;stringgetplace()//返回籍贯address;Stringgetzhuan();//返回专业zhuan;voidgetxueji(intb,intc,intd,inte,intf,intg)//将6个整型值分别表示入学,转专业,退学,降级,休学,毕业;整型值负值1或0;Voidinput();//在学生类中定义一个input函数实现屏幕上的输入功能;voidinput(ifstream&is)//创建文件类型引用Voidoutput()//输出学生的信息,与类operate中的output联系将其打印在屏幕,下面会讲述;voidoutput(ofstream&os)//实现对文件的写入2.第二个类模块操作类operate,首先两个类必须有个接口将他们联系起来,这样我们就在用一个类的对象指针作为operate类中的一个私有数据成员,故定义私有成员student*head再定义一个整型key,下面在保存和推出时会用到;下面介绍共有的成员函数:Operate()//构造函数,赋初值~operate()//析构函数Voidinput()//这里的input函数才是实现真正的注册,用此数据成员(即student的对象)实现对学生类中input的调用;Voidshow()//次实现实现统计功能Voidmend()//实现对注册信息的修改功能Voidfound()//实现查找功能,并将其显示Intfind(student**p,intnum,stringname)//自查找函数,在此函数中实现查找功能,并在found函数中调用它完成查找的操作Voiddel()//此函数实现删除功能,与find()共同实现Voidadd()//增加函数Voidxueji()//查询学籍变化的函数Voidjiguan()//按学号,专业输出籍贯的函数Voidbf()//初始化的文件操作函数Voidsave()//保存函数Intmainmenu()//主菜单函数Intkey()//返回keyVoidsetkey()//创建key3.voidmain()//主函数中实现对象的建立和各个功能的调用和主菜单的循环;三、详细设计这里我们将详细的介绍各个函数的函数体实现与之间的调用;1.首先看类student;stringgetname(){returnname;}//返回姓名name;name为字符串型;intgetnum(){returnnum;}//返回一个整形值学号num;stringgetplace()//返回籍贯(字符串型){returnaddress;}stringgetzhuan()//返回专业(字符串型){returnzhuan;}看函数getxueji()voidgetxueji(intb,intc,intd,inte,intf,intg)//实现学籍的查询{if(b==1)cout入学;//如果b==1,那么就输出入学;相反则未入学else{cout未入学;}if(b==0){cout暂无学籍信息;//未入学,则显示无学籍信息}else{if(c==1)cout转专业;//若c==1,显示转专业elsecout未转专业;//不等于,则显示未转专业if(d==1)cout未退学;//同上,若d==1,则显示未退学elsecout已退学;//若d!=1则显示已退学,下面的同上if(e==1)cout未降级;elsecout已降级;if(f==1)cout未休学;elsecout已休学;if(g==1)cout未毕业;elsecout已毕业;}}voidinput()//输入函数{inta=1;//定义整型变量并负值1cout\t\t\t请按提示输入:endl;cout\t\t\t输入学号:;cinnum;cout\t\t\t输入姓名:;cinname;cout\t\t\t输入年龄:;cinage;do{cout\t\t输入性别:;cinsex;if(sex==男||sex==女)//判断输入的性别是否正确{cout\t\t\t输入籍贯:;cinaddress;cout\t\t\t输入学院:;cincollage;cout\t\t\t输入班级:;cinclasses;cout\t\t\t输入专业:;cinzhuan;cout\n请输入学生学籍信息:默认1:入学;1:转专业;1:未退学;1:未降级;1:未休学;1:未毕业;endl;cout\t\t输入学籍信息,请依次输入6个数:(0或1)//上面已经提过,输入0或者1coutendl;cinbcdefg;//一次输入五个值(0或1)getxueji(b,c,d,e,f,g);//调用个getxueji()函数,上面已介绍该函数a=0;//把0赋给a,使循环结束}else{cout无此性别,请重新输入!endl;a=1;//重复while循环}}while(a);}voidinput(ifstream&is)//创建文件类型引用{isnumnameagesexaddresscollageclasseszhuan;//输入学号,姓名,年龄,性别,学院,班级,专业is.get();//获取文件指针}voidoutput()//输出显示函数,实现显示{cout学生的基本信息如下:endl;cout学号:num;cout姓名:name;cout年龄:age;cout性别:sex;cout籍贯:address;cout学院:collage;cout班级:classes;cout专业:zhuanendl;}voidoutput(ofstream&os)//将内容写入文件显示{ossetw(6)numsetw(10)namesetw(5)agesetw(10)sexsetw(10)addresssetw(10)collagesetw(6)classessetw(10)zhuanendl;//写入文件并为各个数据分配宽度}2.student类中的函数已经介绍清楚,下面看第二个类opetate首先定义私有成员student*head//将student的对象指针作为该类的私有数据成员,使该类中函数可以实现对student类各个函数的调用;再定义和一个整型key变量;operate()//该类的构造函数{head=newstudent;head-next=NULL;key=1;}~operate(){deletehead;}//析构函数voidoperate::input()//注册(输入)函数,和上个类的input一块//实现功能看下面函数体{student*p,*p2=NULL;//定义一个对象指针p,p2指向空p=head;intn;//把p赋给头指针headwhile(n)//进行循环{p2=newstudent;p2-input();//为p2开辟空间并指向//input函数p-next=p2;p2-next=NULL;p=p-next;//增加新的结点cout\t\t\t按1继续,按0返回:;cinn;//输入n判断//while循环是否继续}}voidoperate::add()//增加函数,和input()功能相同{input();//将input在执行一次,}voidoperate::jiguan()//输出籍贯函数{student*p;//定义学生类的指针p并负值headp=head;while(p-next)//执行循环直至p-next==NULL结束{cout学号:(p-next)-getnum()专业:(p-next)-getzhuan()籍贯:(p-next)-getplace()endl;p=p-next;//p执行循环,指向下一个}}voidoperate::xueji()//查询学籍变化函数{student*p=head;intnum;//定义指针p,负值headcout输入查询学生学号:;cinnum;//输入学号if(p-getnum()!=num)//判断输入的学号是否等于第一个注册//的学生学号,{p=p-next;}//若不等,令p指向下一个,继续判断cout该学生的学籍信息为:;p-getxueji(p-b,p-c,p-d,p-e
本文标题:学生学籍管理系统课程设计报告c++
链接地址:https://www.777doc.com/doc-3764119 .html