学生学籍管理系统课程设计报告c++(共32页).doc
《学生学籍管理系统课程设计报告c++(共32页).doc》由会员分享,可在线阅读,更多相关《学生学籍管理系统课程设计报告c++(共32页).doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上南昌航空大学学院:软件学院 学号: 姓名:未猛猛 指导老师:王星目录一、需求分析先看题目要求:用数据文件存放学生的学籍,可对学生学籍进行注册,增加,修改,删除,查找,学籍变化等操作。系统必须以菜单方式工作;登记学生的学号,姓名,年龄,籍贯,系别,专业,班级;修改已知学生的学号信息;删除已知学号的学生信息;查找已知学号的学生信息;按学号,专业输出学生籍贯表;查询学生学籍变化,比如入学,转专业,退学,降级,休学,毕业;1.本题目要求做出学生学籍管理系统,系统以菜单方式工作,我们可以用一个类的成员函数来单独完成菜单功能,然后在主函数调用。2.根据题目我们首先确定用两个类去实
2、现,一个可类为student,里面为学生的信息,例如学号,姓名等,另一个类为operate;实现各个操作,例如注册,增加等。3.需要对学生学籍进行注册,那么我们就用input()输入函数去完成注册,在opetate类体里面完成,在student中用input()去实现输入功能,在operate中用input()对student中的input()进行调用,具体调用及实现会在下面详细介绍。4.需要对学生信息进行增加,那么我们就增加个add()函数,实现注册玩后的增加功能。5.可以在operate中添加mend()函数和del()函数实现修改和删除功能,用found()函数和show()函数实现查找
3、和统计功能,单独用一个xueji()函数去实现学籍变化操作,如入学,转专业等,并按学号和专业去输出学生籍贯表。6.主函数执行命令:1.初始化对象2.初始化菜单3. 操作执行,结果显示二、概要设计1.两个类模块:第一个class student,首先在student中定义几个保护型的数据成员,学号num,姓名 name,性别sex,a年龄 age,籍贯address,学院 collge,班级classes,专业zhuan;再定义一个student的next指针student *next;这样是将两个类联系起来的桥梁。 成员函数介绍string getname ()/返回姓名name; Int g
4、etnum()/返回学号num; string getplace()/返回籍贯 address; String getzhuan();/返回专业 zhuan; void getxueji(int b,int c,int d,int e,int f,int g)/将6个整型值分别表示入学,转专业,退学,降级,休学,毕业; 整型值负值1或0; Void input();/在学生类中定义一个input函数实现屏幕上的输入功能; void input(ifstream &is)/创建文件类型引用Void output()/输出学生的信息,与类operate中的output联系将其打印在屏幕,下面会讲述
5、;void output(ofstream &os)/实现对文件的写入2. 第二个类模块操作类operate,首先两个类必须有个接口将他们联系起来,这样我们就在用一个类的对象指针作为operate类中的一个私有数据成员,故定义私有成员student *head再定义一个整型key,下面在保存和推出时会用到;下面介绍共有的成员函数: Operate()/构造函数,赋初值operate()/析构函数Void input()/这里的input函数才是实现真正的注册,用此数据成员(即student的对象)实现对学生类中input的调用;Void show()/次实现实现统计功能Void mend()/
6、实现对注册信息的修改功能Void found()/实现查找功能,并将其显示Int find(student *p,int num,string name)/自查找函数,在此函数中实现查找功能,并在found函数中调用它完成查找的操作Void del()/此函数实现删除功能,与find()共同实现Void add()/增加函数Void xueji()/查询学籍变化的函数Void jiguan()/按学号,专业输出籍贯的函数Void bf()/初始化的文件操作函数Void save()/保存函数Int mainmenu()/主菜单函数Int key()/返回key Void setkey()/创建
7、key3. void main()/主函数中实现对象的建立和各个功能的调用和主菜单的循环;三、详细设计 这里我们将详细的介绍各个函数的函数体实现与之间的调用; 1.首先看类student; string getname()return name; /返回姓名name;name为字符串型; int getnum() return num; /返回一个整形值 学号num; string getplace() /返回籍贯(字符串型) return address; string getzhuan() /返回专业(字符串型) return zhuan; 看函数getxueji()void getxue
8、ji(int b,int c,int d,int e,int f,int g)/实现学籍的查询if(b=1) cout入学 ; /如果b=1,那么就输出入学;相反则未入学 elsecout未入学 ;if(b=0)cout暂无学籍信息; /未入学,则显示无学籍信息elseif(c=1) cout转专业 ; /若c=1,显示转专业 else cout未转专业 ; /不等于,则显示未转专业 if(d=1) cout未退学 ; /同上,若d=1,则显示未退学else cout已退学 ; /若d!=1则显示已退学,下面的同上if(e=1) cout未降级 ;else cout已降级 ;if(f=1) c
9、out未休学 ;else cout已休学 ;if(g=1) cout未毕业 ;else cout已毕业 ;void input()/输入函数int a=1; /定义整型变量并负值1coutttt请按提示输入:endl;coutnum;coutname;coutage;docoutsex; if(sex=男|sex=女) /判断输入的性别是否正确 coutaddress; coutcollage; coutclasses; coutzhuan; coutn请输入学生学籍信息:默认1:入学;1:转专业;1:未退 学;1:未降级;1:未休学;1:未毕业;endl; couttt输入学籍信息,请依次输
10、入6个数:(0或1) /上面已经 提过,输入0或者1 coutbcdefg;/一次输入五个值(0或1) getxueji(b,c,d,e,f,g); /调用个getxueji()函数,上面已介绍该函数 a=0; /把0赋给a,使循环结束 else cout无此性别,请重新输入!numnameagesexaddresscollageclasses zhuan; /输入学号,姓名,年龄,性别,学院,班级,专业 is.get(); /获取文件指针void output() /输出显示函数,实现显示cout学生的基本信息如下:endl; cout学号:num; cout 姓名:name;cout 年龄
11、:age;cout 性别:sex;cout 籍贯:address;cout 学院:collage;cout 班级:classes;cout 专业:zhuanendl;void output(ofstream &os) /将内容写入文件显示 ossetw(6)numsetw(10)namesetw(5)agesetw(10)sex setw(10)addresssetw(10)collagesetw(6)classes setw(10)zhuannext=NULL;key=1;operate()delete head; /析构函数 void operate:input() /注册(输入)函数,和
12、上个类的input一块/实现功能看下面函数体student *p,*p2=NULL; /定义一个对象指针p,p2指向空 p=head; int n; /把p赋给头指针headwhile(n) /进行循环 p2=new student; p2-input(); /为p2开辟空间并指向/input函数 p-next=p2; p2-next=NULL; p=p-next; /增加新的结点 coutn; /输入n判断/while循环是否继续void operate:add() /增加函数,和input()功能相同input(); /将input在执行一次,void operate:jiguan() /
13、输出籍贯函数 student *p;/定义学生类的指针p并负值head p=head; while(p-next) / 执行循环直至p-next=NULL结束 cout学号:next)-getnum() 专业:next)-getzhuan() 籍贯:next)-getplace() next; /p执行循环,指向下一个 void operate:xueji() /查询学籍变化函数student *p=head;int num; /定义指针p,负值headcoutnum; /输入学号if(p-getnum()!=num) /判断输入的学号是否等于第一个注册/的学生学号,p=p-next; /若不
14、等,令p指向下一个,继续判断 coutgetxueji(p-b,p-c,p-d,p-e,p-f,p-g); /调用getxueji()函数void operate:show() /统计(显示)函数 student *p; p=head; /定义指针p并赋值headwhile(p-next) /执行循环,只到p-next为空 (p-next)-output(); /指向调用output函数 p=p-next; /使p指向下一个void operate:bf() /初始化函数,文件操作 student *p,*p2; /定义两个指针p和p2,将p赋值head p=head; long t; /定义
15、长整型t ifstream is(课设.txt,ios:in); /打开课设.txt文件 if(!is) / 如果打不开 ofstream os(课设.txt,ios:out); /进行写操作 os.close(); return ; int num=-1; while(1) num=-1; t=is.tellg(); /搭配seeg() isnum; is.seekg(t); /不连续进行访问if(numinput(is); /为p2分配空间,并指向input p-next=p2; p2-next=NULL; p=p-next; / 开辟新的结点,以便下次主函数运行的时候已经为此开辟了空间,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 学籍 管理 系统 课程设计 报告 32
限制150内