1. 设计内容
1.1 多用户文件管理系统
我们设计了一个支持多用户的文件管理系统,每个用户拥有自己的用户名和密码,以确保系统的安全性。
1.2 文件目录管理功能
实现了对文件目录的管理功能,包括创建目录(mkdir)、改变当前目录(cd)、列出文件目录(dir)等操作,使用户能够方便地组织和查看文件。
1.3 文件管理功能
系统支持文件的创建(create)、打开(open)、读取(read)、写入(write)、关闭(close)、删除(delete)等文件管理功能,以满足用户对文件的各种操作需求。
1.4 用户界面设计
设计了一个实用的用户界面,采用Python Tkinter库,使用户能够直观、方便地使用文件管理系统。用户可以通过图形化界面完成文件和目录的操作,无需记忆复杂的Linux命令
2 设计目的与要求
2.1设计目的
2.1.1 提升用户友好性
Linux文件系统通常需要通过命令行操作,对于新手来说存在学习难度。通过图形化界面设计,我们追求提高用户友好性,使用户更轻松地进行文件管理。
2.1.2 高效、人机交互
通过设计合理的用户界面,追求高效率的文件管理操作,并保证良好的人机交互,提高系统的易用性。
2.1.3 实现系统安全性
通过登录页面的设计,保障了文件管理系统的安全性,只有经过身份验证的用户才能进行文件操作。
2.2设计要求
2.2.1 多用户支持
系统支持多用户,每个用户有独立的用户名和密码,确保用户的隐私和文件安全。
2.2.2 文件和目录管理
提供了丰富的文件和目录管理功能,包括文件的创建、打开、读取、写入、关闭、删除,以及目录的创建、切换、列出等操作。
2.2.3 用户界面友好
设计了直观、易用的用户界面,通过图形化按钮和界面元素,使用户能够轻松完成文件管理操作。
2.2.4 系统环境与安全性
选择Python作为编程语言,Tkinter作为图形化工具,CentOS作为Linux内核虚拟机,通过模拟器或虚拟机来模拟操作系统的执行环境。确保系统的稳定性和可靠性。
3.1 原理与说明
3.1.1流程说明
- 用户认证与登录页面设计: 创建登录页面,用户需要输入用户名和密码进行身份验证,确保只有授权用户能够使用文件管理系统。
- 主页面设计: 登录成功后,用户进入主页面,设计了直观的用户界面,提供了文件和目录管理的图形按钮,以及与Linux命令对应的功能。
- 文件管理与目录管理功能实现: 使用Python编程语言,通过Tkinter库实现了文件的创建、打开、读取、写入、关闭、删除等功能,同时实现了目录的创建、切换、列出等功能。
- 系统初始化与环境配置: 在系统启动时进行初始化,建立文件卷,提供登录模块。使用模拟器或虚拟机来保证Linux系统的执行环境,确保系统的运行环境稳定。
- 用户交互与反馈: 通过合适的用户交互设计,确保用户在操作过程中能够获得及时的反馈信息,提高系统的用户友好
原理流程图
3.2主模块设计
1.文件创建模块设计
- 检查登录状态:
- 首先,函数检查用户是否已经登录到平台(self.logged_in为True)。
- 如果用户已经登录,执行以下步骤;否则,显示错误消息,提示用户先进行登录。
- 获取文件名:
- 使用simpledialog弹出对话框,请求用户输入文件名。
- 如果用户输入了文件名(filename不为空),执行以下步骤;否则,结束函数。
- 构建文件路径:
- 使用os.path.join将用户提供的文件名与当前目录路径拼接,得到完整的文件路径(file_path)。
- 创建文件:
- 尝试打开文件路径对应的文件,使用写入模式('w')。
- 如果文件创建成功,弹出消息框通知用户文件创建成功,并结束函数。
- 如果在文件创建过程中出现异常,捕获异常并显示相应的错误消息,通知用户创建文件失败。
2.文件写入模块设计:
- 检查登录状态:
- 首先,函数检查用户是否已经登录到平台(self.logged_in为True)。
- 如果用户已经登录,执行以下步骤;否则,显示错误消息,提示用户先进行登录。
- 获取文件名:
- 使用filedialog.askopenfilename()弹出对话框,获取用户选择的要打开的文件名(self.file_name保存该文件名)。
- 如果用户选择了文件,执行以下步骤;否则,结束函数。
- 打开文件并读取内容:
- 尝试使用二进制模式打开用户选择的文件(self.file_name)。
- 如果文件打开成功,读取文件内容,并进行以下子步骤。
- 尝试解码为文本:
- 尝试将文件内容解码为UTF-8文本。
- 如果解码成功,将解码后的文本内容显示到文本框中,弹出成功消息框;如果解码失败,执行以下步骤。
- 显示二进制表示:
- 如果解码失败(UnicodeDecodeError),将文件内容的二进制表示显示到文本框中,弹出成功消息框。
- 处理文件未找到异常:
- 如果文件未找到(FileNotFoundError),显示文件未找到的错误消息。
- 处理IO异常:
- 如果发生IO错误(IOError),显示无法打开文件的错误消息
3.3核心代码展示
def write_file(self):
#分为两种清空:1第一种是写入已经存在的文件,文本框打开其内容,进行修改点击保存即可,2第二种是写入一个新的文件,直接进行写入即可
if self.logged_in:
file_name = filedialog.asksaveasfilename(
#如果没写文件的后缀名则默认保存为.txt文件
defaultextension=".txt",
filetypes=[("Text files", "*.txt"), ("All files", "*.*")]
)
# 创建新窗口
write_window = tk.Toplevel(self.root)
write_window.title("写入内容")
# 创建多行文本框
input_text = tk.Text(write_window, height=30, width=50)
input_text.pack()
# 如果文件存在,将内容展示到文本框中
if file_name and self.file_exists(file_name):
try:
with open(file_name, "r", encoding="utf-8") as file:
file_content = file.read()
input_text.insert(tk.END, file_content)
except IOError:
messagebox.showerror("错误", "无法读取文件!")
def close_file(self):
if self.logged_in:
if self.file_name:
try:
# 使用Linux系统调用关闭文件
os.close(os.open(self.file_name, os.O_RDWR | os.O_CREAT))
# 清空当前文件名
self.file_name = None
self.text_box.delete("1.0",tk.END)
messagebox.showinfo("成功", "文件成功关闭")
except OSError as e:
messagebox.showerror("错误", f"文件关闭失败: {str(e)}")
else:
messagebox.showwarning("警告", "没有文件被打开.")
else:
messagebox.showerror("错误", "请先进行登录.")
3.4在虚拟机运行画面
首先进入登录页面,登录用户和密码为已经赋值的权限,登录成功后进入文件管理系统的主页面,主页面为菜单栏显示,右边有一个退出按钮,背景色设置为浅棕色,正中间上面显示当前为哪个目录工作。
创建文件:可以不添加后缀名,创建,添加后缀名也可以创建相应文件,并默认在当前路径下创建,如果需要改变可以点击选择目录
点击选择目录后,可以看到此时的当前目录显示已经改变并且显示出该文件夹下面的所有文件信息,包括文件大小,和所创建的信息。
打开文件:
选择目录的功能类似于cd和ls
4.1不足之处
不能直接显示图片文件,只能转换为二进制显示
不能进行网络通信,和共享文件夹
因为这个只是博主的操作系统课设,只展示一些内部细节,所以想要完整源码的uu可以关注博主,后台私信交流代码