SEMI——C语言作业:电话号码存储系统 要求和实现
第一部分:需求概述超级市场中,有的时候需要保存购买者的名称、电话号码、地址信息,以方便进行送货上门、订购服务。
电话号码目录是拥有大量数据的存储库,提供有关个人和组织的信息,简易的电话号码存储系统可以采用C语言来实现,并且这些信息可以保存在磁盘文件上。
随着新订户的加入、一些老订户的删除以及其他订户数据的改变,必须经常地更新目录。除了添加、删除、修改操作外,还可以查询现有的数据。
第二部分:整体设计系统采用C语言来编写,电话号码目录要求存在一个名为 telefon.dat 的文件中,该文件应包括下列订户详细信息:
订户名字(最多 30 个字符);
地址(最多 50 个字符);
电话号码(介于 4000000 和 4999999 之间);
telefon.dat 文件始终应该按订户名排序,而不管执行的是什么文件修改操作。
电话号码目录系统应以下列菜单开始:
TELEPHONE DIRECTORY SYSTEM
1,Add new subscriber details
2,Modify existing subscriber details
3,Delete existing subscriber details
4,Display subscriber details based on telephone number
5,Display subscriber details based on subscriber name
6,View Directory
7,Quit

Enter choice,
根据用户的选择,将执行对应的操作。
第三部分:实现说明下图显示了运行该程序后的菜单选项。

图 1:主菜单
对应的各项菜单的操作如下:
Add new subscriber details(添加新订户的详细信息)
在主界面上输入1,接受新订户的详细信息,确保名字和地址不为空,并且电话号码在指定的范围之内,将记录存在排序文件中,使该文件按订户名的升序排列。
添加记录的屏幕如图 2 所示,如果用户输入了无效的号码,将显示电话号码的范围。

图 2:添加订户
Modify existing subscriber details(修改现有订户的详细信息)
在主界面上输入2,接受需要修改其详细信息的订户名字,首先定位并显示现有的记录,接受新订户的详细信息,确保名字和地址不为空,并且电话号码在指定的范围之内,将已修改的记录保存在文件中,确保该文件按订户名的升序排列。
修改记录的屏幕如图 3 和图 4 所示。

图 3:修改订户的详细信息

图 4:修改订户的详细信息 - I
Delete existing subscriber details(删除现有订户的详细信息)
接受需要删除其详细信息的订户名字,定位并显示现有的记录,删除文件中的记录。
删除记录的屏幕如图 5 和图 6 所示。

图 5:删除订户的详细信息

图 6:删除订户的详细信息 – I
Display subscriber details based on telephone number(显示根据电话号码查出的订户详细信息)
接受需要查看其详细信息的订户名字,定位并显示相应记录。
下列两图(图 7 和图 8)定位了电话号码 4000002。

图 7:输入电话号码

图 8:订户的详细信息
Display subscriber details based on subscriber name(显示根据订户名查出的订户详细信息)
接受需要查看其详细信息的订户名字,定位并显示相应记录。
下列两图(图 9 和图 10)显示了 Mark 的记录。

图 9:输入订户名字

图 10:订户的详细信息
View Directory(查看目录)
显示电话号码目录中的所有记录,下图显示了 telefon.dat 文件中的所有记录。

图 11:查看所有记录
Quit(退出)
关闭程序,并退出电话号码目录系统。