Linux编程用户信息管理系统

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一绪论

§1.1设计背景

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。它主要用于基于Intel x86系列CPU的计算机上。这个系统是由全世界各地的成千上万的程序员设计和实现的。

§1.2设计目的

在Linux系统的/etc目录下有这样一个文件passwd,该文件里包含系统中所有用户信息的记录,记录里包含每个用户的如下信息:用户名、密码、用户ID、组ID、用户全名、用户主目录和用户登录所用的shell。请设计一个脚本(shell)程序能实现增加、删除、查找和显示特定用户信息的功能。你们可以通过创建一些UNIX/LINUX shell 脚本文件来满足以上需求。

二需求分析

§2.1系统概述

§2.1.1 任务概述

Linux作为多用户、多任务的操作系统,其系统资源是所有用户共享的。对用户的管理是操作系统的重点。LINUX课程设计要用shell编程实现,将理论学习付诸实践。设计一个脚本(shell)程序能实现增加、删除、查找和显示特定用户信息的功能。

§2.1.2需求规定

程序要包括四个文件,即menu,add,delete,passwd四个文件。passwd文件是用来保存用户信息;menu文件是主菜单,要求运行的时候能显示一个菜单供用户选择;addusers 文件是用来增加信息;deluser文件是用来删除信息。在主Shell脚本文件里(必须以 menu 命名)要有一个多操作选项的菜单以便用户从中选择。对于任务6和7,需要编写单独的Shell 脚本文件(必须分别命名为addusers和deluser)并且在主脚本menu文件中调用这些脚本

文件。

§2.2功能需求

在主Shell脚本文件里(必须以 menu 命名)要有一个多操作选项的菜单以便用户从中选择。在不同任务的中,这些操作能自动实现以下功能:

1、在屏幕上显示当前所有用户的记录

2、在屏幕上显示当前所有用户(经过格式化和排序的)的记录

3、只在屏幕上显示用户名和用户ID

4、只在屏幕上显示(经过格式化和排序的)用户名和用户ID

5、查询并显示特定用户的记录

6、往passwd文件里增加新的用户记录

7、从passwd文件里删除某个用户记录

你可以使用UNIX/LINUX中一些比较简单的命令或命令组合来执行1、2、3、4、5的任务。对于任务6和7,你需要编写单独的Shell脚本文件(必须分别命名为addusers和deluser)并且在你的主脚本menu文件中调用这些脚本文件。

三系统设计

§3.1结构层次图

§3.2.运行流程

(1)总运行流程

(2)addusers模块运行流程

(3)deluser模块用户运行流程

用户删除

Y

进入主菜单

Y

提示错误

N

是否存在用户ID

输入用户ID 是否删除

N

删除成功

四 系统实现

主菜单:

选择1:打印当前所有用户

选择2:打印当前所有用户记录(格式化后)

选择3:打印用户名和用户ID

选择4:打印用户名和用户ID(格式化后)

选择5:查询特定用户

没有输入关键字和输入关键字没有记录:查找到记录:

选择6:添加用户

添加成功:

用户名无效情况:用户名只能是数字或字母,用户名不能为空,

密码无效:密码不能小于6,密码不能为空,密码只能是数字或字母,密码必须和确认密码相同

用户ID无效:用户ID不能为空,用户ID不能小于500,用户ID只能为数字

组ID无效:组ID不能为空,组ID不能小于500,组ID只能为数字

登录shell无效:shell只能是bash,sh,kash,csh中的一种,shell不能空

选择7:删除用户

查找用户ID存在,是否要删除选Y,删除成功:

用户ID不存在和没有输入用户ID情况:

用户ID存在,在确认删除选N和其他字符是退出:

选择Q:退出

不正确选择:

五代码实现

1)主菜单代码

#! /bin/bash

#删除用户

clear

echo " 用户删除 "

echo "========================="

while true

do

read -p "输入用户ID:" userids

if( test ` expr match "$userids" "[0-9]*" ` -ne ` expr length "$userids" `) then echo "输入的用户ID只能是数字,请重新输入"

elif ( test -z "$userids" ) then

echo "用户ID不能为空"

else

break

fi

done

getuserid=$( awk -F ':' ' $3 == "'$userids'" {print $3} ' passwd )

if ( test $getuserid ) then

read -p "是否要删除(Y/N):" ack

if (test "$ack" = "Y" ) then

sed -i '/'"$userids"'/d' passwd

if ( test $? -eq 0) then

echo "删除成功"

else

echo "删除失败"

break

fi

相关文档
最新文档