资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
沈 阳 航 空 工 业 学 院 课程设计学 号 _班 级 _6402101_姓 名 _ 指导教师 _ _年 月 日沈 阳 航 院 设 计 用 纸沈阳航空工业学院课程设计任务书院系:电子 专业:电子信息工程 班级:6402101学号:200604021001 题目:同学通讯录信息管理一、课程设计时间2007年9月10日至2007年9月14日,共计1周,20学时。二、课程设计内容用C语言编写软件完成以下任务:能够对同学的通讯信息进行数字化管理,人数不少于3人。通讯信息应保存到文件myfile.dat中。三、课程设计要求1. 程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“同学信息录入”、“同学信息查询(根据姓名,或编号等)”、“显示全部同学信息”、“退出”4项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。四、指导教师和学生签字指导教师:_ 学生签名:_五、说明书成绩六、教师评语 目录一、需求分析1二、程序流程图2三、核心技术的实现说明及相应程序段5四、个人总结9五、参考文献9六、源程序101一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,其中每一个模块对应一个函数,他们的功能分别是:添加学生通讯录(add),查询学生通讯录(inquire),显示学生通讯录(show_all) 以及保存(save)。在这些函数当中,前两个函数的实现是整个程序的核心,较为复杂。1、添加学生通讯录 主要实现程序最初运行时学生通讯录的录入以及其后的运行中学生通讯录的追加功能;2、查询学生通讯录 实现的功能是按照学号或姓名对学生的通讯录记录进行查询;3、显示学生通讯录 主要功能是将学生通讯录的全部信息显示出来4、保存 实现功能为将新的通讯录信息保存到文件中;除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。每一个学生记录都包含学号、姓名、电话和地址,在程序当中,将学生通讯录类型定义为结构体类型,添加以及追加的学生通讯录信息现存入结构体数组中,再在save函数中写入D盘的myfile.dat文件中,其他函数每次对学生通讯录的访问,其数据来源都是结构体数组并可以对学生数据进行永久保存。5.如果用户输入的信息范围在1-5之外,会自动提示用户重新输入。二、程序流程图1、程序总体结构图show all()quiteadd()inquire()save()显示菜单dowhile(c!=!)n=4n=2n=1n=3n=5结束图1 程序总体结构图2、具体功能框图(1)添加学生通讯录addn=1真temp_letter=a假通过输入学号查询并显示学生通讯录信息真temp_letter=b假通过输入姓名查询并显示学生通讯录信息真temp_letter=c假退出图2 添加学生通讯录(2)学号查询num_inquiren=2temp_letter=aicounter stui.num=inquire.num真 假显示学生通讯录信息count+真count=0假无此学生信息图3学号查询(3)姓名查询name_inquiren=2temp_letter=bicounterdowhile(cha_namej-1!=0)cha_namej!=stui.namej真 假count1=1count1=0真 假显示学生通讯录信息count2+count2=0真 假无此学生信息图4姓名查询三、核心技术的实现说明及相应程序段本程序主要由七个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,添加学生通讯录、查询学生通讯录是程序中较为核心的部分,下面分别进行说明。1、添加学生通讯录 添加学生通讯录是将学生通讯录信息以结构体数组的形式储存到结构体数组中去。具体的程序段如下:void add() printf(shu ru xin xi:n); printf(#num:); scanf(%d,&stucounter.num) ;/*输入学生学号*/ printf(#name:); scanf(%s,&stucounter.name) ;/*输入学生姓名*/ printf(#telephone:); scanf(%s,&stucounter.telephone_num) ;/*输入学生电话号码*/ printf(#address:); scanf(%s,&stucounter.address) ;/*输入学生地址*/ counter +;2、查询学生通讯录该函数通过调用两个自定义函数分别实现学号查询和姓名查询两种查询通讯录的方式。并运用dowhile()循环和switch()分支结构进行两种查询方式的选择。具体程序段如下:void inquire() char temp_letter; printf(An yao qiu shu ru xin xi:n); printf(a.Gen ju xue hao cha xun n); printf(b.Gen ju xing ming cha xun n); printf(c.tui chu n); do temp_letter = getchar(); switch(temp_letter) case a: num_inquire();break; case b: name_inquire();break; case c: caidan();break; while(temp_letter != c);3、学号查询 通过学号在已有记录中查找相同信息,并显示出来。具体程序段如下:void num_inquire() int inquire_num; int i; int count=0; printf(a.qing shu ru xue hao:); scanf(%d,&inquire_num); for(i=0;icounter;i+) if(stui.num = inquire_num) printf(#num: %dn,stui.num); printf(#name: %sn,stui.name); printf(#telephone: %sn,stui.telephone_num); printf(#address: %sn,stui.address); printf(n); count +; if(count = 0) printf(Mei you ni yao cha xun xue sheng de xin xi !) ;4、姓名查询 通过姓名在已有记录中查找相同信息,并显示出来。具体程序段如下:void name_inquire() char *p1,*p2,cha_name20; int i,j=0,k; int count1=0,count2=0; printf(b.qing shu ru xing ming:); p1 = cha_name; scanf(%s,p1); for(i=0;icounter;i+) count1 = 0; j = 0; do if(cha_namej != stui.namej) count1=1; j+; while(cha_namej-1 != 0); if(count1 = 0) printf(#num: %dn,stui.num); printf(#name: %sn,stui.name); printf(#telephone: %sn,stui.telephone_num); printf(#address: %sn,stui.address); printf(n); count2 +; if(count2 = 0) printf(Mei you ni yao cha xun xue sheng de xin xi !) ;四、个人总结通过本次课设学习我不仅对C语言知识有了更多的了解,而且也提高了自学的能力与上机操作的能力。由于我以前不重视自己动手操作和创新看到题目都不知道从何下手,但通过老师指导和同学的帮助最后完成课设内容。通过做课设体会到C语言的结构化的严密性及程序模块化,也能更好的使用函数及调用函数问题。在调试程序中既增长了我的知识又磨练我的意志。总之,通过这次学习给我带来学习的乐趣,受益非浅!五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号