ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:319.58KB ,
资源ID:7834625      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7834625.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(同学录的设计与实现说明书.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

同学录的设计与实现说明书.docx

1、同学录的设计与实现说明书*实践教学* 兰州理工大学计算机与通信学院2011年春季学期 面向对象 课程设计说明书 题 目:同学录的设计与实现 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 面向对象课程设计说明书目录一、 序言 3二、 摘要 3三、 系统总体设计 41 设计思路 42 系统总体框图 43 系统流程图 5四、 详细设计 61 输出函数功能及流程图 62 创建函数及流程图 73 删除函数及流程图 74 增加函数及流程图 85 修改函数及流程图 86 排序函数及流程图 87 分类查找函数及流程图 88 释放内存函数及流程图 109 保存函数及流程图 1110 综合操作函数及流程图

2、 12五、 总结 13六、 参考文献 13七、 致谢 13八、 附录 13程序源代码 13一、 序言随着现代科技的发展,计算机技术已经越来越受到人们的青睐,计算机已经不是什么高科技产品,伴随的人们生活水平的提高,计算机已经走入了寻常百姓家。计算机的发展得益于C语言等计算机语言的发展,运用计算机语言,我们可以实现各种各样的功能。就我们现在所学的知识而言,我们也可以运用C语言(C+)实现一些简单的管理系统,如:学生成绩管理系统、图书管理系统、通讯录等。此次课程设计,我所设计的是运用C语言(C+)做一个同学录,主要实现显示、查找、修改、插入、追加、删除、排序、输出等功能。由于与顺序结构相比较,链表比

3、较方便插入和删除操作,所以本同学录的主要实现方式使用的是链表1和文件2,参考资料为谭浩强的C语言程序设计(清华大学出版社)。为了使得程序条理清晰,模块化显著, 同学录的基本功能的实现使用的是线性表和文件相结合的方式。二、 摘要 该同学录管理程序主要实现以下几个功能: (1). 增加联系人; (2). 查找联系人; (3). 对联系人按姓名排序; (4). 修改联系人信息; (5). 删除联系人; (6). 保存联系人; (7). 显示单个联系人; (8). 创建并保存同学录文件; (9). 打开同学录文件; (10).安全退出并释放内存空间。 关键字:同学录、链表、线性表、联系人、排序、三、

4、系统总体设计1 设计思路通过对塞班S60v5平台手机的了解,我们知道手机通讯录的基本功能即为:添加、查找、排序、删除、修改、保存、打开等,这些同样适用于同学录。又因为程序是用C语言(C+)编写,同时要在电脑上显示运行,所以必须创建一个联系人数据存储文件(同学录.dat)来保存写入的联系人信息,这就需要用程序能够对所录入的信息在系统外存中开辟一个空间进行保存,以便于在以后需要的时候直接打开调用。整个程序是利用链表和文件的形式进行编写的。 2 系统总体框图系统框图如图1所示3 系统流程图实现对一级菜单:创建同学录、按名字进行排序、综合操作、保存、打开、退出功能的控制,分别调用各个子函数。程序流程图

5、如图2所示。四、 详细设计1 输出函数功能及流程图输出函数实现同学录内容的输出,通过指针文件调用头函数来实现。其流程图如图3所示。2 创建函数及流程图通过定义两个指针数组,利用链表对函数进行调用,实现对同学录函数的创建。其流程图如图4所示。3 删除函数及流程图通过查找自己不需要的姓名,程序直接将其删除,在运行期间,程序会自动判断该内容是否在同学录中,若存在则将其直接删除,若不存在则输出“名字不存在本同学录中”。其流程图如图5所示。4 增加函数及流程图为完善同学录的功能,在不改变已存的同学录内容的前提下,程序从内存中另外开辟空间进行对同学录的补充,实现增加功能。函数流程图如图6所示。5 修改函数

6、及流程图对写入错误的信息进行修改,通过键盘输入的选项,程序自动进行查找并提示用户输入修改的内容。函数流程图如图7所示。6 排序函数及流程图该模块实现的是对无序的信息进行按名字排序,先对每个名字的首字母进行比较,相同则进行下一个字母的比较,直到排序完成。函数流程图如图8所示。7 分类查找函数及流程图流程图如图9所示。8 释放内存函数及流程图为节省系统内存,在进行完一次操作以后将会对其所开辟的空间进行释放。函数流程图如图10所示。9 保存函数及流程图将所有联系人信息写入函数后,程序会生成一个文件来保存联系人信息,从而可以在关闭VC环境的情况下,依然可以在系统中找到该文件,实现了文件保存功能。流程图

7、如图11所示。10 综合操作函数及流程图综合操作包括分类查找、单个显示、增加、删除、修改功能,是对整个同学录进行的比较全面系统的操作,其中分类查找和修改又包括下一级菜单。分类查找包括按姓名、职业、手机、email、地址查找;修改包括按姓名、职业、手机、email、地址、全部修改进行修改。流程图如图12所示。五、 总结本程序是运用链表、结构体、文件指针以及指针数组的综合应用来实现的,能够实现的功能为对联系人的添加、查找、排序、删除、修改、保存和生成联系人数据文件(同学录.dat)。我通过对程序的调整、修改,学习到了课堂上没有学到的知识,丰富了自己的知识面,加深了对C语言的了解和认识。在编写和修改

8、程序的过程中,学习到了链表、结构体、文件指针的应用。在这期间,遇到了很多困难,由于本程序很长(700余行代码),修改起来很困难,一处逻辑错误就要查找很长时间,这就给此次课程设计带来了一定的困难。但是我没有放弃,在老师和同学的帮助下,克服了一个个的困难,最终将程序调试完成,运行时也没有警告和错误了,但是该程序还是存在着一些不足的地方,功能方面并没有达到我预期的目的,例如没有实现我预想的图形化界面,没有再加入几个辅助功能模块的。由于时间有限,再加上我的才学疏浅,最终提交的同学录管理系统还是不尽完美,我会在本次课程设计结束后将其进一步完善,从而更深层次的学习C语言。六、 参考文献1. 谭浩强,张基温

9、C语言程序设计教程M.第3版.高等教育出版社,2006;2. 顾治华,陈天煌C语言程序设计M.北京:机械工业出版社,2007;3. 戴志诚,赵国峰.JSP信息化系统建设案例M.北京:人民邮电出版社,2006.12;4. 侯风巍,杨永田数据结构要点精析(C语言版).北京航空航天大学出版社,2008;5. 孙鑫C+视频教程.来自互联网;6. 其他视频教程。七、 致谢首先,我要感谢我的课程设计老师赵付青老师,谢谢赵老师对我的谆谆教导,为我做课程设计奠定了理论基础。另外,感谢赵老师在我做课程设计的过程中给我提出的宝贵意见和建议,我根据赵老师的建议对我的程序进行了改进,从而使程序更加完善。最后我还要感谢

10、,在课程设计的这两周给我帮助的同学们,谢谢他们给我鼓励和支持!八、 附录程序源代码#include #include #include #include #define NULL 0#define LEN sizeof(struct TXL_project)int n;struct TXL_project char Name30; char Work30; char HandSet30; char QQ30; char Address30; struct TXL_project *next;struct TXL_project *ShiFang(struct TXL_project *head

11、);/释放内存函数声明/创建函数/struct TXL_project *creat(void) system(color 5E); struct TXL_project *head,*p1,*p2; char Name20; n=0; p1=(struct TXL_project *)malloc(LEN); p2=p1; printf(请输入同学录的内容!n姓名输入为0时则表示创建完毕!nn); printf(n请输入姓名:t); gets(Name); if(strcmp(Name,0)!=0) strcpy(p1-Name,Name); printf(请输入职业:t); gets(p1

12、-Work); printf(请输入手机号码:t); gets(p1-HandSet); printf(请输入QQ号码:t); gets(p1-QQ); printf(请输入地址:t); gets(p1-Address); head=NULL; while(1) n=n+1; if(n=1) head=p1; else p2-next=p1; p2=p1; printf(n请输入姓名:t); gets(Name); if(strcmp(Name,0)=0) break; else p1=(struct TXL_project *)malloc(LEN); strcpy(p1-Name,Name

13、); printf(请输入职业:t); gets(p1-Work); printf(请输入手机号码:t); gets(p1-HandSet); printf(请输入QQ号码:t); gets(p1-QQ); printf(请输入地址:t); gets(p1-Address); p2-next=NULL; return(head); else return 0; /输出函数/void print(struct TXL_project *head) struct TXL_project *p; system(cls); if(head!=NULL) p=head; printf(本同学录现在共有%

14、d人:n,n); printf(姓名-职业-手机号码-QQ号码-地址-n); printf(=n); do printf(%-10s ,p-Name); printf(%-18s ,p-Work); printf(%-14s ,p-HandSet); printf(%-10s ,p-QQ); printf(%-30s ,p-Address); printf(n); p=p-next; while(p!=NULL); printf(=n); else printf(同学录为空,无法输出信息!n);/删除函数/struct TXL_project *delet(struct TXL_project

15、 *head) struct TXL_project *p1,*p2; char Name30; if(head=NULL) printf(同学录为空,无法删除!n); return(head); printf(请输入要删除的名字:t); gets(Name); p1=head; while(strcmp(p1-Name,Name)!=0&p1-next!=NULL) p2=p1; p1=p1-next; if(strcmp(p1-Name,Name)=0) if(p1=head) head=p1-next; else p2-next=p1-next; printf(已成功删除:%sn,Nam

16、e); system(pause); free(p1); n=n-1; else printf(%s不在本同学录中,无需删除!n,Name); system(pause); return(head);/增加函数/struct TXL_project *insert(struct TXL_project *head) struct TXL_project *p0,*p1,*p2; char Name20; p1=head; printf(请输入增加的内容:n); printf(n请输入姓名:t); gets(Name); if(strcmp(Name,0)=0) printf(姓名不能为0,添加

17、失败!n); system(pause); return(head); else p0=(struct TXL_project *)malloc(LEN); strcpy(p0-Name,Name); printf(请输入职业:t); gets(p0-Work); printf(请输入手机号码:t); gets(p0-HandSet); printf(请输入QQ号码:t); gets(p0-QQ); printf(请输入地址:t); gets(p0-Address); n=n+1; if(head=NULL) head=p0; p0-next=NULL; return(head); else

18、while(strcmp(p0-Name,p1-Name)0&(p1-next!=NULL) p2=p1; p1=p1-next; if(strcmp(p0-Name,p1-Name)Name,p1-Name)=0) if(head=p1) head=p0; else p2-next=p0; p0-next=p1; else p1-next=p0; p0-next=NULL; return(head); /显示函数/struct TXL_project *xianshi(struct TXL_project *head) struct TXL_project *p1,*p2; char Nam

19、e30; int m; if(head=NULL) printf(同学录为空,无法显示!n); return(head); p1=head; m=0; printf(请输入需要显示人的姓名:); gets(Name); while(p1!=NULL) while(strcmp(p1-Name,Name)!=0&p1-next!=NULL) p2=p1; p1=p1-next; if(strcmp(p1-Name,Name)=0) m+; printf(%s的通讯信息如下:n,Name); printf(姓名-职业-手机号码-QQ号码-地址-n); printf(=n); printf(%-10

20、s ,p1-Name); printf(%-18s ,p1-Work); printf(%-14s ,p1-HandSet); printf(%-10s ,p1-QQ); printf(%-30s ,p1-Address); printf(n); printf(=n); p1=p1-next; if(m=0) printf(nt此人不在本同学录中!n); return(head);/修改函数/struct TXL_project *xiugai(struct TXL_project *head) struct TXL_project *p1,*p2; char num10; char Name

21、30; char Name130; char Work30; char HandSet30; char QQ30; char Address30; if(head=NULL) printf(同学录为空,无法修改!n); return(head); printf(请输入需要修改的姓名:); gets(Name); p1=head; while(strcmp(p1-Name,Name)!=0&p1-next!=NULL) p2=p1; p1=p1-next; if(strcmp(p1-Name,Name)=0) printf(请选择修改的内容:n); printf(*n); printf(* 1

22、姓名 *n); printf(* 2 职业 *n); printf(* 3 手机 *n); printf(* 4 QQ号码 *n); printf(* 5 Address *n); printf(* 6 全部修改 *n); printf(*n); printf(请输入您的选择:t); gets(num); system(cls); switch(*num) case 1: printf(请重新输入姓名:); gets(Name); strcpy(p1-Name,Name); break; case 2: printf(请重新输入职业:); gets(Work); strcpy(p1-Work,

23、Work); break; case 3: printf(请重新输入手机号码:); gets(HandSet); strcpy(p1-HandSet,HandSet); break; case 4: printf(请重新输入QQ号码:); gets(QQ); strcpy(p1-QQ,QQ); break; case 5: printf(请重新输入地址:); gets(Address); strcpy(p1-Address,Address); break; case 6: printf(请重新输入姓名:); gets(Name1); strcpy(p1-Name,Name1); printf(

24、请重新输入职业:); gets(Work); strcpy(p1-Work,Work); printf(请重新输入手机号码:); gets(HandSet); strcpy(p1-HandSet,HandSet); printf(请重新输入QQ号码:); gets(QQ); strcpy(p1-QQ,QQ); printf(请重新输入地址:); gets(Address); strcpy(p1-Address,Address); break; default: printf(操作错误,此项不存在!n); system(pause); break; else printf(此人未在本同学录中n无

25、法为其修改信息n请先添加后再做修改!n); system(pause); return(head);/排序函数/struct TXL_project *PaiXu(struct TXL_project *head) struct TXL_project *p1,*p2; int i,j; struct TXL_project1 char Name30; char Work30; char HandSet30; char QQ30; char Address30; ; struct TXL_project1 px200; struct TXL_project1 temp; if(head=NULL)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1