欢迎来到天天文库
浏览记录
ID:9381430
大小:212.80 KB
页数:18页
时间:2018-04-29
《c语言课程设计--学生通讯录》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、C语言程序设计课程设计报告题目:学生通讯录学院计算机学院_______专业___计算机科学与技术___年级班别____09届5班_________学号学生姓名_____吴志鹏___________指导教师______陈云华__________成绩____2010年1月18一、设计目的培养学生综合应用所学专业知识及计算机知识的能力,训练和提高软件开发技能。在教师的指导下以课程设计为中心,独立地完成从可行性分析,需求分析,软件设计,编码到软件测试运行的软件开发全过程。达到以下几点目标:深化已学的知识,完成从理论到实
2、践的转化;提高分析和解决实际问题的能力;培养"开拓创新"能力二、总体设计(程序设计组成框图、较复杂函数的流程图)1、程序设计组成框图:182、较复杂函数流程图:revise()修改函数:开始输入名字nameNName==p1->name指针p1后移Y是否想修改,并输入a=Y/N输入1或2输入修改后的数据p1->name,p1->tela的值a=Ya=Na为其它b=1返回2级菜单,调用函数run2(d,head)b的值b=2结束一、思路(1)我先是列出了函数目录,清楚程序需要什么功能以及菜单该如何设置,然后就做菜
3、单框架,菜单框架的思路如下:1.输出主菜单,输入数字并返回选择的数字2.输出分菜单,使用分菜单菜单,通过switch(主菜单)实现,从主菜单中得到输入的数字,每一步case跳到各自的分支函数,运行完分函数后返回switch继续选择case目录3.最后一个case选项用来跳出分菜单,返回第一步18(2)然后就是对各个函数的初步理解,此时思路确定为通过指针变量的移动和结构体的应用添加修改数据,列出了一下几个需要用到的函数名称并进行声明和列出程序的头文件和需要用到的宏定义和两个全局变量:#include4、h>#include#include#include#include#defineNULL0#defineLENsizeof(structaddress)intmainmenu(void);intselectmenu(void);voidrun1(intb);voidrun2(intc,ADDR*head);ADDR*creat(void);ADDR*add_record(ADDR*head);ADDR*delete_record(A5、DDR*head);voidfind_record(ADDR*head);voiddisplay(ADDR*head);ADDR*sort(ADDR*head);ADDR*load(ADDR*head);ADDR*save(ADDR*head);ADDR*revise(ADDR*head);intn=0;ADDR*head;(3)最后就是完善函数,在单文件中运行调试,逐渐地修改函数。四、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等))1、增加数据函数add_record()声明AD6、DR*add_record(ADDR*head),以头指针为形参,并返回头指针。函数内定义结构体指针变量p1、p2。先为p1开辟一段空间,这段空间是一个这个结构体的结点的空间,提示用户循环输入名字和电话号码,并限制输入的号码为8位或11位,否则返回重新输入电话号码。当指针变量p1得到一段数据后就将它插入当前链表的首部,通过p1->next=head;head=p1;来实现,每次输入一段数据后全局变量n就自加1,显示当前有n个结点。当用户输入的名字为0时跳出循环,调用显示函数display(),在屏幕上输出当前数7、据个数以及数据。最后返回头指针给函数。2、查询记录函数find_record()声明voidfind_record(ADDR*head),为空类型,以头指针作为形参。定义字符数组name2,整形变量a、b,结构体指针变量p。提示用户输入想要查找的记录中的名字,如果头指针为空,提示用户“记录为空”,并提示“输入任意键继续”,跳出此函数,否则进入循环,另指针p指向链表表头,通过p指针后移查找和name2相同的p1->name,直到p->next为空,如果没有相同的记录,就提示用户“这里没有想找的记录”,并提示“输入8、任意键继续”,跳出此函数,如果有就输出用户查找的记录,并提示“输入任意键继续”,跳出此函数。3、修改记录函数revise()声明ADDR*revise(ADDR*head),以头指针为形参,并返回头指针。显示现在头指针中18的所有记录,提示用户输入想要修改的记录的名字,进入循环查找,找出记录并输出,询问“是否想修改它”,并提示输入Y或者N,如果输入Y,提示输入新的记录,最后显示修改后的
4、h>#include#include#include#include#defineNULL0#defineLENsizeof(structaddress)intmainmenu(void);intselectmenu(void);voidrun1(intb);voidrun2(intc,ADDR*head);ADDR*creat(void);ADDR*add_record(ADDR*head);ADDR*delete_record(A
5、DDR*head);voidfind_record(ADDR*head);voiddisplay(ADDR*head);ADDR*sort(ADDR*head);ADDR*load(ADDR*head);ADDR*save(ADDR*head);ADDR*revise(ADDR*head);intn=0;ADDR*head;(3)最后就是完善函数,在单文件中运行调试,逐渐地修改函数。四、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等))1、增加数据函数add_record()声明AD
6、DR*add_record(ADDR*head),以头指针为形参,并返回头指针。函数内定义结构体指针变量p1、p2。先为p1开辟一段空间,这段空间是一个这个结构体的结点的空间,提示用户循环输入名字和电话号码,并限制输入的号码为8位或11位,否则返回重新输入电话号码。当指针变量p1得到一段数据后就将它插入当前链表的首部,通过p1->next=head;head=p1;来实现,每次输入一段数据后全局变量n就自加1,显示当前有n个结点。当用户输入的名字为0时跳出循环,调用显示函数display(),在屏幕上输出当前数
7、据个数以及数据。最后返回头指针给函数。2、查询记录函数find_record()声明voidfind_record(ADDR*head),为空类型,以头指针作为形参。定义字符数组name2,整形变量a、b,结构体指针变量p。提示用户输入想要查找的记录中的名字,如果头指针为空,提示用户“记录为空”,并提示“输入任意键继续”,跳出此函数,否则进入循环,另指针p指向链表表头,通过p指针后移查找和name2相同的p1->name,直到p->next为空,如果没有相同的记录,就提示用户“这里没有想找的记录”,并提示“输入
8、任意键继续”,跳出此函数,如果有就输出用户查找的记录,并提示“输入任意键继续”,跳出此函数。3、修改记录函数revise()声明ADDR*revise(ADDR*head),以头指针为形参,并返回头指针。显示现在头指针中18的所有记录,提示用户输入想要修改的记录的名字,进入循环查找,找出记录并输出,询问“是否想修改它”,并提示输入Y或者N,如果输入Y,提示输入新的记录,最后显示修改后的
此文档下载收益归作者所有