数据结构课程设计报告 城市链表 学生通讯录管理系统 联系客服

发布时间 : 星期一 文章数据结构课程设计报告 城市链表 学生通讯录管理系统更新完毕开始阅读

数据结构课程设计报告

图2-8查询通讯记录 4. 删除通讯录记录

在主菜单下,用户输入4并回车,进行通讯录记录的删除。可以按三种方式进行删除操作:按序号、按学号和按姓名。图2-9是按学号删除的运行结果。

图2-9删除通讯记录 5. 显示通讯录信息

在主菜单下,用户输入5并回车,可以查看通讯录中的所有成员信息。运行结果如图2-10所示。

9

数据结构课程设计报告

图2-10 显示通讯录信息 六、用户手册

(1)本程序执行文件为“学生通讯录管理系统.exe”。

(2)进入本系统之后,随即显示系统主菜单界面,用户可在该界面下输入各子菜单前对应的数字并按回车键,执行相应子菜单命令。

(3)本系统没有提供直接修改通讯录信息的功能,可通过删除和插入操作完成修改功能。 七、调试报告

调试过程中insertYouXu createIncreLink 未声明变量。后来把对函数定义提到程序初始定义。发现直接将数值在调用的函数里定义、输入、输出,避免在主函数里传输数据,其这样就不易出现错误。查找算法,运行结果由于字母出错出现死循环。 通过这次课程设计使自己深刻认识到自身的不足。对线性表的插入、删除、查找等算法的实现有了更深一步的理解,受益多多。 八、程序清单 #include #include #include #define NULL 0

#define LEN sizeof(LNode)

int seat; //通讯录成员的序号 typedef struct LNode {//用于通讯录结点

int number; double telenum; char name[20];

10

数据结构课程设计报告

struct LNode *next;

}LNode,*LinkList; //1.创建链表

void insertYouXu(LNode*pn,LinkList p); LinkList createIncreLink()

{//创建一个存放通讯录成员的非递减有序表,返回头结点地址

LinkList L=(LinkList)malloc(LEN); //头结点 L->next=NULL; LinkList p; int num=1,number; double telenum; char name[20];

printf(\请输入学生学号、姓名和电话号码,建立通讯录,以'-1'为输入结束标志\\n\

printf(\请输入学号 %d: \

scanf(\

printf(\请输入姓名 %d: \

char temp=getchar();

gets(name);

printf(\请输入电话号码 %d: \scanf(\while(number>=0) {

p=(LinkList)malloc(LEN); //新结点 p->number=number;

p->telenum=telenum;

strcpy(p->name,name);

insertYouXu(L,p); //有序地插入新结点 num++;

printf(\请输入学号 %d: \

scanf(\

printf(\请输入姓名 %d: \

11

数据结构课程设计报告

temp=getchar(); gets(name);

printf(\请输入电话号码 %d: \ }

//2.从通讯录中删除第i个元素 void deleteElem(LinkList L,int i){ LinkList p=L;

int j=0;

while (p->next && j

if(!(p->next)) //判断i是否合法,i不能大于元素的个数,也不能小于等于0 { }

printf(\第%d个元素删除失败\\n\p=p->next;j++; scanf(\} return(L);

LinkList q=p->next; }

//3. 按姓名删除通讯者 int delName(LinkList L,char n[]) { 配

LinkList p=L->next;

seat=1;

if(L->next==NULL) printf(\该链表中没有元素,查找失败\\n\

12

p->next=q->next;

free(q); //释放删除的结点

int flag=0; //判断要删除的通讯者和通讯录中的姓名是否匹