1、 信息科学与工程学院 高级语言课程设计高级语言课程设计(C) (C) 课程设计课程设计报告报告 设 计 题 目 学生通讯录学生通讯录 学生专业班级 学生姓名(学号) 设计小组其他同学姓名(学号) 指 导 教 师 完 成 时 间 2007-12-6 实 习(设计)地点 2007 年 12 月 6 日 一、课程设计目的和任务 高级语言课程设计的目的在于加深对高级语言程序设计理论和基本知识的理解,掌握 使用 C 语言进行面向过程设计的基本方法,提高运用面向过程知识解决实际问题的能力。 为毕业设计和以后的工程实践打下良好的基础。 本次设计任务是使用 C 语言编写一学生通讯录。其具体要求如下: (1)学
2、生通讯录包含学生姓名、电话、住址、邮编。 (2)能增加新的学生通讯录。 (3)能删除学生通讯录。 (4)实现对某学生通讯录的查找。 二、分析与设计 1.程序的基本功能: 学生通讯录程序的功能有:新学生的信息载入(包括:姓名、电话号码、通信地址和 邮政编码) 、插入学生的信息、查找学生的信息、增加和删除学生的信息、完成对学生信 息的自动保存,并能成功退出程序运行。 2.系统总框图: 运行程序 用户输入所需要运行的程序 程序将用户所需要的进行函数运行 输出运行结果 用户根据提示来进行选择所许内容 3.定义的函数及说明: (1)main()主函数 各模块独立,均由主函数控制调用。 利用输出函数输出字
3、符串,在屏幕上显示一个 菜单。并显示一个请用户输入选项的提示,主函数根据用户输入的选项调用相应的功能函 数。 (2)new()输入记录函数 输入记录时按一条记录一行的格式输入,每个记录之间用空格分隔。设计输入的循环 语句前应考虑首先输入准备输入的记录个数 n,然后根据输入的 n 的值来控制循环输入 n 条记录,n 应小于等于 M。 (3)insert()插入记录函数 输入要插入记录的信息,保存到临时变量中,然后再输入一个姓名 s,确定新记录插 入在该姓名的记录之前,调用 find()函数查找姓名为 s 的记录,得到该记录所在的序号之 后开始插入操作,由于添加了一条记录,记录数加 1,返回记录数
4、,程序结束。 (4)find()查找记录函数 本函数实现查找指定姓名的纪录,要求输入欲查找记录的姓名,然后顺序查找有效元 素,如找到则显示找到纪录的所有信息,如未找到则输出没有找到信息。 find 函数功能 是查找,若找到则返回记录位置否则返回 n。 (5)del()删除记录函数 输入要删除记录的姓名,调用 find 函数,如果没有该记录,显示没找到信息;否则, 调用 print 函数,显示记录信息,接着显示是否确实要删除,请输入确认信息整数 0 或 1, 1 表示是,o 表示否。如果输入了 1,则系统删除信息。由于删除了一条记录,记录数减 1, 返回记录数,程序结束。 (6)display(
5、)显示所有记录函数 本函数实现显示所以记录数据,输出时,为了效果美观清晰,应设计一定的样式输出。 (7)record()保存记录到文件 前面数组数据的输入和输出是以终端为对象的,当程序关闭后,数据也就丢失了,所 以为了能随时查阅数据,必须将数据输出到磁盘文件上保存起来,使用时再从磁盘中读入 到内存中,这就用到了磁盘文件的读写操作。 将文件名写上它的绝对路径,但要注意书写方式,例如“c:tcrecordtxt” 。 打开文件之后先写入记录数 n,然后用循环语句将记录逐条写入文件,每输出一条记录写 入一个换行符号。 (8)exit() 退出系统 结束对通讯录系统的操作,返回主界面。 4.算法设计:
6、 实现对学生通讯录的管理,重点掌握结构体数组的应用、数组作函数参数、文件读写、自 定义函数等知识。本次程序设计应用到以下知识点: (1)结构体的定义 (2)数组的定义及应用 (3)顺序查找方法 (4)二分查找算法 (5)函数调用、数组名作参数 (6)文件的读写操作 (7)菜单项的制作和选择 三、系统实施 1.源程序代码#include #include #define LEN sizeof(struct student) /*定义一个学生的结构体*/ struct student char name20; char phone20; char addr40; char post20; struct student *next; *head=NULL; void new() /*定义输入新函数*/ str