当前位置:首页 » 考试成绩 » 学生成绩概要设计

学生成绩概要设计

发布时间: 2020-12-20 19:08:48

1. 谁有学生成绩管理系统概要设计说明书!大神们帮帮忙

概要设计说明书的编写提示 (参考件) E.1 引言 E.1.1 编写目的 说明编写这份概要设计说明书的目的,指出预期的读者。 E.1.2 背景 说明: a. 待开发软件系统的名称; b. 列出此项目的任务提出者、开发者、用户以及将运行该软件的计算站(中心)。 E.1.3 定义 列出本文件中用到的专门术语的定义和外文首字母组词的原词组。 E.1.4 参考资料 列出有关的参考文件,如: a. 本项目的经核准的计划任务书或合同,上级机关的批文; b. 属于本项目的其他已发表文件; c. 本文件中各处引用的文件、资料,包括所要用到的软件开发标准。 列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的来源。 E.2 总体设计 E.2.1 需求规定 说明对本系统的主要的输入输出项目、处理的功能性能要求,详细的说明可参见附录C。 E2.2 运行环境 简要地说明对本系统的运行环境(包括硬件环境和支持环境)的规定,详细说明参见附录C。 E2.3 基本设计概念和处理流程 说明本系统的基本设计概念和处理流程,尽量使用图表的形式。 E.2.4 结构 用一览表及框图的形式说明本系统的系统元素(各层模块、子程序、公用程序等)的划分,扼要说明每个系统元素的标识符和功能,分层次地给出各元素之间的控制与被控制关系。 E.2.5 功能需求与程序的关系 本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系: 程序1 程序2 …… 程序m 功能需求1 √ 功能需求2 √ 功能需求 √√ E.2.6 人工处理过程 说明在本软件系统的工作过程中不得不包含的人工处理过程(如果有的话)。 E.2.7 尚未解决的问题 说明在概要设计过程中尚未解决而设计者认为在系统完成之前必须解决的各个问题。 E.3 接口设计 E.3.1 用户接口 说明将向用户提供的命令和它们的语法结构,以及软件的回答信息。 E.3.2 外部接口 说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系。 E.3.3 内部接口 说明本系统之内的各个系统元素之间的接口的安排。 E.4 运行设计 E.4.1 运行模块组合 说明对系统施加不同的外界运行控制时所引起的各种不同的运行模块组合,说明每种运行所历经的内部模块和支持软件。 E.4.2 运行控制 说明每一种外界的运行控制的方式方法和操作步骤。 E.4.3 运行时间 说明每种运行模块组合将占用各种资源的时间。 E.5 系统数据结构设计 E.5.1 逻辑结构设计要点 给出本系统内所要使用的每个数据结构的名称、标识符以及它们之中每个数据项、记录、文卷和系的标识、定义、长度及它们之间的层次的或表格的相互关系。 E.5.2 物理结构设计要点 给出本系统内所使用的每个数据结构中的每个数据项的存储要求,访问方法、存取单位、存取的物理关系(索引、设备、存储区域)、设计考虑和保密条件。 E.5.3 数据结构与程序的关系 说明各个数据结构与访问这些数据结构的各个程序之间的对应关系,可采用如下的矩阵图形式: 程序1 程序2 …… 程序m 功能需求1 √ 功能需求2 √√ 功能需求 √√ E.6 系统出错处理设计 E.6.1 出错信息 用一览表的方式说明每种可能的出错或故障情况出现时,系统输出信息的形式、含意及处理方法。 E.6.2 补救措施 说明故障出现后可能采取变通措施,包括: a. 后备技术 说明准备采用的后备技术,当原始系统数据数据万一丢失时启用的副本的建立和启动的技术,例如周期性地把磁盘信息记录到磁带上去就是对于磁盘媒体的一种后备技术; b. 降效技术 说明准备采用的后备技术,使用另一个效率稍低的系统或方法来求得所需结果的某些部分,例如一个自动系统的降效技术可以是手工操作和数据的人工记录; E.6.3 系统维护设计 说明为了系统维护的方便而在程序内部设计中作出的安排,包括在程序中专门安排用于系统的检查与维护的检测点和专用模块。

2. 教务管理系统 概要设计说明书

基于你的题目教务管理系统,我们可以提供一份代码,适用于初学者的,
如有具体需求内,可以我们联系,,告诉我容你的问题和联系方式,有可能帮你,不过绝对救急,使用网络_Hi给我留言,

此回复对于所有需求和和来访者有效,
ES:\\

3. 课程设计题目:学生成绩管理系统

附件:(程序代码)

#include<iostream>
#include<fstream> //输入输出文件
#include<string>
#include<iomanip> //输出格式控制
using namespace std;
char press;int choose;int n;
class Student
{public:
int num;//学号
string name;//姓名
int bj;// 班级
char sex;//性别
float Math;//高数
float English;//英语
float Cjj;//C++
float sum;//总分
float average;//平均分
};
Student stud[100];
//----------------读取资料------------------
void read()
{char filename[20];
cout<<"从文件中读取信息!"<<endl;
cout<<"请输入文件名:"<<endl;
cin>>filename;
ifstream infile(filename,ios::in|ios::out); 磁盘文件
if(!infile)
{cerr<<"open error!"<<endl; exit(1); }//输出出错信
do {int i=0;
infile>>stud[i].num>>stud[i].name>>stud[i].sex>>stud[i].bj;
infile>>stud[i].Math>>stud[i].English>>stud[i].Cjj;
cout<<"学生的学号:"<<stud[i].num<<" "
<<"姓名:"<<stud[i].name<<" "
<<"性别(男m/女w):"<<stud[i].sex<<" "
<<"班级(数字如:03):"<<stud[i].bj<<" "
<<"高数成绩:"<<stud[i].Math<<" "
<<"大学英语成绩:"<<stud[i].English<<" "
<<"C++成绩:"<<stud[i].Cjj<<endl; i++;}
while(!infile.eof());
infile.close();
cout<<"读取成功!"<<endl;}
//----------------保存资料------------------
void save()
{int i;
char filename[20];
for(i=0;i<n;i++)
{cout<<"学生的学号:"<<stud[i].num<<" "
<<"姓名:"<<stud[i].name<<" "
<<"性别:"<<stud[i].sex<<" "
<<"班级:"<<stud[i].bj<<" "
<<"高数成绩:"<<stud[i].Math<<" "
<<"大学英语成绩:"<<stud[i].English<<" "
<<"C++成绩:"<<stud[i].Cjj<<endl;}
cout<<"将记录保存在文件夹!"<<endl;
cout<<"请输入文件名:";
cin>>filename;
ofstream outfile(filename);
if(!outfile){cerr<<"open error!"<<endl;}//输出出错信
for(i=0;i<n;i++)//向保存文件保存学生的信息
{outfile<<" "<<stud[i].num<<" "<<stud[i].name<<" "<<stud[i].sex<<" "<<stud[i].bj<<" ";
outfile<<stud[i].Math<<" "<<stud[i].English<<" "<<stud[i].Cjj; }
outfile.close();cout<<"保存成功!"<<endl;}

void SR()
{cout<<"请根据你的需要输入学生的个数[(人数)>=2]:";
cin>>n;for(int a=0;a<n;a++)
{cout<<"请输入第"<<a+1<<"个学生资料:"<<endl;
cout<<"学号:"<<' ';cin>>stud[a].num;
cout<<"姓名:"<<' ';cin>>stud[a].name;
cout<<"性别(男m/女w):"<<' ';cin>>stud[a].sex;
cout<<"班级(数字如:03):"<<' ';cin>>stud[a].bj;
cout<<"高数成绩:"<<' ';cin>>stud[a].Math;
cout<<"大学英语成绩:"<<' ';cin>>stud[a].English;
cout<<"C++成绩:"<<' ';cin>>stud[a].Cjj;
stud[a].sum=stud[a].Math+stud[a].English+stud[a].Cjj;
stud[a].average=(stud[a].Math+stud[a].English+stud[a].Cjj)/3;}
cout<<"输入成功,学生资料是否保存?(y/n)"<<endl;cin>>press;
switch(press)
{case 'y' : save();break;default: cout<<"不保存!";break;}}
//----------------删除资料------------------
void SC()
{do{string SC_name;
cout<<"请输入你要删除的学生名字:"<<endl;int i=0;cin>>SC_name;
while(stud[i].name!=SC_name&&i<n) i++; //查找判断
if(stud[i].name==SC_name)
{for(int j=i;j<n-1;j++)
{stud[i].num=stud[i+1].num;
stud[i].name=stud[i+1].name;
stud[i].sex=stud[i+1].sex;
stud[i].bj=um<<" "<<stud[k].name<<" "<<stud[k].sex<<" "<<stud[k].bj<<" "<<stud[k].average<<endl;cout<<endl;}
//----i].
这样可以么?

4. 学生信息管理系统 概要设计怎么写

一、弄清楚系统要实现什么功能,比如老师基本信息维护、学生基本信息维护、课程版信息维护、学生考试成绩权维护 等等 这就是传说中的需求分析

二、把这些功能划分车不同的模块 搞清楚各个模块之间的关系 搞清楚各个模块之间如何交互 这就是传说中的概要设计 定义各个模块的属性、接口等信息 这就是传说中的系统设计

三、设计数据结构 创建数据表

四、开始编写各个模块的代码

五、测试

六、写论文、答辩

5. 求.NET学生成绩管理系统需求分析

没法传图,自己想一下怎么改吧……

一.开发目的:

总结软件开发过程中的方法和技巧,更好的应用和数据库技术

1.开发内容:开发一套学生成绩管理系统软件

采取的研究方法:采用面向对象的编程,结合网络和数据库技术,实现控制和管理。通过系统分析、需求分析、概要设计、详细设计、编写代码、软件测试、软件维护、经验方法总结等一系列实验方案,实验软件的开发。

2.具体开发方案:

分七个阶段进行:

系统分析、需求收集和分析

概念设计

第一阶段:系统分析、需求收集和分析

这一阶段首先进行系统分析,分析确定系统的规模和范围,确定软件的总体要求以及所需要的硬件和支撑软件,确定待开发软件与外界的接口,根据用户的情况确定软件对操作的要求,以及待开发软件总体上的约束和限制,完善项目计划。

在这之后,这一阶段的大部分时间将被用来进行需求收集和分析。向学校管理人员及学生了解情况,确定软件系统的综合要求,分析软件系统的数据要求,导出系统的逻辑模型,修正项目开发计划。

采用结构化分析方法,生成数据流图、数据词典及加工逻辑说明。

估计阶段跨度:2006年某月初至某月中旬

第二阶段:概要设计

在这一阶段将确定软件系统的结构,对全局数据结构进行设计,进行模块划分,确定每个模块的功能 接口以及模块间的调用关系。

采用与结构化方法衔接的结构化设计方法,生成结构图及概念设计说明书。

估计阶段跨度:2006年某月中旬至某月底

第三阶段:详细设计

为每个模块设计实现的细节将成为这个阶段的主要任务,还要对局部数据结构进行设计。

采用结构化设计方法。采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。使得程序具有良好的结构,增强程序的可读性。生成程序流程图及详细设计说明书。

详细设计时,如果不满意,须回到概要设计中重新完善设计。

估计阶段跨度:2006年某月初至某月中旬

第四阶段:编写代码

这一阶段用来根据详细设计说明书编写代码。

采用计算机语言编写。追求高质量的代码,生成源程序代码、内部文档。

估计阶段跨度:2006年某月中旬至某月底

第五阶段:软件测试

这将是一个很重要也将是一个很耗时间和精力的阶段。

在这一阶段中将尽可能多地发现软件中的错误和缺陷。如果有错,还将退回到编码阶段进行调试。测试过程分为单元测试、集成测试和确认测试。

估计阶段跨度:2006年某月初至某月中旬

第六阶段:完善各项文档及和报告,从整个开发过程和这些文档中总结经验和教训,罗列各种方法和技巧。

估计阶段跨度:2007年某月中旬至某月底。

需求分析说明书

一,引言

21世纪以高科技为核心的知识经济将占主导地位,国家的综合国力和国际竞争力将越来越取决于科学技术创新水平。教育作为知识创新、传播和应用的基础,培养和输送人才的摇篮,已经成为经济发展和社会进步的基础。尽管人类进步的程度随着不同时代,不同地区而有所变化,教育的口径却在不断扩宽,以便使过去仅供少数人使用的教育资源能够为更多各种年龄、不同社会阶层和背景的人们所用。在信息爆炸的时代,传统教学管理面临着诸多挑战。

1.编写目的:

开发基于互联网的学生选课系统,提高管理工作的效率、提高信息的开放性、改善学生和教师对其最新信息查询的准确性。

2.背景说明

随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生选课的各种信息量也成倍增长,而目前许多高校的学生选课管理仍停留在复杂的人工操作上,重复工作较多,工作量大,效率低,因此,迫切需要开发基于互联网的体育课信息管理系统来提高管理工作的效率。基于互联网的学生选课管理系统,在学生选课的规范管理、科学统计和快速查询方面具有较大的实用意义。它提高了信息的开放性,大大地改善了学生、教师对其最新信息查询的准确性。

3.术语定义及参考资料

1. (美) Grady Booch,James Rumbaugh,Ivar Jacobson,《UML用户指南》,机械工业出版社,2001年8月

2.Microsoft,MSDN

3.Microsoft, SQL Server2000联机手册

4.Roger S. Pressman。软件工程——实践者的研究方法。机械工业出版社,1997

5.IPL。Software Testing and Software Development Lifecycles。IPL,1996

6.Karl E. Wiegers《软件需求》机械工业出版社,1999

7.张海藩《软件工程导论》清华大学出版社。

4任务概述
4.1. 目标

系统开发的总体任务是实现学生选课信息关系的系统化、规范化和自动化。
4.2. 系统技术
学生选课系统要求具有信息处理的开发性,方便教师上传学生成绩、学生上网选课和查询选课信息及成绩等,因此本系统设计为基于WWW的网络数据库应用系统,使用ASP脚本以Access为数据库的开发技术,运行在支持ASP的服务器上。
4.3基本设计概念和处理流程

采用基于SQL Server 的分布式数据库管理系统。三层结构是目前用得最多的,这种结构比传统的C/S结构增加了一个应用程序服务器,应用程序服务器包括了统一的界面、业务规则和数据处理逻辑等等,这样客户端程序就可以做得比较小,也就是常说的瘦客户,更由于业务规则和数据处理逻辑的集中在服务器上统一管理,客户端无须进行复杂的计算,也不会因为错误的操作而影响到其他的用户,所以他的可靠性、稳定性和效率都比较好。
4.4. 用户的特点

为保证系统安全高效的运行,本系统把用户划分为3类:教务处、教师和学生。不同的用户在系统中的作用和权限也有所不同,所以它所需要完成的功能也就不同。

教务处可以完成本系统所有的功能:

1) 学生信息管理,除学生基本信息外,还可管理学生所选课程、成绩等;

2) 教师信息管理,包括教师个人的基本情况和任课情况;

3) 项目及班数的设定:根据学校教务处所排课进行班级数及人数的统计,然后根据统计结果进行项目及班数的设定;

4) 排课:根据上一步分班情况安排任课教师;

5) 报表生成及输出:生成教师担任课程分班表、按项目生成学生成绩表、按学生行政班生成成绩表及所有报表的输出。

教师在本系统的功能:查询学生选课情况、自己任课情况、获取自己所担任课程分班表、录入及修改成绩等。

学生在本系统的功能:查询本人信息、教师任课信息、选课、选课信息查询、成绩查询

5.需求规定
5.1. 对功能的规定

1.可实现学生选课注册

2.方便实现学生选课信息查询

3.可对学生成绩档案进行管理,成绩表单生成简便。

4.安全有效的用户区分,管理

5.档案数据的高安全性,保密性

6.有帮助文档
5.2. 对性能的规定

使用稳定,操作性能好,操作方法易于掌握,系统的安全性强

6. 设计思想
用户的需求具体表现在对各种信息的提供、编辑、处理及查询统计上。这就要求数据库结构能充分满足各种信息的输入、处理和输出。通过分析学生选课管理系统的现实需求,学生选课管理系统各环节的基本数据及数据处理流程,在与管理人员沟通、交流与探讨的基础上,得到以下学生选课系统的数据流程图
6.1. 数据库的设计
通过对学生选课管理系统工作内容和相关数据流程分析,根据学生选课管理系统的需要,就可以设计出能满足用户需求的各种实体,以及它们之间的关系,由此得到数据库所支持的数据模型,即数据库的逻辑结构,具体情况如下:
1.学生信息表:开学时将教务处提供的学生信息库按系统的要求修改库结构并导入Access数据库中,应包括如下信息:姓名、学号、院系、班级、性别、所选课程、任课教师、备注等。
2.教师信息表:包括教师姓名、教师代码、性别、年龄、职称、主要教授课程、兼任课程等。
3.课程信息:包括课程目录、课程、课程代码、教学内容、任务与目的、考试方法、要求等。
4.课程表:包括课程名称、课程编号、任课教师、课程学分、上课时间。
5.成绩单列表:包括学生姓名、学号、院系、班级、课程、任课教师、成绩。

6.2. 系统功能特点
1.内容全面 系统全面覆盖了体育课信息,可为学校、教师和学生提供全面准确的信息。
2.层次分明 系统采用模块化程序设计结构。各模块之间既相互独立,又具有一定的联系,各模块可独立编制、调试、查错、修改和执行,结构严谨,便于扩展和维护。

7.系统需求分析

说明:

学校每年新生入学,毕业生离校和各种其它变动,如学籍变动,个人信息修改。每学期学校者要开设一定的课程提供给学生根据自己的情况来选择,最后的选择结果要给出学生的课程表。如何有效的管理这些学生信息,帮助学校和老师管理和掌握这些情况,这就是学生信息管理系统需要完成的任务。下面用软件工程的思想和方法完成该系统的设计过程。

功能:

个人信息查询和修改,包括流动,注册,更新管理

可行性研究报告

1. 编写目的

编写这份可行性研究报告的目的是让读者能够了解本系统的开发可行性。预期的读者包括上级领导,相关开发人员以及管理人员。

一.可行性研究的前提

随着科学技术的进步和社会经济的发展,计算机在现实生活中扮演越来越重要的角色,PC机价格不断的下降和生活水平的提高使得更多的中国家庭能够拥有自己的改变世界的机器,与此同时,我们也已经注意到,在大学校园里,越来越多的计算机已经进入同学们的宿舍,成为他们学习,生活中的一部分。

学生成绩管理方面,进入了信息化时代,我们有能力让我们的生活变的更好,对于学生成绩管理人员每日繁重的工作可以通过计算机来进行缓解,以实现管理自动化,工作人员对资料的管理,信息的发布,用电安全的控制均是人工作业,运作效率较低。因此,建立一个自动化的管理服务的计算机应用软件是十分必要的

1.1 要求

C++.net,传感器,SQL.

1.2 目标

能够快速的查询出学生的各科成绩以及所在班级等各种用途。

1.3 进行可行性研究的方法

对学生和校领导采用问卷调查的方法,询问他们,以确定最佳的可行性研究方案。软件采用现代流行WINDOWS操作界面。是标准的WIN32应用程序,可运行在WIN95\WIN98\WinMe\WIN2000\WINXP\WINNT等系统平台上的多任务应用程序。在运行时可以直观的浏览、查询和掌握学生的成绩,同时能够了解学生的基本信息所在系部、班级、宿舍的具体地址。结束了人工统计的耗时长、工作量大、错误率高的缺点。

1.4 评价尺度

1. 是否功能齐全,运行稳定。2.在网络功能方面是否方便管理。3.设置是否灵活开4.是否具有多任务,高效率的特点。5.是否具有界面友好,操作简单的特点。

2 处理流程和数据流程

2. 所建议的系统

2.1 对所建议系统的说明

我们所建议的系统为学生成绩管理系统。它是为了提高学生成绩管理的自动化程度而开发的。它可以解决一下问题:改变学生成绩输入的麻烦以及查询工作量大的问题还有输出的不便。

3.影响

3.1 对设备的影响

由于以前无自动化管理的方案,所以所有设备都需要购买。

3.2.对软件的影响

由于以前无自动化管理的方案,所以不需要考虑对现存应用软件合支持软件的影像。

3.3.对用户单位机构的影响

为了建立和运行所建议系统,需要提高管理人员的技术水平。

3.4.对系统运行过程的影响

所建议系统没有影响运行过程。

3.5.对开发的影响

所建议系统对软件开发人员要求不高,但是对硬件要求比较高。

3.6.对地点和设施的影响

所建议系统对建筑物无改造,可以利用原有的通信线路。

3.7 技术条件方面的可能性

本软件有计算机系的学生开发,调试,由计算机系老师知道。可完成性很高。

4. 可选择的其他系统方案

由于此系统方案是学生开发,而且资金有限所以暂时无其他系统方案。

5. 投资及效益分析

5.1 支出分析:

5.2 收益分析:

5.3 收益/投资比

5.4 投资回收周期

5.5 敏感性分析

6. 社会因素方面的可能性

所有软件都选用正版。

所有技术资料都由提出方保管。

合同制定确定违约责任。

7.用户使用可行性

由于学校的老师都有一定的计算机基础,不用培训就可以使用,所以用户使用可行性通过。

8. 结论

通过上述分析可以知道这个软件操作简单、功能齐全、功能开放、运行稳定、多任务、高效率等特点。所以说是计算机与学生成绩管理上的好软件!

设计说明书

一.概要设计说明书

1.系统功能设计

2.数据库概念设计

根据以上数据流图导出数据库所需数据项和数据结构

学生:学号,姓名,性别,生日,所在院系,所在班级:

课程:课程号,课程名,讲师,上课时间,地点,课程简介

选课结果:记录号,选课学生,所选课程

学籍变更记录:记录号,变更情况,记录时间,详细描述

2.1数据库概念结构设计的E-R 图

说明:E-R图中矩形代表实体,菱形代表实体间的联系,圆角矩形代表实体的属性

2.2数据库逻辑结构设计

根据以上E-R图,需要五个基本表:学生信息表、课程信息表、选课结果表、奖惩信息表、其中教师信息是处部表,不列出,由于使用打开系统的不光是教务人员,每个学生都要登录到选课系统进行课程的选择,因此,需要对不同的登录人员进行密码的认证和权限的限制,防止越权行为,用户名,密码,权限,保存在一个表中。

1. USER-PASS用户密码信息表字典

字段名

数据类型

是否可空

说明

ID

CHAR

NOT NULL

用户名(主键)

PASSWORD

CHAR

NOT NULL

密码

AUTHORITY

CHAR

NOT NULL

权限

2. COURSE课程信息表数据字典

字段名

数据类型

是否可空

说明

ID

CHAR

NOT NULL

课程号(主键)

NAME

VARCHAR

NULL

课程名

TEACHER

VARCHAR

NILL

讲师

CLASTIME

VARCHAR

NULL

上课时间

CLASSROM

CHAR

NULL

上课地点

INTRO

VARCHAR

NULL

简介

3. COURSE-SELECT选课结果表数据字典

字段名

数据类型

是否可空

说明

ID

SMALL INT

NOT NILL

记录号(主键)

COURSE

CHAR

NULL

课程名

STUDENT

CHAR

NULL

选课学生(外部关键

4. STUDENT学生个人信息表数据字典

字段名

数据类型

是否可空

说明

ID

SMALL INT

NOT NULL

学号(主键)

NAME

VARCHAR

NOT NULL

姓名

SEX

CHAR

NOTNULL

性别

CLASS

CHAR

NULL

班级

DEPARTMENT

CHAR

NULL

院系

BIRTHDAY

VARCHAR

NULL

生日

5. 奖惩记录信息表

字段名

数据类型

是否可空

说明

ID

SMLL INT

NOT NULL

记录号(主键)

STUDENT

CHAR

NOT NULL

学号(外部键)

LEVEL

CHAR

NULL

奖惩代码

TIME

DATA

NULL

时间

DESCRIPTION

VARCHAR

NULL

描述

二主要模块详细设计说明书

1用户身份认证模块

功能:按用户输入的用户名和密码是否合法

合法则进入应用程序

非法则显示出错信息

界面:由总控模块调用

模块说明细化为详细逻辑IPO图

用户身份认证模块

输入 处理 输出

连接数据库表 连接数据库错误中断程序

捕捉错误

用户名 获取用户名

用户密码 获取用户密码

读USER-PAS

判断用户名是否存在

判断密码是否存在 提示信息

捕捉异常

判断用户权限是合法

隐藏登录窗口

显示主窗体

文件

USER-PASS表

2.选课模块

功能:接受学生选课信息

刷新学生课程表

界面:调用添加、删除模块,打印课表模块

将模块说明细化为详细逻辑

选课处理IPO图

输入 处理 输出

课程编号 为课程号过滤 输入课程编号异常提示

接受课程号

打开课程信息表

判断是添加或是删除

添加

检索课程表读该记录

若该记录存在

显示所选课程详细信息 执行添加语句

调用添加模块

将选课结果刷新

删除 执行删除语句

调用删除模块

将稳定课结果刷新

提交 课表:课程编号,课程名

调用打印课表模块文件

课程信息表

选课结果表

3. 课程申请模块

功能:接受输入的新添课程信息

新课程信息存入课程信息表

删除旧课程

界面:调用已开课程信息表

调用申请修改程序

将模块细化为详细逻辑IPO图

课程管理模块

输入 处理 输出

课程编号 添加新课程

获取当前教师所选课程

打开已开课程表

查询是否存在该记录

若无该记录则是新课程

调用添加模块

提取课程编号

提取课程名称

提取课程简介

提交

若有该记录则不是新课程

出错处理 提示信息

删除旧课程

文件

课程信息表

软件测试

输入数据

有效等价类

无效等价类

证件号码

1、6位数字字符

2、有效数字字符

3、少于6个字符

4、大于6个字符

使用功能

5、选课

6、查询

7、输入其他文字

有效测试用例

测试数据 期望结果 测试范围

123456 输入有效 1

选课 输入有效 5

5

无效测试用例

测试数据

期望结果

测试范围

12jda1

输入无效

2

1234561

输入无效

4

12341

输入无效

3

12t21

输入无效

2、 3

排课

输入无效

7

(折半查找算法测试)2

测试名称:模块输入课程编号过滤的测试方案

a) 规定课程编号为输入4个字符,头两个字符为字母,后2个字符为数字例如TP38

b) 测试方法采用黑盒测试法中的等价类划分法

划分等价类

输入数据

有效等价类

无效等价类

课程号

1 两字母+两数字

2有非数字或字母

字母

3 A--Z

4字母少于两个或多于两个

数字

5 00--99

6数字少于两个或多于两个

为有效等价类和每个无效等价类设计测试用例

测试数据

期望结果

测试范围

HY76

输入有效

1、3、5

@D78

输入无效

2

S86

输入无效

4

MA2

输入无效

6

HY345

输入无效

6

DEH94

输入无效

4

测试名称:课程查找模块设计测试方案

a) 本模块采用的是折半查找算法主要是测试各程序在各种典型情况下是不能有效的进行查找

b) 测试方案采用选择白盒测试法中的路径覆盖法

说明:由于输入的课程编号已经被过滤,所以编号接受的范围为00--99

6. 2.学生成绩管理系统 (c语言做)

给你找一份类似的。不完全一致。做课程设计还是可行的。自己稍加修改即可!

总体设计
一、 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)

1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。

2、查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。

3、插入模块:可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。

4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。

5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。

二、系统主模块结构图:

详细设计
一、 界面设计
此系统界面采用图形和数字化菜单设计。
主界面设计如下:

学生成绩管理系统

请选择相应的数字执行相应的功能:
1:是否输入其他数据
2:查看数据
3:插入数据
4:查找数据
5:更新数据
6:保留数据
7:显示或打印数据
8:语文成绩状况
9:数学成绩状况
10:英语成绩状况
11:计算机成绩状况
12:?
13:退出系统
二、 数据结构设计:
程序设计中用到的结构体类型:
学生信息结构体类型:
typedef struct student{
char name[MAX];
int num[MAX];
char sex[MAX];
int chinese;
int mathematic;
int english;
int computer;
struct student *next;
}

程序代码:
//原始密码是123456
#include"stdio.h"
#include"stddef.h"
#include"stddef.h"
#include"string.h"
#define MAX 10
typedef struct student{ /*定义结构体*/
char name[MAX]; /*姓名*/
int num[MAX]; /* 学号*/
char sex[MAX]; /*性别*/
int chinese; /*语文*/
int mathematic; /* 数学*/
int english; /*英语*/
int computer; /*计算机*/
struct student *next; /*结构体指针*/
}stu;
stu *head; /*头指针*/
void print() /*显示或打印函数*/
{
system("cls");
printf("\t\t\tScore Manage System\n"); /*成绩管理系统*/
printf("<1>Enter Record\t"); /*输入数据*/
printf("<2>Display\t"); /*显示*/
printf("<3>Insert\t"); /*插入数据*/
printf("<4>Quest\t"); /*访问数据*/
printf("<5>Update\t"); /*以前数据*/
printf("<6>Save\t"); /*保留数据*/
printf("<7>Fresh\t"); /*更新数据*/
printf("<8>Chinese Average\t"); /*语文平均成绩*/
printf("<9>Math Average\t"); /*数学平均成绩*/
printf("<10>English Average\t"); /*英语平均成绩*/
printf("<11>Computer Average\t"); /*计算机平均成绩*/
printf("<12>Quit\t\n"); /*退出*/
}

void cin(stu *p1) /*输入相关数据的函数*/
{ printf("Enter name:\n");
scanf("%s",&p1->name);
printf("Enter num:\n");
scanf("%d",&p1->num);
printf("Enter sex:\n");
scanf("%s",&p1->sex);
printf("Enter score:\n");
printf("Enter chinese:\n");
scanf("%d",&p1->chinese);
printf("Enter math:\n");
scanf("%d",&p1->mathematic);
printf("Enter English:\n");
scanf("%d",&p1->english);
printf("Enter Computer:\n");
scanf("%d",&p1->computer);
}
stu *cindata() /*其他数据是否继续输入的函数*/
{ stu *p1,*p2;
int i=1;
char ch;
p1=(stu *)malloc(sizeof(stu));
head=p1;
while(i)
{
cin(p1);
printf("Do you Want to Continue?yes or no"); /*是否继续输入数据*/
ch=getchar();
ch=getchar();
if(ch=='n'||ch=='N')
{ i=0;
p1->next=NULL;
}
else
{ p2=p1;
p1=(stu *)malloc(sizeof(stu));
p2->next=p1;
}
}
return(p1->next);
}

stu *lookdata(stu *p1) /*查看数据的函数*/
{
while(p1!=NULL)
{ printf("Num:%d\t",p1->num);
printf("Name:%s\t",p1->name);
printf("Sex:%s\t",p1->sex);
printf("\n");
printf("Chinese:%d\t",p1->chinese);
printf("Math:%d\t",p1->mathematic);
printf("English:%d\t",p1->english);
printf("Computer:%d\t",p1->computer);
printf("\n");
p1=p1->next;
}
return p1;
}

void insert() /*通过比较学号来插入数据的函数*/
{ stu *p1,*p3,*p2;
char ch;
p1=head;
p3=(stu *)malloc(sizeof(stu));

p3->next=NULL;
if(head==NULL){ head=p3; return;}
cin(p3);
while(p1!=NULL&&(p1->num<p3->num)) /*通过学号的比较来插入*/
{ p2=p1;p1=p1->next;}
if(p2==head) {p3->next=head; head=p3; return;}
p3->next=p1;
p2->next=p3;

}

find(stu *p2) /*通过姓名查找查看数据的函数*/
{ char name[20];
int b=0;
printf("Enter the name of the student you want to find:"); /*通过姓名查看*/
scanf("%s",name);
while(p2!=NULL)
{if(strcmp(name,p2->name)==0)
{
printf("The data you want has be found\n");
printf(" Name:%s\t",p2->name);
printf("Num:%d\t",p2->num);
printf("sex%s\t",p2->sex);
printf("\n");
printf("Chinese:%d\t",p2->chinese);
printf("Math:%d\t",p2->mathematic);
printf("English:%d\t",p2->english);
printf("Computer:%d\t",p2->computer);
printf("\n");

b=1;
}
else if(b==0)
printf("sorry not find data!");
p2=p2->next;
}

if(b==1)
{
print();
printf("Find one\n");}
else
{print();
printf("Not find\n");

}
}

void caverage() /*求各学生语文平均分、最高和最低分成绩的函数*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1->next)
sum+=p1->chinese;
aver=sum/i;

p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
{if(max<p1->chinese)
max=p1->chinese;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->chinese)
min=p1->chinese;
}
printf("Chinese Average:%f",aver);
printf("Chinese Max:%f",max);
printf("Chinese Min:%f",min);
}

void maverage() /*求各学生数学平均分、最高和最低分成绩的函数*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1->next)
sum+=p1->mathematic;
aver=sum/i;

p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
{if(max<p1->mathematic)
max=p1->mathematic;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->mathematic)
min=p1->mathematic;
}
printf("Mathe Average:%f",aver);
printf("Mathe Max:%f",max);
printf("Mathe Min:%f",min);
}

void eaverage() /*求各学生英语平均分、最高和最低分成绩的函数*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1->next)
sum+=p1->english;
aver=sum/i;

p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
{if(max<p1->english)
max=p1->english;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->english)
min=p1->english;
}
printf("English Average:%f",aver);
printf("English Max:%f",max);
printf("English Min:%f",min);
}

void comaverage() /*求各学生计算机平均分、最高和最低分成绩的函数*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1->next)
sum+=p1->computer;
aver=sum/i;

p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
{if(max<p1->computer)
max=p1->computer;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->computer)
min=p1->computer;
}
printf("Computer Average:%f",aver);
printf("Computer Max:%f",max);
printf("Computer Min:%f",min);
}

update(stu *p2) /*通过姓名查找来更新数据*/
{
char name[10]; /*p2为指向结构体struct student的指针*/
int b=0;
printf("Enter The Name"); /*输入姓名*/
scanf("%s",name);

while(p2!=NULL)
{if(strcmp(name,p2->name)==0)
{
printf("Find you data\n");
scanf("Name:%s",p2->name);
scanf("Num:%s",p2->num);
scanf("Sex:%s",p2->sex);
scanf("Chinese:%d",p2->chinese);
scanf("Math:%d",p2->mathematic);
scanf("english:%d",p2->english);
scanf("Computer:%d",p2->computer);
printf("Success!");

b=1;}
else if(b==0)
printf("Sorry not Find data!");
p2=p2->next;}
if(b==0)
{print();
printf("Sorry not Find data!");
}
else
{
print();
printf("Finish!");
}
}

save(stu *p2) /*保留数据函数*/
{
FILE *fp;
char file[10];
printf("Enter file name"); /*输入文件名*/
scanf("%s",file);
fp=fopen(file,"w");
while(p2!=NULL)
{
fprintf(fp,"%s",p2->name);
fprintf(fp,"%s",p2->num);
fprintf(fp,"%s",p2->sex);
fprintf(fp,"%d",p2->chinese);
fprintf(fp,"%d",p2->mathematic);
fprintf(fp,"%d",p2->english);
fprintf(fp,"%d",p2->computer);
p2=p2->next;
}
fclose(fp);
}

char password[7]="123456"; /*定义初始密码*/

void main() /*主函数*/
{ int choice;
stu *p2;
char s[8];
int flag=0,i; /*标志项*/
int n=3;
do{ printf("Enter password:\n");
scanf("%s",s);
if(!strcmp(s,password)) /*进行密码匹配验证*/
{ printf("PASS\n\n\n");
flag=1;
break;
}
else{
printf("Error Enter again:\n");
n--;
}
}
while(n>0);
if(!flag)
{printf("you have Enter 3 times!"); /*输入密码超过了3次!!*/
exit(0); /*自动退出*/
}
/*密码验证成功后进入的界面*/

printf("~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n"); /*操作界面*/
printf("\t\tWelcom to the Mis\n");
printf("Author:-----\tClass:------\tNum:------\n"); /*作者,班级和号码*/
printf("Adress:HG\n"); /*地址*/
printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
printf("\t\tEnter OP:\n");
printf("\n\n\n\n");
printf("==============\t\t==============\n");
printf("==============\t\t==============\n");
printf("\t\tEnter the MIS yes or no\n"); /*问进入系统与否*/

scanf("%d",&choice);
if(choice=='n'||choice=='N')
exit(1);

print();
while(1)
{
printf("Enter choice:");
scanf("%d",&i);
if(i<1||i>13)
{
printf("Enter num from 1 to 13:\n"); /*再从1-13中进行选择*/
exit(1);
}

switch(i)
{ case 1:
p2=cindata(); /*其他数据是否继续输入的函数*/
break;
case 2:
p2=lookdata(head); /*查看数据的函数*/
break;
case 3:
insert(); /*通过比较学号来插入数据的函数*/
break;
case 4:
find(head); /*通过姓名查找查看数据的函数*/
break;
case 5:
update(head); /*通过姓名查找来更新数据*/
break;
case 6:
save(head); /*保留数据函数*/
break;
case 7:
print(); /*显示或打印函数*/
break;
case 8:
caverage(); /*求各学生语文平均分、最高和最低分成绩的函数*/
break;
case 9:
maverage(); /*求各学生数学平均分、最高和最低分成绩的函数*/
break;
case 10:
eaverage(); /*求各学生英语平均分、最高和最低分成绩的函数*/
break;
case 11:
comaverage(); /*求各学生计算机平均分、最高和最低分成绩的函数*/
break;
case 12:
; /*空操作*/
case 13:
exit(1); /*退出*/
break;
}
scanf("%d",&i);
}
}

7. C语言程序设计 班级学生成绩管理系统

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>

#define ADDRFILE "c:\\addrlist.txt"

typedef struct tagLinkedList
{
char name[30];
char tel[30];
char addr[100];

struct tagLinkedList *prev;
struct tagLinkedLIst *next;
}ADDR;

ADDR *g_pAddrHead = NULL;
ADDR *g_pFind;
int g_bSaved = 1;

void get_addrlist(void);
int add_list(const ADDR *addr);
int find_list(const char *name);
void SetHeadPosition(void);
void SetTailPosition(void);

void Add_addr(void);
void Find_addr(void);
void Modify_addr(void);
void Delete_addr(void);
void Print_addr(void);
void Save_addr(void);
void Remove_addr(void);

void main(void)
{

int ch;

get_addrlist();

puts("通讯录程序 Version 1.0");

while(1)
{
printf("\n[1]新增 [2]搜索 [3]修改 [4]删除 [5]输出 [S]储存 [Q]退出");

ch = getch();

switch(ch)
{
case '1': Add_addr();break;
case '2': Find_addr();break;
case '3': Modify_addr();break;
case '4': Delete_addr();break;
case '5': Print_addr();break;
case 's':
case 'S': Save_addr();break;
case 'q':
case 'Q':
if(g_bSaved == 0)
{
printf("\n\n修改后的数据需要储存吗?(y/n)?");
ch = getchar();
if(ch == 'Y' || ch == 'y') Save_addr();
}

Remove_addr(); exit(1);
default : printf("\n\n 请按1~5或S/Q健.\n\n");break;
}
}
}

void get_addrlist(void)
{
ADDR addr;
FILE *fp;

fp = fopen(ADDRFILE,"rb");

if(fp == NULL)
{
perror("open file error;");
return;
}

while(!feof(fp))
{
fread(&addr,1,sizeof(ADDR),fp);

if(ferror(fp))
{
fclose(fp);
perror("file read error;");
return;
}

if(feof(fp))break;

if(add_list(&addr) == 0)
{
printf(".\n");
}
}

fclose(fp);
}

int add_list(const ADDR *addr)
{
ADDR *plocal,*pn = g_pAddrHead;

SetHeadPosition();

if(g_pAddrHead == NULL)
{
plocal = malloc(sizeof(ADDR));
memset(plocal,0,sizeof(ADDR));

if(plocal == NULL)
{
return 0;
}

g_pAddrHead = plocal;
g_pAddrHead->prev = NULL;
g_pAddrHead->next = NULL;
}
else
{
plocal = malloc(sizeof(ADDR));
memset(plocal,0,sizeof(ADDR));

if(plocal == NULL)
{
return 0;
}

while(pn->next)
{
pn = pn->next;
}

pn->next = plocal;
plocal->prev = pn;
plocal->next = NULL;

}

strcpy(plocal->name,addr->name);
strcpy(plocal->tel,addr->tel);
strcpy(plocal->addr,addr->addr);

return 1;
}

int find_list(const char *name)
{
ADDR *plocal;

SetHeadPosition();

plocal = g_pAddrHead;

while(plocal)
{
if(strstr(plocal->name,name))
{
g_pFind = plocal;
return 1;
}
plocal = plocal->next;
}

return 0;
}

void SetHeadPosition(void)
{
if(g_pAddrHead == NULL) return;

while(g_pAddrHead->prev)
{
g_pAddrHead = g_pAddrHead->prev;
}
}

void SetTailPosition(void)
{
if(g_pAddrHead == NULL) return;

while(g_pAddrHead->next)
{
g_pAddrHead = g_pAddrHead->next;
}
}

void Remove_addr(void)
{
ADDR *plocal;

if(g_pAddrHead == NULL) return;

SetHeadPosition();

while(g_pAddrHead)
{
plocal = g_pAddrHead->next;

free(g_pAddrHead);

g_pAddrHead = plocal;
}

g_pAddrHead = NULL;

}

void Add_addr(void)
{
ADDR addr;

memset(&addr,0,sizeof(ADDR));

printf("\n\nName: ");gets(addr.name);
if(strlen(addr.name) == 0) return;

printf("TEL: ");gets(addr.tel);
printf("ADDR: ");gets(addr.addr);

if(find_list(addr.name) == 1)
{
printf("\n已经存在的姓名.\n\n");
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
return;
}

if(add_list(&addr))
{
g_bSaved = 0;
printf("\n储存完毕.\n\n");
}
}

void Find_addr(void)
{
char buff[100] ={0,};
ADDR *plocal;

printf("\n\n请输入要查找的姓名/电话/地址.\n");
printf("姓名/电话/地址 :");gets(buff);

if(strlen(buff) == 0) return;

SetHeadPosition();

plocal = g_pAddrHead;
g_pFind = NULL;

while(plocal)
{
if(strstr(plocal->name,buff))
{
g_pFind = plocal;
break;
}

if(strstr(plocal->tel,buff))
{
g_pFind = plocal;
break;
}

if(strstr(plocal->addr,buff))
{
g_pFind = plocal;
break;
}
plocal = plocal->next;
}

if(g_pFind)
{
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);
}
else
{
printf("\n\n搜索不到要找的%s.\n\n",buff);
}
}

void Modify_addr(void)
{
char name[100] = {0,};
ADDR addr;

while(1)
{
printf("\n\n要修改的姓名: ");gets(name);

if(strlen(name) == 0) return;

if(find_list(name) == 0)
{
puts("输入的姓名不存在.");
continue;
}
break;
}

printf("\n%s的通讯录如下:\n\n",name);
puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);

printf("\n输入要修改的姓名/电话/地址.\n\n");

printf("NAME: ");gets(addr.name);
printf("TEL : ");gets(addr.tel);
printf("ADDR: ");gets(addr.addr);

if(strlen(addr.name)==0) strcpy(addr.name,name);

strcpy(g_pFind->name,addr.name);
strcpy(g_pFind->tel,addr.tel);
strcpy(g_pFind->addr,addr.addr);

g_bSaved = 0;

printf("%s的通讯录修改成功.\n",name);
}

void Delete_addr(void)
{
char name[100] ={0,};
ADDR *plocal;
int ch;

while(1)
{
printf("\n\n要删除的姓名: ");gets(name);

if(strlen(name)==0) return;

if(find_list(name) == 0)
{
puts("要删除的通讯录不存在.");
continue;
}
break;
}

puts(g_pFind->name);
puts(g_pFind->tel);
puts(g_pFind->addr);

printf("确定要删除%s的通讯录吗(y/n)?",name);
ch = getch();
fflush(stdin);

if(ch == 'Y'||ch == 'y')
{
if(g_pFind->prev == NULL)
{
if(g_pFind->next == NULL)
{
free(g_pFind);
g_pAddrHead = NULL;
}
else
{
plocal = g_pFind->next;
free(g_pFind);
plocal->prev =NULL;
g_pAddrHead = plocal;
}
}
else if(g_pFind->next == NULL)
{
plocal = g_pFind->prev;
free(g_pFind);
plocal->next =NULL;
g_pAddrHead = plocal;
}
else
{
plocal = g_pFind->prev;
plocal->next = g_pFind->next;

plocal = g_pFind->next;
plocal->prev = g_pFind->prev;

free(g_pFind);
g_pAddrHead = plocal;
}

g_bSaved = 0;
printf("\n\n删除完毕.\n\n");
}
}

void Print_addr(void)
{
int count = 1;
ADDR *plocal;

SetHeadPosition();

if(g_pAddrHead == NULL)
{
printf("\n\n无任何数据\n");
return;
}

plocal = g_pAddrHead;
while(plocal->prev)
{
plocal=plocal->prev;
}

printf("\n\n");

while(plocal)
{
printf("NO.%d\n",count++);
puts(plocal->name);
puts(plocal->tel);
printf("%s\n\n",plocal->addr);

printf("请按任意一健(结束:q)\n\n");
getch();
if(getch() == 'q')return;

plocal=plocal->next;
}
}

void Save_addr(void)
{
ADDR *plocal, *pn;
FILE *fp;

if(g_pAddrHead == NULL) return;

fp = fopen(ADDRFILE,"w+b");

if(fp == NULL)
{
perror("file open error;");
return;
}

SetHeadPosition();

plocal = g_pAddrHead;

while(plocal)
{
pn = plocal->next;

plocal = pn;
}

printf("\n所有数据已经储存完毕.");
g_bSaved = 1;

fclose(fp);
}

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919