(完整word版)个人通讯录管理(c语言课程设计)
- 格式:doc
- 大小:167.00 KB
- 文档页数:27
西安郵電學院高级语言课程设计报告书系部名称通信工程学院学生姓名张博专业名称电子信息科学与技术班级电科0901班学号04092018指导教师夏虹2010年11月22日至时间2010年12月03日实验题目个人通讯录管理系统一、实验目的设计一个个人通讯录管理系统,拥有对数据的各种操作功能,实现对通讯录的管理,从而巩固C语言程序设计二、实验内容个人通讯录管理系统需求分析个人通讯录管理系统总体设计个人通讯录管理系统详细设计个人通讯录管理系统模块设计个人通讯录管理系统系统集成个人通讯录管理系统测试运行三、需求分析对于一个通用的个人通讯录管理系统而言,用户首先要能够对通讯录中的数据进行录入,删除,更新和输出等操作,其次要求对通讯录中的数据进行查找操作。
根据上述分析,在后面给出该个人通讯录的主要实现功能。
⏹信息录入:即创建一个存储通讯录信息的数据结构,有用户从键盘上录入信息,或从数据表文件中导入到该数据结构中。
⏹信息更新:对数据结构中已有的信息进行修改,并将结果保存在数据结构中。
⏹信息删除:删除数据结构中无用的信息,并将解雇保存在无数据结构中。
⏹信息查询;针对用户输入的目标值,在数据结构中查找对应的记录,并将其输出到用户屏幕。
⏹信息导入:将某文件中的信息导入到创建的数据结构中,提高数据的输入效率。
⏹信息导出:将数据结构中的记录导出到文件中,已永久保存下来。
信息输出:将数据结构中的信息或指定的信息输出到用户屏幕中。
四、概要设计1.数据类型dnode *p,*rear,*q; /*定义指针结点*/const char USER[]={'w','a','l','d','e','n'},PASSWORD[]={'4','1','6','9','5','3'}; /*定义用户密码*/int OK=1,i; /*用作循环变量或返回值*/FILE *fp; /*定义文件指针*/ 2、数据结构说明/*data structure*/typedef struct txl{char name[20]; /*成员姓名,为通讯录管理的对象*/char sex[4]; /*性别,可用于快速类别查询,区别数据成员*/ char city[20]; /*所在城市,可用于快速类别查询,区别数据成*/ char province[20]; /*省别*/char qq[11]; /*QQ号,管理查询主信息*/char phone number[11]; /*对象电话号,管理查询主信息*/}dtxl; /*建立通讯录信息结构体*/typedef struct dlnode{dtxl data; /*定义数据域*/struct dlnode*prior; /*前驱指针*/struct dlnode*next; /*后继指针*/}dnode; /*建立双向链表结构体*/程序中定义的数据类型——结构体(各个成员的作用)3、模块功能说明信息录入功能模块:实现用户从键盘输入数据存储对应字段或该数据成员中,并检查输入的合法性。
c语言课程设计通讯录一、教学目标本章节的教学目标旨在让学生掌握C语言编程基础,了解和运用C语言进行通讯录管理系统的设计与实现。
具体来说:1.知识目标:使学生理解C语言的基本语法、数据类型、运算符、控制结构、函数等编程基础,掌握结构体和文件操作等相关知识。
2.技能目标:培养学生具备使用C语言进行程序设计的能力,能够独立完成一个简单的通讯录管理系统,并掌握调试和纠错的方法。
3.情感态度价值观目标:培养学生对计算机编程的兴趣,增强其自主学习和解决问题的能力,使其认识编程在实际生活中的应用和价值。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数、结构体和文件操作等。
具体安排如下:1.C语言的基本语法和数据类型:介绍C语言的基本语法规则,包括变量声明、数据类型、运算符等。
2.控制结构:讲解条件语句(if-else)、循环语句(for、while)等控制结构的使用和原理。
3.函数:学习函数的定义、声明、调用和返回值,了解局部变量和全局变量的概念。
4.结构体:掌握结构体的定义和使用,了解数组、指针和结构体之间的关系。
5.文件操作:学习文件的基本操作,包括文件的打开、关闭、读写等。
6.通讯录管理系统的设计与实现:引导学生运用所学知识设计和实现一个简单的通讯录管理系统,包括数据的增删改查等功能。
三、教学方法为了提高教学效果,本章节将采用多种教学方法相结合的方式:1.讲授法:讲解C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识。
2.案例分析法:通过分析具体的通讯录管理系统案例,使学生掌握结构体和文件操作等相关知识。
3.实验法:安排实验课程,让学生动手实践,独立完成一个简单的通讯录管理系统。
4.讨论法:学生进行小组讨论,分享学习心得和解决问题的方法,互相借鉴和提高。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。
通讯录管理系统C语言课程设计报告一、引言通讯录管理系统是一种能够对联系人信息进行存储、增删改查等管理操作的系统。
在本课程设计中,我设计并实现了一个基于C语言实现的通讯录管理系统,采用顺序储存的数据结构。
本报告将介绍通讯录管理系统的设计思路、功能特点以及实现过程。
二、需求分析通讯录管理系统主要包括以下功能:1.添加联系人信息2.删除联系人信息3.修改联系人信息4.查询联系人信息5.显示所有联系人信息在设计系统时,需要考虑如何高效地实现上述功能,并保证数据的准确性和一致性。
三、设计思路为了实现通讯录管理系统,我采用了顺序储存的方式存储联系人信息。
具体而言,我使用结构体数组来存储联系人的姓名、电话号码等信息,通过数组下标来实现对联系人信息的操作。
四、功能实现1. 添加联系人信息用户通过输入联系人的姓名、电话号码等信息,将新的联系人信息添加到通讯录中。
系统会提示用户输入相关信息,并将信息加入到结构体数组中。
2. 删除联系人信息用户可以根据联系人的姓名或电话号码来删除指定的联系人信息。
系统会遍历结构体数组,找到相应的联系人信息并删除。
3. 修改联系人信息用户可以选择需要修改的联系人信息,然后输入新的信息进行修改。
系统会在结构体数组中找到对应的联系人信息,并进行更新操作。
4. 查询联系人信息用户可以通过姓名或电话号码查询指定联系人的信息。
系统会输出符合条件的联系人信息。
5. 显示所有联系人信息系统会将通讯录中所有联系人的信息依次显示出来,方便用户查看。
五、总结通过本次课程设计,我深入理解了C语言的数据结构和实现原理,同时锻炼了对问题的分析与解决能力。
通讯录管理系统是一个简单且实用的应用,通过本次设计,我对通讯录系统的设计与实现有了更深入的认识,也提高了编程的能力。
六、参考文献暂无以上是对通讯录管理系统C语言课程设计报告的简要介绍,希望能够对您有所帮助。
科技学院《C语言程序设计》课程设计报告学院:_电气与信息工程学院_ 专业班级: 电自专2011-01学生: 洪山学号: 2011630194设计地点(单位)________ I515 ______________ __设计题目:__________个人通讯录管理系统 _____________完成日期: 2012 年12月28日指导教师评语: ______________________ _________________ __________________________________________________________________________________ __________________________________________________________________________________ _____________________________________ __________ _成绩(五级记分制):______ __________指导教师(签字):________ ________摘要本次课程设计的题目为个人通讯录管理系统,要求将程序中所输入的联系人、和地址信息这三个数据以文本方式保存在磁盘中,并且能够对所储存的联系人信息进行显示、查询、修改、删除等功能。
我编写的程序从整体上看可分为两个部分,一部分为文件的建立、读取和保存,另一部分为通讯录功能的实现。
在文件部分,我通过readfile()函数和writefile()函数从而实现了对磁盘上数据的进行写和读,通过刚开始的界面提示可以知道文件是否建立,以免丢失数据,我还为用户设计了保存退出和不保存退出两大功能供用户做选择。
在模块功能实现部分,通过scanf从键盘上输入的数字放到switch() case 循环中来实现调用zengjia()、shanchu()、xiugai()、chazhao()等十五个函数来实现“添加”、“查询和显示”、“修改”、“删除”等不同功能。
开放教育课程设计报告书课程名称:通讯录管理系统班级:综合邮政07秋学号: 077240001姓名:王芬指导老师:高海东通讯录管理系统一.需求分析设计题目及要求:◆建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子邮箱等;◆能够提供添加、删除和修改通讯录信息的功能;◆能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询;◆将通讯录保存在文件中;◆能够按表格方式输出通讯录信息。
系统功能需求分析:主要包含一下多种功能:添加:添加通讯录记录显示:显示通讯录记录删除:删除通讯录记录查询:查询通讯录记录修改:修改通讯录记录保存:将信息保存到文件二.概要设计系统功能模块图:添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。
显示:可以以表格形式输出所有通讯录里的记录删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容查询:可以选择用姓名、电话、地址三种方式查询修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件三.详细设计(1).通讯录:typedef struct{char score; /*编号*/char name[10]; /*姓名*/char num[15]; /*号码*/char email[20]; /*邮箱*/char age[8]; /*年龄*/char adds[20]; /*住址*/}Person;void main() /*主函数*/{int n=0;for(;;){switch(menu_select()){case 1:printf("\n\t添加记录到通讯录\n"); /*添加记录*/n=Input(pe,n);break;case 2:printf("\n\t\t\t 通讯录记录表\n"); /*显示记录*/Display(pe,n);break;case 3:printf("\n\t从通讯录中删除记录\n");n=Delete_a_record(pe,n); /*删除记录*/printf("\t");system("pause");break;case 4:printf("\n\t在通讯录中查找记录\n");Query_a_record(pe,n); /*查找记录*/printf("\t");system("pause");break;case 5:printf("\n\t修改通讯录中的记录\n");Change(pe,n); /*修改数据*/printf("\t");system("pause");break;case 6:printf("\n\t保存功能\n");WritetoText(pe,n); /*保存数据*/printf("\t");system("pause");break;case 0:printf("\n\t\t谢谢使用,再见!\n"); /*结束程序*/printf("\n\t\t");system("pause");exit(0);}}}(2).工作流程图:①添加:添加通讯录记录②显示:显示通讯录记录③删除:删除通讯录记录④查询:查询通讯录记录先选择查询方式,以姓名查询方式为例⑤修改:修改通讯录记录四.源程序代码#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct{char score; /*编号*/char name[10]; /*姓名*/char num[15]; /*号码*/char email[20]; /*邮箱*/char age[8]; /*年龄*/char adds[20]; /*住址*/ }Person;Person pe[80];int menu_select(){char c;do{system("cls");printf("\t\t *****通讯录***** \n");printf("\t\t┌───────┐\n");printf("\t\t│1. 添加记录│\n");printf("\t\t│2. 显示记录│\n");printf("\t\t│3. 删除记录│\n");printf("\t\t│4. 查询记录│\n");printf("\t\t│5. 修改记录│\n");printf("\t\t│6. 保存记录│\n");printf("\t\t│0. 退出程序│\n");printf("\t\t└───────┘\n");printf("\t\t请您选择(0-6):");c=getchar();}while(c<'0'||c>'6');return(c-'0');}int Input(Person per[],int n){int i=0;char sign,x[10];while(sign!='n'&&sign!='N'){printf("\t编号:");scanf("\t%d",&per[n+i].score);printf("\t姓名:");scanf("\t%s",per[n+i].name);printf("\t年龄:");scanf("\t%s",per[n+i].age);printf("\t电话号码:");scanf("\t%s",per[n+i].num);printf("\t通讯住址:");scanf("\t%s",per[n+i].adds);printf("\t电子邮箱:");scanf("\t%s",per[n+i].email);gets(x);printf("\n\t是否继续添加?(Y/N)");scanf("\t%c",&sign);i++;}return(n+i);}void Display(Person per[],int n){int i;printf("----------------------------------------------------------------------\n");/*格式*/printf("编号姓名年龄电话号码通讯地址电子邮箱\n");printf("----------------------------------------------------------------------\n");for(i=1;i<n+1;i++){printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num, per[i-1].adds,per[i-1].email);if(i>1&&i%10==0){printf("\t-----------------------------------\n");printf("\t");system("pause");printf("\t-----------------------------------\n");}}printf("----------------------------------------------------------------------\n");system("pause");}int Delete_a_record(Person per[],int n){char s[20];int i=0,j;printf("\t请输入想删除记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return(n);}for(j=i;j<n-1;j++){strcpy(per[j].num,per[j+1].num);strcpy(per[j].name,per[j+1].name);strcpy(per[j].age,per[j+1].age);strcpy(per[j].adds,per[j+1].adds);strcpy(per[j].email,per[j+1].email);per[j].score=per[j+1].score;}printf("\t\t\t已经成功删除!\n");return(n-1);}void Query_a_record(Person per[],int n){int m;printf("\t\n请选择查询方式:\n");printf("\t┌──────┐\n");printf("\t│1------姓名│\n");printf("\t│2------电话│\n");printf("\t│3------地址│\n");printf("\t│4------返回│\n");printf("\t└──────┘\n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){printf("输入错误,请重新选择:");scanf("%d",&m);}if(m==1){char s[20];int i=0;printf("\t请输入想查询的姓名:");scanf("\t%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人编号: %d\n",per[i].score);printf("\t此人年龄: %s\n",per[i].age);printf("\t电话号码: %s\n",per[i].num);printf("\t通讯地址: %s\n",per[i].adds);printf("\t电子邮箱: %s\n",per[i].email);} ;if(m==2){char s[20];int i=0;printf("\t请输入想查询的电话:");scanf("\t%s",s);while(strcmp(per[i].num,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人编号: %d\n",per[i].score);printf("\t此人姓名: %s\n",per[i].name);printf("\t此人年龄: %s\n",per[i].age);printf("\t通讯地址: %s\n",per[i].adds);printf("\t电子邮箱: %s\n",per[i].email);} ;if(m==3){char s[20];int i=0;printf("\t请输入想查询的地址:");scanf("\t%s",s);while(strcmp(per[i].adds,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t此人编号: %d\n",per[i].score);printf("\t此人姓名: %s\n",per[i].name);printf("\t此人年龄: %s\n",per[i].age);printf("\t电话号码: %s\n",per[i].num);printf("\t电子邮箱: %s\n",per[i].email);} ;}void Change(Person per[],int n){char s[20];int i=0;printf("\t请输入想修改的记录中的名字:");scanf("%s",s);while(strcmp(per[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t通讯录中没有此人!\n");return;}printf("\t编号:");scanf("\t%d",&per[i].score);printf("\t姓名:");scanf("\t%s",per[i].name);printf("\t年龄:");scanf("\t%s",per[i].age);printf("\t电话号码:");scanf("\t%s",per[i].num);printf("\t通讯住址:");scanf("\t%s",per[i].adds);printf("\t电子邮箱:");scanf("\t%s",per[i].email);printf("\t修改成功!");}void WritetoText(Person per[],int n){int i=0;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t保存到文件\n"); /*输入文件名*/printf("\t请输入所保存的文件名:");scanf("\t%s",filename);if((fp=fopen(filename,"w"))==NULL){printf("\t无法打开文件\n");system("pause");return;}fprintf(fp,"******************************************通讯录******************************************\n");fprintf(fp,"编号姓名年龄电话号码通讯地址电子邮箱\n");fprintf(fp,"------------------------------------------------------------------------------------------\n");while(i<n){fprintf(fp,"%-3d\t%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n",per[i].score,per[i].name,per[i].age,per[i].nu m,per[i].adds,per[i].email);i++;}fprintf(fp,"------------------------------------------------------------------------------------------\n");fprintf(fp,"***************************************共有%d条记录****************************************\n",n);fclose(fp); /*关闭文件*/printf("保存成功!\n");}void main() /*主函数*/{int n=0;for(;;){switch(menu_select()){case 1:printf("\n\t添加记录到通讯录\n"); /*添加记录*/n=Input(pe,n);break;case 2:printf("\n\t\t\t 通讯录记录表\n"); /*显示记录*/Display(pe,n);break;case 3:printf("\n\t从通讯录中删除记录\n");n=Delete_a_record(pe,n); /*删除记录*/printf("\t");system("pause");break;case 4:printf("\n\t在通讯录中查找记录\n");Query_a_record(pe,n); /*查找记录*/printf("\t");system("pause");break;case 5:printf("\n\t修改通讯录中的记录\n");Change(pe,n); /*修改数据*/printf("\t");system("pause");break;case 6:printf("\n\t保存功能\n");WritetoText(pe,n); /*保存数据*/printf("\t");system("pause");break;case 0:printf("\n\t\t谢谢使用,再见!\n"); /*结束程序*/printf("\n\t\t");system("pause");exit(0);}}}五.测试数据及其结果分析测试:1).显示的主菜单界面2).添加界面:3).显示界面:4).删除界面:删除后,通讯录里的显示记录:5).查询界面:以姓名查询方式为例:6).修改界面:修改后,通讯录里的显示记录:7).保存界面:tongxunlu.txt文件截图:问题思考:1.当我在进行删除、查询、修改、保存等功能时,以查询为例,输入名字按回车后,虽然会显示该人的所有记录,但是显示后,它马上自动消失了,还没来得及等我看内容。
c语言课程设计 通讯录管理系统一、课程目标知识目标:1. 理解C语言中结构体的概念和使用方法,掌握利用结构体创建复杂数据结构的能力;2. 学会使用数组存储结构体数据,实现对通讯录信息的有效管理;3. 掌握基本的文件操作,能够实现通讯录数据的存储和读取。
技能目标:1. 能够运用结构体和数组设计并实现一个简单的通讯录管理系统;2. 掌握在C语言中进行简单的输入输出操作,实现用户界面的友好交互;3. 学会使用调试工具进行程序调试,提高解决问题的能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发其主动探索和创新的欲望;2. 培养学生的团队协作意识,学会在项目开发中与他人合作;3. 引导学生关注信息技术在生活中的应用,认识到编程对解决实际问题的重要性。
课程性质:本课程为实践性较强的课程,要求学生在掌握C语言基础知识的基础上,运用所学知识设计并实现一个通讯录管理系统。
学生特点:学生具备一定的C语言基础,对编程有一定的兴趣,但可能缺乏实际项目经验。
教学要求:通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高其编程能力和解决实际问题的能力。
将课程目标分解为具体的学习成果,以便在教学过程中进行有效指导和评估。
二、教学内容1. 结构体和结构体数组的概念及应用- 课本章节:第五章 结构体与共用体- 内容:结构体的定义、结构体成员的访问、结构体数组的创建与使用。
2. 文件操作基础- 课本章节:第六章 文件- 内容:文件的打开与关闭、文件的读写操作、文件的定位。
3. 通讯录管理系统设计- 内容:系统需求分析、功能模块划分、系统设计、实现与测试。
4. 用户界面设计- 内容:菜单设计、命令行用户输入输出、简单的人机交互流程。
5. 项目实践与团队协作- 内容:项目分组、任务分配、代码共享与协作、项目评审。
教学进度安排:第一周:复习结构体和结构体数组相关知识,讲解通讯录管理系统需求。
第二周:学习文件操作基础,设计通讯录数据存储与读取功能。
摘要通讯录[address book] 记录通讯地址的书本,通讯录涵盖了多项内容:可以储存一个人的姓名、手机号码、家庭住址、QQ等,以方便联系。
通过学习我设计一个个人通讯录管理,这个系统可以方便人们的查找个人信息,他具有快速查找的功能,主要是通过按姓名查找、按手机号码查找、按地址查询等。
这个通讯录可以修改已存所有人的任何信息,也可以删除里面你不想储存人的信息,当你在运行删除的时候,系统会再次提醒你是否删除,一旦删除将会永远删除。
关键字:通讯录查找删除重庆科技学院课程设计任务书设计题目:个人通讯录管理系统杨治明 2012年1月1日目录摘要 (1)课程设计责任书 (2)软件需求分析说明书 (4)第一章系统分析与设计 (5)第二章软件的实现 (6)2.1 软件界面设计 (6)2.2 软件的数据(结构)设计 (6)2.3 软件的算法设计 (6)第三章软件测试 (7)第四章软件使用说明书 (8)致谢 (9)参考文献 (10)软件需求分析说明书个人通讯录管理是个可以储存、修改、查看、查找、删除的功能。
在这个程序中可以储存一个人的姓名、家庭住址、手机号码、QQ号等信息,可以同时查看所有已存的信息,如果已存的数量过多,你可以选择快速查找,快速查找方式有:按姓名查找、按家庭住址查找、按手机号码查找、按QQ号查找。
如果要删除信息,只要输入你要删除信息的编号就可以删除,在删除过程中,系统会再次提醒你是否确认删除,以免后悔。
如果确定删除将会永远删除。
这个程序也可以修改,输入想修改的编号,就可以修改了。
如果你输入的编号不存在,系统将会提示你是否查看所有已存的数据。
第五章系统分析与设计2.1 软件界面设计图2.1 通讯录管理的主界面根据主界面的提示选择你想要执行的任务项钱的字母图2.2 添加联系人在添加联系人中尼可以输入姓名、地址、电话号码、QQ号,输入好之后你可以继续完成其他选项。
图2.3 浏览信息按b 屏幕上将显示已储存的个人信息,按a 将继续为你服务。
c语言课程设计通讯录管理系统一、教学目标本课程旨在通过学习C语言,使学生掌握通讯录管理系统的基本概念、原理和方法,培养学生运用C语言进行程序设计的能力。
具体目标如下:1.理解C语言的基本语法和数据结构。
2.掌握函数的定义和调用方法。
3.了解通讯录管理系统的基本需求和设计思路。
4.能够使用C语言编写简单的程序。
5.能够独立完成通讯录管理系统的功能模块设计。
6.具备调试和优化程序的能力。
情感态度价值观目标:1.培养学生的团队合作意识和沟通能力。
2.培养学生的创新思维和解决问题的能力。
3.培养学生对编程事业的热爱和敬业精神。
二、教学内容本课程的教学内容主要包括C语言基础知识、通讯录管理系统的设计和实现。
具体安排如下:1.C语言基础知识:–数据类型和变量–运算符和表达式–数组和字符串2.通讯录管理系统的设计和实现:–系统需求分析–功能模块划分–程序编写和调试三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解C语言的基本语法和概念,使学生掌握基础知识。
2.案例分析法:分析实际案例,让学生了解通讯录管理系统的设计过程和思路。
3.实验法:让学生动手编写程序,培养实际操作能力和解决问题的能力。
四、教学资源本课程的教学资源包括教材、多媒体资料和实验设备。
1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。
2.多媒体资料:制作课件、教学视频等,丰富教学手段,提高教学质量。
3.实验设备:提供计算机、编程环境等,让学生进行实际操作,锻炼编程能力。
五、教学评估本课程的评估方式包括平时表现、作业、考试等,以全面、客观、公正地评价学生的学习成果。
1.平时表现:通过课堂参与、讨论、提问等环节,评估学生的学习态度和积极性。
2.作业:布置适量作业,评估学生的理解和应用能力。
3.考试:进行期中和期末考试,评估学生的知识掌握和编程能力。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材和教学大纲,合理安排每个章节的教学内容。
一、题目内容的描述学生通讯录管理系统设计设计一个学生通信录,学生通迅录数据信息构成内容可自行设计(如:姓名、家庭地址、邮政编码、电话号码等等),通信录数据类型定义为结构体类型。
由键盘输入数据(最好要考虑输入数据输入的格式及输入数据的有效性),然后进行以下的功能实现。
程序要求主函数是一个功能选择菜单,其它各功能都用各自的函数实现。
功能要求如下:1、能建立、修改和增删学生通讯录2、能够按多种方式进行查询,例如按姓名、按电话号码等。
3、通讯录的数据保存在文件中,运行程序时将通讯录数据从文件读取到内存中。
对通讯录进行增加、删除、修改学生数据后,提供功能菜单,可以将内存中修改过的通讯录重新保存至文件。
二、应用程序功能的详细说明1、应用程序实现了可视化的系统操作界面。
2、对学生通讯录形成了系统化的管理,操作简便明了。
3、程序具有系统帮助,添加、显示、查询、刷新、删除、排序、保存、修改、读取学生通讯录的功能。
各项功能均可按照文字提示操作,浅显易懂。
4、系统的各个功能模块都用函数的形式来实现(readfile()、seek()、modify()、sort()、insert()、del()、save()、menu())方便查看。
5.可以将信息保存在文件("student.txt")中,亦可将信息从文件中读取出来,灵活方便。
三、主要模块的算法描述模块一:头文件,变量定义,函数的声明对系统所使用的变量进行定义,对函数进行声明。
模块二:录入学生信息声明函数void readfile(),说明一个文件指针FILE *fp打开文件"student.txt"。
模块三:学生信息的查找声明void seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支。
模块四:学生信息的修改声明void modify()为学生信息修改函数,通过switch(item)设定所要修改的项目。
(此文档为word格式,下载后您可任意编辑修改!) C语言通讯录管理系统课程设计报告通讯录管理系统题目学号姓名09级电子信息工程年级专业指导教师完成日期年月日1设计题目的内容、任务及具体要求本程序是非数值计算型算法设计,我设计出了通讯录管理系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。
我设计的这个通讯录系统也初步实现了人员信息的显示、删除、查找、修改、添加等必要的功能。
①记录通讯录内的人员的姓名、地址、邮编、电话号码。
②显示所有人员的信息。
③通过输入姓名查找人员信息。
④通过输入姓名查找到要删除的人员信息,然后可以进行删除。
⑤通过输入姓名查找到要修改的人员信息,然后可以进行修改。
⑥添加人员信息。
2总体设计思路本系统首先设计出了主函数,然后根据去要实现的功能分别设计拉,显示、删除、查找、修改、添加功能的子函数。
在显示的函数设计过程中首先运用拉文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。
删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环将该人从内存里删除,然后再用写的方式打开文件,将内存内的信息写入文件,实现删除。
查找也是先打开文件,用一个字符串对比的方法找出用户要查找的人,然后打印出来。
修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。
下面就是总的程序流程图:3功能模块的具体设计3.1 界面分析3.1.1开始界面3.1.2显示功能的界面:选择1后系统出现现有的所有人员名单:3.1.3 显示删除功能的界面3.1.4 查找功能:通过5:find—by—name 用姓名来查找个人的通讯录信息通过6:find—by—tel 用电话号码来查找个人的通讯录信息3.1.5 修改功能的界面:输入姓名后的系统界面:输入修改信息后的系统界面:3.1.6添加功能的界面:选择1后的系统界面:3.2 程序设计主要内容#include<stdio.(){int m;printf(" ***************************************************\n\n\n");printf(" ********* Welcome to use yufeng's ***************\n\n\n"); printf(" ************** addressbook **********************\n\n\n");creat(); *主界面*while(1){ printf(" ******************************\n\n");printf(" 0 exit, press 0\n\n");printf(" 1 append,press 1\n\n");printf(" 2 modify,press 2\n\n");printf(" 3 output,press 3\n\n");printf(" 4 delete,press 4\n\n");printf(" 5 find by name,press 5\n\n");printf(" 6 find by tel,press 6\n\n"); *功能菜单*printf(" ******************************\n");scanf("%d",&m);if(m>=0&&m<=6){switch(m){case 1: append();break;case 2: modify();break;case 3: output();break;case 4: delete();break;case 5: find_by_name();break;case 6: find_by_tel();break;case 0: exit();}printf("\n\nHave finished,select again!\n");}elseprintf("\n\nError,select again!\n");}}void creat(){struct student one;printf("\nInput the name of addressbook:");gets(filename);if((fp=fopen(filename,"w"))==NULL){printf("\nCann't creat addressbook!");exit();}*fprintf(fp,"%-10s%-8d%-20s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);*printf("\nInput name,num,dis,tel,addr(end press #)\n");gets();while(strcmp(,"#")){gets(one.num);gets(one.dis);gets(one.tel);gets(one.addr);fprintf(fp,"%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.ad dr);gets();}fclose(fp);}void find_by_name(){int k=0;char namekey[8];struct student one;printf("\nInput name:");scanf("%s",namekey);if((fp=fopen(filename,"rb"))==NULL){printf("\nCann't open this addressbook!!!");exit();}while(!feof(fp)){fscanf(fp,"%s%s%s%s%s\n",,one.num,one.dis,one.tel,one.addr);if(!strcmp(namekey,)){printf("\n\nHave finded,as follow:\n");printf(" name num dis tel addr ");printf("\n%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);k=1;}if(!k)printf("\n\nSorry,there is no this student!!");fclose(fp);}void find_by_tel(){int k=0;char telkey[8];struct student one;printf("\nInput tel:");scanf("%s",telkey);if((fp=fopen(filename,"rb"))==NULL){printf("\nCann't open this addressbook!!!");exit();}while(!feof(fp)){fscanf(fp,"%s%s%s%s%s\n",,one.num,one.dis,one.tel,one.addr);if(!strcmp(telkey,one.tel)){printf("\n\nHave finded,as follow:\n");printf(" name num dis tel addr");printf("\n%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);k=1;}}if(!k)printf("\n\nSorry,there is no this student!!");fclose(fp);}void output(){struct student one;if((fp=fopen(filename,"r"))==NULL){printf("\nCann't open this addressbook!!!");exit(0);}* printf("\n\n%20s\n"," \nCann't open this addressbook\n");*while(!feof(fp))fscanf(fp,"%s%s%s%s%s\n",,one.num,one.dis,one.tel,one.addr);if(strcmp(,"%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,o ne.addr);}fclose(fp);}void append(){struct student one;if((fp=fopen(filename,"a"))==NULL){printf("\nCann't open this addressbook!!");exit();}printf("\nInput new name,num,dis,tel,addr\n");scanf("%s%s%s%s%s",,one.num,one.dis,one.tel,one.addr);fprintf(fp,"%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);fclose(fp);}void modify(){int m,k=0;long offset;char namekey[8];struct student one;printf("\nInput name:");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL){printf("\nCann't open this addressbook!!!");exit();}while(!feof(fp)){offset=ftell(fp);fscanf(fp,"%s%s%s%s%s\n",,one.num,one.dis,one.tel,one.addr);if(!strcmp(namekey,)){k=1;break;}}if(k){printf("\nHave finded,as follow:");printf("\n%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);printf("\nInput new name,num,dis,tel,addr:");scanf("%s%s%s%s%s",,one.num,one.dis,one.tel,one.addr);fseek(fp,offset,SEEK_SET);printf("%1d",ftell(fp));fprintf(fp,"%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);}elseprintf("\nSorry,there is no this student!!");fclose(fp);}void delete(){int m,k=0,flag;long offset1;char namekey[8];struct student one;printf("\nInput name:");scanf("%s",namekey);if((fp=fopen(filename,"r+"))==NULL){printf("\nCann't open this addressbook!!");exit();}while(!feof(fp)){ offset1=ftell(fp);fscanf(fp,"%s%s%s%s%s\n",,one.num,one.dis,one.tel,one.addr);if(!strcmp(namekey,)){k=1;break;}}if(k){printf("\nHave finded,as follow:");printf("\n%-10s%-10s%-10s%-20s%-20s\n",,one.num,one.dis,one.tel,one.addr);printf("\n delete,press1:\n not delete,press0:");scanf("%d",&m);if(m){fseek(fp,offset1,SEEK_SET);strcpy(,"",,one.num,one.dis,one.tel,one.addr);}}elseprintf("\nSorry,there is no this student!!");fclose(fp);}通过对这些资源的合理利用使系统初步实现了通讯录管理系统的基本功能。
安徽工业大学
《C语言课程设计》实习综合报告 课题名称: 个人通讯录管理系统 实习成员: 王刚 学 号: 109074372 专业班级: 网络工程103班 指导教师: 郑啸老师 目录 一.问题描述……………………………………………..2 二. 各功能流程图与设计思路…………………………..3 2.1显示模块……………………………………….……3 2.2查找模块……………………………………………4.. 2.3添加模块…………………………………………..…6 2.4删除模块………………………………………..……8 2.5修改模块…………………………………………..…9 三、文件的读取与保存…………………………………….11 四、程序源代码……………………………………….……12 五、调试与运行结果…………………………………….…18
六、计算机学院课程设计评定意见……………………….24 一.问题描述 设计通讯录包含以下功能: (1) 通讯录的每一条信息包括姓名、单位、固定电话、移动手
机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。 (2) 输入功能:可以一次完成若干条信息的输入。
(3) 显示功能:完成全部通讯录信息的显示。
(4) 查找功能:可以按姓名等多种方式查找通讯信息。
(5) 增加、删除、修改功能:完成通讯录信息的多种更新。
二.各功能流程图与设计思路
Menu菜单: 运用switch()进行操作:
case'1': 显示功能,list()函数
开始 菜单menu
显示 查找 增加 删除 修改 保存 结束 说明:利用for循环,逐个输出已保存的内容
代码如下:
//*****************显示通讯录中的内容*************
void list() { printf("编号姓名 电话 \t手机 \t工作单位\tEMAIL \t\tQQ\n"); for(i=0;i{ if(rec[i].name[0]) { printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name, rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq); } }printf("\t\t\t----------------END--------------\n");
}
case'2': 查找功能,search()函数
开始 For 循环
输出信息 结束
Y
N 说明:先用switch让操作者选择是按姓名查找还是按编号查找,然后再按操作者的输入,逐个判断是否有操作者要查的联系人信息,若有则输出此人信息,若没有则输出“通讯录中没有您要查找的联系人”
代码如下: //*****************查找联系人的信息********************
void search() { char xm[10]; char ch; int d; printf("→1.按姓名查找\n");
开始 输入查找的姓名或编号 For语句循环 If Strcmp==0
输出相关信息 结束
Y N
N
Y printf("→2.按编号查找\n"); printf("请选择...\n"); ch=getchar(); getchar(); switch(ch) {case'1': printf("输入查找的姓名\n"); gets(xm); for(i=0;i { if(strcmp(xm,rec[i].name)==0) { printf("\t\t\t☆☆☆☆☆这是您需要查找的联系人的信息☆☆☆☆☆\n\n");
printf("编号姓名 电话 \t手机 \t工作单位\tEMAIL \t\tQQ\n"); printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name, rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq); break;} } if(i==m) printf("\t\t\t☆☆☆☆☆通讯录中没有您要查找的联系人☆☆☆☆☆\n"); break; case'2':printf("输入查找的编号\n"); scanf("%d",&d); for(i=0;i {if(d==rec[i].num) { printf("\t\t☆☆☆☆☆这是您需要查找的联系人的信息☆☆☆☆\n\n"); printf("编号姓名 电话 \t手机 \t工作单位\tEMAIL \t\tQQ\n"); printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[i].num,rec[i].name, rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq); break; } } if(i==m) printf("\t\t\t☆☆☆☆☆通讯录中没有您要查找的联系人☆☆☆☆☆\n"); break; default:printf("输入错误!!"); } getchar(); } case'3': 增加功能,app()函数
说明:按照屏幕的提示,依次输入要添加联系人的各项信息,并保存到结构体当中,输入完成后,提示是否继续添加,若是,则进入循环,若否,则结束。
代码如下: //*******************添加联系人*******************
开始 输入信息 判断是否继续添加
结束 Y
N void app() { char an; puts("当前通讯录中的内容\n"); list(); do { rec[m].num=m+1; printf("请按照提示输入新添加记录的各项信息\n"); printf("姓名:"); gets(rec[m].name); printf("\n电话:"); gets(rec[m].tel); printf("\n手机:"); gets(rec[m].celtel); printf("\n工作单位:"); gets(rec[m].dw); printf("\nEMAIL:"); gets(rec[m].email); printf("\nQQ:"); gets(rec[m].qq); puts("\n这是新添加联系人的信息!\n"); printf("编号姓名 电话 \t手机 \t工作单位\tEMAIL \t\tQQ\n"); printf("%d、%-8s%-10s%-12s%-18s%-18s%-12s\n",rec[m].num,rec[m].name, rec[m].tel,rec[m].celtel,rec[m].dw,rec[m].email,rec[m].qq); m++; puts("\t\t\t☆☆☆☆☆新纪录输入完成!☆☆☆☆☆\n"); puts("☆继续添加吗?(y/n)"); an=getchar(); getchar(); }while(an=='y'); }
case'4': 删除功能,dele()函数;
说明:输入要删除的编号,判断是否存在,若不存在就要重新输入,若存在,则利用循环进行删除操作,从要删除的编号开始,逐个由后一项往前一项覆盖。
代码如下: //*****************删除联系人的记录********************
void dele()
开始 输入要删除的记录号 判断是否存在该信息
删除 结束
Y
N { int a; int n=0; list(); do { n++; if(n>1) {printf("没有此记录,请重新输入...\n");} printf("删除几号记录?\n"); scanf("%d",&a); }while(a>m&&a>0||a<0); if(a!=m+1) { for(i=a;i { rec[i-1]=rec[i]; rec[i-1].num=i; } m--; list(); printf("\t\t\t☆☆☆☆☆完成删除!☆☆☆☆☆\n"); } getchar(); } case'5': 修改功能,correct()函数;