C语言课程设计

上传人:cn****1 文档编号:560416243 上传时间:2022-09-23 格式:DOC 页数:24 大小:303KB
返回 下载 相关 举报
C语言课程设计_第1页
第1页 / 共24页
C语言课程设计_第2页
第2页 / 共24页
C语言课程设计_第3页
第3页 / 共24页
C语言课程设计_第4页
第4页 / 共24页
C语言课程设计_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《C语言课程设计》由会员分享,可在线阅读,更多相关《C语言课程设计(24页珍藏版)》请在金锄头文库上搜索。

1、课 程 设 计 报 告课程名称 C语言程序设计 课题名称 通讯录管理系统 专 业 汽车服务 班 级 0901班 学 号 200902180114 姓 名 伏铄臻 指导教师 王宁 陈多 2010年9月12日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 通讯录管理系统 专业班级 汽车服务0901 学生姓名 伏铄臻 学 号 200902180114 指导老师 王宁 陈多 审 批 王宁 陈多 任务书下达日期 2010年 9月 12 日任务完成日期 2010年 9月 13日通讯录管理系统一、 通讯录管理系统要求分析及其主要功能1、问题描述:通过该系统实现对通讯录信息进行录入、显

2、示、修改、删除、插入、排序、保存等操作的管理。2、功能要求:1)、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:编号、姓名、电话号码。2)本系统显示这样的菜单:请选择系统功能项:a. 通讯信息录入b. 通讯信息显示c. 通讯信息保存d. 通讯信息删除e. 通讯信息修改f. 通讯信息查询(1) 按编号查询(2) 按姓名查询(3) 按电话号码查询g. 退出系统3)、执行一个具体的功能之后,程序将重新显示菜单。4)、将通讯信息保存到文件中。3、算法提示:1)、数据结构:结构体类型数组2)、数据库结构:下表构成该系统的基本数据库。 编号姓名电话号码charchar Char4、测试数

3、据:纪录数205、其它 对该系统有兴趣的同可以在实现上述基本功能后,完 善系统的其它功能二、 功能模块的划分系统功能模块图: 主菜单录入显示 删除 修改 保存 查询 C查询 hacha查询 编号查询姓名查询电话查询录入:可以添加通讯录记录,依次输入编号、姓名、电话号码后,会提示是否继续添加。显示:可以以横排形式输出所有通讯录里的记录删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容查询:可以选择用姓名、电话、编号三种方式查询修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、即可完成修改保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件三、 主要功能的

4、实现 一 详细设计u 主函数 voide main( )通过主函数main()利用无限次循环结构for(;)和switch()结构实现各函数的调用。系统根据数字选项来调用函数。u 菜单选择函数 int menu_select( )这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择。等执行完每一个函数功能后,再自行返回该函数。u 输入记录函数 int Input( )这是一个无参函数,用数组函数输入所需记录人员的信息。用字符sign来标记是否将继续记录输入信息。 u 显示记录函数Display( );此函数利用for循环从输入第一个人的

5、信息至最后一个人的信息全都显示出来。使用if语句。 u 删除记录函数Delete_a_record( )用比较字符串处理函数strcmp( )逐一比较输入的字符串,是否相同,无相同,则显示无此人,若输入的字符串和s【】中的某一个相同,则用函数strcpy(),只取字符串1的地址,即删去了字符串2的内容,从而删除记录。流程图如图一。u 查询记录函数Query_a_record( )该函数先用while循环来判断查询方式是否正确,再用if语句来判断输入的m的值,从而选择查询方式。如姓名查询,同样用strcmp( )函数将输入的姓名与s【】比较,若匹配则显示此人信息,不匹配则显示无此人。其它查询方式

6、类似。流程图如图二所示。输入删除的姓名输出“通讯录没有此人”删除该记录YN输入查询的名称判断是否有此人判断是否有此 人输出“通讯录中没此人”显示此人所有信息YN开始开始结束结束图一图二 u 修改数据函数Change( )该函数先是调用strcmp()函数进行匹配,若无匹配显示无此人,若有则对该人的信息通过scanf()重新记录,即对该人信息进行修改。 开始输入修改的姓名判断是否有此人输出“通讯录中无此人”依次输入修改的内容YN结束u 保存数据函数WritetoText(pe,n)通过文件指针来保存所要保存的文件。四、程序调试程序调试与分析在程序运行前总有一些错误或警告,最开始显示主菜单函数后,

7、当进入其他功能项时主菜单在TC屏幕上消失,后了解到用system(“cs)可以控该现象使主菜单一直显示。与此相似的还有system(“pause”)都是 有关的函数。文件的保存没有涉及了解,经过查寻料了解到(fp=fopen(filename,w)=NULL 这句话是说打开文件, 打开只写文件,若文件存在则文件长度为0,即该文件消失,若文件不存在则建立该文件。而fprintf是写数据到打开的文件中,调试过程中经常因排版不太整齐而多次去修改,Printf和字符所在宽度影响排版。在通讯信息查询这一模块中,特别是对按编号查询这一项与电话查询和姓名查询不一样不能用strcmp( )函数配对查找因为没有

8、留意字符串数组来定义数编号。运行时程序出现了错误后经该正将子符串数组改为字符型。程序虽能运行但按编号查询时运行结果不能正常输出查询信息还自动终止程序。经过再次检测原来是最基本scanf( )函程序数中取地址的&没有写。当加上程序正常运行。测试:1)显示的主菜单界面在开始由于录入界面通讯信息显示在函数中写成了保存而出现下面界面,经过修改后正确显示。2)录入界面:在录入的时候经常因为按下ENTER键太快,而导致一些信息的录入损失,后检测是因为编号的查询方式有误导致,修改后无次现象,程序正常运行。3)显示界面:由于受字符串的宽度影响,姓名过长时导致年龄不能对齐显示,增加域宽后此现象可避免。4)删除界

9、面:5)查询界面:以姓名查询方式为例:由于程序在编号查询时的程序代码编写错误,程序虽然能运行,但是按编号查询时显示无此人,经过对程序的修改最终正常运行。6)修改界面:7)保存界面:8)退出系统:五、 总结在这一次C语言别课程设计,通过对程序的设计进一步提高了自己对程序的认识,也收获了各方面许多东西在课程设计方面,加深了已有知识的了解和巩固,如对字符串处理函数的认识,对for循环与while循环的认识与使用。更加了解了自己的模糊概念,在此次程序设计中清晰明了。像reture语句,在此次设计中可以了解到可以将整个函数赋给n,即将return中的返回值赋给n。了解到一些新的知识,如与系统有关的函数s

10、ystem( )。还有文件的保存,以前从未涉及的知识这次得以扩充。还有有重新体会到了文档的编版,受益匪浅。不仅在学习方面在与同学合作过程中体会到了同学间合作的快乐。在设计过程中相互请教,相互讨论如何使程序正确运行。经不断的合作修改终将程序运行出来。不仅如此,我还在老师要求的基础上,参考其它资料,在此次设计中对于信息的录入还添加了年龄这一信息的记录,完善程序。同时让我体会到在电脑上一个简单的记录运行之后所付出的努力,可想而之,复杂的运行操作后会有更大更复杂的一系列程序构成。让我体会到程序的博大精深和奥妙无穷。在刚开始接受这个程序设计课题时,原本以为自己什么也不会做,但随着对其它程序的理解,和对相

11、关资料的查找了解,慢慢的加深了对该课题的了解与掌握,直至和大家一起把程序运行出来。同时发现了许多缺点,一不小心就出现错误。像scanf()函数的使用,既然忘了写&,而且越简单却越难找出错误,所以一定要细心,而且要有耐心。总之,这次程序设计使我得到了巨大的收获。六、 附件1) 主要原程序代码/*10.3.2源程序*/*头文件(.h)*/#include stdio.h /*I/O函数*/#include stdlib.h /*标准库函数*/#include string.h/*字符串函数*/#include ctype.h /*字符操作函数*/#define M 50 /*定义常数表示记录数*/

12、typedef struct /*定义数据结构*/ char name20; /*姓名*/ char units30; /*单位*/ char tele10; /*电话*/ADDRESS;/*以下是函数原型*/int enter(ADDRESS t); /*输入记录*/void list(ADDRESS t,int n); /*显示记录*/void search(ADDRESS t,int n); /*按姓名查找显示记录*/int delete(ADDRESS t,int n); /*删除记录*/int add(ADDRESS t,int n); /*插入记录*/void save(ADDRE

13、SS t,int n); /*记录保存为文件*/int load(ADDRESS t); /*从文件中读记录*/void display(ADDRESS t); /*按序号查找显示记录*/void sort(ADDRESS t,int n); /*按姓名排序*/void qseek(ADDRESS t,int n); /*快速查找记录*/void copy(); /*文件复制*/void print(ADDRESS temp); /*显示单条记录*/int find(ADDRESS t,int n,char *s) ; /*查找函数*/int menu_select(); /*主菜单函数*/*主函数开始*/main() int i; ADDRESS adrM; /*定义结构体数组*/ int length; /*保存记录长度*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号