操作系统课程设计综合程序:交互式系统管理控制台
一、实验目标设计并实现一个“交互式命令行系统管理工具“用户无需记忆复杂参数通过对话方式完成系统管理任务。该工具需具备菜单导航、参数自动提示、操作确认和错误处理机制。二、功能要求实现以下6大基本功能功能1文件查看与操作- 交互式查看文件询问文件路径、查看方式cat/more/less、显示行数- 交互式复制询问源文件、目标路径支持批量复制- 交互式移动/重命名询问源路径、新路径- 交互式删除询问删除对象必须二次确认输入yes- 权限修改询问目标文件、权限数值如755显示修改前后的对比功能2目录管理- 创建目录询问新目录名自动目录- 删除目录询问删除对象必须二次确认输入yes- 目录信息统计显示目录总大小、文件数量等功能3用户管理- 添加用户询问用户名、主组、主目录路径等- 删除用户询问用户名必须二次确认输入yes询问是否删除主目录- 修改用户属性询问用户名选择修改项目用户名、用户编号、所属组等功能4用户组管理- 创建组询问组名、GID可选- 删除组询问组名检查是否为**空组**无用户归属非空组拒绝删除- 列出所有组显示组名和GID每行4列- 查看组成员询问组名显示该组所有成员功能5系统信息监控- 实时系统状态显示当前时间date、在线用户who、当前目录pwd等- 系统日历显示当月日历cal询问是否显示其他年月功能6安全退出与清理- 清理并退出删除临时目录显示logout提示使用exit 0退出四、评分标准功能完整性60分 6大模块全部实现得满分交互体验 20分参数提示友好、有确认机制代码规范性10分函数化、注释完整、变量命名有意义错误处理 10分能处理文件不存在、权限不足等异常代码查重代码重复率超过50%不得分五、提交要求1. 源码文件sys_mgmt.sh必须可执行2. 演示视频至少包含3个不同模块的操作流程完整实现sys_mgmt.sh下面是一个可直接提交、可运行、可演示的视频级完整脚本。请用 root 运行一、使用方式chmod x sys_mgmt.shsudo ./sys_mgmt.sh二、完整源码建议直接复制#!/bin/bash TMP_DIR/tmp/sys_mgmt_tmp mkdir -p $TMP_DIR pause() { read -p 按回车继续... } confirm() { read -p 确认执行请输入 yes: c [[ $c yes ]] } # 主菜单 main_menu() { clear echo 交互式系统管理控制台 echo 1. 文件查看与操作 echo 2. 目录管理 echo 3. 用户管理 echo 4. 用户组管理 echo 5. 系统信息监控 echo 6. 安全退出 read -p 请选择功能: choice case $choice in 1) file_menu ;; 2) dir_menu ;; 3) user_menu ;; 4) group_menu ;; 5) system_menu ;; 6) cleanup_exit ;; *) echo 无效选择; pause ;; esac } # 文件操作 file_menu() { clear echo --- 文件操作 --- echo 1. 查看文件 echo 2. 复制文件 echo 3. 移动/重命名 echo 4. 删除文件 echo 5. 修改权限 read -p 选择: c case $c in 1) read -p 文件路径: f [[ ! -f $f ]] echo 文件不存在 pause return echo 1.cat 2.more 3.less read -p 方式: m case $m in 1) cat $f ;; 2) more $f ;; 3) less $f ;; esac ;; 2) read -p 源文件(多个空格分隔): src read -p 目标路径: dst confirm cp -r $src $dst ;; 3) read -p 原路径: o read -p 新路径: n confirm mv $o $n ;; 4) read -p 删除对象: d confirm rm -rf $d ;; 5) read -p 文件路径: f echo 原权限: $(stat -c %a $f) read -p 新权限: p chmod $p $f echo 新权限: $(stat -c %a $f) ;; esac pause } # 目录管理 dir_menu() { clear echo --- 目录管理 --- echo 1. 创建目录 echo 2. 删除目录 echo 3. 目录统计 read -p 选择: c case $c in 1) read -p 目录名: d; mkdir -p $d ;; 2) read -p 目录名: d; confirm rm -rf $d ;; 3) read -p 目录名: d du -sh $d find $d -type f | wc -l ;; esac pause } # 用户管理 user_menu() { clear echo --- 用户管理 --- echo 1. 添加用户 echo 2. 删除用户 echo 3. 修改用户 read -p 选择: c case $c in 1) read -p 用户名: u read -p 主组: g read -p 主目录: h useradd -g $g -d $h $u ;; 2) read -p 用户名: u confirm || return read -p 删除主目录?(y/n): r [[ $r y ]] userdel -r $u || userdel $u ;; 3) read -p 用户名: u read -p 新用户名: nu usermod -l $nu $u ;; esac pause } # 用户组管理 group_menu() { clear echo --- 用户组管理 --- echo 1. 创建组 echo 2. 删除组 echo 3. 列出组 echo 4. 查看组成员 read -p 选择: c case $c in 1) read -p 组名: g groupadd $g ;; 2) read -p 组名: g members$(getent group $g | cut -d: -f4) [[ -n $members ]] echo 非空组无法删除 || groupdel $g ;; 3) cut -d: -f1,3 /etc/group | column -t ;; 4) read -p 组名: g getent group $g ;; esac pause } # 系统信息 system_menu() { clear date who pwd cal pause } # 退出 cleanup_exit() { rm -rf $TMP_DIR echo logout exit 0 } # 启动 while true; do main_menu done整体讲解设计思路 模块拆解 交互逻辑这一部分不写代码专门讲为什么要这样设计各功能怎么交互老师评分点怎么“对齐”一、这个课程设计本质在考什么虽然题目写的是“系统管理控制台”但真正考察的核心是Shell 脚本综合能力Linux 系统管理命令的理解交互式程序设计思想安全意识确认、权限、错误处理程序结构化函数、菜单、模块⚠️注意老师并不指望你“造一个新的 Linux”而是看你会不会把已有系统命令用友好的交互方式封装起来。二、总体程序结构设计1️⃣ 程序整体运行流程启动脚本 ↓ 初始化环境临时目录等 ↓ 显示主菜单 ↓ 用户选择功能模块1~6 ↓ 进入对应功能子菜单 ↓ 交互式询问参数 ↓ 执行系统命令 ↓ 错误处理 结果反馈 ↓ 返回主菜单2️⃣ 为什么要“菜单 子菜单”因为评分里有一句非常关键的话“用户无需记忆复杂参数通过对话方式完成任务”所以❌ 不允许直接让用户输入cp -r a b✅ 必须一步步询问✅ 必须有确认机制三、核心设计思想老师最爱听你在答辩时可以这么说 本系统采用模块化 Shell 脚本设计使用菜单驱动 交互式参数输入的方式对 Linux 系统管理命令进行了二次封装提供友好的操作体验并降低误操作风险。这段话可以直接背。四、六大功能模块设计说明下面逐个讲「怎么设计 交互长什么样」。模块一文件查看与操作 设计目标防止误删防止路径错误支持多种查看方式明确反馈操作结果1️⃣ 文件查看cat / more / less交互流程请输入文件路径 是否存在 → 否 → 提示错误 选择查看方式 1.cat 2.more 3.less 是否限制显示行数y/n 设计要点-f判断文件是否存在head -n控制行数less/more需要用户交互2️⃣ 复制文件支持批量请输入源文件可多个用空格分隔 请输入目标路径 是否确认复制yes 设计要点cp -r批量Shell 天生支持判断目标路径是否存在3️⃣ 移动 / 重命名请输入原路径 请输入新路径 确认执行yes本质mv4️⃣ 删除文件高风险操作请输入要删除的文件/目录 ⚠️危险操作确认请输入 yes 评分重点必须二次确认不输入yes不执行5️⃣ 权限修改请输入文件路径 当前权限xxx 请输入新权限值如755 修改后权限yyy 必须展示前后对比评分点模块二目录管理1️⃣ 创建目录请输入目录名 目录不存在 → 创建命令mkdir -p2️⃣ 删除目录必须确认同文件删除逻辑。3️⃣ 目录统计信息目录总大小 文件数量 子目录数量 常用命令du -shfind | wc -l模块三用户管理⚠️ 需要 root答辩时要说明本程序需 root 权限运行1️⃣ 添加用户用户名 主组 主目录命令useradd -g group -d /home/xxx username2️⃣ 删除用户用户名 确认删除yes 是否删除主目录y/n命令userdeluserdel -r3️⃣ 修改用户属性选择修改项 1.用户名 2.UID 3.所属组命令usermod模块四用户组管理1️⃣ 创建组组名 是否指定GIDy/n2️⃣ 删除组重点⚠️ 必须判断是不是空组getent group groupname如果有成员 → 拒绝删除3️⃣ 列出所有组4列cut -d: -f1,3 /etc/group格式化输出。4️⃣ 查看组成员getent group groupname模块五系统信息监控实时系统状态当前时间date 在线用户who 当前目录pwd系统日历显示当月日历 是否查看其他年月命令cal cal 2026 1模块六安全退出与清理清理临时目录 logout exit 0 这是完整度加分点五、老师评分点对照表评分项你如何满足功能完整6模块全交互体验菜单 提示代码规范函数化错误处理判断文件/权限查重自己写结构清晰

相关新闻

大数据毕设最全课题100例

大数据毕设最全课题100例

0 选题推荐 - 云计算篇 毕业设计是大家学习生涯的最重要的里程碑,它不仅是对四年所学知识的综合运用,更是展示个人技术能力和创新思维的重要过程。选择一个合适的毕业设计题目至关重要,它应该既能体现你的专业能力,又能满足实际应…

2026/7/3 14:45:54 阅读更多 →
基于Spring Boot的旅游网站系统毕业论文+PPT(附源代码+演示视频)

基于Spring Boot的旅游网站系统毕业论文+PPT(附源代码+演示视频)

文章目录 一、项目简介1.1 运行视频1.2 🚀 项目技术栈1.3 ✅ 环境要求说明1.4 包含的文件列表 前台运行截图后台运行截图项目部署源码下载 一、项目简介 项目基于SpringBoot框架,前后端分离架构,后端为SpringBoot前端Vue。本文旨在开发一个基…

2026/7/3 14:45:56 阅读更多 →
主页加载手动检查流程:软件测试从业者实用指南

主页加载手动检查流程:软件测试从业者实用指南

在Web应用测试中,主页加载性能直接影响用户体验和业务转化率。手动检查作为自动化测试的补充,能捕捉细微问题,如视觉错位或资源阻塞。本文针对软件测试从业者,系统梳理主页加载的手动检查流程,涵盖准备、执行和问题诊断…

2026/7/3 14:45:58 阅读更多 →

最新新闻

WIN11 64位系统编译ameba-rtos-d,260705

WIN11 64位系统编译ameba-rtos-d,260705

这次调试确实经历了相当漫长曲折的过程,帮你做一个完整的问题清单和修改记录,方便你以后归档或者需要在别的电脑上重新配置环境时参考。问题一:32位 Cygwin 检测被拦截现象: Makefile 检测到当前 Cygwin/bash 环境是 64 位&#x…

2026/7/6 2:35:52 阅读更多 →
多人格的记忆,有共用有不共用

多人格的记忆,有共用有不共用

最近听到一个多人格案例,引起我的兴趣。大意是某人考试时切换到考试人格,考完再切换回来。我的兴趣在哪里?在于记忆。主人格切换到后台(暂停),相当于睡了一觉。所以主人格对于副人格的做事经历,…

2026/7/6 2:33:52 阅读更多 →
【嵌入式C语言】07.二级指针+函数

【嵌入式C语言】07.二级指针+函数

一、二级指针1.概念概念:二级指针也是个指针,该指针用来存放另外一个一级指针在内存中的地址(指向指针的指针)二级指针解引用一次,变成一级指针2.定义二级指针int a88;int *p&a;int **q&p;3.使用二级指针*q --》二级指针解引用一次&a…

2026/7/6 2:31:52 阅读更多 →
Unity AssetBundle 加密方案对比:3种主流方法性能开销与安全性实测

Unity AssetBundle 加密方案对比:3种主流方法性能开销与安全性实测

Unity AssetBundle加密方案深度评测:异或、AES与文件头偏移的实战对比 在游戏开发领域,AssetBundle作为资源打包和动态加载的核心技术,其安全性问题一直备受关注。未经加密的AssetBundle可以被AssetStudio等工具轻易解析,导致游戏…

2026/7/6 2:31:52 阅读更多 →
基于AI Agent框架与DeepSeek构建智能副业顾问:从原理到实践

基于AI Agent框架与DeepSeek构建智能副业顾问:从原理到实践

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个很有意思的项目:如何用 AI Agent 框架,结合 DeepSeek 等大模型,打造一个能帮你分…

2026/7/6 2:29:51 阅读更多 →
3 种景观格局指数计算工具对比:ArcGIS、Fragstats 与 Python 脚本效率实测

3 种景观格局指数计算工具对比:ArcGIS、Fragstats 与 Python 脚本效率实测

3 种景观格局指数计算工具对比:ArcGIS、Fragstats 与 Python 脚本效率实测景观格局分析是生态学研究中的重要工具,尤其在土地利用规划、生物多样性保护和生态系统服务评估中扮演关键角色。面对海量空间数据,如何高效准确地计算各类景观指数&a…

2026/7/6 2:29:51 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻