1、程序主观图:添加记录:显示所有记录:删除一条记录:根据学号查找:对记录的排序:主要是对添加新纪录在链表中按升序排列,如新加李伟这条记录,对它采取排序,具体结果如下:进行排序:输入6即退出:3.2、概要设计:对该系统各种函数的定义在源代码给出,先给出函数的定义,然后给出菜单的执行函数,建立链表,并对各个功能的实现编出程序,直到调试成功为止。3.3、详细设计主要给出程序的流程图,如下所示:菜单函数:链表构造:按学号显示学生数据:删除记录:显示所有信息:排序:3.4、程序调试与测试结果:经过认真调试最终结果为正确。如图:3.5、结果分析:在编译过程中遇到很多困难,程序也基本上符合要求,但是有一点目前
2、还没解决,就是基于链表的修改还没掌握,因此花了很大的力气,但是还是没有完成,只好采取的修改方式为:删除,添加,排序的方法对链表中的元素进行修改。4、总结本系统基本实现了班级通讯录系统的典型功能,如添加查找等功能,而且具有较高的安全性。但是因为能力有限,还有部分功能未能完善,这些局限性都是有待逐步完善的方面。而且通过这次课程设计,我培养了自己对C编程的兴趣,进一步了解了数据结构的特色和,编程能力也有所提高,但仍存在许多不足,不能独自编写完整代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。5、参考文献1 宁正元,王秀丽.算法与数据结构.北京:清华大学出版社,20062 姜灵芝,余键
3、.C语言课程设计案例精编 北京:清华大学出版社,2008 6、附录该程序的源代码:#includeconio.hmalloc.hstring.hprocess.htypedef struct student char Number10; /学号 char name20; /姓名 char telephone20; /电话号码 char cellphone20; /手机号码 char QQ10; /QQ struct student *next;student;student *headLink; /链表表头指针void DesplayMenu(); /以下是函数声明void CreateHea
4、dLink();student *MallocNode();void GetInformation(student *t);void OutputInformation();void DesplayInfoByNumber();void DesplayOneNode(student *t);void InsertOneNode(student *t);void rangebyNumber();void DeleteNodeByNumber();void DesplayInfoByName();int choose; /用于接受用户的选择void main() /主函数 CreateHeadLi
5、nk(); DesplayMenu();void DesplayMenu() /显示菜单,根据用户的输入完成相应的功能 student *p; printf(n-请选择相应功能-nn); 1 显示所有学生信息 n 2 增加一条学生信息 n 3 删除一条学生信息 n 4 根据学号查找学生的信息 n 5 按学号高到低排序 n 6 退出 n请输入序号:n scanf(%d,&choose); /取得用户的选择 switch(choose) case 1: OutputInformation(); break; case 2: p=MallocNode(); /先申请一个新结点 GetInformat
6、ion(p); /要求用户输入信息到新结点中 InsertOneNode(p); /将新结点加到链表中 case 3: DeleteNodeByNumber(); case 4: DesplayInfoByNumber(); case 5: rangebyNumber(); case 6: free(headLink); /先释放内存空间 exit(1); default: /递归调用void CreateHeadLink() /建立链表表头 p=(student*)malloc(sizeof(student); headLink=p; p-next=NULL;student *MallocN
7、ode() /申请一个新结点,并将其初始化 int i; if(p=NULL) return NULL; for(i=0;iNumber);请输入姓名:name);请输入电话:telephone);请输入手机号:cellphone);请输入QQ:QQ);void InsertOneNode(student *t) /在链表的结尾处增加一个结点 p=headLink; while(p-next) p=p-next;next=t;void DesplayInfoByNumber() /根据学号显示该学号学生的信息 char good10; char flag=0; p=headLink-对不起,现
8、在没有学生信息! return;,good);学号t姓名t电话t手机号tQQtn while(p) if(strcmp(p-Number,good)=0) DesplayOneNode(p); flag=1; if(!flag)对不起,不存在序号为 %s 的学生nvoid DesplayOneNode(student *t) /输出一个学生结点的信息%st%stnvoid DeleteNodeByNumber() /根据学号删除该学生信息 student *p,*q;请输入要删除的学生序号: q=headLink- while(q) if(strcmp(q-next=q- free(q); q=q-不存在这学生nvoid OutputInformation() /显示所有学生的信息现在没有任何信息,请先输入学生信息nnvoid rangebyNumber() /根据输入的学号,按低到高排序 student exchange,*r,*p,*q; r=headLink- if(r=NULL)现在还没任何信息,请先输入学生信息n p
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1