C语言同学通讯录程序设计

合集下载

c语言通信录课程设计

c语言通信录课程设计

c语言通信录课程设计一、课程目标知识目标:1. 理解并掌握C语言中结构体的定义和使用,能够运用结构体构建通信录管理系统。

2. 学习并掌握文件操作的基本方法,实现通信录信息的存储与读取功能。

3. 掌握C语言中的字符串处理方法,实现对通信录信息的增、删、改、查等功能。

技能目标:1. 能够运用结构体、文件操作等知识编写出完整的通信录管理系统。

2. 培养良好的编程习惯,提高代码的规范性和可读性。

3. 培养学生分析问题、解决问题的能力,通过课程设计,使学生能够运用所学知识解决实际问题。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣,提高学习积极性,增强自信心。

2. 培养学生的团队协作精神,学会与他人共同解决问题。

3. 培养学生勇于面对挑战,不怕困难,敢于探索的精神。

课程性质:本课程为C语言课程的实践环节,通过通信录管理系统课程设计,使学生将所学的C语言知识运用到实际项目中,提高编程实践能力。

学生特点:学生已经掌握了C语言的基本语法和编程方法,具有一定的编程基础,但对结构体、文件操作等知识点的应用还不够熟练。

教学要求:教师应引导学生复习相关知识点,为学生提供必要的技术支持,鼓励学生自主探索和团队协作,注重培养学生解决问题的能力。

在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。

二、教学内容1. 结构体的定义和使用:- 复习结构体的基本概念,如定义、声明和初始化。

- 通过实例演示如何使用结构体表示通信录中的联系人信息。

2. 文件操作:- 介绍文件的基本概念,如文件指针、文件的打开与关闭。

- 讲解文件的读写操作,如fprintf、fscanf、fread、fwrite等函数的使用。

3. 字符串处理:- 复习字符串的基本操作,如复制、连接、比较、查找等。

- 介绍如何在通信录管理系统中运用字符串操作实现信息处理功能。

4. 通信录管理系统功能设计:- 分析通信录管理系统的功能需求,如增加联系人、删除联系人、修改联系人信息、查询联系人等。

【文档】C语言程序设计----通讯录

【文档】C语言程序设计----通讯录

一、设计任务书1)复习、巩固C语言的基础知识,进一步加深对C语言的理解和掌握;2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。

提高学生适应实际,实践编程的能力;3)培养学生在项目开发中团队合作精神、创新意识及能力。

4)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;二、本组课题设计一个通讯录管理系统三、程序功能简介该程序具有添加、查找,修改、删除通讯录中各个成员所有信息的功能。

四、主体内容1、设计分析1.1问题提出本人计划编写一个通讯录管理系统,主要用来记录和管理所有联系人的详细联系方式1.2本系统涉及的知识点本系统涉及到所学过的知识点有:编译预处理,函数,循环结构,循环结构,数组,结构体,指针,文件等1.3功能要求1、制作一个通讯录程序,要求可以记录联系人的详细联系方式,包括:姓名,联系电话,居住地所在省份,城市,街道,以及当地邮编2、能根据需要随时在通讯录中添加联系人3、能根据联系人的名字查找他的详细联系方式4、能根据需要修改某联系人的联系方式5、能删除某特定联系人的所有联系方式2、程序结构流程图这里只附部分模块流程图:(1)系统的界面如图1所示(下图)图1 系统的菜单选项2.2、删除模块流程图:如图(2)图(2)删除模块流程图3.各模块的功能及程序说明3.1各模块的功能:* Main模块:根据选单内容实现调用函数* Delete模块:删除通讯录中某人的信息,其程序如下* list模块:显示通讯录中的所有记录3.2程序说明:(1)Main函数/******主函数开始*******/main(){int i;person p[M];int length; /*保存记录长度*/clrscr();/*清屏*/for(;;)/*无限循环*/{switch(menu())()) /*调用主菜单函数,返回值整数作开关语句的条件*/{case 0:length=create(p);break;case 1:list(p,length);break; /*显示全部记录*/case 2:search(p,length);break; /*查找记录*/case 3:length=delete(p,length);break; /*删除记录*/case 4:length=add(p,length); break; /*插入记录*/case 5:exit(0); /*如返回值为5则程序结束*/}}}(2) Delete函数/*删除函数,参数为记录数组和记录条数*/int delete(person t[],int n){char s[20]; /*要删除记录的姓名*/int ch=0;int i,j;printf("please deleted name\n"); /*提示信息*/scanf("%s",s); /*输入姓名*/i=find(t,n,s); /*调用find函数*/if(i>n-1) /*如果i>n-1超过了数组的长度*/printf("no found not deleted\n"); /*显示没找到要删除的记录*/ else{print(t[i]); /*调用输出函数显示该条记录信息*/printf("Are you sure delete it(1/0)\n"); /*确认是否要删除*/scanf("%d",&ch); /*输入一个整数0或1*/if(ch==1) /*如果确认删除整数为1*/{for(j=i+1;j<n;j++) /*删除该记录,实际后续记录前移*/{strcpy(t[j-1].name,t[j].name); /*将后一条记录的姓名拷贝到前一条*/strcpy(t[j-1].units,t[j].units); /*将后一条记录的单位拷贝到前一条*/strcpy(t[j-1].tele,t[j].tele); /*将后一条记录的电话拷贝到前一条*/strcpy(t[j-1].street,t[j].street); /*将后一条记录的街道拷贝到前一条*/strcpy(t[j-1].city,t[j].city); /*将后一条记录的城市拷贝到前一条*/strcpy(t[j-1].provience,t[j].provience); /*将后一条记录的省份拷贝到前一条*/strcpy(t[j-1].num,t[j].num); /*将后一条记录的邮编拷贝到前一条*/}n--; /*记录数减1*/}}return n; /*返回记录数*/}(3)List函数/*显示记录,参数为记录数组和记录条数*/void list(person t[],int n){int i;clrscr();printf("\n\n*******************ADDRESS******************\n");printf("name unit telephone street city provience num\n");printf("------------------------------------------------\n");for(i=0;i<n;i++)printf("%-20s%-30s%-10s%-20s%-20s%-20s%-20s\n",t[i].name,t[i].units,t[i].tele,t[i].street,t[i].city,t[i].provience,t[i].num);if((i+1)%10==0) /*判断输出是否达到10条记录*/{printf("Press any key continue...\n"); /*提示信息*/getch();/*压任意键继续*/}printf("************************end*******************\n");}4、试验结果『含输入数据和输出结果』通过很多次的实验,本程序(源程序在程序清单中)终于可以正常运行,任何一项功能都能顺利实现5、设计体会以前不曾做过课程设计,因此在做课程设计时遇到了很大的困难,首先是在编写程序时,用的时间很长,并且经过多次运行都不能成功。

C语言,课程设计学生通讯录,管理系统源程序

C语言,课程设计学生通讯录,管理系统源程序

#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"#include "stdlib.h"#define null 0struct record{char name[20];char phone[20];char adress[40];char postcode[10];char e_mail[30];}student[500];struct LinkList{struct record US;struct LinkList *next;}a;struct LinkList *head=null; int num=0;FILE *fp;int menu_select();int adduser();int list();int search();int display();int add();int listbyname();int dele();int save();int exit();void main(){system("cls");for(;;){switch(menu_select()){case 0:adduser();break;case 1:list();break;case 2:search();break;case 3:display();break;case 4:add();break;case 5:listbyname();break;case 6:dele();break;case 7:save();break;case 8:exit(0);}}}menu_select(){char s[80];int a;system("color 2f");printf("*_* press any key enter menu! *_* \n");getch();system("cls");printf("\t********************MENU***********************\n"); printf("\t* || 0. 添加通讯录记录|| *\n"); printf("\t* || 1. 显示通讯录记录|| *\n"); printf("\t* || 2. 按姓名方式查找|| *\n"); printf("\t* || 3. 按电话方式查找|| *\n"); printf("\t* || 4. 插入通讯录记录|| *\n"); printf("\t* || 5. 按姓名方式排序|| *\n"); printf("\t* || 6. 删除通讯录记录|| *\n"); printf("\t* || 7. 按记录保存文件|| *\n"); printf("\t* || 8. Quit || *\n");printf("\t***********************************************\n");do{printf("\n Enter you choice(0~8):");scanf("%s",s);a=atoi(s);}while (a<0||a>8);return a;}adduser(){printf("\n\t\t**************** 请输入用户信息****************\n"); printf("\n\t\t输入姓名:");scanf("%s",&student[num].name);printf("\n\t\t输入电话号码:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].adress);printf("\n\t\t输入邮编:");scanf("%s",&student[num].postcode);printf("\n\t\t输入e-mail:");scanf("%s",&student[num].e_mail);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')adduser();return(0);}list(){int i;system("cls");if(num!=0){printf("\n\t\t*************** 以下为通讯录所有信息************"); for (i=0;i<num;i++){printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t地址:%s",student[i].adress);printf("\n\t\t邮编:%s",student[i].postcode);printf("\n\t\te-mail:%s",student[i].e_mail);printf("\t\t");if (i+1<num){printf("\n\t\t__________________________");system("pause");}}printf("\n\t\t************************************************"); }elseprintf("\n\t\t通讯录中无任何纪录");printf("\n\t\t按任意键返回主菜单:");getch();return(0);}search(){int mark=0;int i;int a=0;printf("\n\t\t***************** 按姓名查找*******************"); char name[20];printf("\n\t\t请输入姓名:");scanf("%s",name);for(i=a;i<num;i++){if (strcmp(student[i].name,name)==0){printf("\n\t\t************* 以下是您查找的用户信息***********");printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t地址:%s",student[i].adress);printf("\n\t\te-mail:%s",student[i].e_mail);printf("\n\t\t************************************************");mark++;if ((i+1)<num){printf("\n\t\t是否继续查找相同名字的用户信息:(y/n)");if (getch()=='y'){a=i;continue;}elsereturn(0);}else{printf("\n\t\t按任意键返回主菜单");getch();return(0);}}}if(mark!=0){printf("\n\t\t没有相同姓名的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}{printf("\n\t\t没有相同姓名的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}}display(){int mark=0;int i;int a=0;printf("\n\t\t****************** 按电话查找******************"); char phone[10];printf("\n\t\t请输入电话号码:");scanf("%s",phone);for(i=0;i<num;i++){if (strcmp(student[i].phone,phone)==0){printf("\n\t\t************** 以下是您查找的用户信息**********"); printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t地址:%s",student[i].adress);printf("\n\t\te-mail:%s",student[i].e_mail);printf("\n\t\t************************************************"); printf("\n\t\t按任意键返回主菜单:");mark++;getch();return(0);}}if (mark==0){printf("\n\t\t没有改用户的信息");printf("\n\t\t按任意键返回主菜单");getch();return(0);}return(0);}add(){if ((fp=fopen("student.bin","wb"))==NULL){printf("\n\t\t文件打开失败");}for (i=0;i<num;i++){if (fwrite(&student[i],sizeof(struct record),1,fp)!=1){printf("\n\t\t写入文件错误!\n");}printf("\n\t\t**************** 请输入用户信息****************\n"); printf("\n\t\t输入姓名:");scanf("%s",&student[num].name);printf("\n\t\t输入电话号码:");scanf("%s",&student[num].phone);printf("\n\t\t输入地址:");scanf("%s",&student[num].adress);printf("\n\t\t输入邮编:");scanf("%s",&student[num].postcode);printf("\n\t\t输入e-mail:");scanf("%s",&student[num].e_mail);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')adduser();return(0);}fclose(fp);printf("\n\t\t通讯录文件已保存");printf("\n\t\t按任意键退出程序\n\t\t");exit(0);return(0);}void deletebyphone(){int i,j;int deletemark=0;char phone[20];printf("\n\t\t请输入要删除用户电话号码:");scanf("%s",phone);if(num==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<num;i++){if (strcmp(student[i].phone,phone)==NULL) {printf("\n\t\t以下是您要删除的用户纪录:"); printf("\n\t\t姓名:%s",student[i].name); printf("\n\t\t电话:%s",student[i].phone); printf("\n\t\t地址:%s",student[i].adress); printf("\n\t\te-mail:%s",student[i].e_mail); printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<num-1;j++)student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;}elsereturn;}continue;}if (deletemark==0){printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;}}void deletebyname(){int a=0;int findmark=0;int deletemark=0;int i;char name[20];printf("\n\t\t请输入要删除用户姓名:");scanf("%s",name);for (i=a;i<num;i++){if (strcmp(student[i].name,name)==NULL){printf("\n\t\t以下是您要删除的用户纪录:");findmark++;printf("\n\t\t________________________________"); printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t地址:%s",student[i].adress);printf("\n\t\te-mail:%s",student[i].e_mail);printf("\n\t\t________________________________"); printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){for (j=i;j<num-1;j++)student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");if((i+1)<num){printf("\n\t\t是否继续删除相同姓名的用户信息?(y/n)");if (getch()=='y'){a=i;continue;}}printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyname();return;}if((i+1)<num){printf("\n\t\t是否继续删除相同姓名的用户信息?(y/n)");if (getch()=='y')a=i;continue;}}}elsecontinue;}if ((deletemark==0)&&(findmark==0)){printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;return;}else if (findmark!=0){printf("\n\t\t没有重名信息");printf("\n\t\t没有该用户的纪录");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletebyphone();return;return;}}dele(){char choic;printf("\n\t\t1-按电话号码删除2-按姓名删除"); printf("\n\t\t请选择:");choic=getch();switch (choic){case '1':deletebyphone();break;case '2':deletebyname();break;}return(0);}listbyname(){struct record tmp;for (i=1;i<num;i++){if(strcmp(student[i].name,student[i-1].name)<0){tmp=student[i];j=i-1;do{student[j+1]=student[j];j--;}while ((strcmp(,student[j].name)<0&&j>=0)); student[j+1]=tmp;}}printf("\n\t\t排序成功,是否显示?(y/n)");if (getch()=='y')list();return(0);}save(){int j;FILE*fp;fp=fopen("student.txt","w");if (fp==NULL)printf("can't open the file.");if(num!=0){for(j=0;j<num;j++){fwrite(student,sizeof(student),1,fp);}}printf("保存成功!");fclose(fp);return(0);}。

学生同学录C语言程序(500行)

学生同学录C语言程序(500行)

#include<stdio.h>#include<string.h>#include<malloc.h>#include<stdlib.h>#include<conio.h>#define NULL 0struct student{long num;char name[20];int banji;char tel[11];char qq[10];char Email[20];int sushe;struct student *next;};struct student *stu;int n;void menu(void) /*主菜单函数*/{system("cls");puts("||==================================================================== ======||");puts("||*************************^_^学生通讯录管理系统^_^*************************||");puts("||==================================================================== ======||");puts("||||");puts("|| 1:录入学生通讯录信息||");puts("|| 2:列出所有学生通讯录||");puts("|| 3:按姓名查询信息||");puts("|| 4:按学号查询信息||");puts("|| 5:按班级查询信息||");puts("|| 6:按qq号查询信息||");puts("|| 7:按电话号码查询信息||");puts("|| 8:按宿舍查询信息||");puts("|| 9:按邮箱查询信息||");puts("|| s:删除学生信息||");puts("|| p:按学号将通讯录排序||");puts("|| 0:退出||");puts("||||");puts("||||");puts("||||");puts("||==================================================================== ======||");}struct student *shuru(void) /*输入函数*/{system("cls");struct student *s1,*s2;n=1;int num;puts("请输入学生人数(提示:人数不能输入0!):");scanf("%d",&num);s1=s2=(struct student *)malloc(sizeof(struct student));puts("*************************************************");puts("请输入学号:");scanf("%d",&s1->num);puts("请输入学生姓名:");scanf("%s",s1->name);puts("请输入班级:");scanf("%d",&s1->banji);puts("请输入电话号码:");scanf("%s",s1->tel);puts("请输入qq号码:");scanf("%s",s1->qq);puts("请输入电子邮件:");scanf("%s",s1->Email);puts("请输入学生宿舍号:");scanf("%d",&s1->sushe);stu=s1;while(n<num){s2->next=s1;s2=s1;s1=(struct student *)malloc(sizeof(struct student));puts("*************************************************");puts("请输入学号:");scanf("%d",&s1->num);puts("请输入学生姓名:");scanf("%s",s1->name);puts("请输入班级:");scanf("%d",&s1->banji);puts("请输入电话号码:");scanf("%s",s1->tel);puts("请输入qq号码:");scanf("%s",s1->qq);puts("请输入电子邮件:");scanf("%s",s1->Email);puts("请输入学生宿舍号:");scanf("%d",&s1->sushe);n=n+1;}puts("*************************************************");s2->next=s1;s2=s1;s2->next=NULL;return(stu);//system("cls");}void shuchu(struct student *s) /*输出单个学生信息*/{printf("* %-12ld",s->num);printf("%-8s",s->name);printf("%-8d",s->banji);printf("%-15s",s->tel);printf("%-13s",s->qq);printf("%-15s",s->Email);printf("%-5d *\n",s->sushe);}void findall() /*输出所有学生信息*/{system("cls");struct student *s;//if(n=2)//printf("\n现在有%d个学生信息,分别是:\n",n);//elseprintf("\n现在有%d个学生信息,分别是:\n",n);puts("______________________________________________________________________ _____________");puts("* 学号姓名班级电话qq 电子邮件宿舍*");s=stu;while(s!=NULL){shuchu(s);s=s->next;}puts("______________________________________________________________________ _____________");puts("返回主菜单请按【9】");if(getche()=='9') menu();}void findname()/*按姓名查找函数*/{system("cls");struct student *s;char name[20];printf("\n请输入你要查询的学生姓名:\n");scanf("%s",name);s=stu;while(strcmp(s->name,name)!=0){s=s->next;}if(s==NULL){puts("查无此学生姓名!");goto end;}else{puts("该学生的信息为:");puts("* 学号姓名班级电话qq 电子邮件宿舍*");shuchu(s);}end:;puts("返回主菜单请按【9】");if(getche()=='9') menu();}void findnum() /*按学号查找函数*/{system("cls");struct student *s;puts("请输入你要查询的学生学号:");long i;scanf("%ld",&i);s=stu;while(s->num!=i){s=s->next;}if(s==NULL){puts("查无此学生学号!");goto end;}else{puts("该学生的信息为:");puts("* 学号姓名班级电话qq 电子邮件宿舍*");shuchu(s);}end:;puts("返回主菜单请按【9】");if(getche()=='9') menu();}void findbanji() /*按班级查找函数*/{system("cls");struct student *s;puts("请输入你要查询的学生班级:");int i;scanf("%ld",&i);s=stu;while(s->banji!=i){s=s->next;}if(s==NULL){puts("查无此学生学号!");goto end;}else{puts("该学生的信息为:");puts("* 学号姓名班级电话qq 电子邮件宿舍*");shuchu(s);}end:;puts("返回主菜单请按【9】");if(getche()=='9') menu();}void findqq() /*按qq号查找函数*/{system("cls");struct student *s;char qq[10];printf("请输入你要查询的学生qq号:");scanf("%s",qq);s=stu;while(strcmp(s->qq,qq)!=0){s=s->next;}if(s==NULL){puts("查无此学生qq号!");goto end;}else{puts("该学生的信息为:");puts("* 学号姓名班级电话qq 电子邮件宿舍*");shuchu(s);}end:;puts("返回主菜单请按【9】");if(getche()=='9') menu();}void findEmail() /*按邮箱查找函数*/{system("cls");struct student *s;char Email[10];printf("请输入你要查询的学生邮箱号:");scanf("%s",Email);s=stu;while(strcmp(s->Email,Email)!=0){s=s->next;}if(s==NULL){puts("查无此学生邮箱号!");goto end;}else{puts("该学生的信息为:");puts("* 学号姓名班级电话qq 电子邮件宿舍*");shuchu(s);}end:;puts("返回主菜单请按【9】");if(getche()=='9') menu();}void findtel() /*按电话号码查找函数*/{system("cls");struct student *s;char tel[11];printf("请输入你要查询的学生电话号码:");scanf("%s",tel);s=stu;while(strcmp(s->tel,tel)!=0){s=s->next;}if(s==NULL){puts("查无此学生电话号码!");goto end;}else{puts("该学生的信息为:");puts("* 学号姓名班级电话qq 电子邮件宿舍*");shuchu(s);}end:;puts("返回主菜单请按【9】");if(getche()=='9') menu();}void findsushe() /*按宿舍查找函数*/{system("cls");struct student *s;puts("请输入你要查询的学生宿舍:");int i;scanf("%ld",&i);s=stu;while(s->sushe!=i){s=s->next;}if(s==NULL){puts("查无此学生宿舍!");goto end;}else{puts("该学生的信息为:");puts("* 学号姓名班级电话qq 电子邮件宿舍*");shuchu(s);}end:;puts("返回主菜单请按【9】");if(getche()=='9') menu();}struct student *shanchu(struct student*stu) /*删除函数*/{system("cls");long num;char s;struct student *s1,*s2,*t;printf("\n现在有%d个学生信息,分别是:\n",n);puts("______________________________________________________________________ ____________");puts("* 学号姓名班级电话qq 电子邮件宿舍*");t=stu;while(t!=NULL){shuchu(t);t=t->next;}puts("______________________________________________________________________ _____________");if(stu==NULL){puts("没有任何学生信息。

通讯录C语言程序设计

通讯录C语言程序设计

通讯录C语言程序设计通讯录C语言程序设计是一个常见的编程练习项目,它可以帮助初学者熟悉C语言的基本语法和数据结构。

下面是一个简单的通讯录程序设计示例,包括了程序的基本框架、功能实现和代码实现。

程序设计目标设计一个通讯录程序,能够实现以下功能:1. 添加联系人2. 删除联系人3. 修改联系人信息4. 显示所有联系人5. 按姓名查找联系人6. 保存联系人信息到文件7. 从文件加载联系人信息程序设计思路1. 数据结构设计:使用结构体`struct Contact`来存储联系人信息,包括姓名、电话号码、电子邮件等。

2. 功能模块划分:将程序分为多个功能模块,如添加、删除、修改、显示、查找、保存和加载。

3. 用户界面设计:设计一个简单的文本界面,使用循环让用户选择相应的操作。

4. 文件操作:使用C语言的文件操作函数来实现联系人信息的持久化存储。

数据结构定义```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100#define MAX_NAME 50#define MAX_PHONE 20#define MAX_EMAIL 50struct Contact {char name[MAX_NAME];char phone[MAX_PHONE];char email[MAX_EMAIL];};struct Contact contacts[MAX_CONTACTS];int contactCount = 0;```功能实现1. 添加联系人```cvoid addContact() {if (contactCount >= MAX_CONTACTS) {printf("Contact list is full.\n"); return;}printf("Enter name: ");scanf("%49s", contacts[contactCount].name);printf("Enter phone: ");scanf("%19s", contacts[contactCount].phone);printf("Enter email: ");scanf("%49s", contacts[contactCount].email);contactCount++;}```2. 删除联系人```cvoid deleteContact() {int i, index;printf("Enter name of the contact to delete: ");scanf("%49s", contacts[index].name);for (i = 0; i < contactCount; i++) {if (strcmp(contacts[i].name, contacts[index].name) == 0) {index = i;break;}}if (i == contactCount) {printf("Contact not found.\n");} else {for (; i < contactCount - 1; i++) {contacts[i] = contacts[i + 1];}contactCount--;printf("Contact deleted.\n");}}```3. 修改联系人信息```cvoid modifyContact() {// 类似于删除联系人,找到联系人后修改信息}```4. 显示所有联系人```cvoid displayContacts() {for (int i = 0; i < contactCount; i++) {printf("%s, %s, %s\n", contacts[i].name, contacts[i].phone, contacts[i].email);}}```5. 按姓名查找联系人```cvoid findContact() {char name[MAX_NAME];printf("Enter name to find: ");scanf("%49s", name);for (int i = 0; i < contactCount; i++) {if (strcmp(contacts[i].name, name) == 0) { printf("%s, %s, %s\n", contacts[i].name, contacts[i].phone, contacts[i].email);return;}}printf("Contact not found.\n");}```6. 保存联系人信息到文件```cvoid saveContactsToFile() {FILE *file = fopen("contacts.txt", "w");if (file == NULL) {printf("Error opening file.\n");return;}for (int i = 0; i < contactCount; i++) {fprintf(file, "%s,%s,%s\n", contacts[i].name, contacts[i].phone, contacts[i].email);}fclose(file);printf("Contacts saved to file.\n");}```7. 从文件加载联系人信息```cvoid loadContactsFromFile() {FILE *file = fopen("contacts.txt", "r");if (file == NULL) {printf("。

c程序通讯录课程设计

c程序通讯录课程设计

c 程序通讯录课程设计一、课程目标知识目标:1. 理解通讯录程序的基本原理和结构;2. 掌握C语言中数组、结构体和文件操作等基本知识点的应用;3. 学会使用C语言编写、调试和运行简单的通讯录程序。

技能目标:1. 能够运用结构体创建和管理联系人信息;2. 掌握使用数组存储和访问联系人数据的方法;3. 学会使用文件操作实现通讯录数据的持久化存储;4. 培养学生独立分析问题、设计解决方案并进行编程实践的能力。

情感态度价值观目标:1. 培养学生积极探究、主动学习的兴趣,增强对编程和计算机科学的热爱;2. 培养团队协作和沟通能力,学会与他人分享编程经验和成果;3. 树立正确的价值观,认识到编程在生活中的实际应用和价值。

本课程针对高年级学生,结合C语言课程知识,注重实践性和实用性。

课程目标旨在使学生在掌握C语言基本知识的基础上,通过通讯录程序设计,提高编程实践能力,培养创新意识和团队协作精神。

通过本课程的学习,学生将能够独立设计并实现具有实际应用价值的通讯录程序,为后续计算机专业课程打下坚实基础。

二、教学内容1. C语言基础回顾:数组、结构体、文件操作等知识点复习;- 数组的使用和操作;- 结构体的定义和访问;- 文件读写的基本函数和流程。

2. 通讯录程序设计原理:- 通讯录的功能需求分析;- 程序模块划分和设计;- 数据存储和结构的设计。

3. 编程实践:- 创建和初始化通讯录;- 添加、删除和修改联系人信息;- 查询和显示联系人信息;- 通讯录数据的文件存储和读取。

4. 项目实战:- 分组讨论和设计通讯录程序;- 编写代码,实现通讯录功能;- 调试和优化程序;- 小组展示和评价。

教学内容依据课程目标,结合课本章节进行组织,确保学生能够系统、全面地掌握通讯录程序设计的相关知识。

教学进度安排合理,注重理论与实践相结合,充分调动学生的主观能动性和创新能力。

通过本章节的学习,学生将能够熟练运用C语言编写具有实际意义的通讯录程序。

学生通讯录管理系统c语言编程

学生通讯录管理系统c语言编程

学生通讯录管理系统C语言编程简介学生通讯录管理系统是一个帮助学生管理通讯录信息的应用程序。

通过该系统,学生可以添加、删除、查询和修改通讯录中的联系人信息,从而更好地组织和管理自己的通讯录信息。

功能需求1. 添加联系人学生可以通过输入联系人的姓名、电话号码、邮箱等信息,将联系人添加到通讯录中。

2. 删除联系人学生可以根据联系人的姓名或电话号码,从通讯录中删除指定的联系人信息。

3. 查询联系人学生可以通过姓名或电话号码查询通讯录中的联系人信息,并将查询结果显示出来。

4. 修改联系人学生可以修改通讯录中指定联系人的信息,如电话号码、邮箱等。

技术实现通讯录管理系统将使用C语言进行编程实现。

以下是系统的基本设计思路:1. 数据结构设计通讯录信息可以用结构体来表示,包含联系人的姓名、电话号码、邮箱等字段。

struct Contact {char name[50];char phone[20];char email[50];};2. 功能模块划分•添加联系人模块:用于添加新的联系人信息。

•删除联系人模块:用于删除指定联系人信息。

•查询联系人模块:用于根据姓名或电话号码查询联系人信息。

•修改联系人模块:用于修改指定联系人的信息。

3. 用户界面设计系统将使用控制台界面,通过菜单来实现各个功能模块的调用。

开发步骤1. 定义数据结构首先定义联系人结构体,包含姓名、电话号码、邮箱等字段。

2. 实现功能模块分别实现添加联系人、删除联系人、查询联系人、修改联系人等功能模块的具体代码。

3. 编写主程序编写主程序,通过调用功能模块来实现整体通讯录管理系统的运行。

总结学生通讯录管理系统C语言编程是一个实用的项目,通过这个项目,学生可以熟练掌握C语言编程的基本知识,并且实践项目开发的流程。

通过不断调试和完善,学生可以提升自己的编程能力和项目实现能力。

希望学生能够在这个项目中学到更多的知识,提升自己的编程技能。

c语言程序设计_.学生通讯录信息管理系统

c语言程序设计_.学生通讯录信息管理系统

通讯录的开发与设计一.需求分析1.1功能需求1.该程序可用于对学生的通讯方式基本信息的添加、查找、修改、删除、输出等操作,以实现对学生通讯录信息的管理,便于同学之间的联系交往;2.其中此通讯录可以自动保存,以便以后查看更新学生通讯信息。

3.程序中设计的查询功能可根据需要从若干数据中查询某个学生信息,并且可根据两种不同的方法查询:按姓名查询和按电话查询,以满足不同的需要;4. 可以通过输出的方式查看整个通讯录;1.2非功能需求1.界面友好,dos界面。

文本显示。

2.具有较好的容错能力,用户在使用过程中,除了规定的按键外,其他按键均忽略,不予处理;3.可在任何PC机上运行。

4.运行平台xp or win7二.方案设计2.1设计思路从已知的手机或者电脑中的通讯录可知,应该用结构体数组储存people的各种属性,每个人具有3种属性1.姓名2.住址3.电话。

用简单赋值语句给结构体变量赋值。

储存使用vc自带的file函数。

函数之间各种调用使用wilie外加switch函数实现。

2.2结构设计对各个模块进行功能的描述 (1).输入模块:录入需要管理的通讯信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。

(2).添加模块:可添加一个或多个学生的通讯信息,并将所添加的信息保存,方便查找。

(3).删除模块:可对失去联系的学生通讯信息做删除处理。

(4).修改模块:可对通讯信息发生改变的学生信息进行修改。

(6).保存模块:用于对通讯信息进行保存。

属于隐藏模块。

系统自动保存。

(7).输出模块:将所有学生通讯信息或想要查询的学生信息显示于屏幕,用于打印学生通讯信息或查找某些学生通讯信息。

(8).退出系统:选择该项,自动退出该系统。

三.系统实现流程图, 函数之间相互调用的图示 ,程序设计及编码, 运行结果。

输入模块: 输入模块:One. n ame! 重新赋值四.系统测试1.功能测试2.性能测试3.测试结果经过测试本项目的功能和性能符合要求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C 语言课程综合实验设计设计题目:同学通讯录程序设计学院: 计算机与信息科学学院、软件学院班级:2012级教育技术学*名:***学号:***************2013年6月14日1.题目功能分析以及整体思路1.1整体设计思路建立一个函数,用来添加、显示、删除、查询、修改、保存,读取和统计通讯录等信息,完成通讯录的功能。

主函数采用密码,保护了通讯录数据,可以调用8个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、保存记录、读取记录、统计记录、退出系统等功能。

在主函数中可以以1、2、3、4、5、6、7、8、0数字键分别可以执行某个功能模块。

1.2程序设计1.2.1根据图1定义数据类型建立函数typedef struct{long score; /*学号*/char name[10]; /*姓名*/char sex[8]; /*性别*/char adds[20]; /*工作单位*/char num[15]; /*电话号码*/char email[20]; /*邮箱*/}Person;Person pe[80];1.2.2主函数设置密码和调用函数主函数通过for循环和字符比较函数可以实现密码功能,登陆成功后可以调用menu函数。

我们定义的menu函数主要是利用switch语句对数据进行处理,流程图如下:void main() /*主函数*/{int h,flag1,flag2;char name[20]="zxq",password[10]="931009";char person[20],password1[10];printf ("\t\t ************* 通讯录管理系统!*************\n\n");printf ("\t\t\t 用户登录\n\n");for(h=0;h!=5;){printf("\t\t\t\t 用户名:");gets(person);flag1=strcmp(person,name);printf("\t\t\t\t 密码:");gets(password1);flag2=strcmp(password,password1);if(flag1==0 && flag2==0){printf("\t\t\t\t 登陆成功!\n\n");menu();break;}else{printf ("\t\t\t 用户名或密码错误!\n\n");printf ("\t\t\t 请注意:您还剩%d次机会!\n\n",4-h);h++;}}if (h=5)printf ("对不起,您输入的用户名或密码有误,已被强制退出。

\n");}1.2.3增加函数及其流程图本程序设计具有通讯信息的录入,进行保存、查找、删除、修改、统计等功能,操作界面简洁美观,易于操作。

程序用了条件、循环、指针、结构体等知识点,综合了文件的打开和保存编写的。

可运用于小的管理软件。

软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。

1.2.3.1.删除通讯录记录流程图 4. 删除通讯录记录流程图:int Delete_a_record(Person per[]) /*删除通讯录*/ {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");}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].sex,per[j+1].sex);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");n=n-1;return (n);}1.2.3.2. 文件写入和读取功能:该段程序可以通过文件指针,for循环,while循环,if循环可以实现文件的写入和读取功能。

void WritetoText(Person per[]) /*写入文件*/{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;}while(i<n){fprintf(fp,"%-3d%-6s\t%-3s\t%-13s\t%-20s\t%-20s\n",per[i].score,per[i].name,pe r[i].sex,per[i].num,per[i].adds,per[i].email);i++;}fclose(fp); /*关闭文件*/printf("保存成功!\n");}2.设计结果与分析2.1运行程序将源程序编译、链接后生成可执行文件,运行该文件会看到如图1所示用户登录界面,输入用户名和密码。

图1.登陆界面运行主函数时,首先调用函数menu();,该函数主要是利用输出函数printf进行输出,其图2所示。

图2.菜单函数界面3.2 增加信息3.2.1输入1显示添加通讯录界面。

图3.添加通讯录界面图这一函数实现了对字符串赋值的功能[1]。

系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。

每次输入结束后,系统输出询问是否继续添加的信息,然后执行switch语句,如果返回值是“y”,则继续执行addnewcard()函数添加用户,否则返回主菜单。

3.2.2输入2显示显示通讯录界面。

图4.显示通讯录界面图这一函数实现了对字符串赋值的功能[2]。

系统提示通讯录使用者输入相应信息,然后用scanf函数获取输入数据。

,然后执行switch语句,如果返回值是“y”,则继续执行函数显示,否则返回主菜单。

3.2.3在主菜单输入6显示保存通讯录界面图5.保存通讯录记录界面图进入保存功能后,系统会调用void WritetoText(Person per[]) 函数并且提示通讯录管理者关于保存的信息进行记录自动保存。

从而便于我们直接查询。

3.2.4在主菜单输入7读取保存的通讯录文件图6.读取通讯录文件界面图3.2.4在主菜单输入8统计通讯录的人数图7.统计通讯录人数界面图4.设计体会当我选择通讯录这个题目时,一开始想运用大量链表及指针来完成,但是在慢慢琢磨之后,觉得这个不一定要用链表,于是改变了编程思路。

当然还有不少文件的读写问题,不过还是通过不断测试之后顺利解决了。

另外一点要说的就是这个程序用了很多的循环,因此对于循环的控制要十分小心,有时while和do-while的区别也是十分重要的。

还有一点体会就是,书上和老师教的内容是有限的,我们需要不断地靠自己去学习,向他人请教,了解和掌握更多的知识,这样我们才能编出更好的C程序。

总体来说,这次C语言课程设计还是比较顺利的,虽然最终程序还存在一些不足,但能在有限的时间里完完整整的完成任务我还是比较高兴的。

最后,要感谢学校为我们提供这次课设机会,也要感谢马老师和周老师的指导和同学们对我的帮助与支持。

附录源程序用户名:zxq 密码:931009#include<stdio.h>#include<stdlib.h>#include<string.h>static int n=0; /*定义静态全局变量*/typedef struct{long score; /*学号*/char name[10]; /*姓名*/char sex[8]; /*性别*/char adds[20]; /*工作单位*/char num[15]; /*电话号码*/char email[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│7. 读取记录│\n");printf("\t\t│8. 统计记录│\n");printf("\t\t│0. 退出程序│\n");printf("\t\t└───────┘\n");printf("\t\t请您选择(0-8):");c=getchar();}while(c<'0'||c>'8');return(c-'0');}int Input(Person per[]){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].sex);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);}sum(Person per[]) /*统计通讯录人数*/{int b=0,g=0,i;for(i=0;per[i].name[0]&&i<n;i++){if(strcmp(per[i].sex,"男")==0)b++;}g=i-b;printf("\t\t通讯录总人数为%d个,\n\t\t 其中男孩有%d个。

相关文档
最新文档