系统开发运行环境
操作系统:win10
软件:AppServ(php+apache+mysql),nginx(代理)
2.2 功能要求
2.2.1 教职工
对学生成绩有一个整体的了解,在今后的教学中能有所改进。同时可 以对自己教授的课程进行修改,进一步了解学生的个人情况,便于因材施教。 当学生的个人信息发生改变时,老师能够及时进行修改。例如学生转校、后来转 到本系、或者毕业生离开学校等,老师能够根据具体情况对学生信息进行添加、 修改、删除等。能够管理课程信息,合理安排老师教授的课程,及时为学生提供 选课信息。老师能够对课程名、课程编号、学分等进行修改和更新。能够对学生 成绩进行发布、修改、删除,清晰地了解学生的成绩情况,以便做出总结和改进。
2.2.2 学生
能够查询个人的学习成绩和总体学生的成绩,以便做出新的定位。
成绩查询:成绩修改、成绩添加、成绩删除等
课程查询:课程修改、课程添加、课程删除等
学生查询:学生信息修改、学生信息添加、学生信息删除等
2.3 可行性分析
为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率 和工作质量,现提出如下的系统开发目标:
提供了成绩查询的平台,可以用来发布成绩
任何学生都能上去查看自己的成绩
学生可以凭借自己的学号进行查询
管理员可以进行数据的添加
可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。也就是说 可行性研究的目的不是解决问题,而是确定问题是否值得去解,研究在当前的具体条件下, 开发新系统是否具备必要的资源和其它条件。
2.3.1 经济可行性
主要从对项目的经济上进行分析评价,一方面是支出的费用,包括设备购置费、管理 和维护费用、人员工资和培训费等,另一个是取得的收益。这是个超小型的管理系统,从投 入的人力,财力与物力来讲是非常之小的,只要一台电脑,一台打印机,这个系统就可以搞 起来,考虑到学校里有电脑,现只要购置一台打印机就可以了。从节省人力方面,可以让管 理人员从繁与复杂的工作中解脱出来,做更多的工作,可以给教学管理提高一个层次。
2.3.2 管理性
学生成绩管理系统是对学生成绩进行管理的一个简单系统,主要又成绩的输入、输出、 浏览、打印、数据备份等组合而成,因此可适用于任何学校用作成绩管理。该系统管理方法 科学,相应的管理制度成熟,所记录的原始数据准确,且操作简单、快速,对管理人员的计算级应用技术要求不高,可被一般管理人员所接受,所以在管理上具备一定的可行性,便与普遍采用。
2.3.3 技术性
在开发本应用软件时,我是按照软件周期进行开发的。而我所设计的学生成绩管理系统 是一个用php 和 Mysql 加前端js框架实现的前后端分离开发的应用系统。
2.4 安全与完整性要求
建立数据库用户,对其权限进行设置。确定各表主键、索引、参照完整性、 用户定义完整性。
2.5 数据字典
学生表(学号,姓名,性别,系别,学生年龄)
课程表(课程号,课程名,课时,学分)
成绩表(课程号,学生号,成绩。)
老师表(老师姓名,老师编号,所授课程,联系电话)
名字:老师信息 描述:学生成绩管理系统中存储的所有老师的信息 定义:老师信息=老师姓名+所授课程+教师编号+联系电话
名字:学生信息 描述:学生成绩管理中存储的所有学生信息 定义:学生信息=学生学号+学生姓名+学生性别+学生系别+学生年龄 位置:存储 输出供查询
名字:课程信息 描述:多个必要课程信息组成 定义:课程信息=课程号+课程名+课时+学分 位置:存储 输出供查询
名字:用户表信息 描述:用户个人的信息 定义:用户信息=用户名 位置:存储 输出供查询
名字:学生成绩信息 输入:学生姓名 输出:相应的学生成绩信息
名字:查询信息 描述:用户提出的具体查询请求 定义:查询信息=[课程查询信息]+[学生查询信息]
位置:课程表 学生表 成绩表
名字:添加信息 输入:学号、学生姓名、学生性别、系别、学生年龄 输出:新输入的学生信息
名字:删除信息 输入:选中所要删除的学生信息 输出:删除完成系统的实体与联系
3 概念结构设计
3.1 系统与实体的联系
由需求分析的结果可知,本系统设计的实体包括:
学生基本信息:学号,姓名,学院,班级,年龄,性别
课程基本信息:课程名,课程号,学时
教师基本信息:教师号,教师姓名,职称,年龄,性别,学院
学院基本信息:学院名、学院号、院长姓名
这些实体间的联系包括:
每位学生可以学习多门课程,每门课程可供多位学生学习
每门课可以由多个老师教,每个老师可以教多门课程
学生每选一门课就可以得到一个成绩,不选此课就不能取得该课程成绩
3.2 各个实体 E-R 图
3.2.1 学生表
3.2.2 教师表
3.2.3 课程表
3.2.4 成绩表
3.2.5 总体实体练习图
3.3 E-R图转实为关系模型
3.3.1 学生表
属性名 | 数据描述 | 数据类型 | 是否为空 | 备注 |
sno | 学号 | Char(8) | 不允许为空 | 主键 |
sname | 姓名 | Char(10) | 不允许为空 | |
Ssex | 性别 | Char(2) | 不允许为空 | |
Ssex | 性别 | C har(2) | 不允许为空 | |
sbirth | 出生日期 | atetime(8) | 允许为空 | |
class | 所在班级 | Char(4) | 不允许为空 | |
type | Char(7) | 允许为空 |
3.3.2 教师表
属性名 | 数据描述 | 数据类型 | 是否为空 | 备注 |
tno | 教师编号 | char(5) | 不允许为空 | 主键 |
tname | 姓名 | varchar(10) | 不允许为空 | |
depart | 部门 | varchar(8) | 不允许为空 | |
Tsex | 性别 | char(2) | 不允许为空 | |
Tbirth | 出生日期 | datetime , | 允许为空 | |
prof | 职称 | char(6) | 允许为空 |
3.3.3 课程表
属性名 | 数据描述 | 数据类型 | 是否为空 | 备注 |
cno | 课程号 | Char(5) | 不允许为空 | 主键 |
cname | 课程名称 | varchar(10) | 不允许为空 | |
tno | 教师编号 | char(3) | 不允许为空 |
3.3.4 成绩表
属性名 | 数据描述 | 数据类型 | 是否为空 | 备注 |
sno | 学号 | Char(8) | 不允许为空 | 主键 |
cno | 课程号 | Char(5) | 不允许为空 | 主键 |
degree | 成绩 | Float(8) | 不允许为空 |
5 物理结构设计
4.1 确定关系模型的存取方法
在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击 物理模型的关系,可以对该关系的名称、注释等信息进行查询。可对该关系的属 性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。在实 际设计中最常用的存取方法是索引发,使用索引可以大大减少数据的查询时间, 在建立索引时应遵循:在经常需要搜索的列上建立索引; 在主关键字上建立 索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据 范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规 则。才能充分利用索引的作用避免因索引引起的负面作用。
4.2 数据流图
该数据流图主要体现教职工对学生信息、课程信息和学生成绩的管理,然后 存储的信息作用于查询系统。在学生能够操作的只有成绩查询,如图所示:
5 效果图
5.1 登录
5.1.1 学生
5.1.2 教师
5.1.3 管理员
5.2.学生界面
5.2.1 首页
5.2.2 个人信息
5.2.3 成绩查询
默认当前学期
选择学期
5.2.4 本学期课表
5.3 教师界面
5.3.1 欢迎界面
5.3.2 查询教授的课程
5.3.3 录入成绩
5.3.4 已录警告
5.3.5 录入
5.3.6 选择查看教授的课程已录入的成绩
5.4 管理员界面
5.4.1 学生管理界面
查询所有
分类模糊查询
添加学生
编辑信息
删除学生
5.4.2 教师管理
查询所有
分类模糊查询
添加教师
编辑信息
删除学生
5.4.3 课程管理
5.4.4 排课管理
5.5 其他
5.5.1 退出登录
5.5.2 修改密码
6 主要代码
6.1 database.php
<?phpreturn[// 数据库类型
'type'=>'mysql',// 服务器地址
'hostname'=>'127.0.0.1',// 数据库名
'database'=>'grademanager',// 用户名
'username'=>'root',// 密码
'password'=>'123456',// 端口
'hostport'=>'3306',// 连接dsn
'dsn'=>'',// 数据库连接参数
'params'=>[],// 数据库编码默认采用utf8
'charset'=>'utf8',// 数据库表前缀
'prefix'=>'',// 数据库调试模式
'debug'=>true,// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy'=>0,// 数据库读写是否分离 主从式有效
'rw_separate'=>false,// 读写分离后 主服务器数量
'master_num'=>1,// 指定从服务器序号
'slave_no'=>'',// 是否严格检查字段是否存在
'fields_strict'=>true,// 数据集返回类型
'resultset_type'=>'array',// 自动写入时间戳字段
'auto_timestamp'=>false,// 时间字段取出后的默认时间格式
'datetime_format'=>'Y-m-d H:i:s',// 是否需要进行SQL性能分析
'sql_explain'=>false,];
6.2 登录代码
// 登录
publicfunctionlogin(){
$t=model('CommonResData');
if(input('post.username')&&input('post.password')){
$username=input('post.username');
$password=input('post.password');
$identity=input('post.identity');
if($identity==0){
$t->data=Db::query("select admin_name from admin where admin_id=$username and admin_password='$password'");
if($t->data){
$t->code=0;
$t->data=$t->data[0]['admin_name'];
// return JSON($t->resData($t->code,$t->data));
}else{
$t->code=3;
$t->data='没有该用户或密码错误';
}
}elseif($identity==1){
$t->data=Db::query("select teacher_name from teacher where teacher_id=$username and teacher_password='$password'");
if($t->data){
$t->code=0;
$t->data=$t->data[0]['teacher_name'];
// return JSON($t->resData($t->code,$t->data));
}else{
$t->code=3;
$t->data='没有该用户或密码错误';
}
}elseif($identity==2){
$t->data=Db::query("select student_name from student where student_id = $username and student_password='$password'");
if($t->data){
$t->code=0;
$t->data=$t->data[0]['student_name'];
}else{
$t->code=3;
$t->data='没有该用户或密码错误';
}
}else{
$t->code=2;
$t->data='登录失败';
}
Session::set('islogin',$username);
Session::set('identity',$identity);
returnJSON($t->resData($t->code,$t->data));
}else{
$t->code=2;
$t->data="用户名密码不能为空";
returnJSON($t->resData($t->code,$t->data));
}}
6.3 判断是否登录
publicfunctionisLogin(){$isLogin=Session::get('islogin');$t=model('CommonResData');if(!$isLogin){$t->code=1;$t->data='未登录';return;}else{$t->code=0;session('islogin',$isLogin);}}
完整项目代码:https://download.csdn.net/download/weixin_55771290/87395199
发表评论 取消回复