您好,欢迎访问三七文档
C语言课程设计设计报告1、设计目的通过该系统实现对通讯录信息进行录入,显示,修改,插入,排序,保存等操作的管理。2、需求分析设计一个通讯录管理系统具有以下功能⑴查看功能:选择此功能时,列出三类选择:A办公类、B个人类、C商务类;当选中某类时,显示出此类所有数据中的姓名和电话号码等详细信息。⑵增加功能:能录入新数据包括:姓名、电话号码、分类(参照第一个功能的分类),电子邮件等(还有其他的功能可以添加但需通过组员商量决定)。⑶拨号功能:能显示出通讯录中所有人的名字,当选中某个名字时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拨号声音。⑷修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。⑸删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条⑹菜单功能:至少采用文本菜单界面(如果能采用图形菜单界面更好)。⑺查询功能:要求能通过输入姓名或者电话号码查询此人的详细信息。3、总体设计该手机通讯录管理系统按功能划分可得功能模块图,如图3-1所示。图3-1功能模块图其中:输入通讯录信息模块完成通讯个人信息的输入功能,输入信息包括个人的编号、姓名、号码、类型、email等;修改联系人信息模块完成个人通讯信息的修改功能;删除联系人信息模块完成个人通讯信息的删除功能;查询联系人信息模块完成个人通讯信息的查询,查询时对应有按号码和姓名两种方式;联系人拨号模块完成通讯人拨号功能查看联系人信息模块完成已录入个人通讯信息的显示功能;菜单选择模块完成用户命令的接受,此模块也是手机通讯录管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择而调用其他模块实现相应的功能。4、详细设计在本次C++大作业中,对应于总体设计时的系统功能模块图,各个功能系统模块的处理逻辑如下:⑴查看功能:选择此功能时,列出三类选择:A办公类、B个人类、C商务类;当选中某类时,显示出此类所有数据中的姓名和电话号码等详细信息。⑵增加功能:能录入新数据包括:姓名、电话号码、分类(参照第一个功能的分类),电子邮件等。⑶拨号功能:能显示出通讯录中所有人的名字,当选中某个名字时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拨号声音。⑷修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。⑸删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条⑹菜单功能:至少采用文本菜单界面(如果能采用图形菜单界面更好)。⑺查询功能:要求能通过输入姓名或者电话号码查询此人的详细信息。在主函数前先定义结构体和结构体指针变量,申明菜单中各功能需要调用的函数。6、源程序清单和执行结果其中主函数和输入通讯录信息模块的流程图分别如图4-3和图4-4所示。图4-3主函数流程图开始函数清屏提示输入通讯人编号、姓名、号码等信息打开数据文件将通讯人的所有输入的信息读入结构体数组文件中是否有与输入的编号或姓名或号码相同存储完毕并关闭文件 是否继续存储 通讯人信息结束否否是是输入重复 存储通讯人是 否有15个否是存储已满输入通讯人信息图4-4输入通讯录信息流程图3、主函数和输入通讯录信息函数如下:voidmain()/*主函数开始*/{for(;;)/*每次功能结束后或输入错误时,循环返回主界面*/{switch(menu_select())/*调用菜单函数*/{case1:system(cls);/*系统清屏*/printf(****************************\n);printf(输入通讯录信息\n);printf(****************************\n);head=CreateList();/*调用输入通讯录信息模块函数*/break;/*跳出case1语句的循环*/case2:system(cls);printf(****************************\n);printf(修改联系人信息\n);printf(****************************\n);p=edit(head);/*调用修改联系人信息模块函数*/break;/*跳出case2语句的循环*/case3:system(cls);printf(****************************\n);printf(删除联系人信息\n);printf(****************************\n);DelNode(head);break;case4:system(cls);printf(****************************\n);printf(查看联系人信息\n);printf(****************************\n);PrintList(head);printf(按任意键返回...);getch();/*接收输入的一个字符*/system(cls);break;case5:system(cls);printf(****************************\n);printf(输入号码拨号\n);printf(****************************\n);PrintList(head);/*调用查看联系人信息函数*/bohao();/*调用拨号功能函数*/printf(选择联系人号码:);break;case6:system(cls);printf(****************************\n);printf(查找联系人信息\n);printf(****************************\n);p=ListFind(head);/*调用查找联系人信息函数并返回指针赋给p*/if(p!=NULL)/*p指针指向的地址不为空就执行下面的语句*/{printf(编号姓名电话类型e-mail\n);\printf(=====================================\n);printf(%s\t%s\t%s\t%s\t%s\n,p-data.num,p-data.name,p-data.phone,p-data.leixing,p-data.email);/*输出所查找联系人的信息*/printf(=====================================\n);}printf(查找完毕,按任意键返回...);getch();/*接收输入的一个字符*/system(cls);break;case0:printf(\t谢谢使用,再见!\n);/*结束该系统的使用*/return;/*返回上一语句的输出值*/}}}LinkListCreateList(void)/*输入联系人函数*/{LinkListhead=(ListNode*)malloc(sizeof(ListNode));/*开辟一个长度为ListNode的内存区,并强制转换为结构体类型,把其指针地址赋给头指针head*/ListNode*p,*rear,*q;/*定义三个结构体类型指针*/inti=0,flag=1,a;/*定义整形变量*/charleixing;/*定义一个字符型变量*/rear=head;/*把头指针head赋给rear*/while(flag==1&&i=16)/*当i16时退出当前循环*/{i++;if(i=15){p=(ListNode*)malloc(sizeof(ListNode));/*开辟一个长度为ListNode的内存区,并强制转换为结构体类型,把其指针地址赋给头指针p*/printf(请输入编号:);scanf(%s,p-data.num);printf(请输入姓名:);scanf(%s,p-data.name);if(i1){fp=fopen(a.txt,rb);/*打开一个可读写的文件a.txt*/for(q=head,a=0;ai;q=q-next){a++;if(strcmp(p-data.name,q-data.name)==0)/*比较两个字符串的大小*/{printf(输入重复!\n);printf(按任意键返回...);getch();system(cls);return;}}fclose(fp);/*关闭文件*/}printf(请输入号码:);scanf(%s,p-data.phone);if(i1)/*把刚输入的通讯信息写入文件中*/{fp=fopen(a.txt,rb);/*打开文件*/for(q=head,a=0;ai;q=q-next){a++;if(strcmp(p-data.phone,q-data.phone)==0){printf(输入重复!\n);printf(按任意键返回...);getch();system(cls);return;}}fclose(fp);/*关闭文件*/}printf(类型为:1办公类2个人类3商务类请用序号填写\n);printf(请输入类型:);scanf(%s,p-data.leixing);printf(请输入e-mail:);scanf(%s,p-data.email);printf(输入完毕,按任意键存储...\n);getch();fp=fopen(a.txt,a);/*打开文件*/fprintf(fp,%s\t%s\t%s\t%s\t%s\n,p-data.num,p-data.name,p-data.phone,p-data.leixing,p-data.email);fclose(fp);/*关闭文件*/printf(存储完毕!\n);rear-next=p;/*把p的地址赋给rear的下一个*/rear=p;printf(继续输入吗?(1/0):);scanf(%d,&flag);system(cls);}else{printf(存储空间已满!\n);printf(按任意键进行存储...);getch();i++;}}system(cls);rear-next=NULL;/*把空赋给最后指针的下一个*/returnhead;/*返回头指针*/}5.3运行程序1、运行程序,打开主界面菜单如图4-5所示。图4-5菜单2、根据提示输入数字“1”即可打开输入通讯信息窗口,如图4-6所示。图4-6输入通讯信息3、根据提示按任意键存储,打开窗口如图4-7所示,再根据提示可输入“1”继续存储,若输入“0”则回到主菜单。图4-7存储完毕
本文标题:通信录管理系统
链接地址:https://www.777doc.com/doc-4813984 .html