2月7日,收到邮件需在2月8-15日期间,临时协助起步科技·H5创新学院的招聘工作。
8日晨,已经可在邮箱中查阅来自智联、猎聘、前程无忧等招聘网站的应聘者简历。
筛选、分类、给初审通过的应聘者发面谈邀请,逐一电话确认时会有个别性情真爽的年轻应聘者很直接地吐槽过往遇到的奇葩面试经历。
还有些则是被某些企业以招聘面试为由骗去,印象最深的是一位声音柔美的女生乖巧礼貌地跟我说:“对不起,刚才还以为您是像某某一样呢……因为我是要找工作的。”
面试本身就是一个双向选择的过程,在任职条件和岗位职责允许的情况下,起步科技·H5创新学院其实很愿意给年轻候选人机会,他们虽然缺少丰富的作战经验,但只要勤勉好学,小雏鸟很快就能长成雄鹰。
我们希望每一位加入起步科技·H5创新学院的队友既是工作者,也是管理者。对自己的工作,不仅能够统揽全局,指挥若定; 也能够技如雕虫,洞察入微; 更能够防患于未然,未雨而绸缪。
针对候选人反馈的2个典型的负性事件,我想说:
这种事不好说,大大小小的企业鱼龙混杂,总不可能要求习大大把“不好”的企业全撤了吧。
主要还得靠应聘者自己去识别,收到面试通知时,别急着风风火火地就去了,先做这几件事:
• 到工商局网站企业信用公示版块查查该企业工商信息,有没正常年检等情况;
• 该企业有没百度百科?有没官网?有就打开看看,它是干吗的?有哪些核心业务?跟你应聘的职位是否相关?顺便想想,你能为它做什么?实现哪些价值?
• 官网有没新闻动态类的版块?有没微信公号、官方微博或其他媒体号?都看看,一是了解内容,二是看它发布新闻动态的频率。
• 如果有必要的话,给HR打个电话,表示收到了面试邀请或通知,搜寻查阅了相关资料,简单聊聊你对该企业和所应聘职位的所思所想,也留意对方通过电话沟通所表现出来的语言逻辑和职业素养,综合判断其可信度。
说说以招聘名义招生的,Y是咋想的?
投身教育,却偏要干骗人的勾当,要这么招生么?想想你们的教学质量得有多烂?又是多没底线?
觉得自己计策无双么?有本身你骗一辈子,见光就死,这智商没谁了。
听领导话骗人的童鞋先别觉得自己有多无辜,你自己没有思想么?没点原则吗?宁可站着死,也不跪着生,良禽择木而栖,贤臣择主而侍!这道理得懂。
做人做事,有所为,有所不为。
有所不为,比有所为更重要。
说句题外话,记得咪蒙写过一篇文章:能用汗水解决的问题,别特么用泪水。
话糙理不糙,我是很共鸣的,建议没看过的童鞋可以关注下。
借着最近接触HTML5 APP较多,耳濡目染的就总琢磨怎么能把它融入日常工作,这次临时协助招聘就尝试着是不是能把H5创新学院力推的HTML5 APP衍化为一种工作思路?一项工作为什么不能视为一个产品?招聘可不可以是这样的:
IPAD MINI 显示效果
左边是占2/3的是内容区,是工作体悟,但如果是非临时短期项目,也可以放工作总结和计划表单,在PAD打开一目了然,有助于自我目标管控和进度查阅。
右边1/3是这项工作常用的资料,比如:招聘计划、面谈邀请函样本、候选人情况概览、跟候选人深入沟通可能用的简介等。无论自己查阅,还是在任何时候交付给任何队友,都会比较清晰,就像是个工作手册,只不过它会更立体,结构化展示力更强。
这其实跟年前起步科技·H5创新学院发起的大学教师寒假读书/观影/游学笔记HTML5APP是一个道理,看过的书、走过的路、见过的人,都会在我们身上留下痕迹,可要是不加以留存、分析、总结和管理就很难形成长期记忆,本来是很好的东西却被沉寂,最终遗忘,会很可惜。
今天的尝试还很初级,但它比昨天的zip包(所有文档打个压缩包)好,而明天一定会比今天更好。
在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。
对象是由属性和方法组成的:
在 JavaScript 中,现阶段我们可以采用三种方式创建对象(object):
对象字面量:就是花括号 { } 里面包含了表达这个具体事物(对象)的属性和方法
{ } 里面采取键值对的形式表示
var star = {
name : 'pink',
age : 18,
sex : '男',
sayHi : function(){
alert('大家好啊~');
}
};
// 多个属性或者方法中间用逗号隔开
// 方法冒号后面跟的是一个匿名函数
console.log(star.name) // 调用名字属性
console.log(star['name']) // 调用名字属性
star.sayHi(); // 调用 sayHi 方法,注意,一定不要忘记带后面的括号
跟之前的 new Array() 原理一致:var 对象名 = new Object();
使用的格式:对象.属性 = 值
var obj = new Object(); //创建了一个空的对象
obj.name = '张三丰';
obj.age = 18;
obj.sex = '男';
obj.sayHi = function() {
console.log('hi~');
}
//1.我们是利用等号赋值的方法添加对象
//2.每个属性和方法之间用分号结束
console.log(obj.name);
console.log(obj['sex']);
obj.sayHi();
构造函数 :是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。
在 js 中,使用构造函数要时要注意以下两点:
//构造函数的语法格式
function 构造函数名() {
this.属性 = 值;
this.方法 = function() {}
}
new 构造函数名();
//1. 构造函数名字首字母要大写
//2. 构造函数不需要return就可以返回结果
//3. 调用构造函数必须使用 new
//4. 我们只要new Star() 调用函数就创建了一个对象
//5. 我们的属性和方法前面必须加this
function Star(uname,age,sex) {
this.name = uname;
this.age = age;
this.sex = sex;
this.sing = function(sang){
console.log(sang);
}
}
var ldh = new Star('刘德华',18,'男');
console.log(typeof ldh) // object对象,调用函数返回的是对象
console.log(ldh.name);
console.log(ldh['sex']);
ldh.sing('冰雨');
//把冰雨传给了sang
var zxy = new Star('张学友',19,'男');
new 在执行时会做四件事:
语法如下
for(变量 in 对象名字){
// 在此执行代码
}
语法中的变量是自定义的,它需要符合命名规范,通常我们会将这个变量写为 k 或者 key。
for(var k in obj) {
console.log(k); //这里的 k 是属性名
console.log(obj[k]);//这里的 obj[k] 是属性值
}
var obj = {
name: '秦sir',
age: 18,
sex: '男',
fn:function() {};
};
console.log(obj.name);
console.log(obj.age);
console.log(obj.sex);
//for in 遍历我们的对象
//for (变量 in 对象){}
//我们使用for in 里面的变量 我们喜欢写k 或者key
for(var k in obj){
console.log(k); // k 变量 输出得到的是属性名
console.log(obj[k]); // obj[k] 得到的是属性值
}
学习一个内置对象的使用,只要学会其常用成员的使用即可,我们可以通过查文档学习,可以通过MDN/W3C来查询
MDN: https://developer.mozilla.org/zh-CN/
Math 对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运算(求绝对值,取整、最大值等)可以使用 Math 中的成员。
// Math数学对象,不是一个构造函数,所以我们不需要new 来调用,而是直接使用里面的属性和方法即可
Math.PI // 圆周率
Math.floor() // 向下取整
Math.ceil() // 向上取整
Math.round() // 四舍五入版 就近取整 注意 -3.5 结果是 -3
Math.abs() // 绝对值
Math.max()/Math.min() // 求最大和最小值
注意:上面的方法必须带括号
console.log(Math.PI);
console.log(Math.max(1,99,3)); // 99
练习:封装自己的数学对象
利用对象封装自己的数学对象,里面有PI 最大值 和最小值
var myMath = {
PI: 3.141592653,
max: function() {
var max = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
},
min: function() {
var min = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] < min) {
min = arguments[i];
}
}
return min;
}
}
console.log(myMath.PI);
console.log(myMath.max(1, 5, 9));
console.log(myMath.min(1, 5, 9));
//1.绝对值方法
console.log(Math.abs(1)); // 1
console.log(Math.abs(-1)); // 1
console.log(Math.abs('-1')); // 1 隐式转换,会把字符串 -1 转换为数字型
//2.三个取整方法
console.log(Math.floor(1.1)); // 1 向下取整,向最小的取值 floor-地板
console.log(Math.floor(1.9)); //1
console.log(Math.ceil(1.1)); //2 向上取整,向最大的取值 ceil-天花板
console.log(Math.ceil(1.9)); //2
//四舍五入 其他数字都是四舍五入,但是5特殊,它往大了取
console.log(Math.round(1.1)); //1 四舍五入
console.log(Math.round(1.5)); //2
console.log(Math.round(1.9)); //2
console.log(Math.round(-1.1)); // -1
console.log(Math.round(-1.5)); // -1
// 得到两个数之间的随机整数,并且包含这两个整数
function getRandom(min,max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandom(1,10));
1.随机点名
var arr = ['张三', '李四','王五','秦六'];
console.log(arr[getRandom(0,arr.length - 1)]);
2.猜数字游戏
function getRandom(min,max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var random = getRandom(1,10);
while(true) { //死循环 ,需要退出循环条件
var num = prompt('请输入1~10之间的一个整数:');
if(num > random) {
alert('你猜大了');
}else if (num < random) {
alert('你猜小了');
}else {
alert('你猜中了');
break; //退出整个循环
}
}
var now = new Date();
console.log(now);
如果括号里面有时间,就返回参数里面的时间。例如日期格式字符串为 ‘2019-5-1’,可以写成new Date('2019-5-1') 或者 new Date('2019/5/1')
// 1.如果没有参数,返回当前系统的当前时间
var now = new Date();
console.log(now);
// 2.参数常用的写法 数字型 2019,10,1 字符串型 '2019-10-1 8:8:8' 时分秒
// 如果Date()里面写参数,就返回括号里面输入的时间
var data = new Date(2019,10,1);
console.log(data); // 返回的是11月不是10月
var data2 = new Date('2019-10-1 8:8:8');
console.log(data2);
我们想要 2019-8-8 8:8:8 格式的日期,要怎么办?
需要获取日期指定的部分,所以我们要手动的得到这种格式
方法名 | 说明 | 代码 |
getFullYear() | 获取当年 | dObj.getFullYear() |
getMonth() | 获取当月(0-11) | dObj.getMonth() |
getDate() | 获取当天日期 | dObj.getDate() |
getDay() | 获取星期几(周日0到周六6) | dObj.getDay() |
getHours() | 获取当前小时 | dObj.getHours() |
getMinutes() | 获取当前小时 | dObj.getMinutes() |
getSeconds() | 获取当前秒钟 | dObj.gerSeconds() |
示例:
var date = new Date();
console.log(date.getFullYear()); // 返回当前日期的年 2019
console.log(date.getMonth() + 1); //返回的月份小一个月 记得月份 +1
console.log(date.getDate); //返回的是几号
console.log(date.getDay()); //周一返回1 周6返回六 周日返回0
// 写一个 2019年 5月 1日 星期三
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var dates = date.getDate();
console.log('今天是' + year +'年' + month + '月' + dates +'日' );
// 封装一个函数返回当前的时分秒 格式 08:08:08
function getTimer() {
var time = new Date();
var h = time.getHours();
h = h < 10 ? '0' + h : h;
var m = time.getMinutes();
m = m < 10 ? '0' + m : m;
var s = time.getSeconds();
s = s < 10 ? '0' + s : s;
return h + ':' + m + ':' + s;
}
console.log(getTimer());
// 获取Date总的毫秒数 不是当前时间的毫秒数 而是距离1970年1月1号过了多少毫秒数
// 实例化Date对象
var date = new Date();
// 1 .通过 valueOf() getTime() 用于获取对象的原始值
console.log(date.valueOf()); //得到现在时间距离1970.1.1总的毫秒数
console.log(date.getTime());
// 2.简单的写法
var date1 = +new Date(); // +new Date()返回的就是总的毫秒数,
console.log(date1);
// 3. HTML5中提供的方法 获得总的毫秒数 有兼容性问题
console.log(Date.now());
示例:
function countDown(time) {
var nowTime = +new Date(); //没有参数,返回的是当前时间总的毫秒数
var inputTime = +new Date(time); // 有参数,返回的是用户输入时间的总毫秒数
var times = (inputTime - nowTime) / 1000; //times就是剩余时间的总的秒数
var d = parseInt(times / 60 / 60 / 24); //天数
d < 10 ? '0' + d : d;
var h = parseInt(times / 60 / 60 % 24); //小时
h < 10 ? '0' + h : h;
var m = parseInt(times / 60 % 60); //分
m < 10 ? '0' + m : m;
var s = parseInt(times % 60); //秒
s < 10 ? '0' + s : s;
return d + '天' + h + '时' + m + '分' + s + '秒';
}
console.log(countDown('2020-11-09 18:29:00'));
var date = new Date;
console.log(date); //现在时间
创建数组对象的两种方式
var arr = [1, 23];
var obj = {};
console.log(arr instanceof Array); // true
console.log(obj instanceof Array); // false
console.log(Array.isArray(arr)); // true
console.log(Array.isArray(obj)); // false
方法名 | 说明 | 返回值 |
push(参数1…) | 末尾添加一个或多个元素,注意修改原数组 | 并返回新的长度 |
pop() | 删除数组最后一个元素 | 返回它删除的元素的值 |
unshift(参数1…) | 向数组的开头添加一个或更多元素,注意修改原数组 | 并返回新的长度 |
shift() | 删除数组的第一个元素,数组长度减1,无参数,修改原数组 | 并返回第一个元素 |
示例:
// 1.push() 在我们数组的末尾,添加一个或者多个数组元素 push 推
var arr = [1, 2, 3];
arr.push(4, '秦晓');
console.log(arr);
console.log(arr.push(4, '秦晓'));
console.log(arr);
// push 完毕之后,返回结果是新数组的长度
// 2. unshift 在我们数组的开头 添加一个或者多个数组元素
arr.unshift('red');
console.log(arr);
// pop() 它可以删除数组的最后一个元素,一次只能删除一个元素
arr.pop(); //不加参数
// shift() 它剋删除数组的第一个元素,一次只能删除一个元素
arr.shift(); //不加参数
有一个包含工资的数组[1500,1200,2000,2100,1800],要求把数组中工资超过2000的删除,剩余的放到新数组里面
var arr = [1500, 1200, 2000, 2100, 1800];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i] < 2000) {
newArr.push(arr[i]);
}
}
console.log(newArr);
方法名 | 说明 | 是否修改原数组 |
reverse() | 颠倒数组中元素的顺序,无参数 | 该方法会改变原来的数组,返回新数组 |
sort() | 对数组的元素进行排序 | 该方法会改变原来的数组,返回新数组 |
示例:
// 1.翻转数组
var arr = ['pink','red','blue'];
arr.reverse();
console.log(arr);
// 2.数组排序(冒泡排序)
var arr1 = [3,4,7,1];
arr1.sort();
console.log(arr1);
// 对于双位数
var arr = [1,64,9,61];
arr.sort(function(a,b) {
return b - a; //降序的排列
return a - b; //升序
}
)
方法名 | 说明 | 返回值 |
indexOf() | 数组中查找给定元素的第一个索引 | 如果存在返回索引号,如果不存在,则返回-1 |
lastIndexOf() | 在数组的最后一个索引,从后向前索引 | 如果存在返回索引号,如果不存在,则返回-1 |
示例:
//返回数组元素索引号方法 indexOf(数组元素) 作用就是返回该数组元素的索引号
//它只发返回第一个满足条件的索引号
//如果找不到元素,则返回-1
var arr = ['red','green','blue','pink','blue'];
console.log(arr.indexOf('blue')); // 2
console.log(arr.lastIndexOf('blue')); // 4
分析:把旧数组里面不重复的元素选取出来放到新数组中,重复的元素只保留一个,放到新数组中去重。
核心算法:我们遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,我们就添加,否则不添加。
我们怎么知道该元素没有存在? 利用 新数组.indexOf(数组元素) 如果返回是 -1 就说明 新数组里面没有改元素
// 封装一个去重的函数 unique 独一无二的
function unique(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
var demo = unique(['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']);
console.log(demo);
方法名 | 说明 | 返回值 |
toString() | 把数组转换成字符串,逗号分隔每一项 | 返回一个字符串 |
join(‘分隔符’) | 方法用于把数组中的所有元素转换为一个字符串 | 返回一个字符串 |
示例:
// 1.toString() 将我们的数组转换为字符串
var arr = [1, 2, 3];
console.log(arr.toString()); // 1,2,3
// 2.join('分隔符')
var arr1 = ['green', 'blue', 'red'];
console.log(arr1.join()); // 不写默认用逗号分割
console.log(arr1.join('-')); // green-blue-red
console.log(arr1.join('&')); // green&blue&red
方法名 | 说明 | 返回值 |
concat() | 连接两个或多个数组 不影响原数组 | 返回一个新的数组 |
slice() | 数组截取slice(begin,end) | 返回被截取项目的新数组 |
splice() | 数组删除splice(第几个开始要删除的个数) | 返回被删除项目的新数组,这个会影响原数组 |
为了方便操作基本数据类型,JavaScript 还提供了三个特殊的引用类型:String、Number和 Boolean。
基本包装类型就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。
我们看看下面代码有什么问题吗?
var str = 'andy';
console.log(str.length);
按道理基本数据类型是没有属性和方法的,而对象才有属性和方法,但上面代码却可以执行,这是因为 js 会把基本数据类型包装为复杂数据类型,其执行过程如下 :
// 1.生成临时变量,把简单类型包装为复杂数据类型
var temp = new String('andy');
// 2.赋值给我们声明的字符变量
str = temp;
// 3.销毁临时变量
temp = null;
指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。
var str = 'abc';
str = 'hello';
// 当重新给 str 赋值的时候,常量'abc'不会被修改,依然在内存中
// 重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
// 由于字符串的不可变,在大量拼接字符串的时候会有效率问题
var str = '';
for(var i = 0; i < 10000; i++){
str += i;
}
console.log(str);
// 这个结果需要花费大量时间来显示,因为需要不断的开辟新的空间
字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串
方法名 | 说明 |
indexOf(‘要查找的字符’,开始的位置) | 返回指定内容在元字符串中的位置,如果找不到就返回-1,开始的位置是index索引号 |
lastIndexOf() | 从后往前找,只找第一个匹配的 |
// 字符串对象 根据字符返回位置 str.indexOf('要查找的字符', [起始的位置])
var str = '改革春风吹满地,春天来了';
console.log(str.indexOf('春')); //默认从0开始查找 ,结果为2
console.log(str.indexOf('春', 3)); // 从索引号是 3的位置开始往后查找,结果是8
查找字符串 “abcoefoxyozzopp” 中所有o出现的位置以及次数
var str = "oabcoefoxyozzopp";
var index = str.indexOf('o');
var num = 0;
// console.log(index);
while (index !== -1) {
console.log(index);
num++;
index = str.indexOf('o', index + 1);
}
console.log('o出现的次数是: ' + num);
方法名 | 说明 | 使用 |
charAt(index) | 返回指定位置的字符(index字符串的索引号) | str.charAt(0) |
charCodeAt(index) | 获取指定位置处字符的ASCII码(index索引号) | str.charCodeAt(0) |
str[index] | 获取指定位置处字符 | HTML,IE8+支持和charAt()等效 |
判断一个字符串 “abcoefoxyozzopp” 中出现次数最多的字符,并统计其次数
<script>
// 有一个对象 来判断是否有该属性 对象['属性名']
var o = {
age: 18
}
if (o['sex']) {
console.log('里面有该属性');
} else {
console.log('没有该属性');
}
// 判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数。
// o.a = 1
// o.b = 1
// o.c = 1
// o.o = 4
// 核心算法:利用 charAt() 遍历这个字符串
// 把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
// 遍历对象,得到最大值和该字符
var str = 'abcoefoxyozzopp';
var o = {};
for (var i = 0; i < str.length; i++) {
var chars = str.charAt(i); // chars 是 字符串的每一个字符
if (o[chars]) { // o[chars] 得到的是属性值
o[chars]++;
} else {
o[chars] = 1;
}
}
console.log(o);
// 2. 遍历对象
var max = 0;
var ch = '';
for (var k in o) {
// k 得到是 属性名
// o[k] 得到的是属性值
if (o[k] > max) {
max = o[k];
ch = k;
}
}
console.log(max);
console.log('最多的字符是' + ch);
</script>
方法名 | 说明 |
concat(str1,str2,str3…) | concat() 方法用于连接两个或对各字符串。拼接字符串 |
substr(start,length) | 从 start 位置开始(索引号), length 取的个数。 |
slice(start,end) | 从 start 位置开始,截取到 end 位置 ,end 取不到 (两个都是索引号) |
substring(start,end) | 从 start 位置开始,截取到 end 位置 ,end 取不到 (基本和 slice 相同,但是不接受负) |
示例:
<script>
// 1. concat('字符串1','字符串2'....)
var str = 'andy';
console.log(str.concat('red'));
// 2. substr('截取的起始位置', '截取几个字符');
var str1 = '改革春风吹满地';
console.log(str1.substr(2, 2)); // 第一个2 是索引号的2 第二个2 是取几个字符
</script>
replace() 方法用于在字符串中用一些字符替换另一些字符
其使用格式:replace(被替换的字符,要替换为的字符串)
<script>
// 1. 替换字符 replace('被替换的字符', '替换为的字符') 它只会替换第一个字符
var str = 'andyandy';
console.log(str.replace('a', 'b'));
// 有一个字符串 'abcoefoxyozzopp' 要求把里面所有的 o 替换为 *
var str1 = 'abcoefoxyozzopp';
while (str1.indexOf('o') !== -1) {
str1 = str1.replace('o', '*');
}
console.log(str1);
</script>
split() 方法用于切分字符串,它可以将字符串切分为数组。在切分完毕之后,返回的是一个新数组。
例如下面代码:
var str = 'a,b,c,d';
console.log(str.split(','));
// 返回的是一个数组 ['a', 'b', 'c', 'd']
<script>
// 2. 字符转换为数组 split('分隔符') 前面我们学过 join 把数组转换为字符串
var str2 = 'red, pink, blue';
console.log(str2.split(','));
var str3 = 'red&pink&blue';
console.log(str3.split('&'));
</script>
简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。
string ,number,boolean,undefined,null
通过 new 关键字创建的对象(系统对象、自定义对象),如 Object、Array、Date等
堆栈空间分配区别:
简单数据类型存放到栈里面
2,堆(操作系统):存储复杂类型(对象),一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。
复杂数据类型存放到堆里面
注意:JavaScript中没有堆栈的概念,通过堆栈的方式,可以让大家更容易理解代码的一些执行方式,便于将来学习其他语言。
<script>
// 简单数据类型 null 返回的是一个空的对象 object
var timer = null;
console.log(typeof timer);
// 如果有个变量我们以后打算存储为对象,暂时没想好放啥, 这个时候就给 null
// 1. 简单数据类型 是存放在栈里面 里面直接开辟一个空间存放的是值
// 2. 复杂数据类型 首先在栈里面存放地址 十六进制表示 然后这个地址指向堆里面的数据
</script>
函数的形参也可以看做是一个变量,当我们把一个值类型变量作为参数传给函数的形参时,其实是把变量在栈空间里的值复制了一份给形参,那么在方法内部对形参做任何修改,都不会影响到的外部变量。
<script>
// 简单数据类型传参
function fn(a) {
a++;
console.log(a);
}
var x = 10;
fn(x);
console.log(x);
</script>
函数的形参也可以看做是一个变量,当我们把引用类型变量传给形参时,其实是把变量在栈空间里保存的堆地址复制给了形参,形参和实参其实保存的是同一个堆地址,所以操作的是同一个对象。
务管理信息服务平台的建设目标是在智慧校园的建设框架下,通过现代信息技术整合教务数据、体现现代高校教学管理理念、改进教学管理手段、实现教务全生命周期的协同管理,在管理日常教学事务层面活动的同时兼顾教学价值层面的活动,实现学校教务工作从“事务型”方式向“战略型”方式转变。
职业技术学院教务管理信息服务平台
一、平台功能要求
该平台需具备以下功能:学籍管理、课程库管理、师资管理、教学场地管理、培养方案管理、执行计划管理、开课管理、排课管理、选课管理、考务管理、成绩管理、重修管理、免修与缓考、等级考试管理、毕业审核管理、教学质量评价与监控管理、辅修管理、实践教学管理(含实习实训、毕业论文、学生创新创业学分、实验教学、职业技能证书管理等)、竞赛管理、教材管理、个人教学门户、系统管理。详见采购详细需求。
该平台需实现以下数据对接要求:1、保证原教务系统的数据迁移至新平台;2、实现平台数据与学校数据中心、人事系统、学工系统、招生系统、财务系统、在线教学等信息化平台的对接;3、实现与学校智慧校园门户的对接;4、实现与学校统一身份认证平台的对接。
二、平台技术要求
该平台需满足以下技术要求:
1、本系统要求必须采用平台化开发,使用界面直观明了、简单方便,操作简便,用户使用体验好。能灵活地定义参数和处理规则,使其符合工作要求。具体包括:1)具有自主的开发平台,实现多终端多浏览器访问,实现电脑、PAD、各种尺寸手机自适应访问,可以与移动APP、微信、QQ、企业微信、支付宝完美结合。2)用户可以自定义个人界面的布局,自定义功能组件。软件界面可自适应。3)业务流程可定制,利用工作流引擎致力于打造工作流的可视化功能,使工作流的管理和建模简单、易用并且直观。通过工作流管理模块,我校可以管理已经存在的工作流,包括对工作流的增删改查,以及对工作流进行统一部署。还可以进行工作流运行实例的控制。4)采用组件化开发,由低耦合的组件完成各项业务,通过组件管理器呈现给用户。
2、平台服务器端须支持windows、linux、unix等主流操作系统,支持oracle数据库。
3、高并发性,要求在技术上引入缓存等机制,优化数据库设计,提高排课、选课、成绩查询、统计等性能瓶颈。
4、要求具有严格的安全机制,包括真正的三层结构(数据层、应用层、WEB层)、严格的身份授权机制(绑定MAC地址、按角色、数据表、字段等授权)、敏感数据的监控预警(成绩异常修改监控)等。
5、保证对常用的各种浏览器(如:IE9及以上版本,firefox,chrome、safari等)的完美兼容,解决电脑浏览器的兼容问题。
详细采购需求见附件。
附件:
教务管理信息服务平台项目详细采购需求
我校教学管理的主要任务不但包括事务性管理(如课表编排、成绩管理、考试安排等)还包括战略性管理(如培养过程管理、教学质量检查、教学工作评价、教学业绩评价、教学改革管理等)。因此,本平台定制开发的目标是通过现代信息技术整合教务数据、体现现代高校教学管理理念、改进教学管理手段、实现教务全生命周期的协同管理。平台要求在管理日常教学事务层面活动的同时还要兼顾教学价值层面的活动,实现我校教务工作从“事务型”方式向“战略型”方式转变。平台建成后,能使我校教学管理工作更科学、更规范、更有效地提升我校的教学水平、教学管理水平,并促使教学管理满足学校的战略发展需要。
具体须实现如下目标:
1.体现出先进的教学与教学管理理念。教学管理系统的宗旨在于使学校教学管理向高水平、规范化、标准化、便捷化迈进。通过教务平台开发,平台体系设计应将先进的教学管理思想和方法体系纳入并具体体现,如注重教学管理中以人为本、全面发展、素质教育、创新能力培养、主体性、个性化、开放式、多样化、生态和谐、系统性等。
2.灵活多样的访问与管理权限体系。必须具有灵活多样的访问与管理权限体系。总体来看,权限级别至少应该包括普通教师、二级学院管理人员、校区教学管理人员、教学督导、学校教学管理人员、学校领导层和学生等七个级别,各个级别之中,还要有不同的具体权限设置与分配机制。
3.统一的信息标准和规范、优化的业务流程。平台的定制开发过程中,达到整合各有关系统的教务基础数据、规范教务信息标准的目的,实现学校教务信息的高度统一和共享。
4.多元化的安全防范与预警功能。由于教务管理系统中存储有很多敏感数据,要求平台能够防范非法操作和入侵攻击,能记录所有操作轨迹。一旦这些敏感数据发生了修改、更新操作,平台可以自主地提示与通知相关人员,并保存日志记录。
5.教学管理网络化和智能化。整个教学管理流程中的各环节、各角色的操作运用,能最大限度地在平台中完成,最大限度地减少纸质文本、减少人员实地办理的繁琐。
1、本系统要求必须采用平台化开发,使用界面直观明了、简单方便,操作简便,达到傻瓜式操作,用户使用体验好。能灵活地定义参数和处理规则,使其符合工作要求。具体包括:
★1)具有自主的开发平台,采用前后端分离技术架构,基于HTML5+CSS3等技术实现多终端多浏览器访问,实现电脑、PAD、各种尺寸手机自适应访问,可以与移动APP、微信、QQ、企业微信、支付宝完美结合。
▲2)用户界面基于Portal等技术设计,可以通过管理员对师生的默认用户界面进行初始规划,包括界面风格、菜单及频道栏目面板布局、页面标签定义等。用户可以自定义个人界面的布局,自定义功能组件。软件界面可自适应。
★3)业务流程可定制,利用工作流引擎致力于打造工作流的可视化功能,使工作流的管理和建模简单、易用并且直观。通过工作流管理模块,我校可以管理已经存在的工作流,包括对工作流的增删改查,以及对工作流进行统一部署。还可以进行工作流运行实例的控制。
★4)采用组件化开发,由松耦合的组件完成各项业务,通过组件管理器呈现给用户。组件化开发有利于简化系统架构,并在系统升级、个性化服务等方面带来好处。
★2、平台服务器端须支持windows、linux、unix等主流操作系统,支持oracle数据库。
★3、高并发性,要求在技术上引入缓存等机制,优化数据库设计,提高排课、选课、成绩查询、统计等性能瓶颈。
★4、要求具有严格的安全机制,包括真正的三层结构(数据层、应用层、WEB层)、严格的身份授权机制(绑定MAC地址、按角色、数据表、字段等授权)、敏感数据的监控预警(成绩异常修改监控)等。
▲5、保证对各种浏览器(如:IE9及以上版本,firefox,chrome、safari等)的完美兼容。解决电脑浏览器的兼容问题。
备注:以上标记为★的要求必须满足,否则为无效投标。
学生学籍信息(包括学号、班级等)实现当年招生数据经招就处核实后由数字化校园数据中心直接同步至教务系统的学籍信息表。除基本的增删改功能外,系统提供完备的多条件多口径查询和统计功能,并提供相关数据的excel导出和相关报表的打印功能,如一键生成国家标准的高基报表、学籍异动相关报表、在读证明、学历证明、结业换毕业证等。新生数据及新生报到注册信息取自招办迎新系统。老生的学生基本信息及老生的报到注册信息取自学工系统。
学生数据可以按学期进行管理和维护,系统保留各个学期的状态数据,满足各类教学管理的数据需要。
对学生身份信息进行修改申请(如:学生姓名、身份证号、民族、联系电话、家庭住址、电子邮箱等项),包括学生提交学籍信息维护修改申请、学生查询学籍信息修改申请信息教务处审核情况。
教务处对学生申请的学籍信息进行审核(如:学生姓名、身份证号、民族、联系电话、家庭住址等项)。
教务处可维护学生学籍信息,学院可查询学籍信息等。
学院可查询本学院的学生学籍信息。
学院可统计、输出、打印、查询本学院的学生学籍信息。
学院可查询本学生的学籍信息、学生信息等。
系统管理员设置注册条件,如同步财务系统的缴费信息,缴费信息变更实时更新,未缴费不允许注册,绿色通道的数据来自学工系统;由学院用户办理报到注册,并可调整能否注册,统计学期报到情况,提供批量处理注册功能。系统实现未注册学生不能获得相关服务(如禁止选课、禁止查询成绩等)。新生注册数据取自招就系统。提供学生报到情况、学生注册情况查询统计和相关报表的输出打印。
完成新生的入学报到与注册,通常与学校的迎新系统实现对接。
对老生数据进行报到注册处理,该数据可取自学工系统。
打印输出报到、注册的学生名单信息。
可统计分析、输出、打印学生报到、注册汇总情况。
可自动生成与学信网相一致的学籍、学年、学历注册数据。
学籍异动包括休学、复学、自动退学、晋级(留降级)、转学(转入、转出)、取消学籍(劝退、开除等)、保留入学资格、保留学籍等,根据学校学籍异动的相关管理办法要求,系统实现由教务管理人员设置异动条件,学生网上提交异动申请,经学院、学工处、教务处等相关部门审批。对最终审核确认异动的学生,提供批量处理功能,并同时更新学籍状态、在校状态,学生课表等相关数据。提供各类相关表格打印,提供多条件查询统计,生成上报数据。
▲管理人员可以灵活设置学籍异动类别、默认学籍状态、选择该类别的流程、异动说明(学生申请时需要同意该说明才能申请)、时间控制、是否影响学籍(若影响,可以设置哪些字段会在最后环节审核后自动更新)。
教务处设置学生网上申请时间。
学生可以提交异动申请,并打印相关的表格。
相关部门根据审批流程完成审核工作,并可以打印相关表格。
在校在籍学生按照学校转专业的具体要求在线申请。转专业具体流程系统提供学校自定义审批流程。
1、转专业计划设置
2、转专业申请
3、转专业审核
系统提供大类专业招生分流功能,系统管理员设置控制条件,预分流阶段学生网上申请,学院用户审核。教务审核后确认分流,批量处理,更新相关数据。如管理岗位老师操作,允许批量处理,更新相关数据。提供相关数据查询、导出和报表打印功能。对于大类招生,在同一大类下,学院可以进行分流,如果不在同一大类下必须走转专业流程。
系统提供专业分方向功能,系统管理员设置控制条件,学生网上申请,学院用户审核,教务审核后,批量处理,更新相关数据。管理流程系统允许灵活定义。数据操作允许管理岗位老师批量处理及更新相关数据。最后提供相关数据查询、导出和报表打印功能。
根据不同年级、专业需要,按照学校《学业预警管理办法》设置相应的预警条件,根据不同年级、专业需要,按照学校《学业预警管理办法》设置相应的预警条件,从而对学生学籍发出相关警示,满足预警标准自定义功能。
可根据学生在校内(外)交流学习或获得的奖励情况及竞赛情况,对学生进行学分认定;也可走学生申请,学院审核,教务处审核等流程。
根据学生的奖励情况、竞赛情况,完成对学生学分的认定
维护学生获得的校内(外)奖励信息;维护学生的处分信息;可从学工系统获取学生的奖惩信息。
根据毕业审核结果完成对学生毕业证书的发放打印;
课程库是学校教学资源很重要的一部分,是整个系统平台的基础资源之一,为培养方案、执行计划等提供资源。
教务处岗位老师直接维护课程库或导入系统外已有的课程信息。
课程指定上课老师,如课程中有上课教师维护着,则落实该课程时只从有课程指定的教师中选择,如果没有维护,则落实任务时则从教师信息表中都可以选择课程的上课教师。教师信息(包含外聘教师)取自人事系统或数据中心。
教师数据可以按学期进行管理和维护,系统保留各个学期的状态数据,满足各类教学管理的数据需要。
工作量管理针对教师教学质量、教师教学考核、学校领导针对教师的工作状态及饱和程度提供相关数据依据。
▲教学工作量主要包括:课程分类维护、工作量系数维护(如:教师相关的职称系数、级别系数等;课程相关的人数系数、重复系数、难度系数、教学模式系数、主辅讲系数维护等。)、工作量公式维护、工作量统计等。
教学场地管理主要包括教学场地基本信息维护、教室借用申请、教室查询。
能按场地所属校区、学院、场地类别、场地可用状态组合查询场地信息,设置教室的使用部门;增加、修改、删除场地基本信息(包括教学楼间距);导入教学场地信息;打印、输出场地信息。
▲场地学期状态数据管理
场地数据可以按学期进行管理和维护,系统保留各个学期的状态数据,满足各类教学管理的数据需要。
教务处维护教学场地借用控制设置,如:控制借用场地、借用时间范围等。
学院(或全校师生)网上借用教学场地。
学院审核场地借用申请单;教务处审核场地借用申请单。
分楼栋查询和推送教学场地借用单。
学院、物业管理人员提出教学场地变更申请,教务处审批。
专业培养方案是学校根据社会和学科要求制定(如学校有大类招生需要用到大类),一般发展N年制定一次,功能有培养方案制定、培养方案复制粘贴、培养方案制定提交、培养方案审核、培养方案归档、培养方案输出等功能。
专业带头人根据社会和学科的发展N年指定一次,主要制定各个专业的课程信息、所需修读学分信息、培养专业方向、培养要求、培养目标、最低毕业学分要求、核心课程、教学特色课程及说明等。可录入英文版。
专业带头人变更培养方案,确定无误后提交给学院审核,学院审核通过后教务处审核
学院审核专业带头人制定的培养方案,审核通过后提交给教务处审核;如果学院审核不通过,则将流程返回给专业带头人修订。
可以根据年级、学院、专业打印或导出培养方案。
▲学生个人培养方案是学生根据学校专业培养方案的基础上,结合自己个人发展情况制定自己的个人培养方案,功能有个人培养方案制定、培养方案制定提交、培养方案审核、培养方案归档、培养方案输出等功能。
教学执行计划是学校根据社会和学科要求制定(如学校有大类招生需要用到大类),一个年级专业指定一个,功能有执行计划从培养方案继承、执行计划制定、执行计划复制粘贴、执行计划制定提交、执行计划审核、执行计划归档、执行计划输出等功能。
专业带头人根据专业人才培养方案及学科要求制定年级专业的课程信息、所需修读学分信息、培养专业方向、培养要求、培养目标、最低毕业学分要求。其中培养要求、该专业或大类的学科专业类别、所依托主干学科、培养目标、培养要求、核心课程、教学特色课程及说明维护时可以有中英文对照。
专业带头人变更执行计划,确定无误后提交给学院审核,学院审核通过后教务处审核
根据年级专业执行计划,各开课学院落实执行计划需开设课程的上课教师、教学班人数、排课要求等信息。在任务落实完成后,可根据工作量计算规则,及任务落实的学生和人数,计算每个学院的的预计工作量。
学院(开课学院)为课程指定主讲教师(一个班允许多个主讲教师)、上课时间、上课场地类别要求、上课校区、选用教材等。
学院(开课学院)或教务处为计划外课程(即通识课等)指定主讲教师(一个班允许多个主讲教师)、上课时间、上课场地类别要求、上课校区、选用教材等。
▲对于分级教学的课程,可以通过板块课管理,板块课最主要的作用是占上课时间,保障学生都有时间去上板块课程。
板块课管理主要有板块类型、板块类型课组、板块类型等级、板块类型等级课组、板块信息维护、板块专业班级维护、板块任务落实、板块类型等级分数维护、学生板块类型等级。
根据学校开课情况(教学任务),结合学校的教学场地资源、排课要求设置后进行自动排课,学院、教务处可根据实际需要对系统自动排课的结果进行必要的修改,修改界面友好,操作简单;系统既支持学年学分制排课要求,也支持完全学分制下排课的要求,能处理按学科大类招生对排课的要求,能处理分级教学、课内实验(包括纯实验课程和既有理论课又有实验课的课程)、实验分组;支持二级排课、分批排课、不规则排课等排课方式;课表查询、打印权限可以分用户角色控制,可以在教务处指定的日期内导出或打印课表,避免在课表没有完全排完的时候导出和打印。
可灵活设置周一还是周日为一周内的第一天。可灵活设置对应日期节假日、校运动会等相关日程。为排课及教学提供教学周与具体日期的对应关系;为系统提供具体校历日程信息等。
根据禁排类别,可以进行如下的设定:
教师:针对特殊老师有具体要求不上课或上课的时间,可设置禁止排课的周次星期节次(注:设置后剩下来的相应时间就是对应限定排课时间)。
课程:针对某些课程不能安排在晚上上课,可某一课程设置晚上禁排。
教室:针对一些教室周末不可排课,可设置某一教室周六或周日禁排。
时座位数上限;
根据排课优先级组合,按照最优化路径,实现学生和教师相对集中在同一栋楼上课。
类型 | 优先级 | 优先级内容 |
教室 | 1 | 固定班级教室优先(使用班级) |
教室 | 2 | 同教学班最好同教室 |
教室 | 3 | 同课表同星期同时段中同教室,次同楼层,再次同楼栋,最次其它; |
时间 | 1 | 同一门课程尽量已经安排的时间优先 |
时间 | 2 | 白天的优先于晚上 |
时间 | 3 | 非周末的优先于周末 |
时间 | 4 | 同课程教学班同上课场地等导致时间的优先 |
在排课前可以落实初步的主讲教师,开学前主讲教师可以安排教学进度,进行换教师等操作,调整结果可以同步更新到课表中。
在普通课安排之前如果有分级教学或者年级专业有统一上课时,先安排这部分课的时间和地点,安排普通的时间和地点为除此之外的时间和地点,此环节为选做环节,具体根据学校实际情况而定。
可以根据总学时排时间、地点;可以根据周学时排时间、地点;
根据学期教学任务落实情况和排课约束条件,人机交互安排时间和地点。
▲各种课表查询、打印、输出,可以连续输出打印课程课表,教师课表,教室课表,班级课表,学生课表,全校课表(按课程/按教师/按教室/按班级)等课表;连续输出时,需要输出在一个EXCEL工作簿里,并且对每张课表需要分页;连续输出时,可以按照每张课表输出到每个EXCEL文件里;按照时间段、教室类型、开课部门、校区等信息查询全校上课情况。常用课表提供按周查询。
排课结束正式上课后,因某些原因教师需要调整上课时间、停课、补课,则可以进行调停补课申请报开课学院审核,开课学院审核通过了再教务处审核,教务处审核后如同意的则将审核结果返回给申请人的同时发布信息给学生。
提供排课结果统计分析的功能,实现科学分析排课质量(包括课表编排均衡性、教学场地使用率、排课要求满足情况),同时,方便对课表的调整和完善。
选课管理是指学生根据学校制订的学分制管理手册,并结合专业培养方案的学习要求完成相应的学分学习,并逐步体现学生在选课过程中自主选择性和结合自己兴趣爱好有一个倾向性。其中主要涉及到三大类的选课管理:有年级专业要求的选课(教学计划课程选课);无年级专业要求选课(校公选课、院系选修课等);、特殊课程类选课等。主要模式有:1:筛选制选课;2:优先制选课(先到先得的原则)。主要功能有:选课条件及要求设置、学业预警及选课指导、学生选课、选课过程监控及统计分析、学生课表查询、选课情况查询等。
在每学期安排学期教学任务前,需要根据年级专业教学计划生成每学期的开课计划,并可以通过选修课程预选、课程上课教师预选来判断学生的上课意愿、老师的选课意愿,并依此来影响学期开课计划和落实教学任务。
选课模块负责人根据学校具体选课管理办法规定的要求,设置开放选课类型及时间、参与选课对象、学生选课学分限制等条件设置。
根据学生培养计划和已选的课程学习情况,并结合学校规定学业预警条件等,对有学业预警的学生进行学业警告及选课做出相应的指导性意见及建议;对没有学业预警的学生给予合理的选课指导意见。让学生选课有一个针对性的选择。使学生有目的有计划的顺利完成学业及选课。
▲对于不参与选课的教学班,在学生选课前,教务处可以统一给与配课。
在选课过程中实时监控出每门课程的选课情况及每个学生选课情况。
教师可以生成并发布当前教学班的考勤二维码,二维码的信息由课程、时间、地点等组成。发布的二维码可以设置有效时间(如:10秒,则10秒后系统自动刷新生成新的二维码)。
根据任课教师根据教学班所生成的二维码,学生通过手机APP使用签到功能扫描教学班二维码,系统自动判断是否该教学班的学生,并登记学生的签到时间信息。
管理人员可以查询、统计学生的课堂点名信息。
考务管理实现对学校统考考试和非统考考试的统一管理,根据考生、课程、教室、监考等做出考试安排,系统自动排考。并提供排考效果分析功能,对检测冲突的考试手工调整。网上发布有关考试安排信息,学生可查询,打印。学期末教务处安排各门课程的考试时间、地点、监考老师。
维护考场座位数、使用部门、优先级、是否可用
教务处(面向全校)、学院(仅对本开课学院)确定每个考试教学班的试卷编号。
教务处(面向全校)、学院(仅对本开课学院)根据自动排考相关设置自动排考试时间、地点、安排监考教师。
教务处(面向全校)、学院(仅对本开课学院)根据试卷编号排考试时间、地点、安排监考教师。
直观的安排考试时间和考场,考试时间安排,可以在同一页面刷选考试名称、年级,显示所有的考试场次,可安排考试任务和已安排考试任务,选择可安排考试任务时,可以以不同颜色演示可排场次,冲突场次等;
教务处发布补考确认通知,学生网上确定补考、毕业补考的学生名单,排补考、毕业补考的时间地点、监考教师。
包括成绩管理模块的系统参数设置、成绩基础信息维护、成绩过程信息维护、课程过程管理、成绩录入设置、成绩录入、成绩修改、成绩补录、成绩查询、学业预警监控、成绩信息管理、成绩学分认定、成绩加分管理、成绩作废管理、成绩统计分析。
统一设置成绩管理模块相关的控制参数,如:成绩录入学年、成绩录入学期、补考成绩录入学年、补考成绩录入学期、阶段性成绩保留位数、总评成绩保留位数、学生成绩查询控制。
成绩级制代码、成绩备注代码、成绩对照信息、绩点信息、无绩点成绩课程、学院最低期末成绩(如成绩低于一定分数则不按成绩分项比例折算,直接记录期末成绩)等设置。
维护具体分项及各分项有哪些阶段组成,包括阶段比例模板维护、成绩分项比例维护、教学班成绩分项设置。
可以设置哪些课程需要过程管理,对于需要过程管理的课程,则允许任课教师网上自定义成绩组成分项及对应成绩分项阶段,教师网上自定义后课程负责人进行审核,对于审核通过的,则成绩录入时按此成绩分项及对应的阶段录入成绩。
包括正考成绩录入设置、补考成绩录入设置、缓考成绩录入设置,每项都允许设置成绩录入状态、成绩录入人(默认任课教师,也可以指定其他教师代为录入)、成绩录入时间。
录入教师在规定时间内录入与自己相关的学生成绩,同时教务处和学院可以在管理端录入相关的成绩。录入成绩提交后,录入教师提交成绩单和成绩分析单到教务处,开课学院、教务处确认成绩无误后发布成绩。学生和班主任可以在网上查询成绩,打印成绩单。
1、成绩录入(前台)
2、成绩录入(管理端)
3、成绩确认发布
教师在网上提交成绩修改的申请,学院、教务处以及教务处处长审核通过后变更学生的成绩。
为了能更好的录入补考成绩,补考成绩录入一般分以下几种:分配教师、任课教师、学院秘书、教务处录入;在确定成绩录入人后,录入人在成绩录入时间内录入补考成绩,成绩提交发布后,开课学院和教务处两级确认后,成绩发布,学生可以网上查询相关成绩。
生成正考补考学生名单,可以调整相关名单。
学生网上确认需要参加的补考课程。
设置补考课程的成绩的录入教师。
录入教师在规定时间内,录入补考成绩,成绩单打印分按照课程打印、按照班级打印、按照教学班打印。
确认成绩录入无误后发布成绩,允许学生网上查询成绩。
对于特殊学生(民族生、特长生、获奖学生等)进行加分规则设置,教务处直接根据这类学生进行加分处理,成绩直接加分到学生的成绩表中。
提供成绩作废申请和审核功能。
教务处直接开重修教学班,让重修学生去选择相应重修教学班重修;
1、重修选课对象设置
2、开设重修任务
教务处设置重修报名时间,学生重修报名,待重新报名结束后生成重修课程待落实任务。
3、重修教学班上课安排
4、重修选课
5、重修选课调整
6、重修缴费确认
教务处整理出当前选课学年学期能重修的课程名单,让学生去选重修课程,根据学生选择重修课程的情况开重修班重修。
学生可重修课程
方式(一)
方式(二)
根据学校管理规定,学校申请课程免修,学院、教务处根据学生申请的情况进行审核处理。学生提交申请,学生学院教学秘书审核,开课学院教学秘书审核、教务处审核,学生可以打印申请单,并在学生学院盖章;开课学院教学秘书可以查询免修情况。
学生提交申请,学生学院教学秘书审核,开课学院教学秘书审核审核、教务处审核,学生可以打印申请单,并在学生学院盖章;学生每次只能提交当前学期的课程,必须是在考试时间之前提交不能在考试时间之后提交申请;教学秘书也可以申请缓考;开课学院教学秘书可以查询缓考情况。
设置学校组织的所有考级项目、各等级项目考试报名起止时间,维护等级考试报名课程、报名学生限制条件等。
学院秘书根据每个专业各自的审核要求设置审核条件,条件设置完成后,根据审核条件进行审核,审核分学院审核和教务处审核两步。审核结果得出后,根据结果赋予毕业结论;教务处确认后,发布相关的审核结果和结论。学生可以查询相关的审核结果以及结论。
毕业生信息既是毕业审核的基础信息,也是毕业生数据上报的基础信息。毕业生信息既可以按照正常的毕业年份生成可以参加毕业审核的毕业生信息,也可以由学生自主申请毕业的年级专业。
▲设置课程相互替换关系;校内课程一替多、多替多、多替一等替换方案。
学生网上提出延长学制申请,学院和教务处两级审核,审核通过的学生可以不参与毕业审核。
教学质量评价管理由学生评教师、督导评价、学院评价、领导评价、同行评价、教师自评、问卷调查等组成。实现了360度教学质量评价管理与控制。
▲要求可按学校、学院、教师三级定义评价指标供学生教学质量评价。
灵活设置参评对象,如学生、教师、督导、领导、学院等。其中参评对象又有对应的人员库,如督导由哪些人员组成、领导有哪些人员组成等。
维护指标等级、指标库维护、开课部门指标维护、不同学年学期不同维度的评价模板设置。指标库主要服务于不同维度评价,部分指标由教师或开课部门自行设置一定占比的指标体系。如某大学学生评教师允许开课部门和教师自选指标,指标体系共20项,10项由教学质量管理部门强制规定占60%权重,6项由开课部门设置且占一定的权重30%,另外4项由任课教师自己结合所上课程的特点在指标库中选定其中四项占10%。
对参评课程进行分类便于评价统计结果排名比较;不同课程选定不同的评价模板,便于评价体系更具有针对性;参评学生限制(控制有些对教师有意见,防止恶意评价);评价教学班设置,控制哪些班级需要评价,哪些班级不需要评价;评价指标选定设置,允许控制到同一课程不同学时类型选用不同的评价模板;学生评价限制;开课部门评价设置、开课部门评价审核是对于允许开课部门自选指标的才有用。
各角色用户根据评价放开的情况,按指标进行客观评价。具体功能有学生评教师、督导听课评价、领导评价、学院评价、同行评价、教师自评等。
维护需要调查的标题及对应的调查指标供对应的调查对象进行问卷调查。
根据统计条件进行各维度的评价统计。系统允许去掉上下一定比例的评价数据,如去掉最好的5%和最低的5%评价数据后再进行统计。
监控各参评对象该评未评、部分评、全评的信息查询统计。
查询各维度评价信息。
完成对校内学生,以及非校内学生的辅修管理。
学院根据本学院的专业情况,申请需开设的辅修专业
教务处根据学院申请的辅修的专业信息进行审核
完成对辅修、二专业信息的报名以及审核功能。
根据学生辅修、二专业信息生成缴费项目清单,教务处根据财务处缴费成功信息,进行学籍注册。
学院根据专业培养计划,以及学生名单,进行任务落实、上课安排;教师根据任务进行录入成绩;打印学生辅修成绩;学生查询成绩。
毕业资格审核条件设置和审核。
可以根据学校要求完成对辅修信息的统计、查询、分析,并进行导出、打印等功能;如各辅修专业个数统计,各辅修专业人数统计,各辅修专业缴费情况统计等。
1、实习基地管理
2、实习安排
注:存在一些学生是自主找实习基地,可由学生学院进行录入到系统;
3、实习过程管理
4、实习报告上传
5、实习报告审核
6、实习报告归档
7、实习成绩录入
根据实习安排录入成绩,以及实习成绩分项的权重值设置,分项成绩录入,并根据权重值进行成绩合成。
完成对毕业论文(设计)的管理;
1、选题
确定论文题目、学生
注:学生选题、教师确定学生这个环节存在多轮的情况,多轮结后束最终确定学生名单;
2、开题
教师开题并确认学生的开题报告;
3、中期检查
4、论文审核
5、答辩安排
6、成绩计算
7、优秀毕业论文管理
为创新人才培养模式,提高人才培养质量,构建一体多元的课堂教学体系,加强学生创新创业能力和综合素质能力的培养,增强学生的学业能力、事业能力和人生能力,学校为提高在校学生能力水平,以教学要求方式,制定相关管理办法,要求学生参加一些校内外实践活动,给予学生修读学分的奖励。主要功能包括:项目类别信息设置、项目分值信息维护、项目分值报名、项目分值审核、项目学生名单管理、项目分值确认、项目分值情况查询、项目获得分值查询等功能。
1、项目类别信息设置
通过项目类别信息设置,控制创新创业学分申请时间及相关要求信息(如:创新创业要求最高学分、创新创业申报说明描述等信息)
2、项目分值类别替换
创新创业分类一般分为创新创业、素质拓展等不同类别,对应不同类别获得学分多出的部分可设置那一类别替换另一类别的要求学分。
3、项目类型信息维护
针对创新创业不同分类进行多级分类维护(如:【类别】创新创业-【分类】学科竞赛-【类型】XX地区软件设计大赛 三级维护)
4、项目分值信息维护
通过项目类型维护的基础数据。给获奖结果指定获奖级别及等级(如:国家级、一等奖),也支持指定获奖内容(如:社会实践活动,获得全国社会实践先进个人);给获奖结果指定获得分值(即学分情况)的相关信息维护。
5、项目分值报名
学生通过项目分值维护信息,在对应创新创业类别开放申请获奖结果的时间范围内,支持以小组为单位申请,也支持以个人申请参加相关创新创业、素质拓展的实践活动;同时要求上传获奖证明及材料为相关管理者审核提供依据。
6、项目学生名单管理
由相关管理人员对学生参加创新创业类别的实践活动,获得奖项进行维护。
7、项目分值审核
学生申请获得创新创业类别的实践活动奖项,由相关管理人员进行审核,针对符合申报要求的学生审核通过,反之审核不通过。
8、项目分值确认
学生针对获得创新创业类别的实践活动奖项情况及分值(学分)进行确认,确认后可对分值要求做有效互认。
9、项目获得分值查询
学校针对学生进行创新创业不同类别要求进行汇总查询,针对已达到要求或为达到要求的情况反馈给学生;未达到要求的学生再进行其他创新创业相关类别的实践活动,直至达到学校要求的分值成绩。
主要功能包括:职业技能证书信息设置、技能证书成果信息采集、证书信息查询统计打印等功能。
1、技能证书信息设置
职业技能证书信息设置包括证书名称、类型、等级、发证机构、鉴定地点、面向专业、技能考证人员信息维护等。
2、学生认证培训管理
学生认证培训申请、管理岗位审核。
3、技能证书成果信息采集
可批量导入技能证书成果信息,包括获得证书的学生信息、证书等级、考证时间等。
4、证书信息查询统计打印
完成对技能竞赛项目基本信息的维护、竞赛信息发布、学生报名、报名名单调整、竞赛成绩录入、成果证书采集、查询统计分析、竞赛成绩证明打印等管理。
教务处、各二级学院实现竞赛项目基本信息的维护,包括项目名称、级别、面向对象、报名限制、指导教师要求等。
可发布竞赛信息。发布后,向符合面向对象的学生推送报名通知。
学生可自主打印竞赛成绩证明。
完成对每个学期教学任务教材的安排、学生预定、教材征订、教材发放等管理。
教务处、供应商实现教材基本信息的维护(供应商根据教材征订目录表导入到教材基本信息表)。
学生选课时选择相应的教材。
根据教学任务和学生选课的数据来自动生成教材计划,并可以进行调整,如教师用书等
根据教材计划,进行教材的征订。
可以按照学生所在学院指定教材的供应商。
进行教材的入库管理。
可以按学生发放、学生零售、教师领用等进行教材出库,教材的出库记载到个人。
对于特殊情况下的教材回收、报废进行管理。
可以查询统计教材管理的各类报表。可根据班级学生信息(必修课)和学生选课信息(选修课),导出教材使用的学生信息,包括:学号、姓名、班级、专业、年级、层次、学制等信息。
具备学生角色、教师角色所需相关功能。
账号密码管理,实现与校门户系统对接。
教务公告、报名通知等,通知公告部分将设置有效日期,像有些报名通知,只需在一段时间内有效,过了有效期,将不再显示;还需要设置面向对象,通知是面向学生、教师、教务员,还是全部。
按年级、学院、专业查询任意专业的专业介绍。按年级、学院、专业、课程类别查询任意专业的培养计划。
网上选课可以按照课程、选课类别、专业、学院设立选课时间,面向对象等,支持多轮选课。
1) 成绩查询
可查询学生学期成绩、学年成绩、在校学习成绩信息,以及实时提醒毕业最低学分要求,本学期最低学分要求。
2) 成绩单打印
学生可自行打印在校学习中英文成绩单,成绩单上需设计学校logo图标。
3) 等级考试查询
查询等级考试成绩。
4) 考试查询
提供给学生查询个人每学期选课课程的考试时间、地点等信息。
5) 学籍查询,并能在线打印在读证明,带学校logo。
1) 培养计划查询
2) 全校开课情况查询
3) 推荐课表
4) 教师课表
5) 个人课表
6) 教室查询
7) 学期选课情况
8) 毕业资格自审(根据培养计划,审核各类课程情况)
9) 学籍查询、异动查询
10) 选课时,可以查看课程简介、教师简介、教学大纲、教学日历等;
11) 缴费情况查询(与数字化校园连通),如:等级考试报名等;
1) 转专业申请,需设置申报条件、时间段。
2) 辅修报名申请,需设置申报条件、时间段。
3) 补修免修申请,需设置时间段。
4) 休学、复学、退学、转学申请,需学院、教务处审批。
5) 缓考申请,需学院和教务处审批。
6) 网上报名,主要是等级考试报名,可分类别进行条件设置,不同层次的学生选择报名的类别不一样。
学生根据所修课程,在网上按评价指标体系进行评价。
1) 账号密码管理,实现与校门户系统对接。
2) 公告信息:登入后,可在首页看到相关的各类教务公告信息。
1) 个人简历维护。
2) 教学日历维护。
1) 临时调、停(补)课申请
2) 校公选课开课申请
3) 教学场地借用申请
4) 成绩变更申请
1) 教学任务查询
2) 学生个人课表查询
3) 教师个人课表查询
4) 选课情况查询
5) 教室查询
6) 考试安排查询
7) 培养计划查询
8) 教学质量评价查询
9) 教学工作量查询
1) 成绩录入
2) 成绩分析
1) 同行评教
2) 教师自评
3) 学生评价
4) 教学督导评价
系统管理是整个系统的支撑,包括权限管理、系统参数设置、系统日志管理、系统数据备份管理、历史数据管理、基础信息管理等功能。
系统具有多级的灵活角色定义及授权功能。实现依据学校各院部、各教学管理单位按照岗位职责进行角色定义及角色的级别(校级、院级),并依据岗位职责进行权限的分配,权限不仅控制功能组件,还控制到功能的操作按钮,保证用户在系统中的一切操作在授权范围内进行,当用户发生岗位调整或者岗位职责发生变化时系统可以灵活调整。
▲数据范围可控制到校区、院系、专业、班级、学生。
通过设置各项控制参数,构建一个管理控制平台,保障系统正常运行。
▲系统对用户的所有对数据库的读写操作都予以记录,系统管理员可查看到所有登录系统的用户的操作,包括登录时的IP地址、用户名、密码,操作内容描述,日期,时间等,以便对历史数据的修改痕迹查询提供线索,对恶意修改数据的用户进行跟踪,也为学校提供一些信息的分析统计。
备份是保障数据安全性重要手段,用户要非常重视数据的备份。不仅系统要提供多种备份方法,而且用户要制定严密的备份计划,以使工作的过程数据都能自动备份,在数据库服务器出现异常时,能顺利恢复到具体时点备份的数据。
▲对历史数据要有按年级转入历史库功能,对转入历史库的重要数据具有查询和输出功能。具体数据的转入转出灵活设置按年级专业、按年级等不同条件操作。
维护和管理学校行政结构信息、专业信息/班级信息、学年学期信息、校历、教学场所等核心基础信息。
为教务系统提供自定义报表设计打印的功能,以增加系统可扩展性和灵活性。
可自定义通知公告的类别,可建立多个发送通过公告的群组,可指定每个通知公告的接收对象。
▲基于工作流引擎,实现管理流程的动态配置,提高系统的可扩展性。通过工作流管理模块,用户可以管理已经存在的工作流,包括对工作流的增删改查,以及对工作流进行统一部署。用户还可以进行工作流运行实例的控制。
系统需要实现SSL传输协议,可以实现链路层的加密传输。
系统需提供基于角色的授权体系,能将用户的权限限制到具体功能,能准确授予用户职权范围。
系统需提供数据自动异地备份的机制(如每天备份),提供详细备份策略资料以及恢复的详细方法,确保数据安全 。
系统无中高级安全风险漏洞,需要有支撑材料。
后期需免费配合学校进行信息系统等级保护2级、3级认定,认定过程若本软件出现不符合等保2级、3级要求的,需免费进行整改,直至等保认定合格。
*请认真填写需求信息,我们会在24小时内与您取得联系。