程序设计实践 实验报告_第1页
程序设计实践 实验报告_第2页
程序设计实践 实验报告_第3页
程序设计实践 实验报告_第4页
程序设计实践 实验报告_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计基础课程设计通讯录管理系统院 系:计算机学院班 级:信息工程1班姓 名:方穗城学 号:3合 作 者:丁丹妮、李晓艳指导教师:刘艳军 2011 年 5月 3 日目录摘 要11.研究背景及意义1第一章 系统设计说明以及功能分析21.1系统简述21.2通讯录的功能分析2第二章 概要设计32.1 总体程序框图3第三章 系统功能模块的具体设计43.1各个模块的程序流程图41)主函数程序(N-S)流程图及运行界面42)查找我的好友 (源程序代码)与运行界面53)修改我的好友(源程序代码)与程序运行界面7第四章 设计总结10附录一11摘 要1. 研究背景及意义通讯录管理系统是每一个用户管理通讯录的不

2、可或缺的管理信息系统,他的内容用户的管理者来说是至关重要的。所以通讯录管理系统能够为每一个用户管理者提高充足的信息和快捷的查询手段,大大的方便用户合理管理通讯录。随着科学技术的不断提高,计算机科学日渐成熟,网上通讯工具的迅速发展,七其强大的功能已经为人们所深刻认识,它以进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对通讯录进行管理,具有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、储存量大、保密性好、寿命长、成本低等。这些优点能够极大的通讯录管理的效率,也是用户理财的科学化正规化管理,与先进科学技术接轨的重要条件。因此,开发这样一套软件是非常

3、有必要的,对于我们计算机专业的学生来说,也是一次将计算机应用于现实管理的一次有意义实践。第一章 系统设计说明以及功能分析1.1系统简述此通讯录管理系统是基于对话框的应用程序,在生活中应用频繁的管理工具,它以数据库的方式保存各种信息。利用本系统可以了解朋友的各种基本信息,包括姓名,电话号码,QQ号、生日等。还能按名称进行纪录的查询、增加、修改、删除等操作。1.2通讯录的功能分析系统要求实现最基本的功能包括:记录的显示、添加、显示、查找、修改、删除、基本功能:l 显示:以列表的方式显示通讯录的基本信息:l 添加:添加一项新的记录。如:通讯录基本信息录入l 删除:删除一项已有记录。l 修改:对已有信

4、息进行修改。即:允许对已经录入的数据重新进行编辑、修改。例如修改通讯录中张三的电话信息。l 查找:根据姓名查找相关朋友的信息。例如输入张三姓名,查询张三的信息。l 保存:以数据库的形式保存数据。第二章 概要设计Main(通讯录管理系统)创建通讯录显示通讯录查找通讯录修改通讯录删除通讯录退出通讯录2.1 总体程序框图图2.1-A总体程序第三章 系统功能模块的具体设计3.1各个模块的程序流程图 1)主函数程序(N-S)流程图及运行界面主函数程序(N-S)流程图(见图3.1-A) 主函数main()定义变量char choose=0,yes_no=0; while(TRUE)choose=getch

5、e(); switch(choose)case 1:mycreat(record,M);break;创建通讯录case 2:mydisplay(record,M);break;显示我的好友case 3:mysearch(record,M);break;查找我的好友 case 4:mymodify(record,M);break;修改我的好友 case 5:myadd(record,M);break;添加我的好友 case 6:mydelete(record,M);break;删除我的好友 case 0:exit(0);退出图3.1-A主函数程序简单说明:该功能主要显示的是给用户一个进入界面,它

6、主要的是显示该程序主要能够执行的有哪些功能。下面是显示给用户的界面。(见图3.1) 主函数程序运行界面:2)查找我的好友 (源程序代码)与运行界面l 程序代码void mysearch(struct student *p,int n) struct student *q=p; int flag=0; char c=0,nm10=,nam10=; printf(n按照学号查询(h)或姓名查询(m):n); c=getche(); if(c=h|c=H) printf(请输入要查询记录的学号:);gets(nm); for(p=q;p-qnum)=0) printf( 学号 姓名 电话n); pr

7、intf(%23s%15s%15sn,p-num,p-name,p-tel); flag=1; if(flag=0) printf(wrong.n); else if(c=m|c=M) printf(请输入要查询记录的姓名:);gets(nam); for(p=q;p-qname)=0) printf( 学号 姓名 电话n); printf(%23s%15s%15sn,p-num,p-name,p-tel); flag=1; if(flag=0) printf(wrong.n); else printf(wrong.n);l 程序运行界面添加我的好友程序运行界面(图3.2)3)修改我的好友(源

8、程序代码)与程序运行界面l 程序代码void mymodify(struct student *p,int n) struct student *q=p; FILE *fp=NULL; char nam10=; mydisplay(p,n); printf(请输入您想要修改记录的姓名:n);gets(nam); for(p=q;p-qname)=0) break; if(p-q=n) printf(wrong.); else printf(请输入正确的学号:); do gets(p-num); while(strcmp(p-num,)=0); printf(请输入正确的姓名:); gets(p

9、-name); printf(请输入正确的电话:); gets(p-tel); fp=fopen(d:jilu.dat,w); if(fp=NULL)printf(error); exit(0); for(p=q;p-qnum,p-name,p-tel); fclose(fp);l 程序运行界面l 第四章 设计总结通过此次的课程设计,将上学期由课本上所学习的有关内容应用到实践当中,使我们在应用过程中更加清楚的了解并掌握C语言的各部分的内容,提高个人程序设计思想及时发现一些错误,并在调试过程中更加深刻的认识到C语言程序的严谨性。任何一个程序员都有无法保证所编写的程序没有错误,语法错误在编译时就会

10、被发现,连接错误在连接时就会被发现。但程序内部的逻辑错误只能由我们自己去发现并定位修改,在遇到问题时,首先通过对此部分函数的整体流程进行分析,找出问题的所在,经过思考,再由小组成员商定最优解决方法,这样有助于提高我们个人团体协作能力。我们的程序还有很多的不足,其实通讯录还应该排序,但是由于我们能力有限,而无法完成。排序的程序有 “姓名”排序,也可以实现按其它的信息排序的功能,则程序的功能增加了,要求和难度也变大了。设计思路:首先提示用户按什么信息排序,然后编写按每个选项功能的模块或函数。查找信息和修改信息时都是按姓名查找和修改的,都可以改进,以实现更多的功能。总之,通过此次课程设计,我们学到了

11、许多我们在书本上学不到的知识,受益非浅。通过实践,我们能更好地掌握C 语言,并运用它编写应用程序。我们对它的功能和实用性、严密性,和对程序的编写都有了比较深刻的体会。毫无疑问,编程过程中我们遇到了许多问题,但通过我们不懈的努力,团结奋斗的精神,我们终究将问题一一解除,最终实现了程序的各项功能。虽然我们的程序还不够完善,加以改进以实现更多的功能。但通过这次的课程设计我们不仅学到了许多知识,学会如何设计一个应用程序,包括程序设计方法,调试程序,还学会如何解决问题,学会将所学知识运用到实际情况中。附录一现在在这里附上程序的完整代码:#include #include #include #includ

12、e #define N 100int M=5;struct student char num10;char name10;char tel10;void myprint() system(cls); printf( |-|n); printf( | :-)请输入选项编号(0-6): |n); printf( |-|n); printf( |-1-创建通讯录-|n); printf( |-2-显示我的好友-|n); printf( |-3-查询我的好友-|n); printf( |-4-修改我的好友-|n); printf( |-5-添加我的好友-|n); printf( |-6-删除我的好友-

13、|n); printf( |-0-退出-|n); printf( |-|n);void mycreat(struct student *p,int n) struct student *q=p; FILE *fp=NULL; fp=fopen(d:jilu.dat,w); if(fp=NULL)printf(error); return; for(p=q;p-qnum); while(strcmp(p-num,)=0); printf(姓名:); gets(p-name); printf(电话:); gets(p-tel); fprintf(fp,%23s%15s%15sn,p-num,p-n

14、ame,p-tel); void mydisplay(struct student *p,int n) FILE *fp=NULL; fp=fopen(d:jilu.dat,r); if(fp=NULL)printf(error); return; system(cls); printf( 学号 姓名 电话n); while(n0) fscanf(fp,%23s%15s%15s,p-num,p-name,p-tel); printf(%23s%15s%15sn,p-num,p-name,p-tel); p+;n-; void mysearch(struct student *p,int n)

15、struct student *q=p; int flag=0; char c=0,nm10=,nam10=; printf(n按照学号查询(h)或姓名查询(m):n); c=getche(); if(c=h|c=H) printf(请输入要查询记录的学号:);gets(nm); for(p=q;p-qnum)=0) printf( 学号 姓名 电话n); printf(%23s%15s%15sn,p-num,p-name,p-tel); flag=1; if(flag=0) printf(wrong.n); else if(c=m|c=M) printf(请输入要查询记录的姓名:);gets

16、(nam); for(p=q;p-qname)=0) printf( 学号 姓名 电话n); printf(%23s%15s%15sn,p-num,p-name,p-tel); flag=1; if(flag=0) printf(wrong.n); else printf(wrong.n);void mymodify(struct student *p,int n) struct student *q=p; FILE *fp=NULL; char nam10=; mydisplay(p,n); printf(请输入您想要修改记录的姓名:n);gets(nam); for(p=q;p-qname

17、)=0) break; if(p-q=n) printf(wrong.); else printf(请输入正确的学号:); do gets(p-num); while(strcmp(p-num,)=0); printf(请输入正确的姓名:); gets(p-name); printf(请输入正确的电话:); gets(p-tel); fp=fopen(d:jilu.dat,w); if(fp=NULL)printf(error); exit(0); for(p=q;p-qnum,p-name,p-tel); fclose(fp);void myadd(struct student *p,int

18、 n) FILE *fp=NULL; struct student *q=p; char c=n,tempnum10=,tempname10=,temptel10=; printf(n); while(strcmp(p-num,)!=0) printf(%23s%15s%15sn,p-num,p-name,p-tel); p+; n=p-q; do printf(请输入新纪录的学号:); do gets(tempnum); while(strcmp(tempnum,)=0); printf(请输入新纪录的姓名:); gets(tempname); printf(请输入新纪录的电话:); get

19、s(temptel); for(p=q;p-qnum)=0|strcmp(temptel,p-tel)=0) printf(学号或电话号码需要重新输入吗(Y/N)?); c=getche(); putchar(n); break; if(p-q=n) strcpy(p-num,tempnum); strcpy(p-name,tempname); strcpy(p-tel,temptel); break; while(c=y|c=Y); fp=fopen(d:jilu.dat,w); if(fp=NULL)printf(error); return; for(p=q;p-qnum,p-name,

20、p-tel); fclose(fp); M+;void mydelete(struct student *p,int n) FILE *fp=NULL; struct student *q=p; char c10=,tempnum10=,tempname10=,temptel10=,choose=0; mydisplay(p,n); printf(选择删除记录的方式:学号(h)姓名(m); choose=getche(); printf(n); if(choose=m|choose=M) printf(删除的记录:); gets(c); for(;p-qname)=0) break; if(p-qn) for(;p-qnum,(p+1)-num); strcpy(p-name,(p+1)-name); strcpy(p-tel,(p+1)-tel); else printf(non); else if(choose=h|choose=H) printf(删除的记录:); gets(c); for(;p-qnum)=0) break; if(p-qn) for(;p-qnum,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论