资源预览内容
第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
第9页 / 共35页
第10页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
35C 语言项目设计 学院:物联网工程学院班级:自动化二班 姓名:徐瑞 学号:1562510233 指导老师:周小芹 目录1. 程序功能介绍32. 功能界面介绍43. 功能:5功能1:显示所有号码5功能2:号码添加6功能3:号码删除9功能4:号码修改12功能5:号码查询13功能6:信息修改15功能7:数据导入16功能8:数据导出17前置功能:密码验证184. 总结205. 答辩21程序功能介绍:编写一个通讯录管理系统进行简单的通讯录信息管理。存储的数据包括:人名、工作单位、电话号码和E-mail地址等。程序要求具有如下功能: 验证密码; 加入一个新电话号码; 删除一个电话号码; 显示所有电话号码。; 修改功能; 排序功能,包括按照电话号码排序和按照姓名字母序排列; 查询功能,包括按人名查询电话号码和按电话号码查询人名; 从文件导入信息; 导出信息至文件。功能模块图:通讯录管理系统信息保存信息添删按人名排序按号码排序信息排序信息修改按号码查询按人名查询信息查询 信息录入信息显示登录程序功能界面介绍:前置功能:验证密码。(密码为1562510233)功能1:显示当前的所有号码;功能2:添加新号码;功能3:删除当前已存在的指定号码;功能4:修改指定号码信息;功能5:查询指定号码,有两种查询方式:按姓名查询;按号码查询。功能6:将已有信息进行排序,两种排序方式:按姓名排序;按号码排序。功能7:从指定文件导入信息;功能8:保存数据至指定文件;功能0:退出程序。功能1:显示所有号码算法流程图:开始i=1i0结束否是p=first-next否链表为空输出格式输出号存在是PNULL是退出子函数输出pp=p-next输出提示i-思路:判断链表是否为空,若为空,关闭子函数;若不为空,从首节点开始输出,直至链表尾。调试过程:功能2.号码添加:开始算法流程图:i=1开辟q i0清屏返回主菜单否是输入信息返回主菜单结束Flag=0p-next0i=i-1否是p-next=q-next 是Key=y 否 是p-next=q-next输出本存在p=p-next输入keyFlag=1是否输出本存在释放q输出完Flag=0否Flag=1输出继是释放qflag1 是否p-next=q思路:开辟新的内存空间,结构体指针指向它;输入数据;将该节点与之前的链表各节点比较,若不同,将其接在链表尾部;若相同,提示已有该号码,不操作;调试过程:功能3:号码删除思路: 判断链表是否为空,若为空,提示后退出。 若不为空,输入想要删除的姓名。从首节点开始比较,找到指定目标后找出此节点的前结点,将此节点后一位结点接到前一位结点后,释放该节点。 若成功找到,删除成功。未找到,提示无记录。结束。调试过程:算法流程图:是否Key=y提示是Flag0e=e-next否是Flag=1释放eo-next=e-next;找到前节点O相等e!=0提示为空否是e=0flag=0;e=first-next;开始否是提示输入姓名结束输入key结束功能4:号码修改思路:判断链表是否为空,若不为空输入查找姓名,从首结点开始比较,直至找到此姓名的结点。选择对应修改项,输入修改后的信息,若确认,用修改后的信息替换对应原信息。选择是否继续,若是,退出子函数,若否,继续循环。调试过程:功能5:号码查询思路:选择查询方式,根据方式输入查询目标。从首结点开始比较,若找到目标,输出目标的信息;若未找到,提示。选择是否继续,是,继续循环;否,退出子函数。调试过程:功能6:数据排序思路:选择排序方式;判断个数是否足够排序,若个数大于等于2,开始排序。运用链表插入排序。调试过程:功能7:数据导入思路:打开对应文件;开辟空间,将文件对应信息按对应格式传入新结点,将其接到原链表尾部,直至读取错误或者读取结束;关闭文件。调试过程:功能8:数据导出思路:打开对应文件;从首结点开始将信息以固定格式输出到text文本中;关闭文件。调试过程:前置功能:验证密码思路:将正确密码赋给字符数组1;将getch()输入的每个字符存入字符数组2中,当输入回车或者超出20个字符时结束,每输入一个字符,显示一个星号,退格时把光标往回移动一格,打印一个空格(把之前打印过的字符覆盖掉),然后再往回移动一格,以删除星号;在字符数组2结尾加上0;与数组1比较,若相同,等待2秒进入主界面;若不同,等待2s继续输入,用for循环来限制次数,最多三次机会。调试过程:总结:这次课设,总的来说,收获很大。复习了很多知识,又通过各种途径,学到了以前不知道的编程技巧。通过此次课设,我也明白了很多道理。在编程的时候,几乎没人能够帮你,因为程序是你自己写的,除了自己,几乎没人会帮你检查错误,毕竟程序太长,只有自己最清楚它,它不像高数题目,题目很短,看题目几乎不费什么时间。所以检查错误,调试,只能靠你自己,这也意味着你的每一步都要有清晰的逻辑,以防自己检查时崩溃。检查错误时,一定要大胆尝试,多次尝试,因为经常会因为一点点你不知道,没有遇见过的小错误,导致你的这个功能出错。写程序必须要严谨,并且有耐心,需要把大问题划分为很多小问题,逻辑要通顺。当程序运行时,心中的喜悦、成就感、自豪感无法形容,这让我成为一名程序员的目标更加明确,让我对我的目标更加坚信不移。源代码:#include #include #include#include#include#includetypedef struct _telephonedirectorychar name20; /姓名double number; /电话号码char workunit50; /工作单位char mail50; /邮箱struct _telephonedirectory *next;td;int add();int display();int del();int revise();int inquiry();int _sort();int sort1();int sort2();int load();int save();int land();td *p,*first,*q,*o,*e;int flag;char key;int main() land(); first=(td*)malloc(sizeof(td); / 初始化链表头指针 first-next = NULL; loop: /返回主菜单 p=first; printf(*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*电话簿管理系统=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*n); printf(*= 1.显示所有号码 *=n); printf(*= 2.号码添加 *=n); printf(*= 3.号码删除 *=n); printf(*= 4.号码修改 *=n); printf(*= 5.号码查询 *=n); printf(*= 6.信息排序 *=n); printf(*= 7.数据导入 *=n); printf(*= 8.数据导出 *=n); printf(*= 0.退出系统 *=n); printf(*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=欢迎使用!*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=n);printf(请选择对应操作:n);key=ge
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号