




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
苏 州 市 职 业 大 学课程设计说明书 名称 计算机语言C课程设计-通信录 . 2011 年 6月20 日 至 2011年6 月26 日 共1 周院 系 计算机工程系 .班 级 XXXXXXXX .姓 名 XXXXXX .学 号 XXXXXXXXXX .系主任 . 教研室主任 . 指导教师 XXXXXX .目 录目 录2一、课程设计的目的与要求3二、题目说明42.1程序开发背景42.2开发工具介绍4三、总体设计53.1软件模块结构图53.2系统流程图:6四、详细说明124.1 主界面124.2新建并输入通讯录134.3添加记录154.4按姓名查找通讯地址174.5删除一个人的记录194.6显示通讯录21五、遇到的问题和解决方法23六、课程设计总结24七、参考文献25附录(源程序代码)26一、课程设计的目的与要求 利用计算机语言C课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助掌握编程、调试的基本技能。本人根据选题表确定的题目为:通讯录。1课程设计步骤:(1)明确程序功能;(2)设计合理的程序结构;(3)编程简练,程序功能齐全,能正确运行,能解释代码;(4)说明书、流程图要清楚;(5)课题完成后必须按要求提交课程设计说明书,回答教师提问。在课程设计过程中要求学生:重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;按时到机房上机,并接受教师的检查。认真编写课程设计报告。课程设计一般由一位同学独立完成。经向教师申请并认可,可以由2名左右同学合作完成一个课题。全体成员应共同协作完成选题,确定设计思想,进行功能模块划分,然后由组长为各成员分配任务。整个设计期间,组长负责协调工作。各小组成员明确自己的任务后,应独立完成各自模块的设计、编码和调试,独立完成课程设计说明书。小组成员要理解同组其他成员设计的模块,熟练操作本组设计。2 考核方式和成绩评定考核分为两个部分:(1)程序运行情况:按规定时间到机房运行程序,由老师检查运行情况(2)课程设计报告:是否按规定书写课程设计要求的各项内容课程设计成绩采用百分制:100%=平时(20)上机检查(30%)+课程设计报告(50%)二、题目说明该程序是为通信录数据定义类型和定义通信录变量, 从而实现通讯录的存取、显示、删除记录、查询记录等功能。2.1程序开发背景由于通讯录涉及到多个不同类型的数据组合成一个有机的整体,故考虑到使用结构体来表述。又链表能够动态地进行存储分配的一种结构,根据需要开辟新的内存,没有浪费系统的内存资源,故采用链表结构。由于系统比较复杂,采用模块化方式可以大大减少编译时的困难。整个程序包括主函数在内共使用了13个函数,分别实现了,创建、查找、删除、存储、读取等功能。2.2开发工具介绍Visual C+6.0由Microsoft开发, 它不仅是一个C+编译器Windows操作系统的可视化集成开发环境(integrated development environment,IDE)Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。所以说,Visual C+6.0是我们编译C语言的重要工具,它比Turbo C(另一种C语言编辑器)的一个最大的优点是它支持汉语,它以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。因此很受大家欢迎。 Microsoft Visual C+,(简称Visual C+、MSVC、VC+或VC)微软公司的C+开发工具,具有集成开发环境,可提供编辑C语言,C+以及C+/CLI等编程语言。VC+整合了便利的除错工具,特别是整合了微软视窗程式设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C+ 2010。3三、总体设计通讯录删除创建存储退出查询插入显示3.1软件模块结构图 图3.1-13.2系统流程图:3.2.1创建并输入通讯录开始输入1输入姓名等 结束 图3.2.1-13.2.2添加记录图3.2.2-2输入姓名输入编号输入 年龄输入电话输入地址输入电邮结束开始输入2 3.2.3按姓名查询通讯地址开始输入3输入姓名是否有此人YN查无此人输出信息结束图3.2.3-1 3.2.4删除一个人的记录开始输入4输入姓名 是否有 此人成功删除查无此人结束 图3.2.4-13.2.5存储信息开始输入信息存储信息 结束 图3.2.5-1 3.2.6显示开始输入5显示现有的通讯录结束 图3.2.6-13.2.7退出开始结束输入0 图3.2.7-1四、详细说明 4.1 主界面功能简介这个模块是用户最先见到的界面,它是整个程序的门面,就像一本书的目录,也就是说它是整个程序的目录,目录的功能就是方便用户了解整个程序的大概,从而方便用户下面一系列的操作。界面截图 图4.1-1关键代码与描述 struct address char num30; char name50; char age10; char phone50; char add50; char email50; struct address * next;本段代码最主要的是将姓名、编号、年龄、地址、电子邮件、电话号码等定义成了一个结构体struct address,它定义在函数的外面,它的使用范围是在全局以便所有的函数都可以使用。它的里面存放通讯录里面的信息。int menu_select() int a; char c20; printf(t请选择功能:nn); printf(t1.新建并输入通讯录n); do printf(t请输入数字选择对应的功能:); scanf(%d,&a); gets(c); 本段代码通过若干个printf来实现了主界面的基本的构造,使界面看起来简单整洁,让人一看就懂,从而方便操作,第二部分的代码通过scanf函数来输入数字来选择对应的功能。4.2新建并输入通讯录功能简介这个模块功能是用户首次使用该程序时,用来第一次输入新建并输入通讯录的。界面截图 图4.2-1关键代码与描述 inputs(t请输入姓名(输入为空时结束):,info-name,49); if(!*info-name) free(info); printf(nnt输入通讯记录结束!nn); return; inputs(t请输入编号:,info-num,29); inputs(t请输入年龄:,info-age,9); inputs(t请输入电话:,info-phone,49); inputs(t请输入地址:,info-add,49); inputs(t请输入电邮:,info-email,49);本段代码是新建并输入通讯录的,首先通过input函数输入了姓名,通过指针指向info-name,就将姓名存储在info-name这个地址里了,接着判断输入的姓名是否为空,若为空,输入结束,若不为空就再输入编号、年龄、电话、地址、电邮等信息,同时也用到了指针,指针是C语言中最重要的部分之一,一些程序因为运用到了指针而变的简单了,所以说指针很重要。34.3添加记录功能简介这个模块功能是供用户使用该程序后又添加新的通讯录信息的。界面截图 图4.3-1 图4.3-2关键代码与描述 struct address * info; while(1) info=(struct address *)malloc(sizeof(struct address); if(!info) printf(t内存不足!n); return; inputs(t请输入姓名(输入为空时结束):,info-name,49); if(!*info-name) free(info); printf(nnt输入通讯记录结束!nn); return; inputs(t请输入编号:,info-num,29); inputs(t请输入年龄:,info-age,9); . head=put_in(info,head); 本段代码添加新纪录用的,首先通过sizeof来计算struct address 的长度,若长度不符合要求则显示“内存不足”,当长度符合要求时,继续操作,接着通过input函数输入姓名,将姓名通过指针指向info-name,这样就将姓名存储在这个地址里,接着判断输入的姓名是否为空,若为空,则输入结束,若不为空,就再输入编号、年龄、电话、地址、电邮等信息,这样添加记录的操作就结束了。4.4按姓名查找通讯地址功能简介这个模块功能是方便用户查找通讯录中的信息的。界面截图 图4.4-1 图4.4-2 图4.4-3 关键代码与描述load(filename); info=head; inputs(t请输入你想要找的姓名:,name,19); while(info) if(!strcmp(name,info-name) return info; info=info-next; return NULL; void search() struct address * info; if(info=find() printf(nnt查询结果为:nn); printf(t编号:%sn,info-num); printf(n); else printf(t查无此人!nn); 本段代码是按照姓名查找通讯录里面的内容的,首先通过load导入通讯录里面的已存储的信息到内存上,接着通过input函数输入要查找的姓名,再接着用strcmp 函数将输入的姓名与通讯录上已存储的姓名对比查找,直到找到为止,若找不到,则显示“查无此人”,若找到了则打印查询的结果,也就是将编号、姓名等信息显示出来。44.5删除一个人的记录功能简介这个模块的功能是让用户删除已经输入好的通讯录信息的。界面截图 图4.5-1 图4.5-2 图4.5-3关键代码与描述void del() struct address * info,*pbefore=NULL,*p; char name20,filename80=love; load(filename); if(!head)return; inputs(t请输入要删除的姓名:,name,19); info=tell(name); if(info) p=head; while(p!=info) pbefore=p; p=p-next; if(p=head) head=head-next; else pbefore-next=p-next; free(info); resave(filename); printf(t已成功删除名字为%s的通讯记录!n,name); else printf(t查无此人!n); 本段代码是为了成功删除通讯录信息而设计的,整体是一个删除函数,首先通过load导入通讯录里面的已存储的信息到内存上,然后要求用户输入要删除的姓名,然后通过while循环结构来找出内存上的该人的信息,若找到该人,就删除其信息。若没有找到这个人,则会返回“查无此人”。4.6显示通讯录功能简介这个模块的功能是显示通讯录中的信息供用户看的。界面截图 图4.6-1 图4.6-2关键代码与描述void display(struct address * info) printf(t%2d.编号:%sn,+i,info-num);printf(t 姓名:%sn,info-name); printf(t 年龄:%sn,info-age); printf(t 电话:%sn,info-phone); printf(t 地址:%sn,info-add); printf(t 邮编:%sn,info-email); printf(n);本段代码是用来显示通讯录里面的信息的,用到了display函数,依次输出了编号、姓名、年龄、电话、地址、电子邮箱等相关的通讯录的信息。五、遇到的问题和解决方法1在编程序的时候,遇到的最多的问题就是标点,花括号的使用问题,不是多了,就是少了,总是问题多多,解决这种问题的最好的办法就是细心,细心,再细心,要记住花括号是成对出现的,好要记住一些特殊的标点的用法。2在编程的过程中等号的两边的类型不一样了,导致出错了,还有运算的时候,类型也是要一样的,像这种问题,我们要多注意,再加上平时多多练习,就会统统避免。3在函数方面也出现了问题,总是先调用了定义的函数,导致了程序出错了,通过查书本知道函数要先定义再调用,切记,切记。4在编程中,我还发现自己对C语言中的一些小的知识点掌握的不够深刻,导致在遇到问题的时候,犹犹豫豫,下不定主意,于是我有把那些知识点重新认真的复习一番。5.在此次编程中最大的问题就是指针了,由于我之前对指针的认知很浅薄,导致了编程的速度受阻,在老师,同学和查阅了大量的知识后,才有所进步。对指针,数组,二维数组等有了更深的认知,收获颇丰。六、课程设计总结通过对这个课程设计任务的完成,我对C语言的学习有了进一步的提高。第一次对这种比较大的程序的设计,遇到了许多的困难。而以前在编写小程序时能够避免的小错误(如分号等)在这次编写中出现了很多。在设计实现要求的一些功能时碰到了很多的障碍,但最后在同学和朋友的帮助下终于还是实现了。这也说明编程的能力就是在程序的一个个错误的修正中得到提高,程序亦会随之趋近于完善。C语言是计算机编程语言中最基础的语言,务必要熟练掌握。很珍惜有这样一个机会自己编这么大程序,收获多多。在今后的学习中,也要多多练习编写这样的程序,使自己的能力得到更大的进步。七、参考文献【1】 实用C语言程序设计教程 李金祥等编 中国电力出版社 2010【2】C语言程序设计谭浩强等编 科学出版社【3】HTTP://u/20070112/09/35186e5a-0d94-4ea6-9b72-c5463cb3d1f3.html【4】HTTP://viewnews-16/ 附录(源程序代码)# include # include # include # include struct address char num30; char name50; char age10; char phone50; char add50; char email50; struct address * next;struct address *head;int i; int menu_select() int a; char c20; printf(t请选择功能:nn); printf(t1.新建并输入通讯录n); printf(t2.添加记录n); printf(t3.按姓名查找通讯地址n); printf(t4.删除一个人的记录n); printf(t5.显示通讯录n); printf(t0.退出n); do printf(t请输入数字选择对应的功能:); scanf(%d,&a); gets(c); while(a5); return a; void inputs(char * prompt,char *s,unsigned count) char p255; do printf(prompt); gets(p); if(strlen(p)count) printf(t输入越界了!n); while(strlen(p)count); strcpy(s,p);struct address * put_in(struct address * i,struct address * head) struct address * pbefore ,* p; if(head=NULL) head=i; head-next=NULL; return head; p=head; pbefore=NULL; while(p) if(strcmp(p-name,i-name)next; else if(p=head) i-next=head; head=i; return head; pbefore-next=i; i-next=p; return head; pbefore-next=i; i-next=NULL; return head; void enter() struct address * info; while(1) info=(struct address *)malloc(sizeof(struct address); if(!info) printf(t内存不足!n); return; inputs(t请输入姓名(输入为空时结束):,info-name,49); if(!*info-name) free(info); printf(nnt输入通讯记录结束!nn); return; inputs(t请输入编号:,info-num,29); inputs(t请输入年龄:,info-age,9); inputs(t请输入电话:,info-phone,49); inputs(t请输入地址:,info-add,49); inputs(t请输入邮编:,info-email,49); head=put_in(info,head); void save() struct address *info; FILE *fp; char filename80=love; if(head) if(!(fp=fopen(filename,wb) printf(t发生异常,请重试!n); exit(0); printf(t正在保存文件!n); info=head; while(info) fwrite(info,sizeof(struct address),1,fp); info=info-next; fclose(fp); else printf(t目前没有通讯信息可以保存!nn);void display(struct address * info) printf(t%2d.编号:%sn,+i,info-num);printf(t 姓名:%sn,info-name); printf(t 年龄:%sn,info-age); printf(t 电话:%sn,info-phone); printf(t 地址:%sn,info-add); printf(t 邮编:%sn,info-email); printf(n); void load(char * filename) struct address *info,*pbefore=NULL; FILE *fp; while(head) info=head; head=head-next; free(info); if(!(fp=fopen(filename,rb) printf(t发生异常,请重试!n); return; printf(t正在装入文件,请等待!n); info=(struct address *)malloc(sizeof(struct address); if(!info) printf(t内存不足!n); return; head=info; while(!feof(fp) if(fread(info,sizeof(struct address),1,fp)!=1) break; info-next=(struct address *)malloc(sizeof(struct address); if(!info-next) printf(t内存不足!n); return; pbefore=info; info=info-next; pbefore-next=NULL; free(info); printf(t已成功装入文件!nn); fclose(fp);void list() struct address * info; char filename80=love; load(filename); i=0; info=head; while(info) display(info); info=info-next; printf(nn); struct address * find() struct address * info; char filename80=love; char name20; while(head) info=head; head=head-next; free(info); load(filename); info=head; inputs(t请输入你想要找的姓名:,name,19); while(info) if(!strcmp(name,info-name) return info; info=info-next; return NULL; void search() struct address * info; if(info=find() printf(nnt查询结果为:nn); printf(t编号:%sn,info-num); printf(t姓名:%sn,info-name); printf(t年龄:%sn,info-age); printf(t电话:%sn,info-phone); printf(t地址:%sn,info-add); printf(t邮编:%sn,info-email); printf(n); else printf(t查无此人!nn); struct address * tell(char * name) struct address * info; info=head; while(info) if(!strcmp(name,info-name) return info; info=info-next; return NULL; void resave(char
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全国中小学校青少年禁毒知识竞赛题库及答案
- 工程造价优化与调整课件
- 2025版个人二手房买卖合同书(含房产证过户)
- 2025版对讲门系统集成与信息安全保障合同
- 2026届内蒙古自治区呼和浩特市中考押题语文预测卷含解析
- 疫情家长会初中课件
- 从四季美景中我学到了语文800字14篇
- 疫情下心理主题班会课件
- 畜禽兽医政策解读课件
- 农业信息技术服务与支持合同协议
- 中粮集团朝阳大悦城招商手册
- 钢板仓施工方案
- 现代制造技术整本书课件完整版电子教案(最新)
- GB∕T 16762-2020 一般用途钢丝绳吊索特性和技术条件
- pcba检验标准最完整版
- 《立定跳远》说课稿
- 北京福赛尔V6891、V6851控制器(联动型)的调试
- 中航信离港系统培训(3)
- 第九章 解析空中三角测量基础
- 苏州园区时尚舞台二期项目(简介)
- 脑机接口项目工程管理分析参考
评论
0/150
提交评论