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)开发分工
2.3)开发进度
2.4)关键问题
● 关键问题:
①、判断是教师账号还是学生账号
②、注册成功后给教师账号加锁
③、给教师账号解锁
● 技术难点:
给指定教师账号解锁
●风险:
无法使用该功能
●应对措施:
①、让注册者输入“student”或"teacher"来判断是学生注册还是教师注册
②、用usermod -L 或passwd -l给账号加锁
③、用usermod -U或passwd -u给账号解锁
(passwd加锁与usermod加锁不同,不能混用)
3. 设计与实现
3.1)总体设计
● 使用流程
●程序流程
3.2) 开发过程
①、源代码下载
②、实验系统安装
cd linuxer是切换目录,将实验系统安装在此目录下,make install是实验系统安装,每次修改完代码后,需要使用此命令重新安装实验系统,才能得到更改后的实验系统,并对其检测。
③、编辑lib/server.lib文件,注册账号的函数已经解锁教师账号的函数都在该文件中。在register()函数中,实现教师账号***加锁功能,teacheraccounts()函数得到所有的教师账号,lockaccount()函数得到加锁的教师账号,judgelock()函数用来判断登录账号是否加锁,unlock()函数用来给账号解锁。
在etc/server.conf中添加教师组TEACHER_GROUP
④、将judgelock()函数名添加到bin/server.bash中
⑤、将解锁函数unlock()添加到bin/server-teachers.bash里
因为对文件进行了修改,需要使用make install重新安装程序,使用/opt/linuxer/bin/server.bash运行,检测程序是否出错。
⑤、程序没有问题,使用git add lib/server.lib
git commit -m "lib/server.lib"
git push origin master提交到远程代码库。
成果:
注册演示:
判断用户名是否符合要求:
注册成功演示:
检测账号是否锁定:
检测
3.3)代码分析
流程图:
文件之间的关系:
函数之间的关系:
关键代码注释:
lib/server.lib
bin/server.bash
bin/server-techers.bash
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条件结构的理解。