同学通讯录课程设计报告

上传人:dus****log 文档编号:134172966 上传时间:2022-08-12 格式:DOC 页数:23 大小:102KB
返回 下载 相关 举报
同学通讯录课程设计报告_第1页
第1页 / 共23页
同学通讯录课程设计报告_第2页
第2页 / 共23页
同学通讯录课程设计报告_第3页
第3页 / 共23页
点击查看更多>>
资源描述
吉林师范大学计算机学院信息管理与信息系统专业课程设计报告课程名称: 课程设计 设计题目: 同学通讯录 专 业: 信息管理与信息系统 年 级: 2012级4班 学 号: 201241020209 姓 名: 王 蕾 指导教师: 白文秀 2014年 2 月目 录课程设计题目审批表2完成情况一览表4摘 要5一、设计分析6二、设计要求6三、设计实现7四、系统调试7五、总结9附录111源代码112参考资料2222课程设计题目审批表课程名称:设计题目同学通讯录专业信息管理与信息系统年级班级2012级4班学生姓名王蕾指导教师白文秀设计要求:、问题描述具有数据插入、修改、删除、显示、查询和统计功能的电话簿管理程序。程序设计功能及要求数据使用文件存放。记录每位同学的学号、姓名、性别、工作单位、电话号码和E-mail地址建立单独的条目,存入数据文件。可对记录中的姓名和电话号码等进行修改。可增加或删除记录可显示所有保存的记录加入统计功能,可以统计男女同学或总人数。加入查询功能,通过姓名、学号或电话号码查询到同学的条目。在开始画面加入简单的菜单便于选择功能。文件格式1.储存数据文件格式学号姓名性别工作单位电话号码E-mail1李四对关键字段的数据在文件存储时采用简单加密技术进行处理,要求通过直接打开储存数据文件无法获得其中的数据,同时不影响程序对储存数据文件的调用。所需元器件/所需运行环境:编译环境:devcpp编译语言:C语言CPU:CPU:英特尔 酷睿 i5-3470 CPU 3.20GHz (四核4线程)主板:主板:联想 (英特尔 H61 (Cougar Point)内存:内存:4 GB , DDR3 , 单通道显卡:显卡:英特尔 HD Graphics 2500 (Ivy Bridge GT1) , 硬盘:硬盘:希捷 ST1000DM003-1CH162 , 7200 转 , 1000 GB显示器:显示器:联想 Unknown Model: LEN1AE网卡:网卡:瑞昱 Semiconductor RTL8168/8111 PCI-E 千兆以太网 NIC声卡:声卡:英特尔 Cougar Point PCH High Definition 音频设备控制器 B2指导教师意见签章: 年 月 日系主任意见:签章: 年 月 日完成情况一览表设计题目同学通讯录指导教师白文秀职称完 成 内 容完 成 情 况()分析设计准备编程调试总结报告汇报考核综合评定指导教师评语:签章: 年 月 日系主任意见:签章: 年 月 日摘 要经过一个学期对C语言课程的学习,同学们都认为真正的学到了有用知识,可能有一些人学的不够理想,但无论如何,这些知识都为我们的下一步学习打下了坚实的基础。做这么一个课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。 本次设计题目为:简单的同学通讯录,主要功能为:1.查找联系人 2.添加联系人 3.删除联系人 4.修改联系人 5.显示所有联系人 6.统计联系人 7.退出系统。程序运用条件,循环,结构体,文件的打开和保存知识点编写。运用菜单实现管理,用户通过按键即可操作,操作简单易懂。关键字:结构体数组,文件,查找,删除,通讯录系统。一、设计分析功能分析:查找:输入用户想要查找的联系人姓名或学号或电话号就会显示出他的所有信息;若无此联系人,则显示没有找到该生通讯信息。添加:输入用户想要添加的人数,手动输入学生的信息即可。删除:输入用户想要删除人的姓名或学号,就可以实现删除联系人; 若没有用户想要删除的联系人,则显示没有您所要删除的学生信息!修改:输入用户想要修改人的姓名或电话号码,或者E-mail就可以实现; 若没有用户想要修改的联系人,则显示没有查找到该学生的通讯信息。查询:用户选择相应功能即可显示所有联系人。统计:用户选择相应功能即可统计男女生的人数。退出:用户选择相应功能即可退出系统。大体功能:菜单列表 退出系统统计联系人显示联系人修改联系人删除联系人添加联系人查找联系人 二、设计要求1.根据所给的课程设计题目,分析课程设计题目的要求;2.对系统功能模进行分析,携程详细的设计说明文档;3编写程序代码,调试所写程序使其能正确运行;4.设计完成的软件便于操作和使用;5.设计完成后提交设计报告。三、设计实现可将设计的原理图,流程图,或网页树状结构图等体现在这里,并加以说明。对原理内容进行解释分析。程序流程图:开始写入文件读取文件操 作结 束开始选择功能结束 (1)否是开 始判断有无此人输入查找信息无 此 人输 出 信 息结 束否是开 始判断有无此人输入删除信息无 此 人删 除 该 生结 束(3)查找 (4)删除否是开 始判断有无此人输入添加信息无 此 人添 加 成 功结 束(5)添加四、系统调试在调试的过程中,首先是编写各个函数,在函数的编写过程中查找,添加,统计,修改联系人比较容易,删除的过程主要参考数据结构的单链表的删除过程,再者就是读写文件遇到的麻烦比较大。开始时写入文件总是不成功,利用fprintf()函数写文本文件,最后在老师的帮助下成功写入文件。读文件利用fscanf()函数读取文件,多次调试没有发现问题所在,在老师同学的帮助下,发现时由于文件总学生人数发生变化所在,得已解决问题。主函数的设计比较容易。软件的使用比较简单易懂,可根据菜单的提示内容按相应的数字进行操作。五、总结课程设计是培养我们综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,高级语言已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握高级语言是十分重要的。回顾起此次高级语言课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能论到实践,在整整三星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。 通过这次课程设计让我看到了高级语言课程设计的博大精深,在设计过程中虽然遇见了很多问题,但当我看到自己设计的程序能够运行时心里无比喜悦,充满了成绩感,并且也增加了我学计算机的兴趣! 在设计中发现了自己的许多不足,在学习中的许多问题都暴露出来了。原来感觉学的不错的知识现在用起来却很模糊,而以前没有掌握的现在依人不懂。通过这次课程设计给了我很大的教训,在以后的学习中遇到不懂的不会的一定要当场解决,掌握了的知识也要随时巩固,不要觉得自己已经懂了就不在看它。这次课程设计告诉了我学习知识一定要巩固,尤其是在似懂非懂的情况下一定要好好研究,而不是放弃不学,这样不懂得就会越堆越多。通过这次编程也告诉了我一个问题不仅只有一种方法可以解决,我们要学会从不同角度思考探究解决问题的不同方法,让我们的头脑变得更加灵活。 整个设计通过了软件和硬件上的调试。我想这对于自己以后的学习和工作都会有很大的帮助。在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理 程序设计综合课程设计 16 解,而且要不断地更正以前的错误思维。一切问题必须要靠自己一点一滴的解决,而在解决的过程当中你会发现自己在飞速的提升。对于教材管理系统,其程序是比较简单的,主要是解决程序设计中的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对系统的结构很熟悉。因此可以说系统的设计是软件和硬件的结合,二者是密不可分的。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。 课程设计让我对高级语言课程设计有了进一步的了解,也对他产生了浓厚的兴趣,虽然自己有很多不足,但我坚信这次的课程设计也许在以后的学习和生活中会有很大的用处,所以不管遇到什么困难我都会努力学习高级语言课程设计,让自己的头脑变得更加丰富! 在这次课程设计中也非常感谢老师和同学们的帮助,让我知道了该怎么做一份正确的课程设计报告,为今后的的课程设计奠定了巩固的基础附录1源代码#include#include#includestruct studentint num; /学号 char name20; / 姓名 char sex5; /性别 char workplace20; /工作地点 char phonenum20; /电话号码 char E_mail20; /邮箱 ;int N; /全局变量,用来统计学生的输入人数 int write(struct student message1000) /输入学生人数 ,向结构体数组中输入学生 printf(请输入要写入的学生人数:); int n,i=0; /n写入的学生人数; scanf(%d,&n);N=n;printf(学号t姓名t性别t工作单位t电话号码tE-mailn);while(n-)scanf(%d ,&messagei.num);scanf(%s,messagei.name); scanf(%s,messagei.sex); scanf(%s,messagei.workplace); scanf(%s,&messagei.phonenum); scanf(%s,messagei.E_mail);i+;return 0;int output(struct student message1000) / 输出学生信息 printf(输出学生信息:n);int i=0;for(i=0;iN;i+) printf( 学 号 :%dn,messagei.num);printf( 姓 名 :%sn,messagei.name); printf( 性 别 :%sn,messagei.sex); printf(工作单位:%sn,messagei.workplace); printf(电话号码:%sn,messagei.phonenum); printf( 邮 箱 :%snn,messagei.E_mail); return 0;int search_name(struct student message1000) /查找学生名字函数 int i=0,itag=0; /itag用来计数,判断是否找到 char name20;printf(请输入查找学生的姓名:);scanf(%s,name);for(i=0;iN;i+) if(strcmp(name,messagei.name)=0) printf( 学 号 :%dn,messagei.num);printf( 姓 名 :%sn,messagei.name); printf( 性 别 :%sn,messagei.sex); printf(工作单位:%sn,messagei.workplace); printf(电话号码:%sn,messagei.phonenum); printf( 邮 箱 :%snn,messagei.E_mail); itag+; break; if(itag=0) printf(没有找到该生通讯信息!n); printf(n); return i;int search_num(struct student message1000) /查找学生的学号int n,i,itag=0; /itag用来计数,判断是否找到 printf(请输入查找学生的学号:); scanf(%d,&n);for(i=0;iN;i+) if(n=messagei.num) printf( 学 号 :%dn,messagei.num);printf( 姓 名 :%sn,messagei.name); printf( 性 别 :%sn,messagei.sex); printf(工作单位:%sn,messagei.workplace); printf(电话号码:%sn,messagei.phonenum); printf( 邮 箱 :%snn,messagei.E_mail); itag+; break; if(itag=0) printf(没有找到该生通讯信息!n); printf(n); return i;int search_phonenum(struct student message1000) /查找学生的电话号 char tel20;int i,itag=0; /itag用来计数,判断是否找到 printf(请输入查找学生的电话号:); scanf(%s,tel);for(i=0;iN;i+) if(strcmp(tel,messagei.phonenum)=0) printf( 学 号 :%dn,messagei.num);printf( 姓 名 :%sn,messagei.name); printf( 性 别 :%sn,messagei.sex); printf(工作单位:%sn,messagei.workplace); printf(电话号码:%sn,messagei.phonenum); printf( 邮 箱 :%snn,messagei.E_mail); itag+; break; if(itag=0) printf(没有找到该生通讯信息!n); printf(n); return i; int search_E_mail(struct student message1000) char EMS20; int i,itag=0; printf(请输入查找学生的E_mail:); scanf(%s,EMS); for(i=0;iN;i+) if(strcmp(EMS,messagei.phonenum)=0) printf( 学 号 :%dn,messagei.num);printf( 姓 名 :%sn,messagei.name); printf( 性 别 :%sn,messagei.sex); printf(工作单位:%sn,messagei.workplace); printf(电话号码:%sn,messagei.phonenum); printf( 邮 箱 :%snn,messagei.E_mail);itag+; break; if(itag=0) printf(没有找到该生通讯信息!n); return i;int add(struct student message1000) /添加函数 printf(请输入新添加的人数:);int m; /增加学生人数scanf(%d,&m);int i=N;for(i=N;iN+m;i+)scanf(%d ,&messagei.num);scanf(%s,messagei.name); scanf(%s,messagei.sex); scanf(%s,messagei.workplace); scanf(%s,&messagei.phonenum); scanf(%s,messagei.E_mail); N=N+m; /N当添加人数发生变化时,N变 output(message);return 0;int Delete_name(struct student message1000) /删除学生姓名 printf(请输入想要删除的学生姓名:);char name20;int i,j,itag=0; /itag用来标记姓名是否相等 scanf(%s,name); for(i=0;iN;i+) if(strcmp(messagei.name,name)=0) j=i; itag+; break; if(itag=1) N=N-1; for(i=j+1;iN+1;i+) /删除学生信息 messagei-1=messagei; output(message); else printf(没有您所要删除的学生信息!n);return 0;int Delete_num(struct student message1000) /删除学生学号 printf(请输入想要删除的学生学号:);int num,j,i,itag=0;scanf(%d,&num); for(i=0;iN;i+) if(messagei.num=num) j=i; itag+; break; if(itag=1) N=N-1;for(i=j+1;iN+1;i+) messagei-1=messagei; output(message); else printf(没有您所要删除的学生信息!n);return 0;int rewrite_name(struct student message1000) /修改学生的姓名 int j;j=search_name(message);if(j=N)printf(没有查找到该学生的通讯信息!n);else printf(请输入该生的新姓名:); scanf(%s,messagej.name); printf( 学 号 :%dn,messagej.num);printf( 姓 名 :%sn,messagej.name); printf( 性 别 :%sn,messagej.sex); printf(工作单位:%sn,messagej.workplace); printf(电话号码:%sn,messagej.phonenum); printf( 邮 箱 :%snn,messagej.E_mail); return 0; int rewrite_phonenum(struct student message1000) /修改学生的电话号码int j;j=search_phonenum(message);if(j=N)printf(没有查找到该学生的通讯信息!n); /没有查找到 else printf(请输入该生的新电话号码:); scanf(%s,messagej.phonenum); printf( 学 号 :%dn,messagej.num);printf( 姓 名 :%sn,messagej.name); printf( 性 别 :%sn,messagej.sex); printf(工作单位:%sn,messagej.workplace); printf(电话号码:%sn,messagej.phonenum); printf( 邮 箱 :%snn,messagej.E_mail); return 0; int rewrite_E_mail(struct student message1000)int j;j=search_E_mail(message);if(j=N)printf(没有查找到该学生的通讯信息!n);else printf(请输入该生的新E_mail:); scanf(%s,messagej.E_mail); printf( 学 号 :%dn,messagej.num);printf( 姓 名 :%sn,messagej.name); printf( 性 别 :%sn,messagej.sex); printf(工作单位:%sn,messagej.workplace); printf(电话号码:%sn,messagej.phonenum); printf( 邮 箱 :%snn,messagej.E_mail); return 0;int rewrite_workplace(struct student message1000)int j;j=search_name(message);if(j=N)printf(没有查找到该学生的通讯信息!n);else printf(请输入该生的新的工作单位:); scanf(%s,messagej.workplace); printf( 学 号 :%dn,messagej.num);printf( 姓 名 :%sn,messagej.name); printf( 性 别 :%sn,messagej.sex); printf(工作单位:%sn,messagej.workplace); printf(电话号码:%sn,messagej.phonenum); printf( 邮 箱 :%snn,messagej.E_mail); return 0;int total(struct student message1000) /统计学生人数 int i=0,m=0,n=0;for(i=0;iN;i+)if(strcmp(messagei.sex,女)=0) n+; else m+;printf(女生人数为:%dn,n);printf(男生人数为:%dn,m);printf(学生人数为:%dn,m+n);int writefile(struct student message1000) /写入文件 FILE *fp;int i=0;if(fp=fopen(student.txt,w+)=NULL) printf(student.txt 文件打开失败!n);exit(0);elsefor(i=0;i=1&n=1&m=1&m=5) switch(m) case 1: rewrite_name(message); printf(n); break; case 2: rewrite_phonenum(message); printf(n); break; case 3: rewrite_E_mail(message); printf(n); break; case 4: rewrite_workplace(message); printf(n); break; case 5: goto goback; else printf(您的输入不合法!请从新输入:); writefile(message); goto start_2;break;case 5:output(message);break;case 6:total(message);break;case 8:exit(0); else printf(您的操作有误,请从新选择您的操作:); goto begin; 2参考资料1 谭浩强 C程序设计(第四版)清华大学出版社2 杨剑 数据结构 清华大学出版社
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!