C语言课程设计报告通讯录.doc

上传人:仙人指路1688 文档编号:2384887 上传时间:2023-02-17 格式:DOC 页数:44 大小:2.21MB
返回 下载 相关 举报
C语言课程设计报告通讯录.doc_第1页
第1页 / 共44页
C语言课程设计报告通讯录.doc_第2页
第2页 / 共44页
C语言课程设计报告通讯录.doc_第3页
第3页 / 共44页
C语言课程设计报告通讯录.doc_第4页
第4页 / 共44页
C语言课程设计报告通讯录.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《C语言课程设计报告通讯录.doc》由会员分享,可在线阅读,更多相关《C语言课程设计报告通讯录.doc(44页珍藏版)》请在三一办公上搜索。

1、课程设计2009 2010学年第二学期设计题目 通讯录 院(系) 数理学院 专 业 数学与应用数学 课程名称程序设计语言课程设计课程代码B704010设计题目1 算术练习2 个人收支管理3 通讯录4 成绩记录簿5 图书借阅管理6 日程表管理题目序号3设计时间2010年 7 月5 日2010 年 7 月 15 日系(院)理学院专业数学与应用数学班级09*111一、 课程设计任务(条件)、具体技术参数(指标)1. 在指导书提供的课程设计题目中选择一题或自选(但需经过指导教师认可)2. 每个题目限一人完成,题目选定后不可更换。3. 用户提供的主操作界面应该方便用户的操作。4. 最后提交的课程设计成果

2、包括:a)课程设计报告电子稿。c)源程序文件。d)可执行程序文件。二、 对课程设计成果的要求(包括课程设计说明书、图纸、图表、实物等软硬件要求)1. 分析课程设计题目的要求;2. 写出详细设计说明;3. 编写程序代码,调试程序使其能正确运行;4. 设计完成的软件要便于操作和使用,有整齐、美观的使用界面;5. 设计完成后提交课程设计报告和源代码文件的电子文档。三、 课程设计工作进度计划:第一天 选择课程设计题目,分析课题的要求,确定设计方案;第二天 按功能模块编写详细设计说明和程序流程图;第三六天 编写与调试程序;第七天 写课程设计报告; 第八天 提交课程设计报告并答辩; 四、 主要参考资料 1

3、谭浩强C程序设计(第三版)北京:清华大学出版社,2005 2谭浩强C程序设计题解与上机指导(第三版)北京:清华大学出版社,20053 Herbert SchildtC语言大全(第四版)北京:电子工业出版社, 20044程序设计语言课程设计指导书指导教师(签名):黄飞鸿 教研室主任(签名):黄飞鸿 2010年 7 月5日 2010年 7 月 5 日目录 摘要 1概述41.1课程设计目的41.2课程设计要求41.3设计要求具体说明42详细设计说明42.1总体设计方案42.2程序描述42.3功能结构42.4主要模块描述42.5采用的算法43程序测试54课程设计总结55软件使用说明56附录(参考文献,

4、原代码:)5摘要:一个良好的通讯录能够方便用户增/删/查/改信息.获取用户。要的信息. 汇编语言也是计算机应用中重要的语言之一. 用汇编语言程序代码编写通讯录, 理解和掌握复杂的汇编语言应用程序的编程.本程序将主要完成的功能为姓名查询模块: 查询,输入姓名可以查询该人其他信息;在屏上提示:选择“1”:输入姓名,按姓名查询,显示查询结果;选择“0”:结束.通过此次设计巩固和加深子程序调用、参数传送、BIOS功能调用INT 10H和宏定义;将课本上的子程序调用和宏定义等有关知识和实际应用有机的结合起来,提高分析和解决实际问题的能力;通过对通讯录汇编语言程序代码的阅读、修改、设计,理解和掌握复杂的汇

5、编语言应用程序的编程,从而提高自身实践编程能力。关键词 汇编语言程序 BIOS功能调用 INT 10H 宏定义 Abstract:A good address book can be user-friendly by / delete / search / to information. User access. To the information. Compilation of computer language is the language of one of the most important. Assembly language code with the preparation

6、 of contacts, understanding and mastering complex assembly language application programming. This procedure will be mainly complete by the name of enquiry modules: For enquiries, enter the name of the person can find other information; choose 1: Enter the name, by name enquiries, search results; sea

7、rch results; option 0 : the end. Through this design to consolidate and deepen the subroutine calls, send parameters, BIOS function calls INT 10H and Acer definition of textbooks on the subroutine calls and Acer Definition of the relevant knowledge and practical application of combining organic and

8、improve analysis and the ability to solve practical problems through the contacts of the assembly language code to read, edit, design, understand and master the complex assembly language application programming, Improve their own practice of programming capacity.Key words assembly language program B

9、IOS function calls INT 10H Acer definition1概述1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言课程后进行的一次全面的综合练习。本课程设计的目的和任务:1. 巩固和加深学生对C语言课程的基本知识的理解和掌握;2. 掌握C语言编程和程序调试的基本技能;3. 利用C语言进行基本的软件设计;4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力。1.2课程设计要求1. 分析课程设计题目的要求;2. 写出详细设计说明;3. 编写程序代码,调试程序使其能正确运行;4. 设计完成的软件要便于操

10、作和使用,有整齐、美观的使用界面;5. 设计完成后提交课程设计报告和源代码文件的电子文档。1.3设计要求具体说明 基本功能:a) 添加个人信息b) 查询个人信息c) 删除个人信息d) 修改个人信息e) 信息排序f) 输出全部信息 拓展功能: 采用文件形式对通讯录进行操作,包括:a) 写入文件b) 读取文件 创新(自拟)功能:程序实现的其它功能由个人自拟。通讯录至少应该有以下数据项:姓名,家庭住址,手机号码,邮编,E-mail。输入信息时要检查数据项手机、邮编、E-mail的合法性,手机号码:11位数字;邮编:6位数字;E-mail:包含字符,且两边都非空。对通讯录应该包含有以下操作(包括基本功

11、能和拓展功能):a) 向通讯录中添加信息;b) 在通讯录中按姓名或手机号查找个人信息;c) 删除通讯录中的个人信息;d) 修改通讯录中的个人信息,并保存入文件;e) 按不同数据项排序后列表输出通讯录中所有人的信息。通讯录中记录的数量没有限制。f) 写入文件和从文件读将通讯录中的数据入数据。程序启动时先从文件读入数据,如果文件中没有数据则给出提示;写入文件时有两种方式,一为覆盖所有原有的内容; 二为只将本次操作所修改的个人信息写入文件g) 程序启动时先从文件读入数据,如果文件中没有数据则给出提示退出程序。2 详细设计说明2.1 总体设计方案本程序分为九个大模块,每个大模块又分为若干个小模块,每个

12、模块用来实现一个特定的功能;本程序运用了结构体来存放联系人的信息,并定义了结构体数组使数据的管理转化为对结构数组的操作,从而实现了通讯录的输入,输出,存档,读取,删除以及查找和分类显示等功能。2.2 程序描述本程序有三大主要特点:1、 本程序功能比较强大,建立了一个比较健全的通讯录系统;2、 本程序秉着人文主义的原则,使用了大量人性化的语句,能够给使用者提供一个温馨的使用环境,能够让使用者感觉到人性化关怀;3、 本程序结构清晰,能够很方便的添加功能,将来能很方便的对其进行改进!安排本程序的目的及意义: 这样安排本程序是为了方便程序的模块化及将来的改进。设计本程序的目的及意义:设计本程序的目的在

13、于:1、 编写一个比较完美的C程序;2、 考验一个人的聪明才智;3、 考察一个人的思维的敏锐程度及缜密程度;4、 考察一个人的编程能力及对事情的专注程度。它的意义在于:1、 锤炼思维,通过本程序的编写来提高思维的敏锐度;2、 加深对教材内容的理解和提高对教材知识的掌握程度;3、 使学生掌握一定的编程技巧及提高学生的认知力;4、 提高学生分析问题、综合解决问题的能力。2.3功能结构本程序具有九个大功能,每个大功能又有若干个小功能,具体功能如下:1、 添加个人信息;2、 查询个人信息;它又分为:按手机号码查询、按姓名查询、按家庭电话号码查 询和按QQ号码查询这四个小功能;3、 删除个人信息;它又分

14、为按按手机号码删除和按姓名删除这两个小功能;4、修改个人信息;它又分为按按手机号码修改和按姓名修改这两个功能,这两个 功能又都具有修改项目这个小功能;5、信息排序;它又分为按按手机号码排序和按姓名排序这两个功能,这两个功能 又都具有输出全部信息这个功能;6、输出全部信息7、写入文件8、读取文件 9、 删除所有功能结构图: 2.4主要模块描述通讯录管理系统主要用数组来实现,其数组元素是结构体类型,整个系统由如下几个功能模块组成:(1) 添加个人信息模块。添加个人信息模块主要将用户通过键盘输入的数据存入数组的工作,数据记录的结构由结构体定义,包含联系人的相关信息。设计说明: 本程序定义了结构体pe

15、rson,为全局变量,用于存放联系人的基本信息: struct person char name15; char sex2; int nianling; long int youbian; char addr50; char celephone22; char homephone22; char company20; char email40; long int QQ; per500;然后定义了void newrecord()函数(新添纪录函数) 用来实现数据的输入,每次输入都依“姓名(name),性别(sex);年龄(nianling);地址(addr);手机号码(celephone);家庭

16、电话(homephone);公司名称(company);电子邮箱(email);QQ号码(QQ);”的次序分别以字符数组的形式将用户在键盘上输入的数据存入内存中先前定义的结构体数组中。 操作说明:请按提示操做;请输入正确的信息;本程序有自动查错功能。 流程图:(2) 查询个人信息模块。查询个人信息模块主要完成在数组中查找满足相关条件的信息记录。本程序中,用户可以按联系人姓名及手机号码进行查找。若找到待查记录,则以表格形式显示在屏幕上,否则提示待查信息不存在。 设计说明:本程序有四个小功能;由一个界面统一控制; 操作说明:请按提示操做;请输入正确的信息;本程序有自动查错功能。 流程图: i5开始

17、i19printf(Enter name:n);scanf(%s,pi.name);printf(Enter tellphonenum:n);scanf(%d,&pi.tell); printf(Enter e-mail:n); scanf(%s,pi.mail);printf(Enter address:n); scanf(%s,pi.add);printf(%10s%15s%20s%25sn,name,tellphone,address, e-mail);printf(%10s%15d%20s%25sn,pi.name,pi.tell,pi.mail,pi.add); printf(n);

18、输入aa1Choice()i+结束(3)删除个人信息模块。删除个人信息模块主要完成对指定记录的删除。 设计说明:本程序有俩小功能;由一个界面统一控制;操作说明:请按提示操做;请输入正确的信息;本程序有自动查错功能。 流程图:入口显示菜单选择功能键1:输入姓名,按姓名查询,显示查询结果键2:输入城市,按城市查询,显示查询结果键0:结束查询(4)修改个人信息模块。修改个人信息模块主要完成对指定记录的修改。 与查找功能相似,先找出要修改的好友的信息。再用一个选择结构进行判断。若进行删除的操作,则利用strcpy函数将好友的相应的信息修改为空值;若进行修改操作,则输入相应的新的信息。操作说明:请按提示

19、操做;请输入正确的信息;本程序有自动查错功能。 流程图:开始strcpy(pc.name, );pc.tell=0; strcpy(pc.mail, ); strcpy(pc.add, );输入查找姓名C=19结束if(strcmp(pc.name,q)=0)K1K2c=20对不起,还没有此人输入新的资料删除按1,修改按2C+C0(5)信息排序模块。信息排序模块主要完成对将数组中的所有联系人的排序。用两个循环结构将顺序不同的两个结构体调换过来。由于好友的姓名是用字符串表示,所以比较两个姓名的先后顺序时要用strcmp函数。在将两个字符串调换位置时借用另外一个字符数组和strcpy函数将它们调换

20、过来。操作说明:请按提示操做;请输入正确的信息;本程序有自动查错功能。 流程图:i0i19a=0i+开始输出name、tellphone, e-mail a18strcmp(pa+1.name,pa.name)0j=pa.tell;pa.tell=pa+1.tell;pa+1.tell=j;a+=strcpy(copy,pa+1.name); trcpy(pa+1.name,pa.name); strcpy(pa.name,copy);strcpy(copy,pa+1.mail);strcpy(pa+1.mail,pa.mail);strcpy(pa.mail,copy); strcpy(co

21、py,pa+1.add);strcpy(pa+1.add,pa.add); strcpy(pa.add,copy);i=1i=19输出pi.name,pi.tell,pi.mail,pi.addpi.tell=0i+结束tuichu();(6)输出全部信息模块。输出全部信息模块是完成将数组中的所有联系人信息以表格的形式显示在屏幕上的功能。用于输出全部信息操作说明:请按提示操做;请输入正确的信息;本程序有自动查错功能。 流程图: 输出第一条记录输出第二条记录对第二条记录查询对第一条记录查询 相等 不 相 返回等 相等不 相 返回等 输出最后一条记录对最后一条记录查询 相等 返回 返回(7)写入文

22、件模块。写入文件模块是将内存数组中的数据存在硬盘文件中。操作说明:请按提示操做;请输入正确的信息;本程序有自动查错功能。 流程图:(8)读取文件模块。读取文件模块完成对记录的读取,是将硬盘文件中的数据读取在内存数组中。操作说明:请按提示操做;请输入正确的信息;本程序有自动查错功能。 流程图:对第一条记录查询 不 相等输出第一条记录相等对第二条记录查询 不 相等 输出第一条记录相等对第三条记录查询不 相等输出第一条记录相等对最后一条记录查询 返回主菜单 相等 输出最后一条记录 返回主菜单 (9)删除所有模块。删除所有模块完成对所有记录的删除。在退出程序时,提示一个是否退出界面的提示,在利用一个判

23、断结构进行相应判断,若返回则利用一个开始函数返回主界面的选择功能。操作说明:请按提示操做;请输入正确的信息;本程序有自动查错功能。 流程图:开始返回主界面请按r; 退出程序请按其他键if(strcmp(str,r)=0)choice();exit(0);结束(对主要模块包括主程序分别进行功能描述、设计说明、操作说明,并给出流程图)2.5采用的算法本程序所选用的算法是结构化的算法主函数流程图:开始输出主界面a1输入apaixu()a2a3a4tianjia()chazhao()xiugai()wrong number结束本程序具体的计算公式是: Y=X; 如果成立则执行某条程序;不成立则执行另一

24、条程序。计算步骤: Y=X;成立执行a;不成立执行b.3 程序测试程序运行后,主界面如图:输入数字2后如图: 输入数字3如图: 输入4后再输入1后如图:输入5后如图:输入6后如图:本程序运行结果与期望的一致!本程序只要求有数组的知识就够了!4 课程设计总结两周的课程设计结束了,我的收获很大。通过课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对编程的认识和理解,切实的提高了我的编程能力,补全了我的不足。通过这次课程设计,我巩固所了学过的知识,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用指令。在整

25、个程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程序,必须认真对待代码的每一个细节,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉了语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的语言程序的水平。5 软件使用说明本软件操作简单,只要按照界面的要求输入数行了!请勿随便输入! 6 附录(参考文献,源代码:)参考文献:1谭浩强C程序设计(第三版)北京:清华大学出版社,2005 2谭浩强C程序设计题解与上机指导(第三版)北京:清华大学出版社,20053王曙燕C语言程序设计北京:科学出版社,20044程序设计语言课程设计指导书源代码:#include #i

26、nclude #include #include struct person char name15; char sex2; int nianling; long int youbian; char addr50; char celephone22; char homephone22; char company20; char email40; long int QQ; per500; int num=0;/*外部变量num为文件中的纪录数*/ FILE *fp; void mainmenu();/*主菜单*/ void newrecord();/新添纪录*/ void xiugaimenu(

27、);/*修改菜单*/ void xiugaibyname();/*按姓名修改*/ void xiugaibycelephone();/*按手机号码修改*/ void xiugaixiangmu(int a);/*修改项目*/ void searchmenu();/*查询菜单*/ void searchbyname();/*按姓名查询*/ void searchbycelephone();/*按手机号码查询*/ void searchbyhomephone();/*按家庭电话号码查询*/ void searchbyqq();/*按QQ查询*/ void deletemenu();/*删除菜单*/

28、 void deleteall();/*删除所有信 息*/ void deleteone();/*删除单个*/ void showall();/*输 出 全 部 信 息*/ void readfromfile();/*读取文件*/ void writetofile();/*写入文件*/ / void deletebycelephone(); /*按手机号码删除*/ void deletebyname();/*按姓名删除*/ void listbycelephone();/*按手机号码排序*/ void listbyname();/*按姓名排序*/ void listmenu();/*排序菜单*

29、/ void main()/*主函数*/ system(cls);readfromfile(); while (1) mainmenu(); /*主函数结束*/void mainmenu()/*主菜单函数*/ int a; system(cls); system(color 2a);printf(nt 您 好! 欢 迎 使 用 通 讯 录!n);printf( 1: 添 加 个 人 信 息n);printf( 2: 查 询 个 人 信 息n);printf( 3: 删 除 个 人 信 息n);printf( 4: 修 改 个 人 信 息n);printf( 5: 信 息 排 序n);print

30、f( 6: 输 出 全 部 信 息n);printf( 7: 写 入 文 件n);printf( 8: 读 取 文 件n);printf( 9: 删除所有n);printf( 0: 退 出 n);printf( 请输入您的数字选择: );loop1: scanf(%d,&a); switch (a) case 1:newrecord();break; case 2:searchmenu();break; case 3:deletemenu();break; case 4:xiugaimenu();break;case 5:listmenu();break;case 6:showall();br

31、eak;case 7:writetofile();break; case 8:readfromfile();break;case 9:deleteall();break;case 0:exit(0); default:printf(对不起!您的输入有误!请重新输入: );goto loop1; void newrecord()/*添加纪录*/ int a; system(cls); system(color 2a); loop: printf(nnnntt 请输入您要添加的联系人的信息: n); printf(n请输入姓名:n);name: scanf(%s,&pernum.name); if

32、(strlen(pernum.name)15) printf(对不起!您的输入有误!请重新输入); goto name; printf(n请输入性别:n);sex: scanf(%s,&pernum.sex); if(strlen(pernum.sex)=0) printf(对不起!您的输入有误!请重新输入); goto sex; printf(n请输入年龄:);nianling: scanf(%d,&pernum.nianling); if(pernum.nianling110) printf(对不起!您的输入有误!请重新输入); goto nianling; printf(n请输入邮编n)

33、;youbian: scanf(%d,&pernum.youbian); if(pernum.youbian999999) printf(对不起!您的输入有误!请重新输入); goto youbian; printf(n请输入地址n);addr:scanf(%s,&pernum.addr); if(strlen(pernum.addr)50|strlen(pernum.addr)20|strlen(pany)30|strlen(pernum.email)1600000000|pernum.QQ10000000) printf(对不起!您的输入有误!请重新输入); goto QQ; num+;

34、printf(n是否继续添加?n); printf(n请按1和2(1代表继续;2代表不继续)n); printf(请输入您的选择 ); scanf(%d,&a); if(a=1) goto loop; else return; void searchmenu()/*查询菜单*/ int a; system(cls);system(color 2a); printf(ntt 欢 迎 使 用 查 询 菜 单); printf(ntt 1-按手机号码查询);printf(ntt 2-按姓名查询);printf(ntt 3-按家庭电话号码查询); printf(ntt 4-按QQ查询); printf(ntt 5-返回主菜单); printf(ntt); printf(请输入您的选择 );scanf(%d,&a); switch (a) case 1:searchbycelephone();break; case 2:searchbyname();break; case 3:searchbyhomephone();break;case 4:searchbyqq();break;case 5:mainmenu();break; void searchbycelephone()/*按手机号码查询*/ in

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号