资源描述:
《基于 linux shell 的cd管理系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于LinuxShell的CD管理系统 需求 假如我们有一个扩展的CD集合.要使得我们的生活更为简单,我们设计和实现在一个管理CD的程序.用我们所学的Linux编程的知识来实现一个电子目录似乎是一个很不错的主意. 我们希望,至少最初是这样的,我们的程序可以存储基本的CD信息,例如标签,音乐种类或是艺术家.我们还希望可以保存一些跟踪信息. 我们希望可以在每一个CD项目上进行搜索,但是却不会在跟踪细节上进行搜索. 为了使得我们的程序完整,我们希望可以输入,更新,删除任何信息. 设计
2、我们在上面所说的三个需求---更新,搜索,显示数据---指明了我们要实现一个简单的菜单程序.所有我们要存储的内容都是文本的,而且我们在这里假设我们的CD集合并不是很大.我们并不需要一个完整的数据库,我们只需要一些简单的文本就可以了.将信息存放在一个文本文件中可以使得我们的程序保持简单,而且如果我们的需求发生变化,处理文本文件总是要比其他类型的文件简单得多.作为最后的一个手段,我们可以手工使用文本编辑器来输入和删除数据,而并需要编写一个程序来完成这样的工作. 我们必须为我们的数据存储做出一个重要的设计决定:是不是单一
3、的一个文件就足够了呢?如果是这样,那么他应是什么格式的文件呢?我们所希望存储的大多数的数据信息对于每一个CD来说只有一次,当然这样排除跟踪信息.所有的CD将会有多于一个跟踪信息. 我们是否应在我们要存储的每一个CD上设置一个数字的极限呢?这看起来是任意的和不必需的限制,所以我们立刻否决了这样的想法. 如果我们允许灵活的跟踪数目,我们有下面的三个选项: 1使用单一的文件,使用一行来存放CD的标题类信息并使用N行来存放CD的跟踪信息. 2将CD的所有信息放在一行,允许行继续直到没有跟踪信息需要存入为止
4、. 3将标题信息与跟踪信息相分离并使用另一个不同的文件进行存储. 只有第三个选项可以允许我们灵活的来修正文件的格式,如果曾经希望将我们的数据库转换为相关的格式我们可以做出这样的选择,所以在这里我们会选择第三个选项. 下一个决定就是我们要在我们的文件中存放什么内容: 最初,对于每一个CD标题,我们会选择存放: 1CD目录标号 2标题 3类型 4作曲家或艺术家 对于轨迹内容,我们会简单的存放: 1轨迹标号 2轨迹名字 为了能够合并这两个文件,我们必须将轨
5、迹信息与CD的其他信息相关联.为了这样做,我们会使用CD目录编号.因为这对于每一个CD来说是唯一的,这样他就会在标题文件和轨迹文件中只出现一次. 下面让我们来看一下一个简单的标题文件的例子: 目录标题类型作曲家 CD123CoolsaxJazzBix CD234ClassicviolinClassicalBach CD345Hits99PopVarious 他们所对应的轨迹信息如下: 目录轨迹标号标题 CD1231Somejazz CD1232Morejazz
6、CD3451Dizzy CD2341SonatainDminor 这两个文件使用目录域进行联合.在这里我们要记住,对于标题文件中的每一个实体在轨迹文件中会有多行与之对应. 我们要做的最后一件事就是如何来区分这些实体.在关系数据库中通常采用确定宽度的域,但是并不总是合适的.另一个常用的办法就是逗号,而这也是我们这里所采用的方法. 在我们下面的部分中,为了使得我们不至于迷惑,我们会使用下面的一些函数: get_return() get_confirm() set_menu_choic
7、e() insert_title() insert_track() add_record_tracks() add_records() find_cd() update_cd() count_cds() remove_records() list_tracks() 一个CD程序 1在我们的例子程序中,第一行总是要保证这个程序要作为一个Shell脚本来执行,接下来的是一些版权信息: #!/bin/sh #Verysimpleexampleshel
8、lscriptformanagingaCDcollection. #Copyright(C)1996-2003WroxPress. #Thisprogramisfreesoftware;youcanredistributeitand/ormodifyit #underthetermsoftheGNU