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(退出)
关闭程序,并退出电话号码目录系统。
此外,还需要在系统的所有功能点处,显示适当的消息。
第四部分:对应的章节内容
在学习C语言课程的过程中,可以逐步完成以上作业的要求,可以在第四章讲述完毕后进行本作业。
第四章:C 语言中的输入和输出
创建图 1.1 所示的菜单,要显示和接受菜单选项,请使用printf () 和 scanf () 函数。
第五章:条件
用户可以选择菜单选项,根据选择的选项,使用 if 条件或 switch 来执行适当的操作。
第六章:循环
要执行多个操作,可以将该菜单包括在一个循环中,如果用户选择错误,应再次显示该菜单。
第七章:数组
接受多个订户的详细信息声明数组,接受详细信息以后,使用户能够根据订户名或电话号码查询订户详细信息。
第九章:函数
创建适当的函数来添加、修改、删除、查询和查看详细信息。
第十章:字符串
在本工程中必须使用 strlen、strcmp 之类各种字符串函数,例如,如果用户忘记输入订户名字,则可以使用 strlen 来检查该变量是否为空。
第十一章:复杂数据类型及排序
在开始时要声明一个结构来存储订户详细信息,它的数据成员包括名字、地址和电话号码。
第十二章:文件操作
所有的记录都保存在 telefon.dat 文件中。
接受订户详细信息时,应检查该文件是否存在,如果该文件不存在,则以写模式来打开它。
当用户选择修改菜单时,以读+写模式来打开 telefon.dat 文件,如果该文件不存在,则显示一条错误消息。
如果用户选择删除、显示或查看菜单,则以读模式来打开 telefon.dat 文件,如果该文件不存在,应显示相应的错误消息。
本工程中将使用下列与文件操作相关的函数:
fopen –打开文件;
fwrite – 将数据添加到文件中;
fread – 从文件中读取数据;
fclose – 关闭文件。