计算机科学与技术学院《软件工程》课程设计报告(2013/2014学年学生专业:计算机科学与技术学生班级:计算机102001学生学号:201020010110指导教师:张继福2014年1月17日1问题的定义随着互联网的发展,利用INTERNET技术来实现“无纸办公”这个概念已经深入人心,校园网作为学校信息化建设的一个平台在完成资源共享、互联网访问、教务管理、电子备课等方面发挥了重要作用。服务教学、提高教学水平和效果是校园网建设的核心目标和核心价值,本系统立足于校园实际,着眼于未来发展,建成符合标准化协议、通用性较强、实用的系统,以提高高校的现代化管理水平,实现信息资源的共享。该项目主要是服务于教学方面,进一步方便教师的工作和学生的学习,从而从侧面达到提高学校的教学方面‘软件’质量。
可以说它适用于每一所高校,因此很有开发价值。我们不敢说该产品是所有该系列产品中最好的,但是我们这里要强调的是它具有使用范围广,实用性强,使用简单,所花经费少等优点。我们可以肯定的说它将在高校的使用过程中其优点将得到最充分的体现。
主要功能有三方面:管理员,登陆,进入系统,可以进行管理员操作。进行学生信息、教师信息、课程信息的编辑、查询、删除、修改、添加、打印等操作。学生,登陆,进入系统,可以进行查询、修改、打印等操作。
教师,登陆,进入系统,可以进行查询、学生成绩录入、修改、打印等操作。软件系统目标为一下几点:本系统具有很强的可靠行,可以对录入的学生信息进行效验,对数据进行修改、删除,规定各种权限。本系统中的模块具有很强的可续性,可以方便管理人员的修改与维护。
本系统操作方便、灵活、简单。本系统可高效、快速的查询到学生的基本信息。2可行性研究2.1技术可行性该系统将大大改善数据处理的速度,并且更加方便的对数据进行管理,同时可以大大减少人力资源的浪费以及工作的支出。
另外还可以提高查询的效率,降低查询的错误率,修改数据方便等。因为原来的系统是人工操作,所以效率比较低,相对于以前的系统,本小组开发的学生管理系统在效率上会更高,耗费最短的时间处理更多数据。2.2经济可行性校园内部局域网络已经建成;每个人电脑均已配置;硬件投入不需要很大,另外,学校对系统的开发大力支持。
因此经济上是可行的。2.3操作可行性为了对学生成绩的管理方便,开发人员完成了全面的调查与分析,同时与目标用户进行了多次深入沟通,主要用于大中专院校学生日常管理工作,以规范的学生档案为基础,实现了学生考勤,学籍变更、学生奖惩、考试成绩、教师考勤等电算化管理,实现学校人力资源的优化和学生成绩管理的科学管理而设计的,通过试用本系统,可以更加有效的管理学生成绩信息,其中包括学生的基本信息,成绩信息并且具有信息的增加,查询,修改等功能,所以经过研究与探讨,该软件操作是可行的。3项目开发计划3.1项目背景随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能以为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生成绩管理信息进行管理,具有手工管理所无法比拟的有点。例如,检索迅速、查找方便、可靠性高、存储量高、保密性好、寿命长、成本低等。这些有点能够极大地提高学生档案管理的效率,也是企业科学化、正规化管理,与世界接轨的重要条件。
因此,开发大学成绩管理系统很有必要。学生成绩管理系统是一个学校不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该为用户提供充足的信息和快捷的查询手段。同时,学生成绩管理是各大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,学生成绩日常管理工作及保存管理日趋繁重、复杂。
高校都迫切需要研制开发一款属于自己的功能强大,操作简单,具有人性化的学生成绩管理系统。3.2项目目标在我国,各大中小的各类信息管理并非一个新的课题,但也有的根本就没有信息任何管理,所有的工作几乎还是手工操作来完成。技术在日新月异的发展,信息化是社会进程的必然趋势,管理只有只有快,准,精才能发挥其价值。
本是将现代化的技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使在学院的管理中发挥更大的作用,实现工作过程的化,提高工作效率和工作质量,现提出如下的开发目标:应具有实用性、可靠性和适用性,同时注意到先进性。对各个数据库进行动态管理,防止混乱。
能够按照用户选择的不同的条件进行简单和复合。能够对结果进行分类汇总。注意数据的安全性,具有数据备份和恢复的功能。
方便用户的操作,尽量减少用户的操作。3.3项目功能登录管理:为了保证系统的安全性,可以根据不同的用户权限来提供不同的服务。分为管理员登录和用户(教师、学生)登录两个子模块。
账户管理:分为用户管理和修改密码两个子模块。其中用户管理子模块又包含了添加用户、修改用户和删除用户两部分。信息查询:在各基本表的基础上进行信息查询。
分为学生资料查询和学生成绩查询两个子模块。4需求分析4.1业务流程图经过对现有的资源以及软件分析,并多次与学生、老师、管理员等进行沟通后、将整个成绩查询业务流程抽象描述如下图4.1所示。登陆查询登录成绩表查询信息登录信息管理图4.1学生成绩管理业务流程图4.2性能要求为了满足用户的要求,系统必须要有高的运作速度,用户填写的信息输入到系统,系统必须能快速及时作出响应,迅速处理各项数据、信息,显示出所有必需信息,所以要求很高的信息量速度和大的主存容量;由于要存贮大量的数据和信息,也还要有足够大的磁盘容量;安全性也是系统最重要的性能需求之一,学生信息管理系统必须有可靠的安全措施,以保证用户的各项信息安全。
4.3数据流图该数据流图主要体现出了学生信息的录入以及教师将考核信息存入数据库,最终交给管理员。学生也可以通过软件从数据库查询自己的成绩信息以及个人信息。总体说明了系统管理员、学生、教师之间拥有的权利以及能够进行的一些操作。
数据流图见下图4.2和4.3。图4.2顶层数据流图图4.3一层数据流图4.4数据字典4.4.1数据流数据流里面包括了录入信息、成绩写入数据库、查询结果以及成绩表等几方面。具体信息如下表4-
1、4-
2、4-
3、4-4。
表4-1录入信息的数据字典表4-2成绩写入的数据字典表4-3查询结果的数据字典表4-4成绩表的数据字典4.4.2数据存储数据存储里面主要包括了五张表。具体信息见表4-
5、4-
6、4-
7、4-
8、4-9。表4-5学生表数据字典表4-6管理员表数据字典表4-7教师表数据字典表4-8学生选课表数据字典表4-9学生成绩表数据字典4.4.3处理处理主要分为身份验证和查询登记。
具体信息见表4-10和4-11。表4-10身份验证数据字典表4-11查询等级数据字典5概要设计5.1系统功能模块图根据前面的需求分析以及对软件的开发可能性学生成绩管理系统功能模块图一共分为学生子模块、教师子模块、管理员子模块等基本模块。且在学生子模块下面又包括了学生选课以及成绩查询模块;教师子模块下面包括了教师选课模块;管理员子模块包括了信息维护模块。
成绩管理系统功能模块图如下图5.1所示。图5.1学生成绩管理系统功能模块图5.2模块功能说明1.在学生子模块中,学生可以在该模块中进行选课、退课,成绩查询,并且还可以对自己的个人信息进行增删查改等操作。2.在教师子模块中,教师可以在该模块中进行选课、退课,成绩录入,并且还可以对自己的个人信息进行增删查改等操作。
3.在管理员子模块中,管理员可以在此模块中维护本软件的远行,并且还可以对自己的个人信息进行增删查改等操作,还可以对教师学生的信息进行增删查改的操作。4.在学生选课模块中,学生可以登录后在数据库中选择自己所需要选择的课程进行提交、修改、选择等操作。5.在学生成绩查询模块中,学生可以登录自己的信息后,查询自己所需要的科目成绩,当然可以进行选择后查询自己各个学期的或者一学年的成绩。
6.在教师选课模块中,教师可以在数据库中选择自己所要教授的课程以及班级。在这里教师可以查到课程的有关信息。7.在管理员修改信息模块中,管理员可以管理学生以及教师的一些基本信息。
包括修改、查询、删除等操作。6数据库设计6.1外部接口与用户界面在用户界面部分,根据需求分析的结果,用户需要一个用户友善界面。在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。
外观上也要做到合理化,考虑到用户多对WINDOW风格较熟悉,应尽量向这一方向靠拢。在设计语言上,已决定使用VisualStudio.NET进行编程。总的来说,系统的用户界面应作到可靠性、简单性、易学习和使用。
6.2内部接口内部接口方面,各模块之间采用函数调用、参数传递、返回值的方式进行信息传递。具体参数的结构将在下面数据结构设计的内容中说明。接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间传输。
6.3E-R图初步E-R图和三范式E-R图如图6.1和6.2所示。其中6.1是初步E-R图,包括常用的实体以及属性。清楚的说明了学生、教师、管理员可以进行的一些操作以及反馈信息。
图6.2是满足三范式的E-R图。具体信息如图6.1和6.2所示。图6.1初步E-R图图6.2三范式E-R图6.4数据结构设计根据数据库的原理再加上E-R图的设计,将进行数据结构设计。
在数据库下创建5个主要数据表。其结构如下所示:1.班级信息表(ClassInfo),如表6-1所示。表6-1ClassInfo表字段类型描述ClassID自动编号班级编号(主键)ClassName文本班级名称SpecialtyName文本专业名称ClassNumber文本教书编号Length数字学制Teacher文本班主任EnrolmentTime日期/时间入校时间Remark备注备注2.课程表(Course),如表6-2所示。
表6-2Course表字段类型描述CourseID自动编号课程编号(主键)ClassID数字班级编号Course文本课程名称Semester文本学期3.成绩表(ScoreInfo),如表6-3所示。表6-3ScoreInfo表字段类型描述ScoreID自动编号成绩编号(主键)Semester文本学期StudentNumber文本学生学号Course文本课程Score数字分数4.专业表(SpecialtyInfo),如表6-4所示。表6-4SpecialtyInfo表字段类型描述SpecialtyID自动编号专业编号SpecialtyName文本专业名称(主键)Remark备注备注5.学生信息表(StudentInfo),如表6-5所示。
表6-5StudentInfo表字段类型描述StudentID自动编号自动编号(主键)StudentNumber文本学号Name文本姓名Sex文本性别Address文本家庭住址Telephone文本联系电话ClassID数字班级编号Remark备注备注7详细设计7.1系统程序流程图7.1.1学生基本信息模块学生基本信息模块包括了学生的个人信息以及成绩查询的选项。在这里学生可以根据自己的需求选择要进行的操作。进行相应的操作就会把相应的信息输出,以便能够清楚的查询自己所需要的知识。
流程图如下图7.1所示。图7.1学生基本信息流程图7.1.2学生选课模块该模块主要包括了学生在选课数据库里进行选课的一些操作。学生可以在这里输入信息,然后选择自己想要选择的课程。
当然,学生在这里也可以查询课程的一些相关信息。流程图如下图7.2所示。图7.2学生选课流程图7.1.3学生成绩查询模块该模块主要提供学生对成绩的查询信息。
学生可以在此输入学号和密码后,查询自己想要查询的课程的成绩信息。流程图如下图7.3所示。图7.3学生成绩查询流程图7.1.4教师基本信息模块该模块主要说明了教师的一些基本信息。
包括自己的授课查询以及对学生成绩的查询等一些操作。流程图如下图7.4所示。图7.4教师基本信息流程图7.1.5教师选课模块本模块主要说明了教师能够进行自己授课的一些选择。
可以在选课信息表里选择自己要教授的课程。流程图如下图7.5所示。图7.5教师选课流程图7.1.6管理员基本信息模块该模块主要说明了管理员应该具备的一些权利以及对一些信息的管理以及查询。
管理员可以在这里进行学生成绩的管理以及教师选课的一些信息管理。流程图如下图7.6所示。图7.6管理员基本信息流程图7.1.7管理员信息维护模块该模块主要说明了管理员可以对一些信息进行维护的操作。
其中,这些信息可以是学生的或者是教师的信息都可以在这里进行维护。流程图如下图7.7所示。图7.7管理员信息维护流程图7.2界面设计用户登陆:该系统根据用户的身份实现了不同的功能,用户登陆时需要选择一种登陆方式(默认情况下是学生),系统再根据用户选择的登陆方式到相应的表中去搜索。
例如,登陆时选择了教师登陆方式,系统将会在教师信息表中搜索是否存在与该用户的输入相符的信息,如果存在则进入教师主页,否则提示用户输入有误,请重新输入。7.2.1学生用户界面学生的初始密码是由管理员指定的。学生登陆后,可以按照要求自行修改使用密码。
首先需要输入原始密码,如果原始密码没有输入正确将不能修改密码,只有在原始密码正确的基础上,用户才能继续下面的操作。新密码设定后,系统还要求用户再输入一次重复密码,避免因为误输而导致密码丢失。查询指定学期成绩:学生可以查询自己指定学期的成绩和所有的成绩。
方便学生了解自身情况。选课系统:学生选课系统是针对学生进行网上选课而设计的,学生可以自主选择自己想修的课程。7.2.2教师用户界面查询授课计划:教师可以利用该系统实现查询授课计划的功能,教师不仅可以看到自己本学期要授的课程信息,还能查看选修对应课程的学生名单,同时可以添加对应课程的学生成绩。
帮助教师提高了工作效率。查询学生基本信息:教师可以查询学生的基本信息,以帮助教师了解学生情况。7.2.3管理员界面学生基本信息管理:学生基本信息管理包括学生基本信息添加、学生基本信息修改、学生基本信息删除。
下面给出的是学生信息添加界面教师基本信息管理:教师基本信息管理包括教师基本信息添加、教师基本信息修改以及教师基本信息删除。8测试报告8.1测试系统模块首先进入该软件如下图8.1所示,可以进行用户的选择。图8.1登录系统进入教师模块可以对学生的成绩进行录入,包括课程编号、课程名、学分、平时成绩、实验、卷面成绩等信息。
如下图8.2所示。图8.2教师模块进入学生模块后,可以输入学号来进行成绩的查询。其中成绩包括平时成绩、实验成绩、卷面成绩等信息。
如下图8.3所示。图8.3学生模块进入管理员模块后,可以进行学生基本信息录入、查询学生信息、班级信息、删除等操作。也可以将成绩按照综合成绩排或者学分来排序。
入下图8.4所示。图8.4管理员模块8.2测试摘要软件所要实现的功能及程序的关系如下表8-1:表8-1软件测试功能8.3不足之处测试的时候有些算法还需简化,由于安全性与权限及运行速度要达到一个平衡。我们还有待找到一个平衡支点。
要使软件更加的安全和权限更好的分配给不同的用户。设计时还应该尽可能多的设计更好的模块。使得模块功能更多,但结构更简洁。
使每个人都能轻易的掌握操作原理以及技巧。9用户手册9.1编写目的编写该文档是为了指导普通用户使用操作该程序。处理和查询想要知道的数据,并为测试提供依据。
该文档的阅读者为普通用户和测试人员。9.2背景1)待开发系统软件名称:学生成绩管理系统;2)本项目的任务提出者是学校信息管理系统的各位老师,由本小组负责开发,用于太原科技大学广大师生成绩查询及管理;3)开发背景:本系统属于太原科技大学网络管理系统的学生成绩管理模块,实现的是网络管理系统中关于学生成绩管理的子功能,通过此软件,提高用软件工程分析问题、解决问题的能力,同时增强对数据库和VC的使用能力。9.3运行环境9.3.1硬设备1)至少具有奔腾III800,128M内存配置的计算机;2)Microsoft鼠标,或其他兼容鼠标;3)至少500M的磁盘空间;4)至少32MB的RAM存储器。
9.3.2支持软件操作系统:WIN98,WIN2000,WINXP和Vista等执行程序:visualC数据库:SQLSever20009.3.3数据结构本系统的使用需要连接SQLServer数据库,当需更新数据库时,可以新建数据库,并且在数据库中按需要新建各个表格,存储在相应的文件夹中。附录程序源代码如下:#include<iostream>#include<string>#include<fstream>#include<conio.h>usingnamespacestd;classstu{charnumber[10];charname[20];public:stu(chara[10],charb[20]){strcpy(number,a);strcpy(name,b);}char*getnumber(){returnnumber;}char*getname(){returnname;}};classstu1:publicstu{charsex[4];charsushenumber[8];chartelephone[10];public:stu1(chara[10],charb[20],charc[4],chard[8],chare[10]):stu(a,b){strcpy(sex,c);strcpy(sushenumber,d);strcpy(telephone,e);}friendvoidmain();};classstu2:publicstu{charclassnumber[8];charclassname[10];doublescore,pingshigrade,shiyangrade,juanmiangrade,zonghegrade,lastscore;public:stu2(chara[10],charb[20],charf[8],charg[10],doubleaa,doublebb,doublecc,doubledd,doubleee,doubleff):stu(a,b){strcpy(classnumber,f);strcpy(classname,g);score=aa;pingshigrade=bb;shiyangrade=cc;juanmiangrade=dd;zonghegrade=ee;lastscore=ff;}friendvoidmain();};voidmain(){charc;stringpassword;intflag7=0;ints=0;cout<<"欢迎进入学生成绩管理系统"<<endl;cout<<"请输入你的登录密码"<<endl;do{do{c=getch();if(c==char
(13))break;password+=c;cout<<"*";}while
(1);cout<<"\n";if(password=="123456"){flag7=1;charnumber[10];charname[20];charsex[4];charsushenumber[8];chartelephone[10];inti=0,I=0,j=0;intja;ja=0;ofstream*file[50];stu1*s[50];stu2*s1[50];charclassnumber[8];charclassname[10];doublescore,pingshigrade,shiyangrade,juanmiangrade,zonghegrade,lastscore;boolflag=0;intp;charc6;do{cout<<"请输入你的身份:"<<endl;cout<<"1管理员"<<endl;cout<<"2老师"<<endl;cout<<"3学生"<<endl;do{cin>>p;if(1<=p&&p<=3)flag=1;elsecout<<"错误指令!请重新输入。"<<endl;}while(flag==0);if(p==1){cout<<"欢迎进入管理员模块"<<endl;charc4;do{cout<<"请输入您要进行的操作"<<endl;cout<<"1学生基本信息录入"<<endl;cout<<"2查询学生基本信息"<<endl;cout<<"3查询班级学生信息"<<endl;cout<<"4删除功能"<<endl;cout<<"5按综合成绩实现排序功能"<<endl;cout<<"6按实得学分实现排序功能"<<endl;intm;cin>>m;switch(m){case1:charc;do{cout<<"请输入学号"<<endl;cin>>number;cout<<"请输入姓名"<<endl;cin>>name;cout<<"请输入性别"<<endl;cin>>sex;cout<<"请输入宿舍号码"<<endl;cin>>sushenumber;cout<<"请输入电话号码"<<endl;cin>>telephone;file[ja]=newofstream("d:\\a.txt",ios::app);*file[ja]<<"学号"<<number<<"姓名"<<name<<"性别"<<sex<<"宿舍号码"<<sushenumber<<"电话号码"<<telephone<<endl;ja++;s[i]=newstu1(number,name,sex,sushenumber,telephone);i++;cout<<"数据录入成功,想继续输入吗(y/n)"<<endl;cin>>c;flag=0;do{if(c!='y'&&c!='n'){cout<<"错误指令!请重新输入!"<<endl;cin>>c;}elseflag=1;}while(flag==0);}while(c=='y');break;case2://查询学生基本信息charn[20];charc1;inta;do{intflag1=0;cout<<"请输入查询的方式"<<endl;cout<<"1学号查询"<<endl;cout<<"2姓名查询"<<endl;cin>>a;if(a==1){cout<<"请输入你要查询的学生的学号"<<endl;cin>>n;for(intj=0;j<i;j++)if(strcmp(n,(*s[j]).getnumber())==0){flag1=1;cout<<"你要查询的学生是:"<<(*s[j]).getnumber()<<endl;cout<<"学号"<<(*s[j]).getnumber()<<"姓名"<<(*s[j]).getname()<<"性别"<<(*s[j]).sex<<"宿舍号码"<<(*s[j]).sushenumber<<"电话号码"<<(*s[j]).telephone<<endl;}}if(a==2){cout<<"请输入你要查询的学生的姓名"<<endl;cin>>n;for(intj=0;j<i;j++)if(strcmp(n,(*s[j]).getname())==0){flag1=1;cout<<"你要查询的学生是:"<<(*s[j]).getname()<<endl;cout<<"学号"<<(*s[j]).getnumber()<<"姓名"<<(*s[j]).getname()<<"性别"<<(*s[j]).sex<<"宿舍号码"<<(*s[j]).sushenumber<<"电话号码"<<(*s[j]).telephone<<endl;}}if(flag==0)cout<<"对不起!你查询的学生不存在!"<<endl;cout<<"你想继续查询吗?(y/n)"<<endl;cin>>c1;if(c1!='y'&&c1!='n'){cout<<"指令错误!请重新输入!"<<endl;cin>>c1;}}while(c1=='y');break;case3:charc2;charm[10];do{intflag2=0;cout<<"请输入你要查询的班级"<<endl;cin>>m;cout<<"信息如下"<<endl;for(intj=0;j<i;j++){char*x=(*s[j]).getnumber();charxx[8];for(intjj=0;jj<=6;jj++){xx[jj]=*x;x++;}xx[7]='\0';if(strcmp(m,xx)==0){flag2=1;cout<<"学号"<<(*s[j]).getnumber()<<"姓名"<<(*s[j]).getname()<<"性别"<<(*s[j]).sex<<"宿舍号码"<<(*s[j]).sushenumber<<"电话号码"<<(*s[j]).telephone<<endl;}}if(flag2==0)cout<<"对不起!你输入的班级不存在!"<<endl;cout<<"你想继续查询吗?(y/n)"<<endl;cin>>c2;if(c2!='y'&&c2!='n'){cout<<"指令错误!请重新输入!"<<endl;cin>>c2;}}while(c2=='y');break;case4:charnn[10];charcz;intflag2,mm,mmm;do{cout<<"请输入您要删除的学生学号:"<<endl;cin>>nn;for(inthh=0;hh<i;hh++){if(strcmp(nn,s[hh]->getnumber())==0){flag2=1;i--;mm=hh;do{s[mm]=s[mm+1];mm++;}while(mm<=i);hh--;}}for(inthhh=0;hhh<I;hhh++){if(strcmp(nn,s1[hhh]->getnumber())==0){flag2=1;I--;mmm=hhh;do{s1[mmm]=s1[mmm+1];mmm++;}while(mmm<=I);hhh--;}}if(flag2==0)cout<<"您要求删除的对象本来就不存在!请检查输入的正确性!";cout<<"要继续删除吗?(y/n)"<<endl;cin>>cz;if(cz!='y'&&cz!='n'){cout<<"指令错误!请重新输入!"<<endl;cin>>cz;}}while(cz=='y');break;case5:intk;intk1,i1;charna[10];stu2*temp;stu2*s2[50];k1=0;cout<<"请输入你要排序的课程名"<<endl;cin>>na;cout<<"1升序排序"<<endl;cout<<"2降序排序"<<endl;cin>>k;for(i1=0;i1<I;i1++){if(strcmp((*s1[i1]).classname,na)==0){s2[k1]=s1[i1];k1++;}else{cout<<"无此课程\n";}}if(k==1){for(intii=0;ii<k1-1;ii++)for(j=ii+1;j<k1;j++)if((*s2[ii]).zonghegrade>(*s2[j]).zonghegrade){temp=s2[ii];s2[ii]=s2[j];s2[j]=temp;}}if(k==2){for(intii=0;ii<k1-1;ii++)for(j=ii+1;j<k1;j++)if((*s2[ii]).zonghegrade<(*s2[j]).zonghegrade){temp=s2[ii];s2[ii]=s2[j];s2[j]=temp;}}for(j=0;j<k1;j++)cout<<"学号"<<(*s2[j]).getnumber()<<"姓名"<<(*s2[j]).getname()<<"课程编号"<<(*s2[j]).classnumber<<"课程名称"<<(*s2[j]).classname<<"学分"<<(*s2[j]).score<<"平时成绩"<<(*s2[j]).pingshigrade<<"实验成绩"<<(*s2[j]).shiyangrade<<"卷面成绩"<<(*s2[j]).juanmiangrade<<"综合成绩"<<(*s2[j]).zonghegrade<<"实得学分"<<(*s2[j]).lastscore<<endl;break;case6://按实得学分实现排序功能intq;inta1=0;charnam[10];stu2*s3[50];stu2*te;cout<<"请输入你要排序的课程名"<<endl;cin>>nam;cout<<"1升序排序"<<endl;cout<<"2降序排序"<<endl;cin>>q;for(intiii=0;iii<I;iii++){if(strcmp((*s1[iii]).classname,nam)==0){s3[a1]=s1[iii];a1++;}}if(q==1){for(intii=0;ii<a1-1;ii++)for(j=ii+1;j<a1;j++)if((*s3[ii]).lastscore>(*s3[j]).lastscore){te=s3[ii];s3[ii]=s3[j];s3[j]=te;}}if(q==2){for(intii=0;ii<a1-1;ii++)for(j=i+1;j<a1;j++)if((*s3[ii]).lastscore<(*s3[j]).lastscore){te=s3[ii];s3[ii]=s3[j];s3[j]=te;}}for(j=0;j<a1;j++)cout<<"学号"<<(*s3[j]).getnumber()<<"姓名"<<(*s3[j]).getname()<<"课程编号"<<(*s3[j]).classnumber<<"课程名称"<<(*s3[j]).classname<<"学分"<<(*s3[j]).score<<"平时成绩"<<(*s3[j]).pingshigrade<<"实验成绩"<<(*s3[j]).shiyangrade<<"卷面成绩"<<(*s3[j]).juanmiangrade<<"综合成绩"<<(*s3[j]).zonghegrade<<"实得学分"<<(*s3[j]).lastscore<<endl;break;}cout<<"你想使用管理员其他功能吗?(y/n)"<<endl;cin>>c4;if(c4=='n')break;}while(c4=='y');}if(p==2){charc3,c5;cout<<"欢迎进入教师模块(只能录入成绩)"<<endl;do{cout<<"请输入你教学的课程编号"<<endl;cin>>classnumber;cout<<"请输入你教学的课程名"<<endl;cin>>classname;do{cout<<"请输入学生学号"<<endl;cin>>number;cout<<"请输入学生姓名"<<endl;cin>>name;cout<<"本课程学分"<<endl;cin>>score;cout<<"该生平时成绩"<<endl;cin>>pingshigrade;cout<<"实验成绩"<<endl;cin>>shiyangrade;cout<<"卷面成绩"<<endl;cin>>juanmiangrade;if(shiyangrade==-1)zonghegrade=pingshigrade*0.3+juanmiangrade*0.7;elsezonghegrade=pingshigrade*0.15+shiyangrade*0.15+juanmiangrade*0.7;if(90<=zonghegrade&&zonghegrade<=100)lastscore=score;elseif(80<=zonghegrade)lastscore=score*0.8;elseif(70<=zonghegrade)lastscore=score*0.75;elseif(60<=zonghegrade)lastscore=score*0.6;elselastscore=0;file[j]=newofstream("d:\\b.txt",ios::app);*file[j]<<"学号"<<number<<"课程编号"<<classnumber<<"课程名称"<<classname<<"学分"<<score<<"平时成绩"<<pingshigrade<<"实验成绩"<<shiyangrade<<"卷面成绩"<<juanmiangrade<<"综合成绩"<<zonghegrade<<"实得学分"<<lastscore<<endl;j++;s1[I]=newstu2(number,name,classnumber,classname,score,pingshigrade,shiyangrade,juanmiangrade,zonghegrade,lastscore);I++;cout<<"数据输入成功,想继续录入吗(y/n)";cin>>c3;intflag3=0;do{if(c3!='y'&&c3!='n'){cout<<"错误指令!请重新输入!"<<endl;cin>>c3;}elseflag3=1;}while(flag3==0);}while(c3=='y');cout<<"其余老师需要录入成绩吗(y/n)";cin>>c5;intflag5=0;do{if(c5!='y'&&c5!='n'){cout<<"错误指令!请重新输入!"<<endl;cin>>c5;}elseflag5=1;}while(flag5==0);}while(c5=='y');}if(p==3){cout<<"欢迎进入学生模块"<<endl;charnum[10];cout<<"请输入你的学号"<<endl;cin>>num;intii=0;doublesum=0;for(intj=0;j<I;j++){if(strcmp((*s1[j]).getnumber(),num)==0){cout<<"课程编号"<<(*s1[j]).classnumber<<"课程名称"<<(*s1[j]).classname<<"学分"<<(*s1[j]).score<<"平时成绩"<<(*s1[j]).pingshigrade<<"实验成绩"<<(*s1[j]).shiyangrade<<"卷面成绩"<<(*s1[j]).juanmiangrade<<"综合成绩"<<(*s1[j]).zonghegrade<<"实得学分"<<(*s1[j]).lastscore<<endl;ii++;sum+=(*s1[j]).lastscore;}}cout<<"共修"<<ii<<"科"<<""<<"实得学分"<<sum<<endl;}cout<<"你想以其他身份登陆吗?(y/n)"<<endl;cin>>c6;}while(c6=='y');}else{cout<<"错误密码,重新输入"<<endl;password="\0";}}while(flag7==0);}。
【软件工程实验报告_学生成绩管理系统 软件工程项目设计学生成绩管理】相关文章:
软件工程的实习报告 软件工程专业实践报告08-05
软件工程专业实习报告 软件工程专业实践08-05
软件工程实验报告 - 十个实验 软件工程实验报告完整版08-05
软件工程实验报告_学生成绩管理系统 软件工程项目设计学生成绩管理08-05
软件工程实验报告 软件工程实验报告总结08-05
软件工程实验报告完整版 软件工程实验报告完整版范文08-05
软件工程实验报告 软件工程实验报告一08-05