C语言课程设计通信录管理_第1页
C语言课程设计通信录管理_第2页
C语言课程设计通信录管理_第3页
C语言课程设计通信录管理_第4页
C语言课程设计通信录管理_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计(论文)题 目 名 称 通信录管理 课 程 名 称 c语言课程设计 学 生 姓 名 学 号 系 、专 业 信息工程系、信息大类 指 导 教 师 邓 波 2008年 6 月 8 日目 录1前言22需求分析221要求222任务223运行环境224开发工具23概要设计231系统流程图:332函数“输入”流程图433函数“显示”流程图434函数“删除”流程图535函数“增加”流程图636函数“保存”流程图64详细设计741通信录管理742分析和设计743具体代码实现115课程设计的总结与体会16参考文献16致谢161 前言编写一个程序,可以存入通信录信息,并对其进行管理。可以根据不同的提示,对

2、通信录进行各种不同的管理。2 需求分析21 要求(1)用c语言实现程序设计。(2)利用结构体进行相关信息处理。(3)画出主要流程图。(4)系统的各个功能模块要求用函数形式实现。(5)界面良好(良好的人机互交),流程要有注释。22 任务(1)录入通信录信息(包括姓名、单位、电话号码)。(2)显示通信录里的所有成员的信息。(3)查询通信录中某个人的信息。(4)增加某个人的信息到通信录中。(5)删除通信录里某个人的信息。(6)保存通信录的信息。23 运行环境(1)windows2000/xp系统(2)turboc2.0编译环境24开发工具c语言3 概要设计31 系统流程图(如图3.1)inti;返回

3、主菜单menu_select()=2length=enter(adr);break;break;break;length=delete(adr,length);break;break;save(adr,length);break;开始yn输入06ynmenu_select()=0ynynynynmenu_select()=1list(adr,length);search(adr,length);menu_select()=3menu_select()=4length=add(adr,length);ynynmenu_select()=5menu_select()=6exit(0);结束图3.1

4、 系统流程图inti,n;i=0i+returnn;yninscanf(%s%s%s,,ti.units,ti.tele);开始结束32函数“输入”流程图(如图3.2)图3.2 函数“输入”流程图33函数“显示”流程图(如图3.3)inti;i=0i+printf(*end*n);ynin-1图3.4 函数“查找”流程图chars20;returnn;print(ti);j+n-;开始结束ynin-1print(ti);ynch=1j=i+1ystrcpy(,);nj=i36 函数“增加”流程图(如图3.6)图3.6 函数“增加”流程图inti;p

5、rintf(nsaving filen);i=0i+fclose(fp);yn(fp=fopen(record.txt,wb)=nullprintf(can not open filen);yninfprintf(fp,%-20s%-30s%-10s,,ti.units,ti.tele);开始结束37 函数“保存”流程图(如图3.7) 图3.7 函数“保存”流程图4 详细设计41 通信录管理根据提示,对通信录进行不同的管理。42 分析和设计在程序的开头部分是就宏定义了m#define m 50,随着在主函数中又有address adrm; 这就定义了50个用来存放通信录的各种信息

6、的结构体变量。然后定义结构体变量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);

7、/*删除记录*/int add(address t,int n); /*插入记录*/void save(address t,int n); /*记录保存为文件*/void print(address temp); /*显示单条记录*/int menu_select(); /*主菜单函数*/ 这就是程序中所有的子函数,在这里起到一个函数声明的作用。函数“输入”int enter(address t) int i,n; char *s; clrscr(); /*清屏*/ printf(nplease input num n); /*提示信息*/ scanf(%d,&n); /*输入记录数*/ pr

8、intf(please input record n); /*提示输入记录*/ printf(name unit telephonen); printf(-n); for(i=0;in;i+) scanf(%s%s%s,,ti.units,ti.tele); /*输入记录*/ printf(-n); return n; /*返回记录条数*/*显示记录,参数为记录数组和记录条数*/这个函数表示的是调用的函数“输入”。然后输入记录数,再将通信录成员的信息都输入系统,将其赋入结构体中,当输入成员的信息等于记录数时,结束输入。函数“显示”void list(address t,int n

9、) int i; clrscr(); printf(nn*address*n); printf(name unit telephonen); printf(-n); for(i=0;in-1) /*如果整数i值大于n-1,说明没找到*/ printf(not foundn); else print(ti); /*找到,调用显示函数显示记录*/*显示指定的一条记录*/void print(address temp) clrscr(); printf(nn*n); printf(name unit telephonen); printf(-n); printf(%-20s%-30s%-10sn,t

10、,temp.units,temp.tele); printf(*end*n);/*查找函数,参数为记录数组和记录条数以及姓名s */int find(address t,int n,char *s) int i; for(i=0;in-1) /*如果in-1超过了数组的长度*/ printf(no found not deletedn); /*显示没找到要删除的记录*/ else print(ti); /*调用输出函数显示该条记录信息*/ printf(are you sure delete it(1/0)n); /*确认是否要删除*/ scanf(%d,&ch); /*输入一

11、个整数0或1*/ if(ch=1) /*如果确认删除整数为1*/ for(j=i+1;j=i;j-) /*从最后一个结点开始向后移动一条*/ strcpy(tj+1.name,); /*当前记录的姓名拷贝到后一条*/ strcpy(tj+1.units,tj.units); /*当前记录的单位拷贝到后一条*/ strcpy(tj+1.tele,tj.tele); /*当前记录的电话拷贝到后一条*/ strcpy(,); /*将新插入记录的姓名拷贝到第i个位置*/ strcpy(ti.units,temp.units); /*将新插入记录的单位拷贝到

12、第i个位置*/ strcpy(ti.tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/ n+; /*记录数加1*/ return n; /*返回记录数*/ 这个函数表示的是调用的函数“增加”。输入要增加的成员的信息,然后系统提示把新增的成员放通信录里的成员位置之前。调用find函数,找到位置,然后该位置开始所有的成员往后移一个位置。再将那个新纪录放在该位置上。函数“保存”void save(address t,int n) int i; file *fp; /*指向文件的指针*/ if(fp=fopen(record.txt,wb)=null) /*打开文件,并判断打

13、开是否正常*/ printf(can not open filen);/*没打开*/ exit(1); /*退出*/ printf(nsaving filen); /*输出提示信息*/ fprintf(fp,%d,n); /*将记录数写入文件*/ fprintf(fp,rn); /*将换行符号写入文件*/ for(i=0;in;i+) fprintf(fp,%-20s%-30s%-10s,,ti.units,ti.tele);/*格式写入记录*/ fprintf(fp,rn); /*将换行符号写入文件*/ fclose(fp);/*关闭文件*/ printf(*save succ

14、ess*n); /*显示保存成功*/ 这个函数表示的是调用的函数“保存”。打开文件,将信息存入文件中。43 具体代码实现 /*头文件(.h)*/#include stdio.h /*i/o函数*/#include stdlib.h /*标准库函数*/#include string.h/*字符串函数*/#include ctype.h /*字符操作函数*/#define m 50 /*定义常数表示记录数*/typedef struct /*定义数据结构*/ char name20; /*姓名*/ char units30; /*单位*/ char tele10; /*电话*/address;/*

15、以下是函数原型*/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(address t,int n); /*记录保存为文件*/void print(address temp); /*显示单条记录*/int menu_select(); /*主菜单函数*/*主函数开始*/

16、main() int i; address adrm; /*定义结构体数组*/ int length; /*保存记录长度*/ clrscr(); /*清屏*/ for(;)/*无限循环*/ switch(menu_select() /*调用主菜单函数,返回值整数作开关语句的条件*/ case 0:length=enter(adr);break;/*输入记录*/ case 1:list(adr,length);break; /*显示全部记录*/ case 2:search(adr,length);break; /*查找记录*/ case 3:length=delete(adr,length);b

17、reak; /*删除记录*/ case 4:length=add(adr,length); break; /*插入记录*/ case 5:save(adr,length);break; /*保存文件*/ case 6:exit(0); /*如返回值为6则程序结束*/ /*菜单函数,函数返回值为整数,代表所选的菜单项*/menu_select() char s80; int c; gotoxy(1,25);/*将光标定为在第25行,第1列*/ printf(press any key enter menu.n);/*提示压任意键继续*/ getch(); /*读入任意字符*/ clrscr();

18、 /*清屏*/ gotoxy(1,1); printf(*menu*nn); printf( 0. enter recordn); printf( 1. list the filen); printf( 2. search record on namen); printf( 3. delete a recordn); printf( 4. add record n); printf( 5. save the filen); printf( 6. quitn); printf(*n); do printf(n enter you choice(06):); /*提示输入选项*/ scanf(%s

19、,s); /*输入选择项*/ c=atoi(s); /*将输入的字符串转化为整型数*/ while(c6); /*选择项不在06之间重输*/ return c; /*返回选择项,主程序根据该数调用相应的函数*/*输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/int enter(address t) int i,n; char *s; clrscr(); /*清屏*/ printf(nplease input num n); /*提示信息*/ scanf(%d,&n); /*输入记录数*/ printf(please input record n); /*提示输入记录*/ pr

20、intf(name unit telephonen); printf(-n); for(i=0;in;i+) scanf(%s%s%s,,ti.units,ti.tele); /*输入记录*/ printf(-n); return n; /*返回记录条数*/*显示记录,参数为记录数组和记录条数*/void list(address t,int n) int i; clrscr(); printf(nn*address*n); printf(name unit telephonen); printf(-n); for(i=0;in-1) /*如果整数i值大于n-1,说明没找到*/

21、printf(not foundn); else print(ti); /*找到,调用显示函数显示记录*/*显示指定的一条记录*/void print(address temp) clrscr(); printf(nn*n); printf(name unit telephonen); printf(-n); printf(%-20s%-30s%-10sn,,temp.units,temp.tele); printf(*end*n);/*查找函数,参数为记录数组和记录条数以及姓名s */int find(address t,int n,char *s) int i; for(

22、i=0;in-1) /*如果in-1超过了数组的长度*/ printf(no found not deletedn); /*显示没找到要删除的记录*/ else print(ti); /*调用输出函数显示该条记录信息*/ printf(are you sure delete it(1/0)n); /*确认是否要删除*/ scanf(%d,&ch); /*输入一个整数0或1*/ if(ch=1) /*如果确认删除整数为1*/ for(j=i+1;j=i;j-) /*从最后一个结点开始向后移动一条*/ strcpy(tj+1.name,); /*当前记录的姓名拷贝到后一条*/ str

23、cpy(tj+1.units,tj.units); /*当前记录的单位拷贝到后一条*/ strcpy(tj+1.tele,tj.tele); /*当前记录的电话拷贝到后一条*/ strcpy(,); /*将新插入记录的姓名拷贝到第i个位置*/ strcpy(ti.units,temp.units); /*将新插入记录的单位拷贝到第i个位置*/ strcpy(ti.tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/ n+; /*记录数加1*/ return n; /*返回记录数*/*保存函数,参数为结构体数组和记录数*/void save

24、(address t,int n) int i; file *fp; /*指向文件的指针*/ if(fp=fopen(record.txt,wb)=null) /*打开文件,并判断打开是否正常*/ printf(can not open filen);/*没打开*/ exit(1); /*退出*/ printf(nsaving filen); /*输出提示信息*/ fprintf(fp,%d,n); /*将记录数写入文件*/ fprintf(fp,rn); /*将换行符号写入文件*/ for(i=0;in;i+) fprintf(fp,%-20s%-30s%-10s,,ti.un

25、its,ti.tele);/*格式写入记录*/ fprintf(fp,rn); /*将换行符号写入文件*/ fclose(fp);/*关闭文件*/ printf(*save success*n); /*显示保存成功*/5 课程设计的总结与体会通过这次课程设计使我充分掌握了本学期所学的有关c语言编程的相关知识,知道了该如何运用所学知识来为自己服务。掌握了把各种编程的技巧糅合在一起的方法。班费管理系统的实现过程,使自己充分的认识到了自己的一些不足之处,并且使自己完善了自己的编程能力。通过自己动手编写的程序,使自己的所立下目的达到,我感到非常有成就感,也锻炼了我的编程能力。在刚开始编程的时候,错误百

26、出,不知道怎么样改正,但是通过自己的仔细的分析和老师的细心的指导,在认真分析了原程序后,终于认识并理解了自己错误的地方,使自己加以改正,汲取教训。为以后知识水平的提高,做了最好的准备。参考文献1李丽娟,牛莉。c语言程序设计 第1版.中国铁道出版社.2006年7月.2李丽娟,马淑萍。c语言程序设计实验教程。2006年8月,第一版。致 谢在此我非常要感谢的是我们的指导老师邓波老师,同时也要感谢我们的黄磊老师平时上课的教导,和编程时细心认真的辅导,教给我许多知识。这次课程设计能够顺利的完成,当然有我个人的努力,但同时更离不开指导老师的答疑解惑。附件2 课程设计(论文)任务书年级专业08级信息大类学生

27、姓名学 号题目名称通信录管理设计时间5.256.8课程名称c语言课程设计课程编号130000051设计地点实验楼机房一、 课程设计(论文)目的学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。二、已知技术参数和条件本学期已经学习了c语言程序设计课程中的所有内容,已经具有了课程设计的理论知识。三、任务和要求1、任务(1)录入通信录信息(包括姓名、单位、电话号码)。(2)显示通信录里的所有成员的信息。(3)查询通信录中某个人的信息。(4)增加某个人的信息到通信录中。(5)删除通信录里某个人的信息。(6)保存通信录的信息。2、要求(1)用c语言实现程序设计;

温馨提示

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

评论

0/150

提交评论