实验三 字符类型及其操作(新)

第1关:判断回文数

任务描述

本关任务:

        输入一个整数,判断其是否回文数。 回文数是指该数翻转后也等于该数本身。例如12321就是回文数,12345不是回文数。

相关知识

        为了完成本关任务,你需要掌握:1.如何获判断字符串是否都是数字字符,2.如何得到翻转后的字符串。

判断字符串是否数字

        str.isnumeric()方法可以判断字符串str是否都是数字字符。若都是数字字符,返回true,否则返回false

字符串翻转

         通过字符串[::-1]的切片形式可以得到翻转的字符串 或者 通过循环,按索引从-1到-n(n为字符串长度),将对应的字符一个个连接起来得到翻转的字符串

编程要求

        根据提示,在右侧编辑器补充代码,接收用户输入的字符串。 若字符串不是数字字符串,提示不是数字 若字符串x是回文数,显示x是回文数 若字符串x不是回文数,显示x不是回文数

相关课件和视频

相关实践教程

测试说明

平台会对你编写的代码进行测试:

测试输入:

请输入字符串12321;

预期输出: 12321是回文数

测试输入:

请输入字符串12345;

预期输出: 12345不是回文数

测试输入:请输入字符串12a;

预期输出: 不是数字

古之立大志者,不惟有超世之才,亦必有坚韧不拔之志。 开始你的任务吧,祝你成功!

代码:

x=input("请输入一个数字")
#代码开始

if x.isnumeric()== False:
    print("不是数字");
elif x==x[::-1]:
    print("{}是回文数".format(x));
else:
    print("{}不是回文数".format(x));
#代码结

 

第2关:凯撒密码解密

任务描述

本关任务:编写一个能对凯撒密码执行解密的小程序。

相关知识

为了完成本关任务,你需要掌握:1.凯撒密码加密的规则,2.字符的编码;3.如何遍历字符串。

凯撒密码加密的规则

凯撒密码是古罗马凯撒大帝用来对军事情报进行加密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列该字符后面第三个字符,对应关系如下: 原文:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文:DEFGHIJKLMNOPQRSTUVWXYZABC

字符编码

每个字符在计算机中可以表示为一个数字,称为编码。 字符串则以编码序列方式存储在计算机中。 目前,计算机采用的重要编码是ASCII编码。 asc码表如图所示

a12e05ff9d834e198c00ce16e3f0ebe1.jpeg

 

字符A的编码是65,字符B的编码是66,其余字母以此类推 ord(字符)函数可以返回字符的编码 chr(码值)函数可以返回编码对应的字符 例如,chr(65)是'A' ord('D')是68

如何遍历字符串

for 字符变量 in 字符串: <语句块> 从字符串中逐一提取每个字符,放在字符变量中,对提取到的每个字符执行一次循环体 例如,要统计字符串s中元音字母的个数

  1. s='this is an apple'
  2. for ch in s:
  3. if ch in "aeoiu":
  4. c=c+1
  5. print("元音字符个数",c)

相关课件和视频 字符串操作

编程要求

根据提示,在右侧编辑器补充代码,实现凯撒密码解密。 即输入一串采用凯撒密码加密后的字符串(大写字母),输出解密后的字符串

测试说明

平台会对你编写的代码进行测试:

测试输入:WKLV LV DQ DSSOH; 预期输出: "THIS IS AN APPLE" 提示:大写英文字母才按规则进行解密

长风破浪会有时,直挂云帆济沧海。 开始你的任务吧,祝你成功!

代码:

etxt = input("")
#代码开始
for p in etxt:
    if "a" <= p <= "z":
        print(chr(ord("a")+(ord(p)-ord("a")-3)%26), end='')
    elif "A" <= p <= "Z":
        print(chr(ord("A")+(ord(p)-ord("A")-3)%26), end='')
    else:
        print(p, end='')
#代码结束

第3关:简单密码加密

任务描述

某用户在存储自己的密码时(密码由大小写英文字母和数字组成),为了不被别人知晓,将其按下列规则加密 数字字符0用9替换,1用8替换,2用7替换,3用6替换,4用5替换,5用4替换,6用3替换,7用2替换,8用1替换 英文字母a用z替换,b用y替换,c用x替换,d用w替换,e用v替换,f用u替换,g用n替换,以此类推 英文字母A用Z替换,B用Y替换,C用X替换,D用W替换,E用V替换,F用U替换,G用N替换,以此类推 编写程序,输入用户的密码,输出其加密后的密码 例如输入0012xyzM 输出9987cbaN

相关课件和视频

相关实践教程

测试说明

平台会对你编写的代码进行测试:

测试输入:123asAB; 预期输出: 876zhZY

测试输入:XYZ123abc45; 预期输出: CBA876zyx54

开始你的任务吧,祝你成功!

dic={}
number_list=[str(i) for i in range(10)]
word_list1=[chr(i) for i in range(ord("a"),ord("z")+1)]
word_list2=[chr(i) for i in range(ord("A"),ord("Z")+1)]
for i in range(5):
    dic[number_list[i]]=number_list[-i-1]
    dic[number_list[-i-1]]=number_list[i]
for i in range(13):
    dic[word_list1[i]]=word_list1[-i-1]
    dic[word_list1[-i-1]]=word_list1[i]
    dic[word_list2[i]]=word_list2[-i-1]
    dic[word_list2[-i-1]]=word_list2[i]

s=input("")
print(s.translate(str.maketrans(dic)))

第4关:信用卡号校验

任务描述

本关任务:编写一个能判断信用卡号是否合法的小程序。

信用卡号必须通过lun算法进行校验,其过程: 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。 2、从卡号倒数第二位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。 3、将奇数位总和加上偶数位总和,结果应该可以被10整除。 例如,卡号是:5432123456788881 逆向奇数位为 4 2 2 4 6 8 8 1 和 = 35 逆向偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和 = 35。 最后 35 + 35 = 70 可以被10整除,认定校验通过。 注意:信用卡的卡号长度是根据输入来确定的。 相关课件和视频 字符类型操作

提示: <字符串>[结尾字符:开始字符:<负整数>] 可以逆序间隔地取字符 例如 x="hello world"x[-1::-2]表示从结尾字符每隔2个字符取子串,即"drwolh"

编程要求

根据提示,在右侧编辑器补充代码,判断信用卡号是否合法。

测试说明

平台会对你编写的代码进行测试:

测试输入:5432123456788881; 预期输出: 合法卡号

测试输入:955876543; 预期输出: 非法卡号

天行健,君子以自强不息。地势坤,君子以厚德载物。 开始你的任务吧,祝你成功!

cardid=input("请输入信用卡号")
#代码开始
digits = [int(x) for x in reversed(cardid)]
    #对偶数位数字翻倍 d*2
even_digits = [d * 2 for d in digits[1::2]]
#如果对某个数字翻倍之后结果是一个两位数,将这两位数字加在一起
even_digits = [d // 10 + d % 10 for d in even_digits]
    #将上一步所有一位数相加
even_sum = sum(even_digits)
    #将卡号里从右到左奇数位上所有数字相加
odd_sum = sum(digits[::2])
    #将even_sum和odd_sum相加,能被10整数为合法,否则不合法
if (odd_sum + even_sum) % 10 == 0:
    print("合法卡号")
else:
    print("非法卡号")
#代码结束

第5关:ISBN校验

任务描述

本关任务: 国际标准书号(ISBN)用10位数字唯一标识的一本书。 最后一位数字为校验位,可以由其他9位数字计算出来,且d1+2d2+3d3+……+10d10必须是11的倍数(di的下标表示从右边起第i个数)。 校验位必须是介于0到10中的一个数字,用字母X表示10. 例如,020131452的校验和是5 10*0+9*2+8*0+7*1+6*3+5*1+4*4+3*5+2*2+1*5为88,是11的倍数

编写一个python程序,将9位整数作为输入,计算校验和并打印isbn号 例如,输入020131452,输出0201314525

测试说明

平台会对你编写的代码进行测试:

测试输入:711141995; 预期输出: 7111419952

测试输入:730232560; 预期输出: 730232560X

开始你的任务吧,祝你成功!

#代码开始
string=input("")
def cal(string):
    S = sum([i*int(j) for i,j in zip(range(10,1,-1),"".join(string.split('-')))])
    N = 11 - S%11
    if N == 10:
        return string + 'X'
    if N == 11:
        return string + '1'
    return string + str(N)
print(cal(string))
#代码结束
    

任务描述

本关任务:编写一个能打印田字格的小程序。

输入整数(大于2小于10),输出该整数对应的由星号和空格组成的田字格图形(注意:每一个星号后面有一个空格) 假设输入x,第一行,第x行和第2x-1行输出2x-1个星号空格“* “ 其余行输出星号空格和2x-4个空格和星号空格和2x-4空格和星号空格

5bc50634688641b598699f061c70ad72.png

 

相关知识

为了完成本关任务,你需要掌握:

1.如何连接和重复字符串,

2.如何循环。

3.if多条件的组合

连接和重复字符串

字符串的操作符加号+和星号*规则: x+y:连接两个字符串x与y x*nn*x:复制n次字符串x

固定次数循环

固定次数n次的循环 for i in range(n): 循环体

if条件的组合

对于if语句,同时需要符合的两个条件,使用and连接。 例如要求x大于10并且y大于5,输出yes If x>10 and y>5: print(“yes”) 对于只要符合一个的情况,使用or连接。 例如只要x大于10或y大于5,输出yes If x>10 or y>5: print(“yes”) 相关课件和视频 字符串操作

测试说明

平台会对你编写的代码进行测试:

测试输入:3; 预期输出:

8a45fd08d9424d6c8a7a11138e88d228.png

开始你的任务吧,祝你成功!

代码:

#打印田字格
x=eval(input())
#代码开始
for i in range(2*x-1):
        if i in (0,x-1,2*x-2):
                print("* "*(2*x-1))
        else:
                print("* "+" "*(2*x-4)+"* "+" "*(2*x-4)+"* ")
#代码结束


第7关:数字汉字转换

任务描述

不管是阿拉伯数字(1、2、3……), 还是所谓汉字小写数码(一、二、三……), 由于笔画简单,容易被涂改伪篡。所以一般文书和商业财务票据上的数字都要采用汉字数码大写: 壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、(“万、亿”本身笔画已经比较复杂,使用机会也少,没有必要再用别的字代替)。如“ 3564 元”写作“叁仟伍佰陆拾肆元” 。

任务要求

编写程序,将输入的阿拉伯数字金额转换为汉字数码大写的小程序。假设给定的数字不超过1亿。

提示:除了最后一个数字字符,每个数字字符对应一个数值的汉字和一个权值的汉字,数值的汉字由其大小决定,权值的汉字由其位置决定。 例如12345,1对应数值壹和权值万,2对应数值贰和权值仟,3对应数字叁和权值佰,4对应数值肆和权值拾。

提示:设置两个字符串 hz='零壹贰叁肆伍陆柒捌玖' dw='拾佰仟万拾佰仟'。 对输入字符串(除最后一位)循环,将每位数字对应的数值汉字和权值汉字连接起来。最后再连接最后一位的数字汉字和元即可。

注意:数值为0的情况。

对于if语句,同时需要符合的两个条件,使用and连接。 例如要求x大于10并且y大于5,输出yes If x>10 and y>5: print(“yes”) 对于只要符合一个的情况,使用or连接。 例如只要x大于10或y大于5,输出yes If x>10 or y>5: print(“yes”)

测试说明

平台会对你编写的代码进行测试:

测试输入:12345 预期输出: 壹万贰仟叁佰肆拾伍元 测试输入:100 预期输出:壹佰元 测试输入:23451000 预期输出:贰仟叁佰肆拾伍万壹仟元 测试输入:1009020 预期输出: 壹佰万玖仟零贰拾元 测试输入: 45689021 预期输出:肆仟伍佰陆拾捌万玖仟零贰拾壹元

提示: 注意对于连续的0值的处理

骐骥一跃,不能十步;驽马十驾,功在不舍;锲而舍之,朽木不折;锲而不舍,金石可镂。 开始你的任务吧,祝你成功!

代码:

x=input("")
hz='零壹贰叁肆伍陆柒捌玖'
dw='拾佰仟万拾佰仟'
y=""
#代码开始
i=len(x)
for c in x[:-1]:
    if(c!="0" or (c=="0" and x[-i+1]!="0" and i!=5 and i!=9)):
        y=y+hz[int(c)]
    if c!='0' or(c=='0' and((i==5 and y[-1]!="亿"and y[-1]!="兆")or(i==9 and y[-1]!="兆"))):
        y=y+dw[i-2]
    i=i-1
if x[-1]!='0':
    y=y+hz[int(x[-1])]
y=y+"元"
#代码结束
print(y)

第8关:日期汉字格式转换

任务描述

本关任务: 编写程序,用户输入阿拉伯数字的日期,转换为汉字的日期。 例如,输入2021/2/25,输出二零二一年二月二十五日

相关知识

为了完成本关任务,你需要掌握:如何返回字符c在字符s中的位置

获取字符在字符串的位置

使用str.find(c)方法可以返回字符串str中字符c所在位置的序号。 “2021/2/25“.find(“/“)返回数字4。 str.rfind(c)方法可以返回从尾部起,字符串str中字符c所在位置的序号。 “2021/2/25“.rfind(“/“)返回数字6。

测试说明

平台会对你编写的代码进行测试:

测试输入:2021/3/18; 预期输出: 二零二一年三月十八日

测试输入:2020/12/1; 预期输出: 二零二零年十二月一日

提示: 将年月日分别截取出来处理 对于月份等于10、大于10和小于10分别处理 对于日号也要分几种情况考虑: 小于10、等于10、10的整数倍和不是10的整数倍

开始你的任务吧,祝你成功!

代码:

#代码开始
data=input()
def num2cn(n):
    cn='零一二三四五六七八九十'
    return list(cn)[int(n)]
 
def day2cn(m):
    m = int(m)
    if m<=10:
        return num2cn(m)
    else:
        t1 = '' if m//10==1 else num2cn(m//10)
        t2 = num2cn(m%10) if m%10 else ''
        return t1 +'十'+t2
 
def year2cn(y):
    y = list(str(y))
    return ''.join([num2cn(i) for i in y])
    
def date2cn(Date):
    Date = Date.split('/')
    return year2cn(Date[0])+'年'+day2cn(Date[1])+'月'+day2cn(Date[2])+'日'
 
print(date2cn(data))

#代码结束

任务描述

本关任务:输入表示武力、速度、智力、统治的四个整数(10的倍数,小于等于200),输出相应结果(使用format函数)

6f4d66bd36674a9ead781c94892abb53.png

 

注意: 输出第一行为 武力是空格30空格空格3星号 输出第三行为 智力是空格110空格11星号 数字前面一个空格 数字后的空格个数与数字位数有关 提示: 是后面有一个固定的空格 数值部分指定4个输出宽度左对齐 *号重复的次数必须为整数 /运算的结果是实数 //运算的结果是整数

相关知识

为了完成本关任务,你需要掌握:格式化字符串

格式化字符串

format()方法的基本使用
<模板字符串>.format(<逗号分隔的参数>) 模板字符串由一系列槽组成(槽用大括号表示), 用来控制修改字符串中嵌入值出现的位置, 将format()逗号分隔的参数按照序号关系替换到模板字符串的槽中。 模板字符串的槽除了包括参数序号,还可以包括格式控制信息。 {<参数序号>: <格式控制标记>} 格式控制标记包括:<填充><对齐><宽度>,<.精度><类型> 6个字段。

4160452273204eb7940b8472e8ebc5c1.png

 

编程要求

根据提示,输入表示武力、速度、智力、统治的四个整数(10的倍数,小于等于200),输出相应结果(使用format函数)

测试说明

平台会对你编写的代码进行测试:

测试输入: 请输入武力120 请输入速度80 请输入智力20 请输入统治40 预期输出:

6be3d1b5c83444519caaa96a372711ef.png

书读百遍,其义自见。 开始你的任务吧,祝你成功!

代码:

a=eval(input("请输入武力"))
b=eval(input("请输入速度"))
c=eval(input("请输入智力"))
d=eval(input("请输入统治"))
#代码开始
print('武力是 {0:<4}'.format(a)+'*'*(int(a)//10))
print('速度是 {0:<4}'.format(b)+'*'*(int(b)//10))
print('智力是 {0:<4}'.format(c)+'*'*(int(c)//10))
print('统治是 {0:<4}'.format(d)+'*'*(int(d)//10))
#代码结束


 

 

  • 41
    点赞
  • 149
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
大学计算机基础 第二章Windows 7 上 机 实 验 报 告 班级: 学号: 姓名: Windows 7的基本操作一 一、实验目的: 1、了解桌面的组成,掌握桌面属性的设置方法; 2、掌握快捷方式的创建方法;掌握 Windows 7的窗口、菜单和对话框的基本操作; 3、了解应用程序的运行(启动)方法; 4、了解剪贴板的使用; 5、掌握"我的电脑"窗口、"资源管理器"窗口打开的多种方法,了解Windows文件的组 织结构。 二、实验内容 1、鼠标的常用操作有: 其主要作用分别为: 2、写出键盘操作常用的快捷键: (二)桌面组成和桌面属性设置 1、WIN7系统桌面由: 组成。 2、找到计算器程序(C:\windows\system32\ calc.exe),至少用三种方法为其创建桌面快捷方式。 方法1: 方法2: 方法3: 3、打开"开始"菜单的方法: 4、在任务栏上设置快速启动栏 步骤描述: 5、在桌面"屏幕分辨率""个性化"对话框中设置: "主题"为Windows 7; "桌面"背景为自定义的图片; "屏幕保护程序"设为三维文字、等待1分钟; "屏幕分辨率"设为1024×768,"屏幕刷频率"设为75赫兹。 步骤描述: (三)窗口的组成与基本操作 Windows中的窗口主要由: 1、窗口间的切换 分别用鼠标左键双击桌面图标"我的文档"、"我的电脑"、"网上邻居"、"Internet Explorer",打开对应的应用程序窗口,用三种方法作窗口之间的切换操作。 方法1: 方法2: 方法3: 2、最大化、最小化、还原和关闭窗口:打开"我的电脑"窗口完成上述操作。 鼠标操作; 键盘操作: 3、移动窗口:打开"我的电脑"窗口,使之处于非最大化状态,移动该窗口。 鼠标操作: 鼠标加键盘操作: 4、调整窗口大小(非最大化状态下) 步骤描述: 5、关闭窗口:至少用四种方法关闭窗口 方法1: 方法2: 方法3: 方法4: (四)对话框的组成与基本操作 1、对话框的组成及特点 对话框主要由: 2、在不同的选项卡之间的切换 方法1: 方法2: 3、在选项卡内的切换 方法1: 方法2: (五)菜单及其基本操作 1、菜单名后有"…"的菜单表示: 2、名字后带字母的菜单项表示: 3、执行菜单命令,至少可采用两种方式: (六)应用程序的运行(启动)方法 请至少用三种方法启动计算器程序(calc.exe) 方法1: 方法2: 方法3: (七)剪贴板的使用 1、什么是剪贴板: 2、复制整个屏幕或窗口 将当前整个屏幕画面复制到剪贴板中,其复制操作为: 在"我的电脑"窗口,选择"工具|文件夹选项",打开"文件夹选项"对话框,将其复制 到剪贴板中,其操复制作为: (八)"我的电脑"和"资源管理器"窗口打开的方法 1、"计算机"窗口打开的方法 方法1: 方法2: 2、"资源管理器"窗口打开的方法 方法1: 方法2: 方法3: 方法4: Windows文件的组织结构为: 实验 Windows 7的基本操作二 一、实验目的: 1、了解文件、文件夹的查看和排列方式,掌握改变查看和排列方式的操作; 2、掌握文件、文件夹的创建方法; 3、掌握选定文件和文件夹的方法,掌握文件和文件夹的移动、复制、删除和重命名 的多种方法; 4、掌握搜索文件和文件夹的方法; 5、掌握WinRAR压缩文件、文件夹和解压文件的方法,了解加密压缩、解密的方法。 二、实验内容 (一)Windows7的文件、文件夹查看方式和排列方式 1、查看方式有: 2、排列图标的方式有: 要选定所有的同样格式的文件,一般需先按类型方式排列图标。 (二)文件、文件夹的创建 1、建文件、文件夹的方法 方法1: 方法2: (三)移动、复制文件和文件夹 1、操作方法 选定多个不连续文件、文件夹的方法: 选定多个连续文件、文件夹的方法: 选定全部文件或文件夹的方法: 移动和复制的方法: 方法1: 方法2: 方法3: 文件删除 Delete: shift+ Delete: 3、重命名文件和文件夹 方法1: 方法2: (四)文件、文件夹的高级搜索 1、搜索文件 (1)在C盘中搜索文件、文件夹名中第二个字母为 t 的文件/文件夹; 搜索字符串为: (2)在C盘中的 Program Files 文件夹下搜索文件、文件夹名中第一个字母为m 的文件或文件夹; 搜索字符串为: (3)在D盘中搜索Microsoft Word文档即扩展名为.doc的文件。 搜索字符串为: 或 (五)WinRAR压缩文件、文件夹和解压文件 1、压缩文件、文件夹的方法 方法1: 方法2: 2加密压缩方法: 3、解压文件的方法: 方法1: 方法2: ----------------------- WIN7实验报告全文共5页,当前为第1页。 WIN7实验报告全文
实验一 SQL*PLUS练习 【实验目的】 (1) 了解Oracle的工作环境和基本使用方法。 (2) 练习标准SQL的数据操作,查询命令及其查询优化。 (3) 学会使用高级SQL命令,排序、分组、自连接查询等。 (4) 学会使用SQL*PLUS命令显示报表,存储到文件等。 【实验内容】 一、 准备使用SQL*PLUS 1. 进入SQL*PLUS 2. 退出SQL*PLUS 3. 显示表结构命令DESCRIBE SQL>DESCRIBE emp 使用DESCRIBE(缩写DESC)可以列出指定表的基本结构,包括各字段的字段名以及类型、长度、是否非空等信息。 4. 使用SQL*PLUS显示数据库中EMP表的内容 输入下面的查询语句: SQL>SELECT * FROM emp; 按下回车键执行查询 5. 执行命令文件 START或@命令将指定文件调入SQL缓冲区中,并执行文件内容。 SQL>@ 文件名(文件后缀缺省为.SQL)或 SQL>START 文件名 文件中每条SQL语句顺序装入缓冲区并执行。 二、 数据库命令——有关表、视图等的操作 1. 创建表employee 例1 定义一个人事信息管理系统中存放职工基本信息的一张表。可输入如下命令: SQL>CREATE TABLE employee (empno number(6) PRIMARY KEY, /* 职工编号 name varchar2(10) NOT NULL, /* 姓名 deptno number(2) DEFAULT 10, /* 部门号 salary number(7,2) CHECK(salarycreate table emp2 as select * from emp where 1=2; 在命令的where子句中给出1=2,表示条件不可能成立,因而只能复制表结构,而不能复制任何数据到表中去。另外,还可以复制一个表的部分列定义或部分列定义及其数据。 三、 Oracle数据库数据查询 1、单表查询 2、多表查询 四、 SQL*PLUS常用命令 表1 常用报表格式化名命令 命令 定义 Btitle 为报表的每一页设置底端标题 Column 设置列的标题和格式 Compute 让SQL*PLUS计算各种值 Remark 将某些字标记为注释 Set linesize 设置报表的行宽字符数 Set newpage 设置报表各页之间的行数 Spool 使SQL*PLUS将输出写入文件中 Start 使SQL*PLUS执行一个sql文件 Ttitle 设置报表每页的头标题 Break 让SQL*PLUS进行分组操作 例3 建立一个批命令文件对查询到的数据以报表的形式输出并将其保存到指定的文件中。 处理方法:利用SQL*PLUS语言工具(也可以使用其他文本编辑器)建立批命令的.SQL文件。在“SQL>”提示符下,使用EDIT命令在”E:\”中建立SCGB.SQL文件。 SCGB.SQL文件中的命令组如下: SQL>EDIT E:\ SCGB.SQL SET echo off SET pagesize 30 SET linesize 75 TTITLE’2008年4月10号’CE’公司职员基本情况登记表’R’Page:’ FORMAT 99- >SQL.PNO SKIP 1 CE’===========================’ BTITLE COL 60 ’制标单位’ TAB 3 ‘人事部’ COLUMN empno heading ‘职工|编号’ COLUMN ename format a10 heading ‘姓 名’ COLUMN job heading ‘工 种’ COLUMN sal format $99,990 heading 工 资’ COLUMN comm Like sal heading ‘奖 金’ COLUMN deptno format 9999 heading ‘部门|编号’ COLUMN hiredate heading ‘参加工作时间’ SPOOL e:\sjbb /*在E盘中建立格式报表输出文件,默认属性为LST BREAK on deptno skip 1 COMPUTE sum of sal comm on deptno SELECT empno,ename,job,hiredate,sal,comm,deptno from emp ORDER BY deptno,sal; SPOOL off /*终止SPOOL功能,关闭其文件。注意,此命令不可省,否则将建立空文件。 五、 实验内容 1、以cs+学号为用户名创建用户,并授予用户创建数据对象的权限。 2、复制emp表,复制表名为emp_学号,然后将emp表中工资低于$2000 的职工插入到复制的表中。 3、对复制的emp表插入一行只包含有职工号,职工名,工资与部门号四个数据 项值的记录。 4、在复制的emp表中将雇员ALLEN提升为经理,工资增至$2500, 奖(佣 )金增加40%。 5、删除复制的emp表中工资低于500的记录行。 6、列出10号部门中既不是经理,也不是秘书的职工的所有信息。 7、查找出部门所在地是CHICAGO的部门的职工姓名、工资和工种。 8、统计各部门中各工种的人数、工资总和及奖金总和。 9、查找出工资比其所在部门平均工资高的职工姓名、工种与工资情况。 实验3 Oracle数据库开发环境下PL/SQL编程 【实验目的】 (1)掌握 PL/SQL 的基本使用方法。 (2)在SQL*PLUS环境下运行PL/SQL的简单程序。 (3)应用 PL/SQL 解决实际问题 【实验内容与步骤】 PL/SQL块中的可执行部分是由一系列语句组成的(包括对数据库进行操作的SQL语句,PL/SQL语言的各种流程控制语句等)。在块中对数据库查询,增、删、改等对数据的操作是由SQL命令完成的。在PL/SQL块中,可以使用SQL的数据查询命令,数据操纵命令和事务控制命令。可使用全部SQL函数。PL/SQL中的SQL语句,可使用SQL的比较操作等运算符。但不能使用数据定义语句。 在PL/SQL块中使用SELECT语句时注意几点: (1)SELECT语句必须含有INTO子句。 (2)INTO子句后的变量个数和位置及数据类型必须和SELECT命令后的字段名表相同。 (3)INTO子句后可以是简单类型变量或组合类型变量。 (4)SELECT语句中的WHERE条件可以包含PL/SQL块中定义的变量及表达式,但变量名不要同数据库表列名相同。 (5)在未使用显式游标的情况下,使用SELECT语句必须保证只有一条记录返回,否则会产生异常情况。 [例3-1] 问题:编写一个过程,求和运算。 SET SERVEROUTPUT ON; DECLARE a number:=1; BEGIN a:=a+5; DBMS_OUTPUT.PUT_LINE('和为:'||TO_CHAR(a)); END; / 【例3-2】:使用%TYPE声明变量,输出制定表中的相关信息。 DECLARE my_name student.sname%TYPE; BEGIN SELECT sname INTO my_name FROM student WHERE no=’01203001’; DBMS_OUTPUT.PUT_LINE(my_name); END; / 【例3-3】问题:编写一个过程,可以输入一个雇员名,如果该雇员的工资低于2000,就给该员工工资增加10%。 declare v_sal emp.sal%type; begin select sal into v_sal from emp where ename=spName; if v_sal :NEW.sal THEN DBMS_OUTPUT.PUT_LINE('工资减少'); ELSIF :OLD.sal < :NEW.sal THEN DBMS_OUTPUT.PUT_LINE('工资增加'); ELSE DBMS_OUTPUT.PUT_LINE('工资未作任何变动'); END IF; DBMS_OUTPUT.PUT_LINE('更前工资 :' || :OLD.sal); DBMS_OUTPUT.PUT_LINE('更后工资 :' || :NEW.sal); END; / --执行UPDATE查看效果 UPDATE emp SET sal = 3000 WHERE empno = '7788'; 6、需要对在表上进行DML操作的用户进行安全检查,看是否具有合适的特权。 Create table foo(a number); Create trigger biud_foo Before insert or update or delete On foo Begin If user not in (‘DONNY’) then Raise_application_error(-20001, ‘You don’t have access to modify this table.’); End if; End; / 即使SYS,SYSTEM用户也不能修改foo表。 2、 利用PL/SQL编写程序实现下列触发器 1)、编写一个数据库触发器,当任何时候某个部门从dept表中删除时,该触发器将从emp表中删除该部门的所有雇员。(要求:emp表、dept表均为复制后的表) 2)、创建一个触发器,当客户下完订单后,自动统计该订单的所有图书的价格总额。 3)、创建一个触发器,禁止客户在非工作时间(早上8:00前,晚上17:00后)下订单。 五、实验心得
XX 大 学 实 验 报 告 "课程名称 计算机导论 " "项目名称 电子表格处理 " "学 院 " "专 业 " "指导教师 " "报 告 人 学号 " "实验时间 " "提交时间 " " " 教务处制 一、实验目的与要求 1.掌握Excel的基本操作; 2.掌握相对地址、绝对地址、混合地址以及公式和函数应用; 3.掌握数据清单(排序、筛选、分类汇总和数据透视表)技术; 4.熟悉个人理财管理或贷款购房方案的设计与制作; 5.学会自己提出问题,并得出解决问题的方法。 二、实验内容与方法 1.了解并掌握 Excel工作窗口的组成、单元格的应用、工作簿的应用。 2. 了解并掌握Excel中的相对地址、绝对地址、混合地址以及公式和函数应用。 3.了解并掌握Excel中的数据清单(排序、筛选、分类汇总和数据透视表)技术。 4. 进行个人理财管理或贷款购房方案的设计与制作。 三、实验步骤与过程 实验 。Excel的基本操作 1. Excel的启动及其窗口 1. 启动方式:执行"开始"菜单的"所有程序" "Microsoft office" "Microsoft office Excel 2003"命令,或双击桌面上的Excel快捷图标。 2. Excel工作窗口组成: Excel的工作窗口由标题栏、工具栏、编辑栏、工作区、任务窗口、标签栏以及状态 栏组成。 3. 单元格: 工作区是一张表格,称为工作表,表中每行由数字1、2、3等行名标识,每列由A、B 、C等列名标识,行与列交叉的方格称为单元格。 4. 单元格区域: 若干个连续的组成矩形形状的单元格称为单元格区域。 5. 工作表与工作簿: 窗口下面的标签栏上标有"Sheet1"、"Sheet2"、"Sheet3",表示有三张工作表,具有 下划线且白底的工作表称为当前工作表,点击工作表名称可选择工作表。若干张工作 表组成一个工作簿,工作簿以文件形式储存在磁盘上,其扩展名为.XLS。 2. 创建工作簿 1. 创建工作簿: 选择"开始" "程序" "Microsoft Excel"。当启动Excel时,Excel自动打开了一个名为Book1的工作簿。创建工作簿时,E xcel将自动以Book1、Book2、Book3、……的顺序给的工作簿命名。 2. 在工作簿中输入数据: Excel中数据分为常量和公式两种,其中常量有分为文字常量、数值常量和日期时间 常量。 1. 文字常量的输入:文字常量包含了字符、汉字、空格以及要作为字符串处理的数 字等。 2. 数值的输入;在Excel中,数字只可以是以下字符:0、1、2、3、4、$、%、E、e 等 3. 日期与时间的输入:必须按照Excel认可的日期和时间格式输入,即使用"/"或" -"作为分隔符,输入的格式为"年/月/日",否则将被当作文字常量处理。 4. 公式的输入:公式是指以等号"="开始,后跟运算数和运算符的表达式,每个运算 数可以是常量、单元格或单元格区域的引用地址、名字或函数等。 5. 函数的输入:Excel提供了财务函数、日期与时间函数、数学与三角函数、统计函 数、查找与引用函数、数据库函数、文本函数、逻辑函数、信息函数与工程函 数共十类数百种函数,使用函数可以更方便地进行数值运算。将光标定位在需 要插入函数的单元格,执行"插入"菜单中的"函数"命令,出现"插入函数"对话 框,在"选择类别"的列表框中选择一类函数,则该类函数列表出现在"选择函数 "列表框中,选择某个函数后单击"确定"按钮,出现"函数参数"对话框,根据需 要输入数值或单元格地址等参数后,则计算结果显示在该单元格中,如下图所 示。 3. 保存工作簿 完成数据输入后,应该保存工作簿。执行"文件"菜单中的"保存"命令,出现"另存为 "对话框,在"保存位置"选择保存的文件路径,输入文件名,并在"保存类型"中选择 "Microsoft Office Excel工作簿",单击"保存"按钮。 4. 关闭工作簿 对某个工作簿的操作完成后,执行"文件"菜单中的"关闭"命令即可。 5. 打开工作簿 要对某个已经存在的工作簿进行操作时,执行"文件"菜单中的"打开"命令,在"打开 "对话框中选择需要打开的文件。 3.管理工作表 对工作表进行插入、删除、移动与复制。 1. 选定工作表 用鼠标单击位于工作表窗口底部该工作表的名字选定该工作表。也可按住Ctrl键不放 ,单击多张工作表名字,同时选定它们为当前工作表。 2. 工作表改名 双击工作表名字,当它处于被选中状态时,输入的工作表名。 3. 插入的工作表 执行"插入"菜单的"工作表"命令,在当前工作表之前插入一张的工作表。 4. 删除工作表 选定需要删除的工作表,使其成为当前工作表,然后执行"编辑"菜单的"删除工作表 "命令,永久性删除该工作表
《数据库系统》实验报告一 "学号 " "姓名 " "实验时间 " " "实验名称 "Oracle环境及数据库创建 "实验学时 "2 " "准备材料 "1. Oracle 10G 介绍资料 " " "2. SQL Plus命令手册 " " "3. Oracle数据字典 " "扩展实验 "1. 使用企业 管理器登录Oracle服务器,观察系统架构及数据库" " "2. 使用OEM创建、删除数据库 " " "此部分内容不要求在实验室完成,不用写入实验报告。 " "实验环境 "Oracle 9i(及以上版本)服务器 " " "SQL Plus/ SQL Plus work sheet客户端 " "实验目的 "1. 了解oracle系统架构 " " "2. 熟悉SQL Plus环境 " "实验内容 "1. 使用SQL Plus Worksheet登录数据库系统(用户名密码由教 " "及步骤 "师指定) " " "2. 浏览SQL Plus环境设置命令,并完成下列操作: " " "(1) 察看SQL Plus环境参数 " " "(2) 设置输出页面的大小,每列字符数 120,每页行数100,观 " " "察设置结构 " " "(3) 设置显示每个sql语句花费的执行时间,并观察实验结果 " " "(4) 在SQL " " "Plus中执行操作系统命令,例如copy文件、显示目录等,观察结" " "果。 " " "(5) 设置将系统输出数据写入文件c:\textoutput.txt,执行多 " " "个命令后观察文件内容。 " " " " " "3. 显示系统信息 " " "(1) 显示用户信息 " " "(2) 显示数据库版本信息 " " "(3) 显示数据库中所有表的名称 " " "显示系统中某张表的结构信息(如EMP表) " " "(4) 显示数据库中某张表的数据,如EMP表 " " "4. 建立磁盘文本文件testcommand.sql,文件内写入几条SQL命 " " "令,执行此文件,并观察执行结果。 " "出现问题 " " " " " "解决方案 "(列出遇到的问题及其解决方法) " " " " " " " 《数据库系统》实验报告二 "学号 " "姓名 " "实验时间 " " "实验名称 "数据库模式管理 "实验学时 "4 " "准备材料 "1. SQL Plus命令手册 " " "2. Oracle数据字典 " " "3. Oracle中的数据类型 " "扩展实验 "1. 掌握在企业管理器(或其它图形界面的数据库操作工具)中 " " "进行表、索引的创建和管理的方法。 " " "2. 利用企业管理器(或其它图形界面的数据库操作工具)观察 " " "数据库的物理模式。 " " "(此部分内容不要求在实验室完成,不用写入实验报告。) " "实验环境 "Oracle 9i(及以上版本)服务器 " " "SQL Plus/ SQL Plus work sheet客户端 " "实验目的 "1. 掌握使用SQL语句进行表的创建和管理的方法 " " "2. 加深对关系数据库结构和数据完整性等概念的理解 " "实验内容 "创建书上university数据库中所有的表(student, course, " "及步骤 "department, takes, instructor, advisor, prereq, teaches," " "classroom, section, " " "timeslot),按书上要求设置每张表的主键、外键,表中每个字" " "段的类型、长度由学生自己确定。 " " "使用命令完成下列扣作(1)查找用户所有表的表名(2)查看每" " "张表的结构(要求把每张表的结构截图放到实验报告中)(3) " " "查看表takes的约束信息 " " "修改表结构 " " "在instructor表中增加列存储教师家庭地址,其地址包括省、市" " "、区、街道、门牌号等列,列的数据类型自己给出,列允许为空" " "。 " " "对student表中的姓名字段长度都改为10,设置是否成功?原因 " " "是什么?将该字段长度改为50,能否成功?说明原因。 " " "为student表中tot_cred列设置默认值 0,插入一个Comp. Sci. " " "系的学生,且不给其tot_cred列赋值,观察结果。 " " "student表中tot_cred列是对总学分的统计,现在数据库中没有 " " "记录哪些学生已选修课程学分已累加,哪些课程的学分还没有累" " "加。设计一种方案记录已累加课程,防止出现重复累加的情况。" " "或者设计一种方案简化总学分的计算过程。 " " "删除takes表上对student表ID的外键约
此为吉林大学数据库的实验报告,实验内容为: 实验一 熟悉MySQL环境及SQL定义语言 一、实验目的: 1. 了解MySQL程序构成、安装、管理方法。 2. 了解MySQL数据库及表结构。 3. 熟练掌握SQL语言进行基本表结构的创建。 4. 熟练应用SQL语言进行表结构的修改。 5. 掌握SQL语言进行基本表的删除。 6. 掌握SQL语言进行索引的建立和删除。 二、实验内容和主要步骤: 1. 参考“MYSQL简体中文参考文档.chm”,熟悉MySQL构成和功能特性。 2. 打开Windows服务管理器,实验启动、停止MySQL服务,了解MySQL的服务管理方法; 3. 打开“MySQL管理控制台.bat”,熟悉控制台中操作数据库; 4. 利用控制台创建“Student数据库”。 5. 打开“Student”数据库,创建如下三个表,按下面的列表中的字段名(英文)、类型和宽度建立: 7. 用SQL语言CREATE TABLE语句创建学生表student、课程表course和选课表SC;(字段类型及长度参照实验一) 8. 用SQL语言ALTER语句修改表结构; a) STUDENT表中SNO设为非空和唯一; b) STUDENT表中增加一个字段SBIRTH,类型设置为日期时间类型,增加一个ADDRESS字段,类型为文本(字符); c) 删除STUDENT表中ADDRESS字段; d) COURSE表中CNO字段设为非空和唯一; 9. 重定义一个简单表,然后用SQL语言DROP语句删除该表结构; 10. 用SQL语言CREATE INDEX语句定义表STUDENT的SNAME字段的降序索引; 11. 用SQL语言CREATE INDEX语句定义表SC的GRADE字段的升序索引; 12. 用SQL语言DROP语句删除索引; 13. 输入部分数据,并试着修改其中的错误; 注: 实验二 SQL语言进行简单查询 一、实验目的: 1. 掌握SQL查询语句的一般格式 2. 掌握简单数据查询操作。 3. 熟练掌握各种查询条件的表示。 4. 掌握排序和分组操作在SQL语句中的实现。 5. 掌握集函数的使用。 二、实验内容和主要步骤: 1. 创建学生表student、课程表course和选课表SC,并输入数据(注意数据的完整性。);(可以使用实验一中已经建立的表和数据) 2. 对各表中的数据进行不同条件的查询; 1) 查询全体学生的学号和姓名 2) 查询全体学生的详细记录 3) 查询所有选修过课程的学生学号 4) 查询考试有不及格的学生学号 5) 查询不是信息系(IS)、计算机系(CS)的学生性别、年龄、系别 6) 查询选修了4号课的学生学号和成绩,结果按成绩降序排列 7) 查询每个课程号和相应的选课人数 8) 查询计算机系(CS)的学生姓名、年龄、系别 9) 查询年龄18-20岁的学生学号、姓名、系别、年龄; 10) 查询姓刘的学生情况 11) 查询既选修1号课程,又选修2号课程的学生学号 12) 查询学生的姓名和出生年份(今年2003年) 13) 查询没有成绩的学生学号和课程号 14) 查询总成绩大于200分的学生学号 15) 查询每门课程不及格学生人数 16) 查询不及格课程超过3门的学生学号 17) 查询年龄在10到19岁之间的学生信息 18) 查询全体学生情况,按所在系升序排列,同一个系的学生按年龄降序排列 19) 查询选了1号课程的学生平均成绩 20) 查询选了3号课程的学生的最高分 21) 查询每个同学的总成绩 实验三 SQL进行复杂查询 一、实验目的: 1. 熟练掌握各种连接查询及其连接条件。 2. 掌握各种嵌套查询的使用。 3. 掌握复杂的集合查询。 二、内容和主要步骤: 1.实验一中的数据为基础 2.对各表中的数据进行不同条件的连接查询和嵌套查询; 1) 查询每个学生及其选课情况; 2) 查询每门课的间接先修课 3) 将STUDENT,SC进行右连接 4) 查询有不及格的学生姓名和所在系 5) 查询所有成绩为优秀(大于90分)的学生姓名 6) 查询既选修了2号课程又选修了3号课程的学生姓名、学号; 7) 查询和刘晨同一年龄的学生 8) 选修了课程名为“数据库”的学生姓名和年龄 9) 查询其他系比IS系任一学生年龄小的学生名单 10) 查询其他系中比IS系所有学生年龄都小的学生名单 11) 查询选修了全部课程的学生姓名 12) 查询计算机系学生及其性别是男的学生 13) 查询选修课程1的学生集合和选修2号课程学生集合的差集 14) 查询李丽同学不学的课程的课程号 15) 查询选修了3号课程的学生平均年龄 16) 求每门课程学生的平均成绩 17) 统计每门课程的学生选修人数(超过3人的才统计)。要求输出课程号和选修人数,结果按人数降序排列,若人数相同,按课程号升序排列 18) 查询学号比刘晨大,而年龄比他小的学生姓名。 19) 求年龄大于女同学平均年龄的男同学姓名和年龄 20) 求年龄大于所有女同学年龄的男同学姓名和年龄 21) 查询至少选修了95002选修的全部课程的学生号码 22) 查询95001和95002两个学生都选修的课程的信息 实验四 SQL的常用数据更操作 一、实验目的: 1. 熟练掌握SQL的常用数据更操作。 2. 熟练应用INSERT,UPDATE,DELETE语句。 3. 掌握更操作的各种格式。 二、实验内容和主要步骤 1. 应用INSERT,UPDATE,DELETE语句进行更操作; 1) 插入如下学生记录(学号:95030,姓名:李莉,年龄:18) 2) 插入如下选课记录(95030,1) 3) 计算机系学生年龄改成20 4) 数学系所有学生成绩改成0 5) 把低于总平均成绩的女同学成绩提高5分 6) 修改2号课程的成绩,若成绩小于75分提高5%,成绩大于75时提高 7) 4%(两个语句实现,注意顺序) 8) 删除95030学生信息 9) 删除SC表中无成绩的记录 10) 删除张娜的选课记录 11) 删除数学系所有学生选课记录 12) 删除不及格的学生选课记录 13) 查询每一门课程成绩都大于等于80分的学生学号、姓名和性别,把值送往另一个已经存在的基本表STU(SNO,SNAME,SSEX)中 14) 把所有学生学号和课程号连接追加到表中 15) 所有学生年龄增1 16) 统计3门以上课程不及格的学生把相应的学生姓名、系别追加到另外一个表中 2.熟练掌握INSERT,UPDATE,DELETE语句并能综合应用;
1、图书管理系统 以UNIX系统文件部分系统调用为基础设计一个简易的图书管理系统。要求实现:图书的录入、查询、借阅、清理、统计等功能、还要实现对每天的借阅情况进行统计并打印出统计报表,操作界面要尽量完善。图书资料信息必须保存在文件中。 2、信号通信与进程控制 (l)进程的创建:编写一段程序,使用系统调用fork()创建两个或多个子进程。当此程序运行时,在系统中有一个父进程和其余为子进程在活动。 (2)进程的控制:在程序中使用系统调用lockf()来给每一个进程加锁,实现进程之间的互斥。 (3)进程通信:①软中断通信;②在程序中使用实例signal(SIGINT,SIG_IGN)和signal(SIGQUIT,SIG_IGN)进行通信操作,观察执行结果,并分析原因。 (4)软中断的捕获与重定义。首先定义一个服务函数function(),然后利用signal(sig,function)系统调用来实现中断的捕获与改道。 (5)使用操作系统保留给用户的信号SIGUSR1和SIGUSR2进行通信。 (6)扩展程序,使之成为信号或事件驱动的应用程序。 3、管道通信 利用UNIX系统提供的管道机制实现进程间的通信。 (1)管道通信。利用pipe()和lockf()系统调用,编写程序,实现同族进程间的通信。使用系统调用pipe()建立一条管道线;创建子进程P1、P2、…。子进程Pi分别向管道各写信息,而父进程则从管道中读出来自于各子进程的信息,实现进程家族间无名管道通讯。 扩展之,使之成为客户/服务器模式,并完成一定的任务(自己定义)。 (2)命名管道通信:利用mkfifo(name,mode)或mknod(name,mode,0)创建一个命名管道,然后利用它和文件部分系统调用实现不同进程间的通信。 改造之,使之成为客户/服务器模式,并完成一定的任务(自己定义)。 4、进程间通信(IPC):消息机制 (1)消息的创建、发送和接收 使用系统调用msgget(),msgsnd(),msgget(),及msgctl()编制一长度为1K的消息发送和接收的程序。 1)为了便于操作和观察结果,用一个程序作为“引子”,先后fork()两个子进程,SERVER和CLIENT,进行通信。SERVER和CLIENT也可分别为2个各自独立的程序。 2)SERVER端建立一个Key为175的消息队列,等待其他进程发来的消息。当遇到类型为1的消息,则作为结束信号,取消该队列,并退出SERVER。SERVER每接收到一个消息后显示一句“(server)received”。 3)CLIENT端使用key为175的消息队列,先后发送类型从10到1的消息,然后退出。最后的一个消息,即是SERVER端需要的结束信号。CLIENT每发送一条消息后显示一句“(client)sent”。 4)父进程在SERVER和CLIENT均退出后结束。 (2)功能扩展:在sever端创建一个服务函数,从而实现C/S通讯 要求SERVER每接收到一次数据后不仅仅显示“(server)received”,而是做一些其它事情,比如读取或查询某个文件,或者执行一个shell命令等。此功能可由设计者自己定义。 在此基础上可以扩展客户端,比如设计一个菜单界面,接收不同的选项,并发送到服务器端,请求对方提供服务。 5、进程间通信(IPC):共享内存机制 (1) 共享存储区的创建,附接和断接 使用系统调用shmget(),shmat(),msgdt(),shmctl(),编制一长度为1K的消息发送和接收的程序。 1)为了便于操作和观察结果,用一个程序作为“引子”,先后fork()两个子进程,SERVER和CLIENT,进行通信。SERVER和CLIENT也可分别为2个各自独立的程序。 2)SERVER端建立一个Key为375的共享区,并将第一个字节置为-1,作为数据空的标志,等待其他进程发来的消息。当该字节的值发生变化时,表示收到了信息,并进行处理。然后再次把它的值设为-1。如果遇到的值为0,则视为结束信号,取消该队列,并退出SERVER。SERVER每接收到一次数据后显示“(server)received”。 3)CLIENT端建立一个Key为375的共享区,当共享取得第一个字节为-1时,SERVER端空闲,可发送请求。CLIENT随即填入9到0。期间等待Server端的再次空闲。进行完这些操作后,CLIENT退出。CLIENT每发送一次数据后显示“(client)sent”。 4)父进程在SERVER和CLIENT均退出后结束。 (2)功能扩展:在sever端创建一个服务函数,从而形成C/S通讯模式 要求SERVER每接收到一次数据后不仅仅显示“(server)received”,而是做一些其它事情,比如读取或查询某个文件等。此功能可由设计者自己定义。 在此基础上可以扩展客户端,比如设计一个菜单界面,接收不同的选项,并发送到服务器端,请求对方提供服务。 6、文件加密存储 利用文件系统的系统调用编程对文件的内容进行加、解密。 要求程序从环境的命令行携带4个参数。第一个是文件名,第二个是操作方式,第三个是密钥,第四个是加密钥循环使用长度。其中后两个参数是可以忽略,但对忽略的情况要提供缺省值。 要求最后实现对文件的加密转储,或通过改道的办法进行转储。对于已加密的文件可以进行解密显示或解密后转储。形成加密或解密文件后要删除原来的文件。 建议加密过程使用按字符进行异或的方式处理,也可以是仿射加密方式,比如把所有的字符做一个平移变换:A-A+C(A为任意字母表中的字母,C为常数,为了防止越界或溢出,可以改造其为A-(A+C)MOD 256),这里要提醒的是,要注意逆变换。 建议,设计者也提供自己的加密方式。 7、存储管理 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本设计的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。要求: (1)通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成: ①50%的指令是顺序执行的;②25%的指令是均匀分布在前地址部分;③25%的指令是均匀分布在后地址部分。 具体的实施方法是:①在[0,319]的指令地址之间随机选取一起点m;②顺序执行一条指令,即执行地址为m+l的指令;③在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’;④顺序执行一条指令,其地址为m’+1;⑤在后地址[m’+2,319]中随机选取一条指令并执行;⑥重复上述步骤①~⑤,直到执行320次指令。 (2)将指令序列变换成为页地址流。设:①页面大小为1K;②用户内存容量为4页到32页;③用户虚存容量为32K。 在用户虚存中,按每页存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为: 第0条~第9条指令为第0页(对应虚存地址为[0,9]); 第10条~第19条指令为第1页(对应虚存地址为[10,19]); … … … 第310条~第319条指令为第31页(对应虚存地址为[310,319])。 按以上方式,用户指令可组成32页。 (3)计算并输出下述各种算法在不同内存容量下的命中率(要为以下各种算法定义数据结构)。 ①先进先出的算法(FIFO); ②最近最少使用算法(LRU); ③最近最不经常使用算法(NUR/NRU/CLOCK)。 命中率=1-页面失效次数/页地址流长度 在本设计中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。 (4)关于随机数产生办法,Linux/UNIX系统提供函数srand()和rand(),分别进行初始化和产生随机数。例如:srand()语句可初始化一个随机数: a[0]=10*rand()/32767*319+1, a[1]=10*rand()/32767*a[0]; … … … 语句可用来产生a[0]、a[1]、…中的随机数。 8、shell程序模拟设计 shell是UNIX系统的命令解释程序。Shell的基本功能是:命令解释执行、shell编程、系统环境设置、文件名替换、I/O重定向、连通管道建立。试按照shell程序的基本功能,利用UNIX系统提供的进程控制的系统调用,设计一个程序来模拟shell功能。要求至少要做到: 1)从终端键盘接收命令,若是合法,则执行之; 2)设置一条内部命令,比如print,用于显示被执行命令的返回状态和它自己的参数; 3)实现shell命令替换。 9、Windows文件系统分析 在Linux系统下,使用与文件相关的系统调用实现对物理设备文件的读写,参照Linux系统源代码,对不同介质上的FAT格式文件系统进行分析。要求在Linux环境下设计出C语言程序,实现以下功能: 1)分析DOS/Windows系统引导记录DBR(DOS Boot Record)和引导机制; 2)通过DBR中的BPB(BIOS Parameter Block)信息分析,构建相关信息的数据结构,比较FAT16、FAT32和VFAT等文件系统的区别与联系。 3)至少要实现对给出第一FAT入口文件的只读访问。 4)建议根据文件名读取文件。 10、UNIX/Linux文件系统分析 在Linux系统下,使用与文件相关的系统调用实现对物理设备文件的读写,参照Linux系统源代码以及Grub系统的源代码,对不同介质上的FAT格式文件系统进行分析。要求在Linux环境下设计出C语言程序,实现以下功能: 1)分析UNIX SysV/Linux系统引导记录的作用; 2)分析UNIX SysV/Linux的超级块及其结构,并建立相关数据结构,通过编程实现UNIX SysV/Linux文件系统内各部分的定位。 3)至少要实现对给定i节点文件的只读访问。 4)建议根据文件名读取文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值