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.测试结果经过测试本项目的功能和性能符合要求。

通讯录程序设计c

通讯录程序设计c

通讯录程序设计c通讯录程序设计是计算机编程中的一个常见项目,旨在通过编写代码来实现对联系人信息的存储、查询、修改和删除等功能。

以下是关于通讯录程序设计的详细内容。

一、设计目标通讯录程序的主要目标是提供一个用户界面,允许用户添加、查找、更新和删除联系人信息。

联系人信息通常包括姓名、电话号码、电子邮件地址、住址等。

二、需求分析1. 用户界面:简洁直观,易于操作。

2. 数据存储:能够持久化存储联系人信息。

3. 功能需求:- 添加联系人:允许用户输入并保存新的联系人信息。

- 查询联系人:根据姓名或其他信息搜索联系人。

- 修改联系人:允许用户更新已存在的联系人信息。

- 删除联系人:允许用户删除不再需要的联系人信息。

三、技术选型1. 编程语言:根据项目需求和团队熟悉度选择合适的编程语言,如C、Java、Python等。

2. 数据存储:可以使用文件系统、数据库或内存中的数据结构。

3. 开发环境:选择适合的IDE(集成开发环境)进行编码,如Visual Studio、Eclipse等。

四、系统设计1. 数据结构:设计合适的数据结构来存储联系人信息,如使用结构体或类。

2. 功能模块:- 输入模块:负责接收用户输入的联系人信息。

- 存储模块:负责将联系人信息存储到指定的存储介质。

- 查询模块:提供搜索功能,根据用户输入的关键字查找联系人。

- 修改模块:允许用户修改已存储的联系人信息。

- 删除模块:允许用户删除联系人信息。

五、界面设计1. 主界面:显示所有功能选项,如添加、查询、修改、删除。

2. 输入界面:当用户选择添加或修改联系人时,提供输入界面。

3. 查询结果界面:显示查询结果,可能包括联系人列表或详细信息。

六、实现步骤1. 定义数据结构:根据需求定义联系人的数据结构。

2. 编写功能模块:逐一实现添加、查询、修改和删除功能。

3. 集成测试:将各个模块集成到一起,进行系统测试。

4. 用户测试:让实际用户测试程序,收集反馈并进行优化。

c语言学生通讯录设计

c语言学生通讯录设计

下面是一个简单的C语言学生通讯录设计示例:#include <stdio.h>#include <string.h>struct student {char name[20];int age;char gender;char phone[15];};int main() {struct student students[100];int n, i;printf("请输入学生人数:");scanf("%d", &n);for (i = 0; i < n; i++) {printf("请输入第%d个学生的姓名、年龄、性别和电话号码:", i+1);scanf("%s %d %c %s", students[i].name, &students[i].age, &students[i].gender, students[i].phone);}printf("\n学生通讯录\n");printf("姓名\t年龄\t性别\t电话号码\n");for (i = 0; i < n; i++) {printf("%s\t%d\t%c\t%s\n", students[i].name, students[i].age, students[i].gender, students[i].phone);}return 0;}该程序定义了一个名为`student`的结构体,用于存储学生的姓名、年龄、性别和电话号码。

在主函数中,首先通过`scanf`函数从用户输入中读取学生人数`n`,然后使用一个循环来依次读取每个学生的信息,并将它们存储到`students`数组中。

最后,使用另一个循环将所有学生的信息打印出来。

该程序可以根据需要添加其他功能,例如根据姓名或电话号码查询学生信息、添加或删除学生信息等。

c语言通讯录程序(共5篇)

c语言通讯录程序(共5篇)

c语言通讯录程序(共5篇)第一篇:c语言通讯录程序C语言程序设计实践——通讯录管理系统六、程序源代码及注释#include #include #include #include #define SUM 100 #define STOP 1000typedef struct /*结构体,存放通讯录成员信息,重新定义成member型变量*/ { char name[10]; char tel[15]; char cla[5]; char mail[20]; char qq[15]; }member;member info[SUM]; //所有成员空间FILE *fp;//文件指针,用于打开或保存通讯录文件int count=0; //全局变量,用于计数已存入数量/*-----------------------*/int load(char filename[])//打开通讯录文件{ member *p; int i=0; if((fp=fopen(filename,"rb"))==NULL)return i; else{while(!feof(fp)){p=(member *)malloc(sizeof(member));if(fread(p,sizeof(member),1,fp)==1){strcpy(info[i].name,p->name);strcpy(info[i].tel,p->tel);strcpy(info[i].cla,p->cla);strcpy(info[i].mail,p->mail);strcpy(info[i].qq,p->qq);i++;}free(p);}return i;} } /*------------------*/void save(char filename[]) //保存通讯录文件 {int i;member *p;if((fp=fopen(filename,"wb"))==NULL){printf("无法保存!打开文件%s时出错\n",filename); exit(1);}elsefor(i=0;i{p=(member *)malloc(sizeof(member));strcpy(p->name,info[i].name);strcpy(p->tel,info[i].tel);strcpy(p->cla,info[i].cla);strcpy(p->mail,info[i].mail);strcpy(p->qq,info[i].qq);fwrite(p,sizeof(member),1,fp);free(p);}fclose(fp); } /*-----------------*/ void display(void) //分类查看功能 { system("cls");char dis;char way[5];int i,j=0;choice:printf("**********请选择查看分类***********\n");printf("**********1.亲友**********\n");printf("**********2.同学**********\n");printf("**********3.老师**********\n");printf("**********4.其他**********\n");printf("**********5.查看全部**********\n");printf("**********0.返回上一级菜单**********\n");printf("*****************************************\n"); printf("请选择(1~5或0):");dis=getchar();getchar();switch(dis){case '1':strcpy(way,"亲友");break;case '2':strcpy(way,"同学");break;case '3':strcpy(way,"老师");break;case '4':strcpy(way,"其他");break;case '5':printf("*******全部通讯成员*******\n"); for(i=0;iprintf("姓名:%s\n",info[i].name);printf("电话号码:%s\n",info[i].tel);printf("电子邮箱:%s\n",info[i].mail);printf("QQ号:%s\n",info[i].qq);printf("分类:%s\n",info[i].cla);printf("*****************************\n");j++;}if(j==0){printf("************************\n");printf("无任何通讯成员\n");}j=0;Sleep(STOP);goto choice; break;case '0':return; break;default:printf("*************************\n");printf("输入指令有误!\n");printf("*************************\n");Sleep(STOP);goto choice;}printf("********通讯成员之%s*******\n",way); for(i=0;iif(strcmp(info[i].cla,way)==0){printf("****姓名:%s\n",info[i].name);printf("****电话号码:%s\n",info[i].tel);printf("****电子邮箱:%s\n",info[i].mail);printf("****QQ号:%s\n",info[i].qq);printf("****分类:%s\n",info[i].cla);printf("**********************************\n"); j++;}}if(j==0){printf("该分类中无通讯成员\n");printf("******************\n");}j=0;Sleep(STOP);goto choice; }/*------*/ int add(void)//增加新的成员 {member temp;int i;reinput_name:printf("请输入新成员的姓名:");gets();for(i=0;iif(strcmp(info[i].name,)==0){ printf("该姓名已存在!\n");Sleep(STOP);goto reinput_name;}reinput_tel:printf("请输入新成员的电话号码:"); gets(temp.tel);for(i=0;iif(strcmp(info[i].tel,temp.tel)==0){ printf("该电话号码已存在!\n");Sleep(STOP);goto reinput_tel;}printf("请输入新成员的电子邮箱:"); gets(temp.mail);printf("请输入新成员的QQ号:");gets(temp.qq);printf("请输入新成员的分类:");gets(temp.cla);info[count]=temp;count++;return count; }/*-----*/ int search(char sname[]) //查找功能 { int flag=0,i;for(i=0;iif(strcmp(info[i].name,sname)==0){printf("*****************************\n"); printf("****姓名:%s\n",info[i].name);printf("****电话号码:%s\n",info[i].tel);printf("****电子邮箱:%s\n",info[i].mail);printf("****QQ号:%s\n",info[i].qq);printf("****分类:%s\n",info[i].cla);printf("******************************\n"); flag=1;}return flag; }/*---------*/ int rework(char rname[])//修改功能 {int flag=0,i;for(i=0;iif(strcmp(info[i].name,rname)==0){printf("*********************");printf("请输入新的姓名:");gets(info[i].name);printf("请输入新的电话号码:");gets(info[i].tel);printf("请输入新的电子邮箱:");gets(info[i].mail);printf("请输入新的QQ号:");gets(info[i].qq);printf("请输入新的分类:");gets(info[i].cla);printf("********************");flag=1;}return flag; }/*-----------------------------*/ int erase(char ename[]) //删除功能 {int flag=0,i,j;for(i=0;iif(strcmp(info[i].name,ename)==0){for(j=i;jinfo[j]=info[j+1];count--;flag=1;}return flag; } /*-----------------------------*/ int call(void)//拨号功能 {int i,j,flag=0;char cname[10];printf("**************************\n");for(i=0;iprintf("%s ",info[i].name);}putchar('\n');printf("请输入需要拨号的姓名:");gets(cname);for(i=0;iif(strcmp(info[i].name,cname)==0){printf("正在拨号:");for(j=0;info[i].tel[j]!='\0';j++){printf("%c",info[i].tel[j]);Sleep(300);}putchar('\n');flag=1;}return flag; } /*-----------------------*/ int main(void)//主函数{ char filename[40]; char c,save_j; int t; char s_r_e_name[10];printf("欢迎使用通讯录系统!请输入通讯录文件的有效路径(若文件不存在则自动创建新通讯录)\n"); gets(filename); count=load(filename); system("cls");printf("======================================\ n");printf("==========欢迎使用我的通讯录==========\n");printf("============ 制作:石贵清===========\n");begin:printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n");printf("※※\n");printf("※通迅录※\n");printf("※※\n");printf("※1. 添加新联系人.5. 分类显示查询.※\n");printf("※※\n");printf("※2. 删除联系人.6.拨出电话.※\n");printf("※※\n");printf("※3. 查询通讯成员.7.保存通讯文件.※\n");printf("※※\n");printf("※4. 修改信息.0. 关闭通迅录.※\n");printf("★★★★★★★★★★★★★★★★★★★★★★★★★★\n"); printf("友情提醒:请在退出本程序之前按7保存通讯文件! \n"); printf("请输入您选择的操作:");c=getchar();getchar(); switch(c) {case '1':if(count==SUM){printf("======= 通讯录空间已满,无法继续录入!===\n"); Sleep(STOP);goto begin; break;}t=add();printf("===== 信息已建立,请尽快保存!=====\n");if(t==SUM){printf("===== 通讯录空间已满,无法继续录入!=====\n"); }Sleep(STOP);goto begin;break; case '2': if(count==0){printf("========================\n");printf("=== 通讯录中无任何成员!====\n");printf("======================\n");Sleep(STOP);goto begin;break; }printf("请输入要删除成员的姓名:");gets(s_r_e_name);t=erase(s_r_e_name);if(!t) {printf("=================\n");printf("==== 查无此人====\n");printf("=================\n"); } else {printf("======================\n");printf("======已成功删除======\n");printf("======================\n"); } Sleep(STOP); goto begin;break; case '3':printf("请输入要查找的成员姓名:");gets(s_r_e_name);t=search(s_r_e_name);if(!t){printf("======================\n");printf("===== 查无此人 =======\n");printf("======================\n");}Sleep(STOP);goto begin;break;case '7':save(filename);printf("==============================\n");printf("======保存成功!=======\n");printf("==============================\n"); Sleep(STOP); goto begin;break;case '4':printf("请输入要修改的成员姓名:");gets(s_r_e_name);t=rework(s_r_e_name);if(!t) {printf("=======查无此人====\n"); }else{printf("=========================\n"); printf("====修改成功====\n");}Sleep(STOP);goto begin;break;case '5':display();Sleep(STOP);goto begin;break;case '6':t=call();if(!t){printf("=============================\n"); printf("====== 输入姓名错误! =======\n");printf("============================\n"); }else{printf("=========================\n");printf("======电话已经拨出=====\n");printf("=======================\n");}Sleep(STOP);goto begin;break;case '0':printf("是否保存数据文件?(Y:是/N:否)");save_j=getchar();if(save_j=='Y'||save_j=='y'){save(filename);printf("====== 保存成功!=======\n");printf("======= 感谢您的使用!再见! ======\n");}else{printf("========================\n");printf("=== 感谢您的使用!再见! ===\n");printf("========================\n");}exit(0); default:printf("=====Sleep(STOP);goto begin; } return 0; }输入指令无效!====");第二篇:C语言程序设计学生通讯录管理系统#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "stdlib.h" #define null 0 struct 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:add();break; case 4:dele();break; case 5:save();break; case 6:exit(0); } } } menu_select() { char s[80]; int a; printf("*_* press any key enter menu! *_* \n"); getch(); system("cls"); printf("\t\t********************MENU*********************\n\n"); printf("\t\t 0. 输入记录\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. Quit\n"); printf("\t\t***********************************************\n");do{ printf("\n Enter you choice(0~11):"); scanf("%s",s); a=atoi(s); } while (a<0||a>11); 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;iprintf("\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+1add() { int i; if ((fp=fopen("student.bin","wb"))==NULL) { printf("\n\t\t文件打开失败"); } for (i=0;isave() { 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 fwrite(student,sizeof(student),1,fp); } } printf("保存成功!"); fclose(fp); return(0); }第三篇:C语言作业:学通讯录学生通讯录一、语言和环境1.实现语言:C语言。

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

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

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 ("对不起,您输入的用户名或密码有误,已被强制退出。

c语言通信录课程设计

c语言通信录课程设计

c语言通信录课程设计一、教学目标本课程旨在通过C语言编程,使学生掌握基本的编程技能,并能够运用C语言实现简单的通信录管理系统。

具体目标如下:1.掌握C语言的基本语法和数据结构。

2.理解通信录系统的功能和结构。

3.能够使用C语言进行编程,实现简单的通信录管理系统。

4.培养学生的问题解决能力和创新思维。

情感态度价值观目标:1.培养学生对计算机科学的兴趣和热情。

2.培养学生的团队合作意识和沟通能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构以及通信录系统的实现。

具体安排如下:1.C语言的基本语法:变量、数据类型、运算符、控制结构等。

2.数据结构:数组、链表、栈和队列等。

3.通信录系统的实现:用户界面设计、数据存储和检索等。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:通过讲解C语言的基本语法和数据结构,使学生掌握相关知识。

2.讨论法:引导学生进行小组讨论,培养学生的团队合作意识和沟通能力。

3.案例分析法:通过分析实际的通信录系统案例,使学生理解通信录系统的实现过程。

4.实验法:引导学生进行编程实践,培养学生的问题解决能力和创新思维。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选用权威、实用的C语言编程教材,如《C程序设计语言》。

2.参考书:提供相关的参考书籍,如《C Primer Plus》。

3.多媒体资料:制作教学PPT、视频教程等,以直观、生动的方式呈现教学内容。

4.实验设备:提供计算机实验室,确保学生能够进行编程实践。

通过以上教学资源的支持,我们将帮助学生更好地学习C语言通信录课程,提高他们的编程能力和综合素质。

五、教学评估为了全面、客观、公正地评估学生的学习成果,本课程将采用多种评估方式,包括平时表现、作业和考试等。

1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,评估学生的学习态度和积极性。

用c通讯录课程设计

用c通讯录课程设计

用c 通讯录课程设计一、教学目标本课程旨在让学生掌握C语言编程的基本技能,学会使用C语言进行通讯录管理系统的设计与实现。

通过本课程的学习,学生能理解C语言的基本语法、数据类型、运算符、控制结构等基础知识,掌握函数的定义和调用、指针的使用、文件操作等高级技能。

此外,学生还能培养良好的编程习惯和团队协作能力,提高解决实际问题的能力。

具体来说,知识目标包括:1.掌握C语言的基本语法和数据类型。

2.学会使用C语言进行流程控制和函数编程。

3.理解指针的概念和应用。

4.掌握文件操作的方法。

技能目标包括:1.能够使用C语言编写简单的程序。

2.能够独立设计和实现一个通讯录管理系统。

3.具备良好的编程习惯和代码调试能力。

情感态度价值观目标包括:1.培养学生的编程兴趣,提高他们对计算机科学的热爱。

2.培养学生团队合作、互相学习的良好氛围。

3.使学生认识到编程在实际生活中的重要性,提高他们解决实际问题的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、运算符、控制结构、函数编程、指针、文件操作等。

具体安排如下:1.C语言的基本语法和数据类型:整型、浮点型、字符型、布尔型等数据类型,以及相应的运算符。

2.控制结构:顺序结构、选择结构、循环结构等。

3.函数编程:函数的定义和调用,递归函数, mn 函数的作用和编写。

4.指针:指针的概念、声明和赋值,指针的运算,指针与数组、函数的关系。

5.文件操作:文件的打开、关闭、读写等操作。

6.通讯录管理系统的设计与实现:采用C语言实现一个简单的通讯录管理系统,包括添加、删除、查找、修改联系人信息等功能。

三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。

1.讲授法:通过讲解C语言的基本语法、数据类型、运算符、控制结构等知识,使学生掌握C语言的基础知识。

2.案例分析法:通过分析实际编程案例,使学生掌握函数的定义和调用、指针的使用、文件操作等高级技能。

3.实验法:让学生亲自动手编写程序,实现通讯录管理系统的设计与实现,提高学生的编程能力和实践能力。

c语言课程设计通讯录管理系统课程设计报告

c语言课程设计通讯录管理系统课程设计报告

c语言课程设计通讯录管理系统课程设计报告一、教学目标本课程旨在通过学习C语言,使学生掌握通讯录管理系统的开发过程,培养学生的编程能力和逻辑思维能力。

具体目标如下:1.知识目标:学生能够理解C语言的基本语法和数据结构,掌握函数的定义和调用,了解面向过程的编程思想。

2.技能目标:学生能够使用C语言编写简单的程序,具备解决实际问题的能力,能够独立完成一个通讯录管理系统的开发。

3.情感态度价值观目标:学生通过课程学习,能够培养对编程的兴趣和热情,增强自我学习的动力,提高团队协作的能力。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数的定义和调用,以及面向过程的编程思想。

具体安排如下:1.C语言的基本语法:介绍变量、常量、运算符、表达式等基本概念。

2.数据结构:介绍整数、浮点数、字符等数据类型的使用,以及数组、指针等数据结构。

3.函数的定义和调用:介绍函数的声明、定义和调用,以及函数的参数传递和返回值。

4.面向过程的编程思想:介绍程序的执行流程、循环结构、条件判断等编程控制语句。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。

具体方法如下:1.讲授法:通过讲解C语言的基本语法、数据结构、函数的定义和调用等知识,使学生掌握课程的基本概念。

2.案例分析法:通过分析实际案例,让学生了解编程思想,培养学生的实际操作能力。

3.实验法:安排实验室实践环节,让学生动手编写程序,提高学生的实际编程能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。

具体资源如下:1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。

2.参考书:推荐学生阅读一些优秀的编程书籍,丰富学生的知识储备。

3.多媒体资料:制作课件、视频等多媒体资料,提高课堂的教学效果。

4.实验设备:提供充足的计算机设备,确保学生能够进行实验和实践。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。

c语言课程设计通讯录

c语言课程设计通讯录

c语言课程设计通讯录一、教学目标本节课的学习目标为:1.知识目标:使学生掌握C语言编程基础,了解结构体和指针在实际编程中的应用,理解通讯录程序的设计原理。

2.技能目标:培养学生运用C语言进行程序设计的能力,能够独立完成一个简单的通讯录程序。

3.情感态度价值观目标:培养学生对计算机科学的兴趣,提高学生解决问题的能力,培养学生的团队协作意识。

二、教学内容本节课的教学内容主要为:1.C语言基础:数据类型、运算符、表达式、语句等。

2.结构体和指针:结构体的定义、使用和指针的基本概念。

3.通讯录程序设计:通讯录的数据结构设计、程序流程设计、功能实现等。

三、教学方法本节课的教学方法采用:1.讲授法:讲解C语言基础知识和通讯录设计原理。

2.案例分析法:分析具体的通讯录案例,引导学生理解程序设计过程。

3.实验法:学生动手编写通讯录程序,巩固所学知识。

四、教学资源本节课的教学资源包括:1.教材:《C语言程序设计》。

2.参考书:《C语言编程实例解析》。

3.多媒体资料:PPT课件、在线编程练习平台。

4.实验设备:计算机、网络环境。

五、教学评估本节课的评估方式包括:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和积极性。

2.作业:布置与课程内容相关的编程作业,评估学生的编程能力和对知识的掌握程度。

3.考试:期末进行闭卷考试,评估学生对C语言基础知识和通讯录程序设计的掌握情况。

评估方式要求客观、公正,能够全面反映学生的学习成果。

通过对学生的综合评估,了解学生的学习状况,为后续教学提供参考。

六、教学安排本节课的教学安排如下:1.教学进度:按照教材的章节顺序,逐步讲解C语言基础、结构体和指针、通讯录程序设计等内容。

2.教学时间:共计4课时,每课时45分钟。

3.教学地点:计算机实验室。

教学安排要求合理、紧凑,确保在有限的时间内完成教学任务。

同时,考虑学生的实际情况和需要,如学生的作息时间、兴趣爱好等,尽量提高教学效果。

原创c语言学生通讯录管理系统设计

原创c语言学生通讯录管理系统设计

原创 C 语言学生通讯录管理系统设计简介本文将介绍一个基于 C 语言的学生通讯录管理系统的设计。

该系统旨在提供一个方便管理学生通讯录信息的工具,包括学生的基本信息、联系方式以及其他相关信息。

功能需求学生通讯录管理系统应具备以下功能:1.添加学生信息:包括学生姓名、年龄、性别、学号、联系方式等。

2.删除学生信息:根据学生姓名或学号进行删除。

3.修改学生信息:根据学生姓名或学号进行修改。

4.查询学生信息:根据学生姓名或学号进行查询。

5.显示所有学生信息:以表格形式展示所有学生的基本信息。

数据结构设计为了实现上述功能需求,我们需要设计适当的数据结构来存储学生信息。

本系统采用单链表作为主要数据结构,每个节点表示一个学生的信息。

每个节点包括以下字段:•char name[50]:学生姓名•int age:学生年龄•char gender[10]:学生性别•int studentID:学生学号•char contact[50]:学生联系方式其中,name、gender和contact字段使用字符数组来存储字符串信息,age和studentID字段使用整数来存储相应的信息。

为了方便管理学生信息,我们还需要定义一个指针变量head来表示链表的头节点。

以下是相关数据结构的定义:typedef struct ListNode {char name[50];int age;char gender[10];int studentID;char contact[50];struct ListNode* next;} ListNode;ListNode* head = NULL;功能实现添加学生信息添加学生信息的功能通过以下步骤实现:1.创建一个新的节点newNode2.提示用户输入学生的基本信息,并将信息保存到newNode的相应字段中3.将newNode插入到链表中的合适位置以下是添加学生信息的代码实现:```c ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); printf(。

c学生通讯录课程设计

c学生通讯录课程设计

c 学生通讯录课程设计一、课程目标知识目标:1. 学生能够理解并掌握通讯录的基本概念,如联系人信息的分类、存储和管理。

2. 学生能够运用所学的编程知识,实现简易通讯录系统的功能,如增加、删除、修改和查询联系人信息。

技能目标:1. 学生能够运用所学编程语言,设计并编写通讯录管理系统,提高编程实践能力。

2. 学生能够通过团队协作,共同完成任务,提升沟通与协作能力。

情感态度价值观目标:1. 学生能够认识到编程在生活中的应用价值,培养对信息技术的兴趣和爱好。

2. 学生能够在项目实践中,体会到团队合作的重要性,增强团队意识和责任感。

3. 学生能够在课程学习过程中,养成良好的编程习惯,提高自我管理和解决问题的能力。

课程性质:本课程为信息技术课程,以实践操作为主,注重培养学生的编程能力和实际应用能力。

学生特点:六年级学生已具备一定的编程基础和逻辑思维能力,对新鲜事物充满好奇心,喜欢动手实践。

教学要求:结合学生特点,课程设计应注重实践性、趣味性和挑战性,引导学生主动参与,激发学生的学习兴趣和潜能。

教学过程中,关注学生的个体差异,提供个性化指导,确保每个学生都能在课程中收获成长。

通过分解课程目标为具体的学习成果,为后续教学设计和评估提供明确依据。

二、教学内容本课程教学内容主要包括以下三个方面:1. 通讯录基本概念:- 联系人信息的分类:姓名、电话、邮箱、地址等。

- 通讯录的存储和管理方式。

2. 编程实现通讯录功能:- 使用所学编程语言(如Python)设计简易通讯录系统。

- 实现增加、删除、修改和查询联系人信息的功能。

- 引导学生运用循环、条件语句、函数等编程知识。

3. 团队协作与项目实践:- 分组进行项目实践,培养学生团队协作能力。

- 各组制定项目计划,明确分工,共同完成任务。

- 教师提供实时指导,帮助学生解决问题。

教学大纲安排如下:1. 第一周:介绍通讯录基本概念,引导学生学习联系人信息的分类和存储方式。

2. 第二周:讲解编程实现通讯录功能的方法,示范编写相关代码。

c通讯录程序课程设计

c通讯录程序课程设计

c 通讯录程序课程设计一、课程目标知识目标:1. 让学生理解通讯录程序的基本原理和功能需求;2. 使学生掌握使用编程语言(如Python)实现通讯录程序的基本方法;3. 帮助学生了解数据结构在通讯录程序中的应用,如列表和字典。

技能目标:1. 培养学生运用所学知识,独立设计并编写简单通讯录程序的能力;2. 提高学生在编程过程中解决问题的能力,包括调试和优化代码;3. 培养学生运用计算思维分析问题、设计算法和实现程序的能力。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养积极的学习态度;2. 培养学生良好的团队协作精神,学会与他人分享和交流;3. 增强学生的自信心,让他们在完成通讯录程序设计的过程中,体验成就感。

课程性质:本课程为实践性较强的课程,旨在让学生通过动手实践,掌握编程技能和计算思维。

学生特点:考虑到学生所在年级,已具备一定的编程基础,但实际操作能力和解决问题的能力还需加强。

教学要求:注重理论与实践相结合,强调学生的动手实践,以任务驱动的方式进行教学,培养学生自主学习和合作学习的能力。

通过课程目标的分解,使学生在完成具体学习成果的过程中,达到预期目标。

二、教学内容1. 通讯录程序基本原理与功能需求分析:介绍通讯录程序的核心功能,如添加、删除、查找和修改联系人信息,以及程序的整体设计思路。

- 教材章节:第3章 数据结构,第4章 程序设计基础。

2. 编程语言基础:回顾Python编程语言的基本语法,重点讲解列表和字典的使用方法。

- 教材章节:第1章 Python语言概述,第2章 基本数据类型。

3. 通讯录程序设计与实现:讲解如何利用Python编程语言和所学数据结构设计并实现通讯录程序。

- 教材章节:第5章 函数与模块,第6章 文件操作。

4. 程序调试与优化:介绍程序调试的基本方法,引导学生学会优化代码,提高程序性能。

- 教材章节:第7章 程序调试与优化。

5. 项目实践:安排学生分组进行通讯录程序的设计与实现,鼓励学生相互交流、协作,培养团队精神。

  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个。

相关文档
最新文档