免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1697 | 回复: 1
打印 上一主题 下一主题

谁能帮我做下这道题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-24 18:17 |只看该作者 |倒序浏览
。。。。。。
写一个程序包含以下员工信息:
3位数字的员工薪水册编号
电话号码
名字,(姓,名,首大写字母)
部门编号
职称
雇佣时间

程序必须具备让用户添加,删除,查找(定位),和显示员工详细信息。

可以运用几个UNIX shell 脚本去满足这些功能。要从登入UNIX开始,并建立一个文件名为records, 这个文件中包含了以下信息,每个小信息之间用冒号(:)隔开。

111:02-98781999:Williams:Nick:T:35:Computer Officer:14-10-2000
112:02-99893878:Brown:Sarah:B:12:Electrician:09-02-1992
131:02-95673456:Couch:David:A:26:Consultant:23-04-1994
236:02-95437869:Anderson:Sarah:K:19:CEO:21-09-1988
553:03-99999999:Coles:David:M:12:Manager:12-12-1999
869:02-95671660:Jones:Sarah:B:45:Sales Manager:14-12-1995
148:02-93272658:Smith:John:C:43:Technical Manager:21-10-1988
372:02-12345678:Miller:Sam:B:22:Engineer:12-03-1998
059:02-95673455:Chen:Xiao:Y:26:Consultant:01-05-2003
812:02-98781987:Xue:Fei:L:35:Computer Officer:10-08-1998
619:02-95436669:Wang:Mengjie:X:26:Consultant:12-02-2001

注:111,112:表示为 3位数字的员工薪水册编号
    02-98781999:表示电话号码
    Williams:表示为姓
    Nick:表示为名
    T:表示为大写字母
35:表示为部门编号
Computer Officer:表示为职称
    14-10-2000:表示为被雇佣的时间

程序主要脚本为一个菜单选项(必须命名为menu)给用户操作。这里要实现的操作有:
在屏幕上显示当前所有员工的记录
在屏幕上显示当前所有员工的记录(已格式和已分类过的)
在屏幕上只显示员工的名字和电话号码
在屏幕上只显示员工的名字和电话号码(已格式和已分类过的)
搜索并显示特别员工的记录
添加新的记录到records
在records删除记录
程序可以用一些简单的UNIX命令去实现操作1,2,3,4,5。操作6,7 需要另外写一个程序脚本(必须分别命名为add 和delete)并且召集这些脚本到主要脚本menu中。

写这个程序你要研究UNIX命令:awk, sort, tr, cut, paste, sed, grep和其他一些命令。你必须在你的home 目录下产生一个工作目录,命名为kxc254ass1 。



主脚本菜单(Your Main Script menu)

产生一个主要的脚本菜单如下:

Adfaith Consulting - Employee Information - Main Menu
=====================================================

1 - Print All Current Records
2 – Print All Current Records (formatted)
3 – Print Names and Phone Numbers
4 – Print Names and Phone Numbers (formatted)
5 - Search for specific Record(s)
6 - Add New Records
7 – Delete Records

Q - Quit

Your Selection: | (waiting for user input)

当用户选择一个操作并完成实现,这个主菜单必须被再次显示供用户选择下次操作。你必须结合使用while loop 和case conditional 去实现这个功能。另外,你的脚本menu 必须在菜单显示前清除使用者的屏幕。总的来说就是每一次在菜单显示前必须先清屏。

在开始你的menu 脚本,你必须先分别定义records, add, and delete 这3个变量的值, 并且在records, add, and delete文件的声明中使用这3个变量。

例如,你可以定义:record_file=records。
使用$record_file 在所有与file records相关的声明中。这样做的一个好处就是不用再次定义。

定义其他两个变量为 :add_file=add
delete_file=delete
在以上定义完之后,你的menu 脚本必须检验在当前的目录下是否存在必须的文件 (records, add, and delete)。如果任何一个脚本不存在,你的脚本menu显示下面的信息并且退出你的程序(exit your program)。
Required file(必须的文件) – theMissingFilename, does not exist.
例如, 如果 records file 不存在, 则显示:
“Required file – records, does not exist.”, and then exit your program.

如果用户选择了错误的选项,如:8,9…,则显示"Invalid code! Press Enter to continue…" 并且要确定光标指针在这句话的结尾,而不是在下一行的开头。在用户敲击ENTER后,主菜单出现,用户可再次选择。


对每个操作的具体实现:
当用户选1——Print All Current Records(在屏幕上显示当前所有员工的记录)

以下是当用户选择1后出现的结果
(The main menu here)

Your Selection: 1 (user input)
111:02-98781999:Williams:Nick:T:35:Computer Officer:14-10-2000
112:02-99893878:Brown:Sarah:B:12:Electrician:09-02-1992
131:02-95673456:Couch:David:A:26:Consultant:23-04-1994
236:02-95437869:Anderson:Sarah:K:19:CEO:21-09-1988
553:03-99999999:Coles:David:M:12:Manager:12-12-1999
869:02-95671660:Jones:Sarah:B:45:Sales Manager:14-12-1995
148:02-93272658:Smith:John:C:43:Technical Manager:21-10-1988
372:02-12345678:Miller:Sam:B:22:Engineer:12-03-1998
059:02-95673455:Chen:Xiao:Y:26:Consultant:01-05-2003
812:02-98781987:Xue:Fei:L:35:Computer Officer:10-08-1998
619:02-95436669:Wang:Mengjie:X:26:Consultant:12-02-2001

Press Enter to continue... 当用户敲击回车后,菜单再次出现

所有的冒号代替了空格,你必须找出UNIX代码实现它。



当用户选2—在屏幕上显示当前所有员工的记录(已格式和已分类过的)

以下是当用户选择2后出现的结果。。。(看英文那份资料,复制过来格式不对)



当用户选3—在屏幕上只显示员工的名字和电话号码

(The main menu here主菜单显示位置)

Your Selection: 3 (user input)
Williams,Nick,02-98781999
Brown,Sarah,02-99893878
Couch,David,02-95673456
Anderson,Sarah,02-95437869
Coles,David,03-99999999
Jones,Sarah,02-95671660
Smith,John,02-93272658
Miller,Sam,02-12345678
Chen,Xiao,02-95673455
Xue,Fei,02-98781987
Wang,Mengjie,02-95436669

Press Enter to continue...

冒号被逗号取代。每一次登入,只显示名字和电话号码。



当用户选4—在屏幕上只显示员工的名字和电话号码(已格式化和分类)

(The main menu here)

Your Selection: 4 (user input)
Anderson        Sarah        02-95437869
Brown        Sarah        02-99893878
Chen        Xiao        02-95673455
Coles        David        03-99999999
Couch        David        02-95673456
Jones        Sarah        02-95671660
Miller        Sam        02-12345678
Smith        John        02-93272658
Wang        Mengjie        02-95436669
Williams        Nick        02-98781999
Xue        Fei        02-98781987

Press Enter to continue...等待用户敲击回车,菜单再次出现

注意上面的输出已经以姓的方式进行格式化以及分类过。每栏必须左对齐。




当用户选5—搜索并显示特别员工的记录

(The main menu here)

Your Selection: 5 (user input)
Enter keyword: Jones (user input)

869:02-95671660:Jones:Sarah:B:45:sales manager:14-12-1995

Press Enter to continue...


如果输入关键词不存在,则如下显示:

(The main menu here)

Your Selection: 5 (user input)
Enter keyword: Monks (user input)
Keyword – Monks - not found

Press Enter to continue...


,如果用户简单的输入关键词代替完整的关键词,则如下:
(The main menu here)

Your Selection, 5 (user input)
Enter keyword: (用户无输入)

No keyword entered – try again…

Enter keyword: (仍然等待用户输入)
你必须同意用户输入大写或小写的关键词,例如JONES 和jones都可以。



脚本-----添加
脚本add 是当用户选择6是需要实现的
(The main menu here)

Your Selection, 6 (user input)

(Clear the user screen first) 先清屏

Adfaith Consulting – Employee Records:
======================================

Employee Record Additions(添加):

Enter the following details of the new employee:
(输入新职员的详细信息:)

Employee 3 digit payroll number
Phone Number
Last Name
First Name
Middle Init
Dept #
Job Title
Date Hired

Enter employee 3 digit payroll number: 123 (user input)

脚本必须强迫用户依照特别的格式输入有效正确的薪水册号码,你的脚本必须检验输入是否正确

Enter employee 3 digit payroll number: (无输入,敲回车后)
No payroll number entered – try again
Enter employee 3 digit payroll number: abc (用户输入不正确的号码时)
Payroll number can contain only numerical characters
Enter employee 3 digit payroll number:(等待用户输入有效数字)


Enter Phone Number (02-12345678): 02-90807986 (user input)

脚本必须强迫用户依照特别的格式输入有效正确的电话号码,你的脚本必须检验输入是否正确

Phone Number (02-12345678),敲回车时
No phone number entered – try again
Phone Number (02-12345678),等待用户输入号码

如果用户输入号码不正确时,则:
Enter Phone Number (02-12345678): abc123 (user input)
Invalid phone number – try again
Enter Phone Number (02-12345678): 等待用户输入正确号码

有效号码例子(包括电区号) 是 02-95671600. 无效号码例子是 0363243416 (格式错误), 1099887766, 1299998877,等。有效号码区号为 02, 03, 04, 05, 06, 07, 08. 电话号码第一个数字(不包括区号) 可以是1---9任何一个数字. 其他7位数 (不包括区号) 可以是 0 -- 9 任何一数字.)

Enter Last Name: Warren (user input)

(有效的姓只可以是字母和空格。和上面描述的一样, 如果用户输入一无效姓, 则显示 Last name can contain only alphabetical characters and spaces 并且提示用户再次输入姓。 如果无输入直接敲回车,则显示 No last name entered – try again 并提示用户再次输入.)

Enter First Name: Todd (user input)

(有效的名只可以是字母和空格。和上面描述的一样, 如果用户输入无效名, 则显示 First name can contain only alphabetical characters and spaces 并且提示用户再次输入名。 如果无输入直接敲回车,则显示 No First name entered – try again 并提示用户再次输入.)


Enter Middle Init: L (user input)

(有效的中间字母只可以是字母和空格。和上面描述的一样, 如果用户输入一无效姓, 则显示 Middle Initial can contain only alphabetical characters and spaces 并且提示用户再次输入. 如果无输入直接敲回车,则显示 No middle initial entered – try again 并提示用户再次输入.)


Enter Dept #: 20 (user input)

(一个有效的部门号码只能是数字并且没有空格。同样的,如果用户输入无效的部门号, 则显示--- Dept # can contain only digits with no spaces 并且提醒用户再次输入。如果无输入直接敲回车,则显示---No Dept # entered – try again并且提示用户再次输入.)

Enter Job Title: Engineer (user input)

(有效的职称只可以是字母和空格。和上面描述的一样, 如果用户输入一无效职称,则显示 Job title can contain only alphabets and spaces 并且提示用户再次输入. 如果无输入直接敲回车,则显示Job title not entered 并提示用户再次输入.)

Enter Date Hired (dd-mm-yyyy): 21-02-1996 (user input)

你的脚本必须强迫用户依照特殊的格式输入有效的日期,脚本必须有能力检验输入是否正确

简单的是或, 假象一个月有31天. 有效的年份为 1000---- 9999.

如果输入为无效格式的日期,则显示Invalid Date Hired并提示再次输入。如果无输入直接敲回车,则显示No date hired entered – try again并提示用户再次输入.)



Record Saved 记录保存

只有当成功的添加信息到records files时显示此信息。
the UNIX command for appending contents to an existing file will display a standard error message



Add another employee record? (y)es or (n)o, y (user input)
添加其他新的职员记录?
这个操作要从清屏开始,然后重复操作

然而当用户输入NO, add就停止 并且主菜单再次出现,以便用户做另外选择。

.如果用户以外输入其他字母,add就结束并且主菜单出现。

在add脚本开始前,你必须先定义records的变量值,并且使用所有与records相关的说明。
当程序完成后添加3个新的记录组成到records file





Your Script delete( 删除)

当用户选择7时,运行删除

(The main menu here)

Your Selection, 7 (user input)

(Clear the user screen first)清屏

Adfaith Consulting – Employee Records:
======================================

Employee Record Deletion:

Enter employee’s 3 digit payroll number to enable file deletion: 869 (user input)

869:02-95671660:Jones:Sarah:B:45:sales manager:14-12-1995

脚本必须强迫用户依照特别的格式输入有效正确的薪水册号码,你的脚本必须检验输入是否正确

Enter employee 3 digit payroll number: (无输入,直接敲回车时)
No payroll number entered – try again

Enter employee 3 digit payroll number: abc  用户输入无效号码
Payroll number can contain only numerical characters

Enter employee 3 digit payroll number: 等待用户输入号码
Confirm record deletion, (y)es or (n)o, y (user input)

Record deleted.(只有在记录成功的被删除后,显示此信息。)
如果用户输入N 或者其他字母,则删除接受,主菜单出现。

Delete another? (y)es or (n)o, y (user input)

如果用户输入N 或其他字母,则出现主菜单。


然而,如果没有找到这个操作,则会产生以下过程:

Adfaith Consulting – Employee Records:
======================================

Employee Record Deletion:

Enter employee’s 3 digit payroll number to enable file deletion: 123 (user input)

Employee record for 123 not found!

Press Enter to continue ...
保证指针停留在这个信息后。完成操作过程敲击回车,主菜单出现。


在add脚本开始前,你必须先定义records的变量值,并且使用所有与records相关的说明。



提交作业:
需要包含下面4个文件(3个shell脚本和一个Text file)

Menu, add, delete, records

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-02-24 18:34 |只看该作者
不好意思 兄弟.这里不是慈善机构.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP