操作系统实验报告
安徽师范大学 计算机与信息学院
姓名: XXX 学号: 1911130XXXX 年级专业: 软工二班
实 验 题 目: 搭建交互式实验系统
【1.需求分析】
本次实验的任务是搭建一个操作系统的辅助系统的框架,以便于后续实验进行(后续实验在此框架中运行实现);
(1)本次实验输入形式:字符串 输入值范围:合法字符;
输出形式:文件(菜单功能响应);
(2)展示的是一个操作系统辅助系统的菜单界面;
①生成“文件”菜单组,包含“打开”、“保存”、“退出”等(实现快捷键)
②生成“编辑”菜单组,包含“允许编辑”、“禁止编辑”、“字体”、“颜色”等
③生成“进程管理”菜单组,包含“进程状态转换”、“生产者-消费者”、“进程调度”和“银行家算法”菜单项,并且在执行“进程状态转换”菜单命令时,能弹出标题为“进程状态转换”的窗口。
④生成“存储管理”菜单组,包含“动态分区分配”和“页面置换”菜单项
⑤生成“设备管理”菜单组,包含“磁盘调度”菜单项
(3)本次实验的程序所达到的功能便是搭建出一个辅助系统的框架为后续实验提供便利;
【2.概要设计】
本次实验的设计思路是根据已知的菜单界面,借助VS2019搭建一个属于自己的操作系统实验辅助系统界面,该操作界面包括打开、保存、退出、允许编辑、禁止编辑、字体、颜色等基本操作按钮,并可以在电脑上实现相关操作的功能。
示意图如下:
【3.详细设计】
“打开”按钮的实现具体代码:
private void 打开OCtrlOToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Multiselect = true;
fileDialog.Title = "请选择文件";
fileDialog.Filter = "所有文件(*.*)|*.*"; //设置要选择的文件的类型
if (fileDialog.ShowDialog() == DialogResult.OK)
{
string file = fileDialog.FileName;//返回文件的完整路径
}
if (!string.IsNullOrEmpty(fileDialog.FileName))
{
StreamReader sr = new StreamReader(fileDialog.FileName);
richTextBox1.Text = sr.ReadToEnd();
sr.Close();
}
}
“打开”快捷键的实现(其他快捷键同此):
“保存”按钮代码:
private void 保存SCtrlSToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog fileDialog = new SaveFileDialog();
DialogResult dr = fileDialog.ShowDialog();
if (dr == System.Windows.Forms.DialogResult.OK && !string.IsNullOrEmpty(fileDialog.FileName))
{
StreamWriter sw = new StreamWriter(fileDialog.FileName, true, Encoding.UTF8);
sw.Write(richTextBox1.Text);
sw.Close();
MessageBox.Show("保存成功!", "提示");
}
}
“退出”:
private void 退出XCtrlXToolStripMenuItem_Click(object sender, EventArgs e)
{
System.Environment.Exit(0);
}
“禁止编辑”:
private void 禁止编辑ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.ReadOnly = true;
}
“允许编辑”:
private void 允许编辑ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.ReadOnly = false;
}
“进程状态转换”:
private void 进程状态转换ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.ShowDialog();
}
【4.测试结果】
输入测试数据:
保存为“测试”文件:
“保存成功”提示:
打开测试文件:
显示测试文件内容:
“进程状态转换”弹出窗口:
【5.源代码】
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 操作系统实验一
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void 文件FToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void toolStripLabel1_Click(object sender, EventArgs e)
{
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Multiselect = true;
fileDialog.Title = "请选择文件";
fileDialog.Filter = "所有文件(*.*)|*.*"; //设置要选择的文件的类型
if (fileDialog.ShowDialog() == DialogResult.OK)
{
string file = fileDialog.FileName;//返回文件的完整路径
}
if (!string.IsNullOrEmpty(fileDialog.FileName))
{
StreamReader sr = new StreamReader(fileDialog.FileName);
richTextBox1.Text = sr.ReadToEnd();
sr.Close();
}
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
}
private void 打开OCtrlOToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Multiselect = true;
fileDialog.Title = "请选择文件";
fileDialog.Filter = "所有文件(*.*)|*.*"; //设置要选择的文件的类型
if (fileDialog.ShowDialog() == DialogResult.OK)
{
string file = fileDialog.FileName;//返回文件的完整路径
}
if (!string.IsNullOrEmpty(fileDialog.FileName))
{
StreamReader sr = new StreamReader(fileDialog.FileName);
richTextBox1.Text = sr.ReadToEnd();
sr.Close();
}
}
private void toolStripLabel2_Click(object sender, EventArgs e)
{
SaveFileDialog fileDialog = new SaveFileDialog();
DialogResult dr = fileDialog.ShowDialog();
if (dr== System.Windows.Forms.DialogResult.OK && !string.IsNullOrEmpty(fileDialog.FileName))
{
StreamWriter sw = new StreamWriter(fileDialog.FileName, true, Encoding.UTF8);
sw.Write(richTextBox1.Text);
sw.Close();
MessageBox.Show("保存成功!", "提示");
}
}
private void toolStripLabel3_Click(object sender, EventArgs e)
{
System.Environment.Exit(0);
}
private void 保存SCtrlSToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog fileDialog = new SaveFileDialog();
DialogResult dr = fileDialog.ShowDialog();
if (dr == System.Windows.Forms.DialogResult.OK && !string.IsNullOrEmpty(fileDialog.FileName))
{
StreamWriter sw = new StreamWriter(fileDialog.FileName, true, Encoding.UTF8);
sw.Write(richTextBox1.Text);
sw.Close();
MessageBox.Show("保存成功!", "提示");
}
}
private void 退出XCtrlXToolStripMenuItem_Click(object sender, EventArgs e)
{
System.Environment.Exit(0);
}
private void 禁止编辑ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.ReadOnly = true;
}
private void 允许编辑ToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBox1.ReadOnly = false;
}
private void 进程状态转换ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.ShowDialog();
}
private void 字体颜色ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (fontDialog1.ShowDialog() == DialogResult.OK)
{
richTextBox1.Font = fontDialog1.Font;
}
}
private void 颜色ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
richTextBox1.ForeColor = colorDialog1.Color;
}
}
}
}