版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计课程名称软件工程Ⅰ课程设计题目学生成绩管理系统的设计与开发专业班级姓名成绩指导老师2020年6月15日至2020年6月19日一、课程设计目的与任务软件工程课程设计是《软件工程Ⅰ》课程的后续实践课程,是软件工程专业必修的实践教学模块。在前导课程中学生学会了系统的需求分析和设计建模,根据软件开发生命周期,理应进入软件开发阶段。本课程设计拟通过一周的实践训练,在前导课基础上优化选定系统的分析设计、完成软件开发阶段工作。使学生经历一个软件从问题定义、分析、设计到开发的全过程和软件系统开发的综合训练,以便能熟练掌握软件开发的完整生命周期过程,较全面地理解、掌握和综合运用所学的软件工程知识。通过课程设计的综合训练,培养学生实际分析问题、编程和动手的能力,让学生理解、掌握需求分析、系统设计、系统实施的主要环节、步骤以及软件文档的制作能力,进一步提高解决问题和开发一个完整系统的能力。二、课程设计的内容与基本要求本课题是一个用C++和SQLServer实现的高校学生成绩管理系统,功能包括用户登录注册、设备管理、耗材维护、开放实验室预约等。系统的特色是界面简单明了,使用方便,系统有较好的网络适应性。具体功能模块如下:学生成绩管理系统包括学生成绩查询模块和学生成绩管理模块。其中学生成绩管理模块又包括登陆模块,系统管理模块,系统设置模块三个子模块。学生成绩查询模块实现学生成绩和信息查询及浏览功能;登陆模块实现用户管理,注册管理功能;系统管理模块实现录入、修改、删除成绩管理,统计管理功能;1.设计报告要求课程设计报告要求逻辑清晰、层次分明、书写整洁。格式包括标题、提要、正文(包括①项目背景和意义。②可行性分析和需求分析。③总体设计。④详细设计。⑤编码测试。⑥答辩。⑦成绩评定。)附录(图纸、程序清单等)。设计报告须每人一份,独立完成。2.图纸要求系统功能模块图、流程图、数据流图、E-R图、用例图、类图、时序图等。3.评分标准评分依据评分成绩1.选题合理、目的明确10分2.态度认真、学习刻苦、遵守纪律20分3.设计方案正确,具有可行性15分4.系统调试与结果(功能操作使用正常、软件程序完整)20分5.设计报告撰写规范15分6.答辩20分总分100分注:成绩等级:优(90分—100分)、良(80分—89分)、中(70分—79分)、及格(60分—69分)、60分以下为不及格。五、指导时间目录TOC\o"1-2"\h\u1.项目背景和意义 62.可行性分析 62.1技术可行性 72.2经济可行性 73.需求分析 73.1系统需求 73.2系统功能 73.3数据流图 83.4用例 104.总体设计 124.1系统设计思想 124.2数据库设计 134.3接口设计 145.详细设计 155.1功能模块 155.2系统主程序流程图 155.3登陆模块的设计 155.4学生成绩查询设计 165.5学生成绩管理管理设计 175.6学生成绩管理系统时序图 186.编码实现 187.测试运行 207.1测试用例设计 207.2运行测试 208.评价与修订 219.设计体会 22参考文献 23附录 24致谢 46课程设计成绩评定表 47项目背景和意义当今时代是飞速发展的信息时代,在各行各业中离不开信息管理处理,这正是计算机被广泛应用于管理系统的原因。随着科学技术的不断提高,计算机科学技术的日渐成熟与普及,其强大的功能已被人们深刻认同,并且已经进入人类社会的各个领域中,发挥着各式各样且越来越重要的作用。作为计算机应用的一部分,使用计算机对学员成绩信息进行管理,具有手工管理所无法比拟的优点。建立完善的学生成绩管理系统,可以方便的管理学生成绩,有助于学生成绩的存储和查询。项目小组已完成了全面的可行性分析和需求分析,同时与目标用户进行了多次深入沟通,并在此基础上着手开发题库管理系统软件。因此,开发这样一套学员成绩管理系统帮助处理管理学员成绩信息的软件系统是很有必要的。管理系统是进行信息的采集、存储、加工、维护和使用的系统,它是随着管理科学和技术科学的发展而形成的。学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统能为用户提供充足的管理手段,对学生来说可以轻松的查阅自己在校的成绩及排名。学生成绩管理系统提供了强大的学生成绩管理功能,方便系统管理员对学生成绩等信息的添加、修改、删除、查询等操作。当今时代是飞速发展的信息时代,在各行各业中离不开信息管理处理,这正是计算机被广泛应用于管理系统的原因。随着科学技术的不断提高,计算机科学技术的日渐成熟与普及,其强大的功能已被人们深刻认同,并且已经进入人类社会的各个领域中,发挥着各式各样且越来越重要的作用。作为计算机应用的一部分,使用计算机对学员成绩信息进行管理,具有手工管理所无法比拟的优点。建立完善的学生成绩管理系统,可以方便的管理学生成绩,有助于学生成绩的存储和查询。项目小组已完成了全面的可行性分析和需求分析,同时与目标用户进行了多次深入沟通,并在此基础上着手开发题库管理系统软件。因此,开发这样一套学员成绩管理系统帮助处理管理学员成绩信息的软件系统是很有必要的。管理系统是进行信息的采集、存储、加工、维护和使用的系统,它是随着管理科学和技术科学的发展而形成的。学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统能为用户提供充足的管理手段,对学生来说可以轻松的查阅自己在校的成绩及排名。学生成绩管理系统提供了强大的学生成绩管理功能,方便系统管理员对学生成绩等信息的添加、修改、删除、查询等操作。2.可行性分析学生成绩管理工作是高校教育工作的一项重要内容。教务管理工作是指学校管理人员按照一定教育方针,运用先进的管理手段,组织、协调、指挥并指导各用户活动,以便高效率、高质量地完成各项教学任务,完成国家所制定的教育目标。学生成绩管理工作是学校教学工作的中枢,是保证高校教学机制正常运转的枢纽,它是一项目的性、计划性、适用性、创造性和科学性很强的工作。学生成绩工作关系到高校教学秩序的稳定。大中型院校人员众多,如果没有好的管理,就不能取得很好的成果,应用数据库来管理,在这方面能够取得很好的效果。2.1技术可行性设置不同权限,提高了数据的安全性。2.2经济可行性务端及客户端的支出使用原有设备即可。但是对软件有一次性软件费用支出和定期性软件维护支出。软件使用后,能够减少人力的支出和维护。3.需求分析3.1系统需求信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。为了适应现代社会人们高度强烈的时间观念,学籍管理系统软件为教学办公室带来了极大的方便。该软件是以汉语编程语言为实现语言,其功能在系统内部有源代码直接完成。通过操作手册,使用者可以了解本软件的基本工作原理。操作人员只需输入一些简单的汉字、数字,即可达到自己的目标。3.2系统功能每学期考试结束后,教务工作人员的工作很繁忙,这便要求本成绩管理系统对数据的输入要简便而且高效,所以系统中有方便的数据查询和浏览;整个系统有严密的权限管理,增强了系统数据的安全性;删除修改数据方便快捷,并且能够保持一定的安全;完善的数据出错处理,减少了用户使用中的麻烦。学生成绩管理系统系统功能总体结构图:图3-1生成绩管理系统系统功能总体结构图3.3数据流图图3-2数据流顶层图图3-3数据流细化图图3-4学生成绩管理一层数据流图图3-5学生成绩管理二层数据流图3.4用例1.主要参与者及用例表表3-1学生成绩管理系统用例表2.学生成绩系统用例图图3-6学生成绩系统用例图3.类图图3-7类图的初步设计4.总体设计4.1系统设计思想总模块软件结构图4-1学生成绩管理系统主模块根据上面的需求分析,可以将这个系统分为以下模块:学生成绩查询模块和学生成绩管理模块图4-2学生成绩管理系统层次图4.2数据库设计1.学生成绩管理概念模型(E—R图):图4-3成绩管理系统E-R图2.数据字典字段号字段名字节长度数据类型说明1用户名6Char主码2密码6Char3身份6Char表4-1登录权限表结构表字段号属性名字节长度数据类型是否允许空值说明1学号7Char否主码2姓名8Char是3性别4Char是4班级5Char是表4-2学生信息表结构字段号属性名字节长度数据类型是否允许空值说明1课程名8Char是2课程号8Char否主码表4-3课程信息表结构字段号属性名字节长度数据类型是否允许空值说明1课程号8Char否主码2学号8Char否主码3学期8Int否主码4成绩4Float是0~100表4-4成绩信息表结构4.3接口设计1.外部接口与用户界面在用户界面部分,根据需求分析的结果,用户需要一个用户友善界面。在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。外观上也要做到合理化,考虑到用户多对WINDOW风格较熟悉,应尽量向这一方向靠拢。在设计语言上,已决定使用VisualC++进行编程。总的来说,系统的用户界面应作到可靠性、简单性、易学习和使用。2.内部接口内部接口方面,各模块之间采用函数调用、参数传递、返回值的方式进行信息传递。具体参数的结构将在下面数据结构设计的内容中说明。接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间传输。5.详细设计5.1功能模块学生成绩管理系统主要以管理学生成绩信息为目的,设置了严密的权限管理。主要功能包括用户管理、查询管理、成绩录入管理、更新管理、统计管理、注册管理、密码管理等。用户管理模块:设置了权限管理功能,学生用户只能查询成绩信息,管理员可以完成其他操作。查询管理模块:包括查询成绩和基本信息。可以显示单独一条记录,也可以显示所有信息。成绩录入管理模块:每次考试结束,管理员录入学生成绩信息。更新管理模块:当有需要时,管理员可以进行成绩和信息的删除和修改操作。统计管理模块:统计学生人数,缺考人数,平均成绩和不及格人数。注册管理模块:设置了验证功能。输入用户名后可检验是否可以使用,输入密码必须为6位。密码管理模块:用户可以根据需求修改密码。5.2系统主程序流程图图5-1主程序流程图5.3登陆模块的设计功能:设置了权限管理,登陆成功后,对各个模块进行操作。操作:欢迎窗体消失后自动生成该窗体,输入用户名和密码,选择登陆模式。图5-2登陆模块控制流程图5.4学生成绩查询设计功能:查询、浏览学生信息。可以查询单一记录,也可以浏览所有信息。操作:单击显示即可浏览所有学生信息或成绩信息,输入学号点击查询可查询单独记录。图5-3学生成绩查询模块流程图5.5学生成绩管理管理设计(1)学生成绩录入功能:设置权限管理,管理人员可以录入学生成绩和信息。操作:在文本框处填写信息后点击添加实现录入成绩功能,输入学号点击实现成绩录入功能。(2)学生成绩修改。功能:修改学生成绩信息。操作:填写信息后,输入新的成绩,点击修改。(3)成绩统计功能:统计学生人数,考试人数,不及格人数,优秀人数,计算平均成绩。操作:分别输入根元素统计学生人数和成绩人数,点击不及格人数、平均成绩、优秀人数会连接相应的计算窗体,点击确定进行计算。图5-4学生成绩管理流程图5.6学生成绩管理系统时序图图5-5学生成绩管理系统顺序图6.编码实现图6-1主界面关键代码如下:intPrintMainMenu(){ intiInput; do { cout<<"欢迎使用成绩管理系统!"<<endl; cout<<"1)学生成绩查询;"<<endl; cout<<"2)学生成绩管理;"<<endl; cout<<"0)退出。"<<endl; cout<<"请选择(0-2):;"<<endl; cin>>iInput; }while(iInput>2||iInput<0); returniInput;}intPrintManage(){ intiInput; do { cout<<"【管理模块】"<<endl; cout<<"1)学生成绩单录入;"<<endl; cout<<"2)学生成绩修改;"<<endl; cout<<"3)学生成绩删除;"<<endl; cout<<"0)退出。"<<endl; cout<<"请选择(0-3):;"<<endl; cin>>iInput; }while(iInput>3||iInput<0); returniInput; }intPrintStatis(){ intiInput; do { cout<<"【管理模块】"<<endl; cout<<"1)学生人数;"<<endl; cout<<"2)缺考人数;"<<endl; cout<<"3)平均成绩;"<<endl; cout<<"4)不及格人数;"<<endl; cout<<"0)退出。"<<endl; cout<<"请选择(0-4):;"<<endl; cin>>iInput; }while(iInput>4||iInput<0); returniInput;}7.测试运行7.1测试用例设计测试对象“学生成绩管理”功能用例目的测试学生成绩管理系统的功能是否正确实现输入/动作过程结果选择教师登录,输入账号,输入密码进入学生成绩查询按学号查询显示学生成绩信息进入学生成绩管理系统学生成绩录入录入成功进入学生成绩管理学生成绩修改修改成功进入学生成绩管理学生成绩删除删除成功进入学生统计模块成绩平均分成功显示所有学生成绩的平均分表7-1测试用例表7.2运行测试图7-1运行测试图图7-2运行测试图图7-3运行测试图评价与修订在本次课程设计中,经历了无数次调试失败,修改,再调试的过程。本系统基本实现了关键的功能模块,在功能上基本满足了用户的需求,但是由于时间较紧,有些模块以及整个系统还有许多不完善的地方,如界面不太美观,操作性不太友好等。学习和实践了分析和设计软件系统的各种知识,包括结构化分析设计、面向对象的系统分析与设计,编码和测试方面的知识。毋庸置疑,在实践的过程中也遇到了一些问题,但是通过我自己的努力,以及查找资料,包括同学的帮助,很大限度的提高了自己的自身学习能力,自我独立解决问题的能力。这次课程设计是我第一次独立完成的,但还是得到了大家的帮助,我很开心。在今后的学习生活中,我会将这种精神继续发扬。并且更加努力,认真学习,将在这过程中得到的经验与同伴分享,享受这个学习过程9.设计体会通过此次课设让我明白了最重要的就是做好课设的预习,认真的研究自己的题目。首先,开始对老师的讲解药认真去听,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。我在最开始自己选择题目时候,由于没有认真听老师讲解而是盲目去百度然后按照网上资料的思路设计出了一个自己都没有弄明白的代码,最后代码漏洞百出,同样还有很多功能没有实现。于是我只能自己去一些编程网站看一些大咖的贴子其中就有很多帖子对我设计很有帮助,然后我慢慢的先编写界面,慢慢其他功能都完善了,最后系统按照理想的设计思路运行并得到了正确的结果。同时还需要数据库知识,对于我上学期数据库学的比较好,所以数据库方面不是很难解决,唯一很难的就是无法实现将C++与数据库结合起来。最终完成了设计我这时候的心情是十分激动地,靠自己劳动努力得到的东西就是不一样。当然,还得感谢给予帮助的同学和老师,这是我们共同努力的结果!其实开始选题时比较迷茫,因为从来没有独立完成过一个系统的开发。确定课题后,就去询问同学,先看看他们是怎么做的。一步一步,慢慢地跟上了步伐。在开发过程中又遇到很多不懂的技术,查阅了很多的文献。在不断的解决问题中我取得了很大的进步。在老师细心指导下,在同学的无私帮助下终于顺利完成了此次设计。参考文献[1]张林等《软件工程》中国铁道出版社2009年12月[2]宣振国.基于Mysql的数据库集群设计与实现[D].北京:北京邮电大学[3]谭浩强《C程序设计》清华大学出版社2010年6月1日[4]王立峰,延伟东,章华软件工程理论与实践北京清华大学出版社,2003年[5]刁成嘉,UML系统建模与分析设计,北京机械工业出版社,2007.附录#include"execsql.h"#include"ModifyOp.h"#include<iostream>usingnamespacestd;//登陆-1失败,1老师2教师intLogIn();//菜单intPrintMainMenu();intPrintManageScore();intPrintLogIn();intPrintManage();intPrintStatis();intPrintQueryMenu();//功能函数intQueryScore();//成绩查询intManageScore();//成绩管理intManageLogIn();//登陆模块intManageMng();//管理模块intManageStatis();//统计模块intQueryUser();intModifyPassWord();intRegister();intRecordScoreList();//录入成绩单intModifyScoreList();//修改成绩单intDeleteScoreList();//删除成绩单intStaticStuNum();intStaticAbsentNum();intStaticAveScore();intStaticFailNum();voidmain(){ ConnectDatabase(); //登录模块 intiRet=LogIn(); if(iRet!=1&&iRet!=2) { return; } intiRole=iRet;//角色 //主菜单 intiSel=1; while(iSel) { iSel=PrintMainMenu(); if(iSel==2&&iRole==2) { cout<<"您的角色是学生,没有权限做此类操作!"<<endl; continue; } switch(iSel) { case1:QueryScore();break;//学生成绩查询 case2:ManageScore();break;//学生成绩管理 case0: default:return; } } system("pause");}intLogIn(){ cout<<"欢迎使用成绩管理系统!"<<endl; cout<<"UserName:"<<endl; stringuserName; cin>>userName; cout<<"PassWord:"<<endl; stringpassWord; cin>>passWord; //尝试用教师身份登陆 vector<CModifyOp>objList; CModifyOp::FetchBy("Permissions","USERNAME",userName,objList); if(objList.size()>0) { if(objList[0].get("PASSWORD")==passWord) { if(objList[0].get("ROLE")=="teacher") { return1; } elseif(objList[0].get("ROLE")=="student") { return2; } } } return-1;}#if1//菜单intPrintMainMenu(){ intiInput; do { cout<<"欢迎使用成绩管理系统!"<<endl; cout<<"1)学生成绩查询;"<<endl; cout<<"2)学生成绩管理;"<<endl; cout<<"0)退出。"<<endl; cout<<"请选择(0-2):;"<<endl; cin>>iInput; }while(iInput>2||iInput<0); returniInput;}intPrintManageScore(){ intiInput; do { cout<<"【成绩管理】"<<endl; cout<<"1)登陆模块;"<<endl; cout<<"2)管理模块;"<<endl; cout<<"3)统计模块;"<<endl; cout<<"0)退出。"<<endl; cout<<"请选择(0-3):;"<<endl; cin>>iInput; }while(iInput>3||iInput<0); returniInput;}intPrintLogIn(){ intiInput; do { cout<<"【登陆模块】"<<endl; cout<<"1)用户管理;"<<endl; cout<<"2)密码管理;"<<endl; cout<<"3)注册管理;"<<endl; cout<<"0)退出。"<<endl; cout<<"请选择(0-3):;"<<endl; cin>>iInput; }while(iInput>3||iInput<0); returniInput;}intPrintManage(){ intiInput; do { cout<<"【管理模块】"<<endl; cout<<"1)学生成绩单录入;"<<endl; cout<<"2)学生成绩修改;"<<endl; cout<<"3)学生成绩删除;"<<endl; cout<<"0)退出。"<<endl; cout<<"请选择(0-3):;"<<endl; cin>>iInput; }while(iInput>3||iInput<0); returniInput; }intPrintStatis(){ intiInput; do { cout<<"【管理模块】"<<endl; cout<<"1)学生人数;"<<endl; cout<<"2)缺考人数;"<<endl; cout<<"3)平均成绩;"<<endl; cout<<"4)不及格人数;"<<endl; cout<<"0)退出。"<<endl; cout<<"请选择(0-4):;"<<endl; cin>>iInput; }while(iInput>4||iInput<0); returniInput;}intPrintQueryMenu(){ intiInput; do { cout<<"【查询方式】"<<endl; cout<<"1)查询全部;"<<endl; cout<<"2)按CODE查询;"<<endl; cout<<"3)按NAME查询;"<<endl; cout<<"0)退出。"<<endl; cout<<"请选择(0-3):;"<<endl; cin>>iInput; }while(iInput>3||iInput<0); returniInput;}#endif#if1//处理intQueryScore(){ intiMothed=PrintQueryMenu(); vector<CModifyOp>objStuList; stringstrInput; if(iMothed==1) { CModifyOp::FetchAll("Student",objStuList); } elseif(iMothed==2) { cout<<"请输入学生CODE:"<<endl; cin>>strInput; CModifyOp::FetchBy("Student","CODE",strInput,objStuList); } elseif(iMothed==3) { cout<<"请输入学生姓名:"<<endl; cin>>strInput; CModifyOp::FetchBy("Student","NAME",strInput,objStuList); } else { return0; } if(objStuList.size()>0) { vector<string>keyList=objStuList[0].getKeyList(); for(inti=0;i<objStuList.size();++i) { cout<<"学生信息:"<<endl; for(intj=0;j<keyList.size();++j) { cout<<keyList[j]<<"\t"; } cout<<endl; for(intj=0;j<keyList.size();++j) { cout<<objStuList[i].get(keyList[j])<<"\t"; } cout<<endl; vector<CModifyOp>objScoreList; CModifyOp::FetchBy("Scores","CODE",objStuList[i].get("CODE"),objScoreList); if(objScoreList.size()>0) { for(intj=0;j<objScoreList.size();++j) { vector<CModifyOp>objCourseList; CModifyOp::FetchBy("Courses","CODE",objScoreList[j].get("COURSECODE"),objCourseList); if(objScoreList.size()>0) { cout<<objScoreList[j].get("COURSECODE")<<"\t"<<objCourseList[0].get("NAME")<<"\t"<<objScoreList[j].get("GOAL")<<endl; } } } else { cout<<"无成绩信息!"<<endl; } } } else { cout<<"学生"<<strInput<<"未找到!"<<endl; } return0;}intManageScore(){ //成绩管理 intiSel=1; while(iSel) { iSel=PrintManageScore(); switch(iSel) { case1:ManageLogIn();break;//登陆模块 case2:ManageMng();break;//管理模块 case3:ManageStatis();break;//统计模块 case0: default:return0; } } return0;}intManageLogIn(){ //登陆模块 intiSel=1; while(iSel) { iSel=PrintLogIn(); switch(iSel) { case1:QueryUser();break; case2:ModifyPassWord();break; case3:Register();break; case0: default:return0; } } return0;}intManageMng(){ //管理模块 intiSel=PrintManage(); switch(iSel) { case1:RecordScoreList();break; case2:ModifyScoreList();break; case3:DeleteScoreList();break; case0: default:return0; } return0;}intManageStatis(){ //统计模块 intiSel=PrintStatis(); switch(iSel) { case1:StaticStuNum();break; case2:StaticAbsentNum();break; case3:StaticAveScore();break; case4:StaticFailNum();break; case0: default:return0; } return0;}intQueryUser(){ vector<CModifyOp>objList; CModifyOp::FetchAll("Permissions",objList); if(objList.size()>0) { cout<<"USERNAME ROLE"<<endl; for(inti=0;i<objList.size();++i) { cout<<objList[i].get("USERNAME")<<" "<<objList[i].get("ROLE")<<endl; } } else { cout<<"您输入的用户名不存在!"<<endl; } return0;}intModifyPassWord(){ //修改用户密码 cout<<"请输入用户名:"<<endl; stringuserName; cin>>userName; vector<CModifyOp>objList; CModifyOp::FetchBy("Permissions","USERNAME",userName,objList); if(objList.size()>0) { cout<<"USERNAME ROLE"<<endl; cout<<objList[0].get("USERNAME")<<" "<<objList[0].get("ROLE")<<endl; } else { cout<<"您输入的用户名不存在!"<<endl; } cout<<"请输入修改后的密码:"<<endl; stringpassWord; cin>>passWord; objList[0].set("PASSWORD",passWord); if(objList[0].store(STORE_MODIFY)) { cout<<"密码修改成功!"<<endl; } else { cout<<"密码修改失败!"<<endl; } return0;}intRegister(){ //注册用户 cout<<"请输入用户名:"<<endl; stringuserName; cin>>userName; vector<CModifyOp>objList; CModifyOp::FetchBy("Permissions","USERNAME",userName,objList); if(objList.size()>0) { cout<<"您输入的用户名已存在!"<<endl; return0; } cout<<"请输入密码:"<<endl; stringpassWord; cin>>passWord; cout<<"请输入角色(teacher,student):"<<endl; stringrole; cin>>role; CModifyOpop("Permissions"); op.set("USERNAME",userName); op.set("PASSWORD",passWord); op.set("ROLE",role); if(op.store(STORE_INSERT)) { cout<<"注册成功!"<<endl; } else { cout<<"注册失败!"<<endl; } return0;}intRecordScoreList(){ stringstrInput; //是否录入课程 vector<CModifyOp>objCourseList; CModifyOp::FetchAll("Courses",objCourseList); cout<<"现有如下课程("<<objCourseList.size()<<"):"<<endl; if(objCourseList.size()>0) { vector<string>keyList=objCourseList[0].getKeyList(); cout<<keyList[0]<<"\t"<<keyList[1]<<endl; for(inti=0;i<objCourseList.size();++i) { for(intj=0;j<keyList.size();++j) { cout<<objCourseList[i].get(keyList[j])<<"\t"; } cout<<endl; } } do { cout<<"是否新录入课程?(Y/N)"<<endl; cin>>strInput; if(strInput=="Y"||strInput=="y") { vector<string>keyList; keyList.push_back("CODE"); keyList.push_back("NAME"); CModifyOpop("Courses"); op.setKeyList(keyList); for(inti=0;i<keyList.size();++i) { cout<<"请输入"<<keyList[i]<<":"<<endl; stringstemp; cin>>stemp; op.set(keyList[i],stemp); } if(op.store(STORE_INSERT)) { cout<<"录入课程成功!"<<endl; } else { cout<<"录入课程失败!"<<endl; } } }while(strInput=="Y"||strInput=="y"); //是否录入学生 vector<CModifyOp>objStuList; CModifyOp::FetchAll("Student",objStuList); cout<<"现有如下学生("<<objStuList.size()<<"):"<<endl; if(objStuList.size()>0) { vector<string>keyList=objStuList[0].getKeyList(); cout<<keyList[0]<<"\t"<<keyList[1]<<endl; for(inti=0;i<objStuList.size();++i) { for(intj=0;j<keyList.size();++j) { cout<<objStuList[i].get(keyList[j])<<"\t"; } cout<<endl; } } do { cout<<"是否新录入学生?(Y/N)"<<endl; cin>>strInput; if(strInput=="Y"||strInput=="y") { vector<string>keyList; keyList.push_back("CODE"); keyList.push_back("NAME"); keyList.push_back("SEX"); keyList.push_back("CLASS"); CModifyOpop("Student"); op.setKeyList(keyList); for(inti=0;i<keyList.size();++i) { cout<<"请输入"<<keyList[i]<<":"<<endl; stringstemp; cin>>stemp; op.set(keyList[i],stemp); } if(op.store(STORE_INSERT)) { cout<<"录入学生成功!"<<endl; //选修课程 cout<<"现有如下课程("<<objCourseList.size()<<"):"<<endl; if(objCourseList.size()>0) { vector<string>keyList=objCourseList[0].getKeyList(); cout<<keyList[0]<<"\t"<<keyList[1]<<endl; for(inti=0;i<objCourseList.size();++i) { for(intj=0;j<keyList.size();++j) { cout<<objCourseList[i].get(keyList[j])<<"\t"; } cout<<endl; } } while(true) { cout<<"请输入选修课编码(输入exit结束选择):"<<endl; stringstemp; cin>>stemp; if(stemp=="exit") { break; } //查看选修课是否存在 boolisCourseExist=false; for(inti=0;i<objCourseList.size();++i) { if(stemp==objCourseList[i].get("CODE")) { isCourseExist=true; break; } } if(!isCourseExist) { cout<<"您输入的编码不存在,请重新输入!"<<endl; continue; } CModifyOpn2m("Student_N2M"); n2m.set("FROMCODE",op.get("CODE")); n2m.set("TOCODE",stemp); n2m.set("LINKNAME","course"); if(n2m.store(STORE_INSERT)) { cout<<"添加选修课成功!"<<endl; } else { cout<<"添加选修课失败!"<<endl; } } } else { cout<<"录入课程失败!"<<endl; } } }while(strInput=="Y"||strInput=="y"); //录入成绩(按学生录入成绩) objStuList.clear(); CModifyOp::FetchAll("Student",objStuList); vector<CModifyOp>objStuN2MList; CModifyOp::FetchAll("Student_N2M",objStuN2MList); if(objStuList.size()>0) { cout<<"请输入学期:"<<endl; stringterm; cin>>term; vector<string>keyList=objStuList[0].getKeyList(); for(inti=0;i<objStuList.size();++i) { cout<<"学生信息:"<<endl; for(intj=0;j<keyList.size();++j) { cout<<objStuList[i].get(keyList[j])<<"\t"; } cout<<endl; cout<<"录入成绩:"<<endl; for(intj=0;j<objStuN2MList.size();++j) { if(objStuN2MList[j].get("LINKNAME")=="course" &&objStuN2MList[j].get("FROMCODE")==objStuList[i].get("CODE")) { stringcourseCode=objStuN2MList[j].get("TOCODE"); objCourseList.clear(); CModifyOp::FetchBy("Courses","CODE",courseCode,objCourseList); if(objCourseList.size()>0) { CModifyOpsc("Scores"); sc.set("COURSECODE",courseCode); sc.set("CODE",objStuList[i].get("CODE")); sc.set("TERM",term); vector<string>keyList; keyList.push_back("CODE"); keyList.push_back("COURSECODE"); keyList.push_back("TERM"); sc.setKeyList(keyList); vector<CModifyOp>scList; CModifyOp::FetchBy(sc,scList); if(scList.size()>0) { continue; } cout<<"录入"<<objCourseList[0].get("NAME")<<"成绩:"<<endl; stringtmp; cout<<"得分:"<<endl; cin>>tmp; sc.set("GOAL",tmp); if(sc.store(STORE_INSERT)) { cout<<"录入成绩成功!"<<endl; } else { cout<<"录入成绩失败!"<<endl; } } } } } } else { cout<<"学生个数为0,请先录入学生,再录入成绩!"<<endl; } return0;}intModifyScoreList(){ stringstrInput; cout<<"请输入学生姓名:"<<endl; cin>>strInput; vector<CModifyOp>objStuList; CModifyOp::FetchBy("Student","NAME",strInput,objStuList); if(objStuList.size()>0) { cout<<"学生信息:"<<endl; vector<string>keyList=objStuList[0].getKeyList(); for(inti=0;i<objStuList.size();++i) { for(intj=0;j<keyList.size();++j) { cout<<keyList[j]<<"\t"; } cout<<endl; for(intj=0;j<keyList.size();++j) { cout<<objStuList[i].get(keyList[j])<<"\t"; } cout<<endl; vector<CModifyOp>objScoreList; CModifyOp::FetchBy("Scores","CODE",objStuList[i].get("CODE"),objScoreList); for(intj=0;j<objScoreList.size();++j) { vector<CModifyOp>objCourseList; CModifyOp::FetchBy("Courses","CODE",objScoreList[j].get("COURSECODE"),objCourseList); if(objScoreList.size()>0) { cout<<objScoreList[j].get("COURSECODE")<<"\t"<<objCourseList[0].get("NAME")<<"\t"<<objScoreList[j].get("GOAL")<<endl; } } cout<<"请输入修改成绩的课程CODE:"<<endl; cin>>strInput; for(intj=0;j<objScoreList.size();++j) { if(strInput==objScoreList[j].get("COURSECODE")) { cout<<"请输入修改后的成绩:"<<endl; cin>>strInput; objScoreList[j].set("GOAL",strInput); if(objScoreList[j].store(STORE_MODIFY)) { cout<<"修改成绩成功!"<<endl; } else { cout<<"修改成绩失败!"<<endl; } } } } } else { cout<<"学生"<<strInput<<"未找到!"<<endl; } return0;}intDeleteScoreList(){ stringstrInput; cout<<"请输入学生姓名:"<<endl; cin>>strInput; vector<CModifyOp>objStuList; CModifyOp::FetchBy("Student","NAME",strInput,objStuList); if(objStuList.size()>0) { cout<<"学生信息:"<<endl; vector<string>keyList=objStuList[0].getKeyList(); for(inti=0;i<objStuList.size();++i) { for(intj=0;j<keyList.size();++j) { cout<<keyList[j]<<"\t"; } cout<<endl; for(intj=0;j<keyList.size();++j) { cout<<objStuList[i].get(keyList[j])<<"\t"; } cout<<endl; vector<CModifyOp>objScoreList; CModifyOp::FetchBy("Scores","CODE",objStuList[i].get("CODE"),objScoreList); for(intj=0;j<objScoreList.size();++j) { vector<CModifyOp>objCourseList; CModifyOp::FetchBy("Courses","CODE",objScoreList[j].get("COURSECODE"),objCourseList); if(objScoreList.size()>0) { cout<<objScoreList[j].get("COURSECODE")<<"\t"<<objCourseList[0].get("NAME")<<"\t"<<objScoreList[j].get("GOAL")<<endl; } } cout<<"请输入删除成绩的课程CODE:"<<endl; cin>>strInput; for(intj=0;j<objScoreList.size();++j) { if(strInput==objScoreList[j].get("C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026焊工证考试题库及模拟考试答案(高级)
- 2026广东中山大学附属第三医院招聘事业单位人员29人备考题库(第二批)及一套完整答案详解
- 2026内蒙古乌兰察布市察右前旗招聘乌兰牧骑演职人员9人备考题库及完整答案详解一套
- 2026广东广州市番禺区第八人民医院招考编外工作人员(第二批)2人备考题库参考答案详解
- 迈瑞医疗2027届技能人才校园招聘备考题库及一套完整答案详解
- 2026海南省保安协会招聘1人备考题库完整参考答案详解
- 2026山西运城市芮城县招聘公益性岗位50人备考题库完整参考答案详解
- 2026江西吉安吉州区习溪桥街道社区卫生服务中心招募就业见习人员2人备考题库及一套答案详解
- 2026广西钦州市环境卫生管理处招聘公益性岗位人员1人备考题库含答案详解
- 2026年西安电子科技中学教师招聘备考题库及答案详解1套
- 2026版考评员国家职业技能鉴定考试题库(附答案)
- (交安C证)公路工程施工企业安全生产管理人员考试试题含答案
- 2025北京东城区五年级(下)期末语文试题及答案
- HJ-1396-2024-水质-水温的测定-传感器法方法验证参考
- 2026年云南昆明市中考生物试题及答案
- 2026年企业税务合规协议合同
- 生猪屠宰场安全生产培训课件
- 牛肝菌种植技术培训课件
- 质量部档案管理制度
- 2026年初级银行从业资格之初级银行业法律法规与综合能力考试题库500道带答案(基础题)
- 2025中工国际工程股份有限公司社会招聘笔试备考题库附答案解析(夺冠)
评论
0/150
提交评论