linux实验7issue18教师账号注册

1. 需求分析

 

1.1)需要解决的问题

①、判断是教师账号还是学生账号

②、教师账号无账号形式要求

③、教师账号注册成功后需加锁

④、管理员账号可以给刚注册的教师账号解锁

1.2)具体描述

●功能需求:

①、用户可以像注册学生账户一样的方式,注册教师帐号

②、区别于学生帐号,教师帐号没有帐号形式的要求,但是注册完成后默认情况下,帐号是未**的,需要通过管理端**。

③、通过问答方式输入教师帐号,可以完成教师帐号创建,需要管理端**帐号,否则无法使用。

④、注册成功的教师账号能够使用教师功能。

● 性能需求:

①、稳定,能够使用。

● 安全需求:

①、教师账号注册完成后加锁,只有管理员解锁后才可以登录使用账号,以防止学生注册教师账号。

1.3)解决方案

①、在远程代码库创建自己的组,我们组的名字是37组issue18教师账号注册,从分支里下载远程代码库

②、在linuxer/etc/server.conf添加教师组

③、编辑linuxer/lib/server.lib中的函数register()

❶判断是学生注册还是教师注册

❷输入ID

❸ID为空,退出程序

❹(如果为学生账号注册,判断格式,格式错误则重新输入)判断用户名是否已被创建

❺用户名未被创建,授予用户学生功能或教师功能

❻设置口令,设置成功即注册成功,否则删除生成的账号和主目录。

❼判断账号是否注册成功,成功即锁定账号

④、在linuxer/lib/server.lib中编辑函数teacheraccounts()得到所有的教师账号,lockaccount()得到加锁的教师号,judgelock()用来判断登录账号是否加锁,unlock()用来给账号解锁。

⑤、在/bin/server.bash里添加函数名judgelock,使其可以被调用,如果是加锁账号,使其不能登录,需管理员解锁;在/bin/server-teachers.bash文件中添加函数名unlock,使其能够被调用,用来解锁账号。

 

1.4)评价方法

运行程序,看是否完成基本功能,依照完成的程度评价。

 

2. 开发计划

 

2.1)开发任务

●开发内容:

①、判断是教师账号还是学生账号

②、教师账号无账号形式要求

③、教师账号注册成功后需加锁

④、管理员账号可以给刚注册的教师账号解锁

● 要交付的内容:

①、程序能够判断是注册的是教师账号还是学生账号

②、教师账号无形式要求

③、教师账号注册成功后需加锁

④、管理员账号可以给刚注册的教师账号解锁

⑤、注册的教师账号能够使用教师功能

● 验收标准:

完成需求,完成开发内容,完成要交付的内容。

 

2.2)开发分工

linux实验7issue18教师账号注册

 


2.3)开发进度

 

linux实验7issue18教师账号注册

 

2.4)关键问题

● 关键问题:

①、判断是教师账号还是学生账号

②、注册成功后给教师账号加锁

③、给教师账号解锁

● 技术难点:

给指定教师账号解锁

●风险:

无法使用该功能

●应对措施:

①、让注册者输入“student”或"teacher"来判断是学生注册还是教师注册

②、用usermod -L 或passwd -l给账号加锁

③、用usermod -U或passwd -u给账号解锁

(passwd加锁与usermod加锁不同,不能混用)

 

3. 设计与实现

 

3.1)总体设计

● 使用流程

 

linux实验7issue18教师账号注册

●程序流程

 

linux实验7issue18教师账号注册

3.2) 开发过程

①、源代码下载

linux实验7issue18教师账号注册

②、实验系统安装

cd linuxer是切换目录,将实验系统安装在此目录下,make install是实验系统安装,每次修改完代码后,需要使用此命令重新安装实验系统,才能得到更改后的实验系统,并对其检测。

linux实验7issue18教师账号注册

     ③、编辑lib/server.lib文件,注册账号的函数已经解锁教师账号的函数都在该文件中。在register()函数中,实现教师账号***加锁功能,teacheraccounts()函数得到所有的教师账号,lockaccount()函数得到加锁的教师账号,judgelock()函数用来判断登录账号是否加锁,unlock()函数用来给账号解锁。

linux实验7issue18教师账号注册

在etc/server.conf中添加教师组TEACHER_GROUP

linux实验7issue18教师账号注册

     ④、将judgelock()函数名添加到bin/server.bash中

linux实验7issue18教师账号注册

      ⑤、将解锁函数unlock()添加到bin/server-teachers.bash里

linux实验7issue18教师账号注册

因为对文件进行了修改,需要使用make install重新安装程序,使用/opt/linuxer/bin/server.bash运行,检测程序是否出错。

     ⑤、程序没有问题,使用git add lib/server.lib

              git commit -m "lib/server.lib"

              git push origin master提交到远程代码库。

成果:

注册演示:

判断用户名是否符合要求:

linux实验7issue18教师账号注册

 

注册成功演示:

linux实验7issue18教师账号注册

linux实验7issue18教师账号注册

检测账号是否锁定:

linux实验7issue18教师账号注册

linux实验7issue18教师账号注册

检测

3.3)代码分析

流程图:

文件之间的关系:

linux实验7issue18教师账号注册

函数之间的关系:

linux实验7issue18教师账号注册

 

linux实验7issue18教师账号注册

关键代码注释:

lib/server.lib

linux实验7issue18教师账号注册

 

linux实验7issue18教师账号注册

 

linux实验7issue18教师账号注册

 

linux实验7issue18教师账号注册

bin/server.bash

linux实验7issue18教师账号注册

bin/server-techers.bash

linux实验7issue18教师账号注册

 

3.4)使用手册

①、使用git clone http://vlab.cs.swust.edu.cn:8081/37th-group/linuxer.git下载远程代码库

②、cd linuxer

make install安装系统

③、/opt/linuxer/bin/server.bash进入“This is the server of Linuxer.(V4.0)”菜单界面

④、选择“1”,输入“teacher”(表示注册教师账号),

输入注册名,无错误输入注册密码,注册成功

⑤、按enter,回到“This is the server of Linuxer.(V4.0)”菜单界面

⑥、选择“2”,输入注册的账户名

⑦、如果是被锁账号,会提示你的账号被锁,并让你输入其他教师账号对其解锁,输入其他教师账号后会进入功能菜单界面,选择6。

⑧、输入待解锁账号,会显示账号是否解锁成功。

 

4. 开发总结

 

4.1)实际结果

● 实际功能:无法解锁加锁的教师账号,其他基本完成

●性能:一般

●进度情况:70%

●基本符合项目要求,但无法实现教师账号解锁功能。

 

4.2)工作评价

●开发分工:各自任务完成良好

●完成效率:完成效率有点低

●产品质量: 除了解锁功能未实现,其他基本功能都已实现,产品质量一般

●关键技术:关键技术实现70%

●出错原因:解锁函数unlock()编辑有误,无法正确实现其功能。

 

4.3)经验与教训

通过本次实验,理解了各文件的作用,如lib/server.lib文件是用来存储实现函数,bin/server.bash文件调用函数功能,也在编写文件的过程中对命令理解更深,如useradd -s为设置用户登录shell,useradd -m设置用户主目录。知道了如何锁定和解锁账号,锁定账号使用passwd -l或usermod -L命令,解锁使用passwd -u或usermod -U命令。也加深了我们对if条件结构的理解。