大一C语言电话簿管理系统

合集下载

使用C语言打造通讯录管理系统和教学安排系统的代码示例

使用C语言打造通讯录管理系统和教学安排系统的代码示例

使用C语言打造通讯录管理系统和教学安排系统的代码示例这篇文章主要介绍了使用C语言打造通讯录管理系统和教学安排系统的代码示例,利用C语言强大的数组和指针能够更加清晰地体现设计思路,需要的朋友可以参考下:通讯录管理系统实现了通讯录的录入信息、保存信息、插入、删除、排序、查找、单个显示等功能。

完整的代码如下:#include <stdio.h>#include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针//#include <string.h>#include <stdlib.h> //标准库函数//#define NULL 0#define LEN sizeof(struct address_list) //计算字节//int n;struct address_list{char name[30]; //名字char work[30]; //职业char handset[30]; //手机char email[30]; //电子邮件char address[30]; //通讯地址struct address_list *next;};struct address_list *shifang(struct address_list *head); // 释放内存函数声明//创建函数,不带头结点的链表struct address_list *creat(void){struct address_list *head,*p1,*p2;char name[20];n=0;p1=(struct address_list *)malloc(LEN);p2=p1; //强制内存转换printf("请输入通讯录的内容!\n姓名输入为0时表示创建完毕!\n");printf("请输入姓名:");gets(name);if(strcmp(name,"0")!=0){strcpy(p1->name,name);printf("请输入职业:"); gets(p1->work);printf("请输入手机:"); gets(p1->handset);printf("请输入电子邮件:"); gets(p1->email);printf("请输入通讯地址:"); gets(p1->address);head=NULL;while(1){n=n+1; //记录通讯录人数个数if(n==1)head=p1;elsep2->next=p1;p2=p1;printf("请输入姓名:");gets(name);if(strcmp(name,"0")==0){break;}else{p1=(struct address_list *)malloc(LEN);strcpy(p1->name,name);printf("请输入职业:"); gets(p1->work);printf("请输入手机:"); gets(p1->handset);printf("请输入电子邮件:"); gets(p1->email);printf("请输入通讯地址:"); gets(p1->address);}}p2->next=NULL;return head;}elsereturn 0;}//输出函数void print(struct address_list *head){struct address_list *p;if(head!=NULL){p=head;printf("本通讯录现在共有%d人:\n",n);printf("---姓名-------职业--------手机-------Email-------通讯地址\n");printf("==================================\n");doprintf("== %s",p->name); printf(" ");printf("%s",p->work); printf(" ");printf("%s",p->handset); printf(" ");printf("%s",p->email); printf(" ");printf("%s",p->address); printf(" \n");p=p->next;}while(p!=NULL);printf("==================================\n");}elseprintf("通讯录为空,无法输出!\n");}//增加函数struct address_list *insert(struct address_list *head){struct address_list *p0,*p1,*p2;char name[20];p1=head;printf("请输入增加的内容:\n");printf("请输入姓名:"); gets(name);if(strcmp(name,"0")==0){printf("姓名不能为0,增加失败!\n");return(head);}else{p0=(struct address_list *)malloc(LEN);strcpy(p0->name,name);printf("请输入职业:"); gets(p0->work);printf("请输入手机:"); gets(p0->handset);printf("请输入电子邮件:"); gets(p0->email);printf("请输入通讯地址:"); gets(p0->address);n=n+1;if(head==NULL){head=p0;p0->next=NULL;return head;}else{while(strcmp(p0->name,p1->name)>0&&(p1->next!=NULL))p2=p1;p1=p1->next;}if(strcmp(p0->name,p1->name)<0 || strcmp(p0->name,p1->name)==0) {if(head==p1){head=p0;}else{p2->next=p0;}p0->next=p1;}else{p1->next=p0;p0->next=NULL;}return head;}}}struct address_list* delete_txl(struct address_list *head){struct address_list *p,*q;char name[30];if(head==NULL){printf("通讯录为空,无法显示!\n");return head;}p=head;printf("请输入需要删除的人的姓名:");gets(name);if(strcmp(head->name,name)==0){head=head->next;free(p);printf("删除操作成功!\n");return head;}{q=head,p=head->next;while(p!=NULL){if(strcmp(p->name,name)==0){q->next=p->next;free(p);printf("删除操作成功!\n");return head;}p=p->next;q=q->next;}}}//显示函数struct address_list *display(struct address_list *head){struct address_list *p1,*p2;char name[30];int m;if(head==NULL){printf("通讯录为空,无法显示!\n");return head;}p1=head;m=0;printf("请输入需要显示人的姓名:");gets(name);while(p1!=NULL){while((strcmp(p1->name,name))!=0 && p1->next!=NULL){p2=p1;p1=p1->next;}if(strcmp(p1->name,name)==0){m++;printf("%s的通讯内容如下:\n",name);printf("---姓名--------职业--------手机-------Email------通讯地址\n");printf("==================================\n");printf("== %s",p1->name);printf(" ");printf("%s",p1->work);printf(" ");printf("%s",p1->handset);printf(" ");printf("%s",p1->email);printf(" ");printf("%s",p1->address); printf(" \n");printf("==================================\n");}p1=p1->next;}if(m==0){printf("此人未在本通讯录中!\n");}return(head);}//排序函数struct address_list *paixu(struct address_list *head){struct address_list *p1,*p2;int i,j;struct address_list1{char name[30];char work[30];char handset[30];char email[30];char address[30];};struct address_list1 px[200];struct address_list1 temp;if(head==NULL){printf("通讯录为空,无法排序!\n");return(head);}p1=head;for(i=0;i<n,p1!=NULL;i++){strcpy(px[i].name,p1->name);strcpy(px[i].work,p1->work);strcpy(px[i].handset,p1->handset);strcpy(px[i].email,p1->email);strcpy(px[i].address,p1->address);p2=p1;p1=p1->next;}head=shifang(head);for(j=0;j<n-1;j++){for(i=j+1;i<n;i++){if(strcmp(px[i].name,px[j].name)<0){temp=px[i];px[i]=px[j];px[j]=temp;}}}p1=(struct address_list *)malloc(LEN);p2=p1;strcpy(p1->name,px[0].name);strcpy(p1->work,px[0].work);strcpy(p1->handset,px[0].handset);strcpy(p1->email,px[0].email);strcpy(p1->address,px[0].address);head=p1;for(i=1;i<n;i++){p1=(struct address_list *)malloc(LEN);strcpy(p1->name,px[i].name);strcpy(p1->work,px[i].work);strcpy(p1->handset,px[i].handset);strcpy(p1->email,px[i].email);strcpy(p1->address,px[i].address);p2->next=p1;p2=p1;}p2->next=NULL;printf("按姓名排序后为:\n");print(head);return(head);}//姓名查找函数struct address_list *search(struct address_list *head){struct address_list *p1,*p2;int m;char name[30];if(head==NULL){printf("通讯录为空,无法分类查找!\n");return(head);}p1=head;printf("********************\n");printf("** 请输入需要查找的姓名**\n");printf("********************\n");m=0;gets(name);while(p1!=NULL){while(strcmp(p1->name,name)!=0&&p1->next!=NULL){p2=p1;p1=p1->next;}if(strcmp(p1->name,name)==0){m++;printf("你查找的内容是:\n");printf("+++++++++++++++++++++++++++++++++++\n");printf("++ %s %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email,p1-> address);printf("+++++++++++++++++++++++++++++++++++\n");}p1=p1->next;if(m==0){printf("此人未在本通讯录中!\n");}break;}return(head);}//释放内存函数struct address_list *shifang(struct address_list *head){struct address_list *p1;while(head!=NULL){p1=head;head=head->next;free(p1);}return(head);}//文件写入函数void save(struct address_list *head){FILE *fp;struct address_list *p1;char tong[30];if(head==NULL){printf("通讯录为空,无法存储!\n");return;}printf("请输入保存后的文件名:");gets(tong);fp=fopen("(tong).txt","w");if(fp==NULL){printf("cannot open file\n");return;}p1=head;fprintf(fp,"姓名职业手机Email 通讯地址\n");for(;p1!=NULL;){fprintf(fp,"%s %s %s %s %s\n",p1->name,p1->work,p1->handset,p1->email,p1-> address);p1=p1->next;}printf("保存完毕!\n");fclose(fp);}//文件读出函数struct address_list *load(struct address_list *head){FILE *fp;char tong[30];struct address_list *p1,*p2;printf("请输入要输出的文件名:");gets(tong);fp=fopen("(tong).txt","r");if(fp==NULL){printf("此通讯录名不存在,无法输出!\n");return(head);}else{head=shifang(head);}p1=(struct address_list *)malloc(LEN);fscanf(fp,"%s%s%s%s%s",&p1->name,&p1->work,&p1->handset,&p1->email,&p1->address); if(feof(fp)!=0){printf("文件为空,无法打开!\n");return(head);}else{rewind(fp);p2=p1;head=p1;n=0;while(feof(fp)==0){fscanf(fp,"%s%s%s%s%s",&p1->name,&p1->work,&p1->handset,&p1->email,&p1->address);if(feof(fp)!=0)break;p2->next=p1;p2=p1;p1=(struct address_list *)malloc(LEN);n=n+1;}p2->next=NULL;p1=head;head=head->next;n=n-1;free(p1);print(head);printf("打开完毕!\n");return(head);}fclose(fp);}//综合操作函数struct address_list *menu(struct address_list *head) {char num[10];while(1){printf("*********************\n");printf("*** 1 姓名查找****\n");printf("*** 2 单个显示****\n");printf("*** 3 增加****\n");printf("*** 4 退出****\n");printf("*********************\n");printf("请输入您选择的操作:");gets(num);switch(*num){case '1':{head=search(head); //姓名查找print(head);}break;case '2':{head=display(head); //显示}break;case '3':{head=insert(head); //增加print(head);}break;case '4':return head;default:printf("操作错误,此项不存在!\n");break;}if(strcmp(num,"6")==0)break;}return head;}//主函数void main(){struct address_list *head=NULL;char num[10];printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n"); printf("*=* 程序说明*=*\n");printf("*=* 请及时保存创建完毕的通讯录内容! *=*\n"); printf("*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n"); while(1){printf("************************\n");printf("*** 1 创建通讯录****\n");printf("*** 2 按名字排序****\n");printf("*** 3 综合操作****\n");printf("*** 4 保存****\n");printf("*** 5 打开****\n");printf("*** 6 删除****\n");printf("*** 7 退出****\n");printf("************************\n");printf("请输入您选择的操作:");gets(num);switch(*num){case '1':{if(head==NULL){head=creat(); //创建print(head);}else{head=shifang(head);head=creat(); //重新创建print(head);}}break;case '2':{head=paixu(head); //排序}break;case '3':{head=menu(head); //综合操作}break;case '4':{save(head); //文件保存print(head);}break;case '5':{head=load(head); //文件输出}break;case '6':{head=delete_txl(head); //删除print(head);}break;case '7':head=shifang(head);break;default:printf("操作错误,此项不存在!\n");break;}if(strcmp(num,"7")==0)break;}}。

C语言 编写1个简单的通讯录管理系统

C语言  编写1个简单的通讯录管理系统
p->brithday=per.brithday; strcpy(p->sex,per.sex);
strcpy(p->age,per.age); strcpy(p->phone,per.phone);
head=p; p->next=q; q=head;
per.brithday=p->brithday; strcpy(per.sex,p->sex);
strcpy(per.age,p->age); strcpy(per.phone,p->phone);
if(fwrite(&per,sizeof(struct person),1,fp)!=1)
scanf("%s",fname);
head=load(fname);
while(1)
{ printf("\t\t 通讯录管理系统\n");
printf("\t\t=========================\n");
printf("\t\t 1. 插入一条记录\n");
printf("\n\t请输入出生年月:"); scanf("%ld",&temp->brithday);
printf("\n\t请输入性别:"); scanf("%s",temp->sex);
printf("\n\t请输入年龄:"); scanf("%d",temp->age);
}
else {printf("文件无法读取数据。"); exit(1);}

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

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

C语言学生通讯录管理系统设计1. 系统概述本文档描述了一个基于C语言的学生通讯录管理系统的设计。

该系统旨在提供一个简单而有效的方式来管理学校中学生的联系信息。

2. 功能需求学生通讯录管理系统需要满足以下功能需求:•添加学生信息:包括学生姓名、学号、年级、班级、电话号码等。

•删除学生信息:根据学号或姓名删除指定学生的信息。

•修改学生信息:根据学号或姓名修改指定学生的信息。

•查询学生信息:根据学号或姓名查询指定学生的信息。

•显示所有学生信息:展示学生通讯录中所有学生的信息。

3. 系统设计3.1 数据结构系统使用以下数据结构来表示学生通讯录:struct Student {char name[50];int studentID;int grade;int class;char phoneNumber[20];};struct StudentDirectory {struct Student students[100];int count;};学生通讯录使用一个结构体数组来存储学生信息,每个学生信息包含姓名、学号、年级、班级和电话号码。

StudentDirectory结构体用于存储整个学生通讯录,count表示当前学生通讯录中的学生数量。

3.2 模块设计系统的实现可以分为以下几个模块:•输入输出模块:负责从用户获取输入以及将结果输出给用户。

•添加学生信息模块:负责向学生通讯录中添加新的学生信息。

•删除学生信息模块:负责从学生通讯录中删除指定学生的信息。

•修改学生信息模块:负责修改学生通讯录中指定学生的信息。

•查询学生信息模块:负责查询学生通讯录中指定学生的信息。

•显示学生信息模块:负责展示学生通讯录中所有学生的信息。

3.3 系统流程下图展示了学生通讯录管理系统的基本流程:flowchart LRA[开始]B[用户输入选项]C{选项是添加学生信息?}D[执行添加学生信息模块]E{选项是删除学生信息?}F[执行删除学生信息模块]G{选项是修改学生信息?}H[执行修改学生信息模块]I{选项是查询学生信息?}J[执行查询学生信息模块]K{选项是显示所有学生信息?}L[执行显示学生信息模块]M[结束]A --> BB -- Yes --> CB -- No --> EC -- Yes --> DC -- No --> ED --> ME -- Yes --> FE -- No --> GF --> MG -- Yes --> HG -- No --> IH --> MI -- Yes --> JI -- No --> KJ --> MK -- Yes --> LK -- No --> ML --> M4. 系统实现系统的具体实现可以参考下面的示例代码:```c #include <stdio.h>struct Student { char name[50]; int studentID; int grade; int class; char phoneNumber[20]; };struct StudentDirectory { struct Student students[100]; int count; };void addStudent(struct StudentDirectory* directory) { // 从用户获取学生信息并添加到学生通讯录中 }void deleteStudent(struct StudentDirectory* directory) { // 从用户获取学生信息并从学生通讯录中删除 }void modifyStudent(struct StudentDirectory* directory) { // 从用户获取学生信息并修改学生通讯录中指定学生的信息 }void queryStudent(struct StudentDirectory* directory) { // 从用户获取学生信息并查询学生通讯录中指定学生的信息 }void showAllStudents(struct StudentDirectory* directory) { // 显示学生通讯录中所有学生的信息 }int main() { struct StudentDirectory directory; directory.count = 0;int option;while (1) {printf(\。

c语言实现通讯录管理系统(用链表实现)

c语言实现通讯录管理系统(用链表实现)

c语⾔实现通讯录管理系统(⽤链表实现)题⽬:通讯录(通过链表实现)设计并实现⼀个简易的通讯录软件,管理个⼈通讯记录。

⼀条通讯记录可包括:姓名、⼯作单位、⼿机、住宅电话、E-Mail、家庭住址等(可⾃⾏增删,但不可过少)。

该系统应实现以下基本功能:(1)增加新的通讯记录。

(2)删除已有的通讯记录。

(3)修改已有的通讯记录。

(4)浏览全部或指定(如指定姓名、⼯作单位等)的通讯记录。

(5)合理组织排列各项功能,界⾯可使⽤键盘操作。

(6)以⽂件的形式存储数据。

说明:⼤⼀时的c语⾔课设,⽤链表实现⼀个通讯录管理系统,为了美观好看,花了很多时间调整齐度,记录⼀下⼤⼀时的作业。

其主要功能是对通讯录可输⼊,显⽰,插⼊,删除,最难是可保存,这个学⽂件的时候不怎么会。

内容我⾃⼰弄了7个,名字,性别,⼯作单位,⼿机,住宅电话,E-Mail,家庭住址(其他太多其实都是⼀样的,就懒得加了)。

主要运⽤到对指针中的链表的功能和使⽤要⽐较扎实,分部列写就可以了。

实现图⽚:附上代码:1 #include <stdio.h>2 #include <string.h>3 #include <stdlib.h>4 typedef struct student5 {6char name[20];//名字7char wm[20];//性别8char work[100];//⼯作单位9char stel[20];//⼿机10char htel[20];//住宅号码11char mail[20];//E-Mail12char home[100];//家庭住址13struct student *next;14 }stu;15 stu *head;//头指针16void screen()//主菜单17 {18 printf("\n=======================================================\n");19 printf(" 欢迎来到通讯录管理系统\n\n");20 printf(" 1.输⼊数据 2.显⽰数据\n");21 printf(" 3.插⼊数据 4.删除数据\n");22 printf(" 5.查看数据 6.修改数据\n");23 printf(" 7.保存数据 8.返回主菜单\n");24 printf("\n~~~~~~输~~~~~~⼊~~~~~~9~~~~~~退~~~~~~出~~~~~~程~~~~~~序\n");25 }26void input()//输⼊数据27 {28int ans;//判断是否继续输⼊29 stu *p1,*p2;30 p1=(stu *)malloc(sizeof(stu));//申请内存来⽤31if(p1!=NULL)32 {33 printf("========输⼊数据========\n");34 head=p1;35while(1)36 {37 printf("名字:");38 scanf("%s",&p1->name);39 printf("性别:");40 scanf("%s",&p1->wm);41 printf("⼯作单位:");42 scanf("%s",&p1->work);43 printf("⼿机:");44 scanf("%s",&p1->stel);45 printf("住宅号码:");46 scanf("%s",&p1->htel);47 printf("E-Mail:");48 scanf("%s",&p1->mail);49 printf("家庭地址:");50 scanf("%s",&p1->home);51 printf("===================================\n");52 p2=p1;53 p1=(stu *)malloc(sizeof(stu));//申请下⼀个要⽤的空间54if(p1!=NULL)55 p2->next=p1;56 printf("请选择是否继续输⼊:1.继续 2.退出\n请选择:");//⽤户选择57 scanf("%d",&ans);58if(ans==1)//继续59continue;60else//退出61 {62 printf("========输⼊完毕========\n");63 p2->next=NULL;64free(p1);//将申请的的⽆⽤内存释放65break;66 }67 }68 }69 }70void look(stu *p1)//显⽰数据71 {72 printf("========显⽰数据========\n");73while(p1!=NULL)74 {75 printf("名字:%s\n",p1->name);76 printf("性别:%s\t",p1->wm);77 printf("⼯作单位:%s\t",p1->work);78 printf("⼿机:%s\t",p1->stel);79 printf("住宅号码:%s\t",p1->htel);80 printf("E-Mail:%s\t",p1->mail);81 printf("家庭住址:%s\n",p1->home);82 printf("=====================================\n");83 p1=p1->next;84 }85 printf("========显⽰完毕========\n");86 }87void insert()//插⼊数据88 {89int ans;//选择插⼊位置90char name[20];//插⼊者的名字91 printf("========插⼊数据========\n");92 stu *p1,*p2,*p3;93 p1=head;94 p3=(stu *)malloc(sizeof(stu));//申请内存95 p3->next=NULL;96 printf("请输⼊插⼊者的数据:\n");97 printf("名字:");98 scanf("%s",&p3->name);99 printf("性别:");100 scanf("%s",&p3->wm);101 printf("⼯作单位:");102 scanf("%s",&p3->work);103 printf("⼿机:");104 scanf("%s",&p3->stel);105 printf("住宅号码:");106 scanf("%s",&p3->htel);107 printf("E-Mail:");108 scanf("%s",&p3->mail);109 printf("家庭地址:");110 scanf("%s",&p3->home);111 printf("请选择插⼊位置:1.⾸位置插⼊ 2.尾部插⼊ 3.插到某⼈前⾯\n请选择:");112 scanf("%d",&ans);113switch(ans)114 {115case1://放到头指针116 p3->next=p1;117 head=p3;118break;119case2://放到尾部120while(p1->next!=NULL)121 p1=p1->next;122 p1->next=p3;123break;124case3://放到某⼈前⾯125 printf("请输⼊插到谁前⾯名字:");126 scanf("%s",name);127while(strcmp(name,p1->name)!=0)128 {129 p2=p1;130 p1=p1->next;131 }132 p2->next=p3;133 p3->next=p1;134break;135 }136 printf("========插⼊成功========\n");137 }138void deleted()//删除数据139 {140 stu *p1,*p2;141char name[20];//删除者名字142 printf("========删除数据========\n");143 printf("请输⼊要删除者的名字:");144 scanf("%s",name);145 p1=head;146if(head==NULL)//通讯录已经没数据了147 {148 printf("通讯录⾥什么也没有了。

学生通讯录管理系统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语言程序设计  手机通讯录管理系统
3
根据上面的分析,可以将这个系统分为如下五大模块:
1.查看模块
2.增加模块
3.修改模块
4.删除模块
5.显示模块
系统功能模块图
4 详细设计
4.1
主函数一般要求设计得比较简洁,只提供输入、输出、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。把界面选择部分语句单独取出来作为一独立函数,目的在于系统实行完每部分功能后能够方便返回系统界面。主函数设计如下:
if(n==0) //是否有数据
{
puts("当前没有数据!");
free(tmp);
getch();
return ;
}
i=select();
if(msgbox("确定修改?"))
{
input(tmp);
con[i]=*tmp;
sort();
save(DATA,con);
free(tmp);
return;
}
i=select();
if(msgbox("确定删除?"))
{
con[i].name[0]=-1;
sort();
n--;
save(DATA,con);
return;
}
}
/**********************************************
删除模块
删除实现原理通过将数据的初始赋值为-1
default:
break;
}
}
else if(key==13) //获取回车键,确定输入
{
return cursor;
}
}
}
4.3公共函数

通讯录管理系统C语言代码

通讯录管理系统C语言代码
printf("\t姓名:");
scanf("\t%s",per[i].name);
printf("\t电话号码:");
scanf("\t%s",per[i].num);
printf("\t通讯住址:");
scanf("\t%s",per[i].adds);
printf("\t邮政编码:");
{
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");
printf("\t\t * 0. 退出程序 *\n");
printf("\t\t ****************\n");
printf("\t\t请您选择(0-6):");
c=getchar();
}while(c<'0'||c>'6');
if(i==n)
{
printf("\t通讯录中没有此人!\n");
return;
}
printf("\t此人学号: %d\n",per[i].score);
printf("\t此人姓名: %s\n",per[i].name);

C语言大作业_电话号码管理系统设计

C语言大作业_电话号码管理系统设计

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>#define N 100void input();//添加新用户void amend();//修改用户信息void delete_client();//删除用户信息void search_client();//用户信息查询void collect_telephone();//所有用户信息void save_client(struct telephone message);//保存void search_name();//按用户名查询void search_telephone();//按电话号码查询void goodbye();//退出提示struct telephone{char client_name[20];char client_address[30];char client_telephone[15];};void main(){char choice[10]="";int len=0;while (choice[0]!='7'){system("cls");printf(" ◢◤〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓◥◣");printf("\n ◢◤〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓◥◣");printf("\n █===┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓┏┯┓===█");printf("\n █===┠欢┨┠迎┨┠使┨┠用┨┠电┨┠话┨┠管┨┠理┨┠系┨┠统┨===█");printf("\n █===┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛┗┷┛===█");printf("\n ◥◣〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓◢◤");printf("\n ◥◣〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓◢◤\n");printf(" ★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★≈★");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");printf(" ┃| | | ┃\n");printf(" ┃ 1、 | 用户信息查询 | 2、 | 所有用户信息┃\n");printf(" ┃| | | ┃\n");printf(" ┃=========|════════════|========|════════════┃\n");printf(" ┃| | | ┃\n");printf(" ┃ 3、 | 删除用户信息 | 4、 | 添加用户┃\n");printf(" ┃| | | ┃\n");printf(" ┃=========|════════════|========|════════════┃\n");printf(" ┃| | | ┃\n");printf(" ┃ 5、 | 修改用户信息 | 6、 | 退出系统┃\n");printf(" ┃| | | ┃\n");printf(" 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");printf("\n 请选择(1-6):");scanf("%s",choice);len=strlen(choice);if (len>1){printf("\n 请输入1-6之间的整数\n");printf("\n 按回车键返回主菜单\n");getchar();getchar();continue;}switch (choice[0]){case '1':search_client();break;case '2':collect_telephone();break;case '3':delete_client();break;case '4':input();break;case '5':amend();break;case '6':goodbye();break;default:break;}}}//添加新用户void input(){struct telephone message;char reply='y';char save='y';while (reply=='y'){system("cls");printf("\n 用户姓名:");scanf("%s",message.client_name);printf("\n 家庭住址:");scanf("%s",message.client_address);printf("\n 电话号码:");scanf("%s",message.client_telephone);printf("\n 要保存吗?(y/n):");scanf(" %c",&save);if (save=='y'){save_client(message);}printf("\n 是否继续?(y/n):");scanf(" %c",&reply);}printf("\n 按回车键返回主菜单\n");getchar();getchar();}//保存void save_client(struct telephone message){FILE *fp;fp=fopen("message.dat","a+");if (fp!=NULL){fwrite(&message,sizeof(struct telephone),1,fp);}else{printf("\n 打开文件时出现错误,按回车键返回\n");getchar();return;}fclose(fp);}//修改用户信息void amend(){struct telephone message;FILE *fp;char amend_name[20];char reply='y';char found='y';char save='y';int size=sizeof(struct telephone);while (reply=='y'){found='n';fp=fopen("message.dat","r+w");if (fp!=NULL){system("cls");printf("\n 请输入你要修改的姓名:");scanf("%s",amend_name);while ((fread(&message,size,1,fp))==1){if ((strcmp(amend_name,message.client_name))==0){found='y';break;}}if (found=='y'){printf("\n 修改用户信息\n");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("\n ┃用户姓名┃ %-16s┃",message.client_name);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃家庭地址┃ %-16s┃",message.client_address);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃电话号码┃ %-16s┃",message.client_telephone);printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");printf("\n 修改用户信息:\n");printf("\n 用户姓名:");scanf("%s",message.client_name);printf("\n 家庭住址:");scanf("%s",message.client_address);printf("\n 电话号码:");scanf("%s",message.client_telephone);printf("\n 是否保存?(y/n):");scanf(" %c",&save);if(save=='y'){fseek(fp,-size,1);fwrite(&message,sizeof(struct telephone),1,fp);}}else{printf("\n 无此信息!\n");}}else{printf("\n 打开文件时出现错误,按回车键返回\n");getchar();return;}fclose(fp);printf("\n 是否继续?(y/n):");scanf(" %c",&reply);}printf("\n 按回车键返回主菜单\n");getchar();getchar();}//删除用户信息void delete_client(){struct telephone message[N];struct telephone temp_str;struct telephone delete_str;int i=0,j=0;char reply='y';char found='y';char confirm='y';char delete_name[20];FILE *fp;while (reply=='y'){system("cls");fp=fopen("message.dat","r");if (fp!=NULL){i=0;found='n';printf("\n 请输入你要删除的姓名:");scanf("%s",delete_name);while ((fread(&temp_str,sizeof(struct telephone),1,fp))==1){if((strcmp(delete_name,temp_str.client_name))==0){found='y';delete_str=temp_str;}else{message[i]=temp_str;i++;}}}else{printf("\n 无此信息,按回车键返回\n");getchar();return;}fclose(fp);if (found=='y'){printf("\n 用户信息");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("\n ┃用户姓名┃ %-16s┃",delete_str.client_name);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃家庭地址┃ %-16s┃",delete_str.client_address);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃电话号码┃ %-16s┃",delete_str.client_telephone);printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");}else{printf("\n 无此信息,按回车键返回\n");getchar();break;}printf("\n 确定要删除?(y/n):");scanf(" %c",&confirm);if (confirm=='y'){fp=fopen("message.dat","w");if (fp!=NULL){for(j=0;j<i;j++){fwrite(&message[j],sizeof(struct telephone),1,fp);}printf("\n 记录已删除\n");}else{printf("\n 打开文件时出现错误,按回车键返回\n");getchar();return;}fclose(fp);}printf("\n 是否继续?(y/n):");scanf(" %c",&reply);}getchar();}//用户信息查询void search_client(){int choice=1;while (choice!=3){system("cls");printf("\n 电话查询菜单\n");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("\n ┃ 1 ┃按用户姓名查询┃");printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃ 2 ┃按电话号码查询┃");printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃ 3 ┃返回主菜单┃");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");printf("\n 请选择(1-3):");scanf("%d%*c",&choice);if (choice>3){printf("\n 请输入1-3之间的整数(1-3)\n");printf("\n 按回车键返回");getchar();continue;}if (choice==1){search_name();}else if (choice==2){search_telephone();}}}//按用户名查询void search_name(){struct telephone message;FILE *fp;char amend_name[20];char reply='y';char found='y';while (reply=='y'){found='n';fp=fopen("message.dat","r+w");if (fp!=NULL){system("cls");printf("\n 请输入你要查的姓名:");scanf("%s",amend_name);while ((fread(&message,sizeof(struct telephone),1,fp))==1){if ((strcmp(amend_name,message.client_name))==0){found='y';break;}}if (found=='y'){printf("\n 用户信息\n");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("\n ┃用户姓名┃ %-16s┃",message.client_name);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃家庭地址┃ %-16s┃",message.client_address);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃电话号码┃ %-16s┃",message.client_telephone);printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");}else{printf("\n 无此信息\n");}}else{printf("\n 打开文件时出现错误,按回车键返回\n");getchar();return;}fclose(fp);printf("\n 是否继续?(y/n):");scanf(" %c",&reply);}printf("\n 按回车键返回主菜单\n");getchar();getchar();}//按电话号码查询void search_telephone(){struct telephone message;FILE *fp;char telephone[20];char reply='y';char found='y';while (reply=='y'){found='n';fp=fopen("message.dat","r+w");if (fp!=NULL){system("cls");printf("\n 请输入你要查的电话号码:");scanf("%s",telephone);while ((fread(&message,sizeof(struct telephone),1,fp))==1){if ((strcmp(telephone,message.client_telephone))==0){found='y';break;}}if (found=='y'){printf("\n 用户信息\n");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("\n ┃用户姓名┃ %-16s┃",message.client_name);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃家庭地址┃ %-16s┃",message.client_address);printf("\n ┃━━━━━━━━┃━━━━━━━━━━━━┃");printf("\n ┃电话号码┃ %-16s┃",message.client_telephone);printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");}else{printf("\n 无此电话号码信息\n");}}else{printf("\n 打开文件时出现错误,按回车键返回\n");getchar();return;}fclose(fp);printf("\n 是否继续?(y/n):");scanf(" %c",&reply);}printf("\n 按回车键返回主菜单\n");getchar();}//显示所有用户信息函数void collect_telephone(){struct telephone message;FILE *fp;fp=fopen("message.dat","r");if (fp!=NULL){system("cls");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓");printf("\n ┃用户姓名┃家庭地址┃电话号码┃");printf("\n 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");while ((fread(&message,sizeof(struct telephone),1,fp))==1){printf(" ┃%-16s┃%-16s┃%-16s┃",message.client_name,message.client_address,message.client_telephone);printf("\n ┃━━━━━━━━┃━━━━━━━━┃━━━━━━━━┃\n");}}else{printf("\n 打开文件时出现错误,按回车键返回\n");getchar();return;}fclose(fp);printf("\n 按回车键返回主菜单\n");getch();}//退出函数void goodbye(){char c;printf(" 真的退出?(y/n):");getchar();if(c=='y'||c=='Y'){system("cls");exit(0);}elseif(c=='n'||c=='N'){printf("\n 按回车键返回\n");getch();}}。

南航c语言课程设计报告——电话簿管理系统

南航c语言课程设计报告——电话簿管理系统

电话簿管理系统一.程序功能:电话簿管理系统要求实现一个电话薄系统的基本管理功能,包括录入、删除、查找、和导入/导出功能等。

1.创建电话簿;2.#include<stdio.h>#include<stdlib.h>#include<ctype.h>#include<string.h>struct telebook{ char num[4];char name[10];char phonenum[15];char email[20];struct telebook *next;};typedef struct telebook TeleBook;int menu_select();TeleBook *s;TeleBook *Create();void Display(TeleBook *head);TeleBook *Insert(TeleBook *head,TeleBook *s);TeleBook *Insert_a_record(TeleBook *head);TeleBook *Delete(TeleBook *head,char *num);TeleBook *Delete_a_record(TeleBook *head);TeleBook *Query(TeleBook *head,char *num);void Query_a_record(TeleBook *head);TeleBook *AddfromText(TeleBook *head,char *filename);void WritertoText(TeleBook *head,char *filename);void Quit(TeleBook *head);TeleBook *DeleteSame(TeleBook *head);int menu_select(){ char c;do {system("cls");printf("1. Create List\n");printf("2. Display All Record\n");printf("3. Insert a Reacord\n");printf("4. Delete a Reacord\n");printf("5. Query\n");printf("6. Add Records from a Text File\n");printf("7. Write to a Text File\n");printf("8. Delete the Same Record\n");printf("0. Quit\n");printf("Give your choice (0-8):\n");c=getchar();}while(c<'0'||c>'8');return(c-'0');}TeleBook *Create(){ TeleBook *s,*head=NULL;char c='Y';printf("create an increasing list...\n");printf("please input num,name,phonenum,email\n");while(c=='Y'||c=='y'){ s=(TeleBook *) malloc(sizeof(TeleBook));system("pause");gets(s->num);gets(s->name);gets(s->phonenum);gets(s->email);head=Insert(head,s);printf("Do you want to continue to input :(Y/N)?\n");c=getchar();}return(head);}void Display(TeleBook *head){ TeleBook *p;int i=0;p=head;printf("output list: \n ");printf("num\tname\tphonenum\temail\n");while(p!=NULL){ printf("%s\t%s\t%s\t%s\n",p->num,p->name,p->phonenum,p->email);p=p->next;if(++i%10==0){ printf("\n");system("pause");system("cls");}}}TeleBook *Insert(TeleBook *head,TeleBook *s) { TeleBook *p1,*p2;if(head==NULL){ head=s;s->next=NULL;return(head);}p2=p1=head;while(strcmp(s->num,p1->num)>0 && p1->next!=NULL){ p2=p1; p1=p1->next; }if(strcmp(s->num,p1->num)<=0){ s->next=p1;if(head==p1) head=s;else p2->next=s;}else {p1->next=s;s->next=NULL;}return(head);}TeleBook *Insert_a_record(TeleBook *head){ TeleBook *p;p=(TeleBook *) malloc(sizeof(TeleBook));printf("Please input the new Num,Name,Phonenum,Email\n");getchar();gets(p->num);gets(p->name);gets(p->phonenum);gets(p->email);head=Insert(head,p);printf("Insert success!!\n");printf("%s\n%s\n%s\n%s\n",p->num,p->name,p->phone num,p->email);return(head);}TeleBook *Delete(TeleBook *head,char *num){ TeleBook *p1,*p2;if(head==NULL){ printf("List is null\n" );return(NULL);}p1=head;while(strcmp(p1->num,num)!=0 && p1->next!=NULL){ p2=p1;p1=p1->next;}if(strcmp(p1->num,num)==0){ if(p1==head) head=p1->next;else p2->next=p1->next;printf("The num %s is deleted.\n",p1->num);free(p1);}elseprintf("The num %s is not found.\n",num);return(head);}TeleBook *Delete_a_record(TeleBook *head) { char c;char num[20];printf("Do you want to delete?(y/n)\n");getchar();c=getchar();if(c=='y'||c=='Y')printf("please input num=\n");getchar();gets(num);head=Delete(head,num);printf("delete success!\n");return(head);}TeleBook *Query(TeleBook *head,char *num) { TeleBook *p;p=(TeleBook *) malloc(sizeof(TeleBook));p=head;while(p!=NULL){ if(strcmp(p->num,num)==0) return(p);p=p->next;}return(NULL);}void Query_a_record(TeleBook *head){ char num[10];TeleBook *p;p=(TeleBook *) malloc(sizeof(TeleBook));printf("Please input the num you want to search\n");getchar();gets(num);p=Query(head,num);if(p==NULL) printf("Fail!\n");else{ printf("Search Success!\n");printf("Num:%s\nName:%s\nPhonenum:%s\nEmail:%s\ n",p->num,p->name,p->phonenum,p->email);}}TeleBook *AddfromText(TeleBook *head,char *filename){ FILE *fp;printf("Please input the filename you want.....\n");getchar();gets(filename);fp=fopen(filename,"r");if(fp==NULL){ printf("Can't open the file!\n");getchar();exit(1); }while(feof(fp)==0){ TeleBook *s;s=(TeleBook *) malloc(sizeof(TeleBook));fscanf(fp,"%s%s%s%s",s->num,s->name,s->phonenum,s ->email);head=Insert(head,s);}fclose(fp);printf("Add success\n");return(head);}void WritertoText(TeleBook *head,char *filename){ TeleBook *p;FILE *fp;printf("Please input the filename you want to output.....\n");getchar();gets(filename);if((fp=fopen(filename,"w"))==NULL){ printf("Can't open ");exit(0);}p=head;printf("Output list:\n");while(p!=NULL){ fprintf(fp,"%s\t%s\t%s\t%s\n",p->num,p->name,p->p honenum,p->email);p=p->next;}fclose(fp);printf("Write Successful!\n");}void Quit(TeleBook *head){ TeleBook *p;char c;printf("Do you want to exit? (Y or N)\n");getchar();c=getchar();if(c=='Y'||c=='y'){ while(head!=NULL){ p=head;head=head->next;free(p);}}}TeleBook *DeleteSame(TeleBook *head) { TeleBook *p;TeleBook *p1,*p2;if(head==NULL){ printf("List is null\n");return(NULL);}for(p=head;p!=NULL;p=p->next)for(p2=p,p1=p->next;p1!=NULL;p2=p1,p1=p1->next) {if(strcmp(p->name,p1->name)==0&&strcmp(p->phonenu m,p1->phonenum)==0&&strcmp(p->email,p1->email)= =0){ p2->next=p1->next;free(p1);printf("Delete Success\n");}}return(head);}void main() { TeleBook *head=NULL;printf("\t ******TeleBook*******\n");for(;;){ switch(menu_select()){case 1:printf("\tCreate List\n");head=Create();system("pause");break;case 2:printf("\tDisplay All Record\n");Display(head);system("pause");break;case 3:printf("\tInsert a Reacord\n");head=Insert_a_record(head);system("pause");break;case 4:printf("\tDelete a Reacord\n");head=Delete_a_record(head);system("pause");break;case 5:printf("\tQuery\n");Query_a_record(head);system("pause");break;case 6:printf("\tAdd Records from a Text File\n"); head=AddfromText(head,"filename");system("pause");break;case 7:printf("\tWrite to a Text File\n"); WritertoText(head,"filename"); system("pause");break;case 8:printf("\tDelete the Same Record\n"); head=DeleteSame(head);system("pause");break;case 0:printf("Goodbye!\n");Quit(head);system("pause");exit(0); }}}。

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

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

学生通讯录管理系统c语言编程以下是一个简单的C语言程序,用于管理学生通讯录。

该程序可以添加、显示、查找和删除学生信息。

c复制代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_STUDENTS 100#define MAX_NAME_LENGTH 50// 学生结构体struct Student {char name[MAX_NAME_LENGTH];int age;char gender;char phone[15];char email[50];};// 学生数组struct Student students[MAX_STUDENTS];int num_students = 0;// 添加学生信息void add_student() {if (num_students >= MAX_STUDENTS) {printf("Error: Reached maximum number of students\n");return;}struct Student new_student;printf("Enter name: ");scanf("%s", new_);printf("Enter age: ");scanf("%d", &new_student.age);printf("Enter gender (M/F): ");scanf(" %c", &new_student.gender);printf("Enter phone number: ");scanf("%s", new_student.phone);printf("Enter email: ");scanf("%s", new_student.email);students[num_students] = new_student;num_students++;}// 显示所有学生信息void display_students() {printf("Name\tAge\tGender\tPhone\tEmail\n");for (int i = 0; i < num_students; i++) {printf("%s\t%d\t%c\t%s\t%s\n", students[i].name, students[i].age, students[i].gender, students[i].phone, students[i].email);}}// 查找学生信息void find_student() {char name[MAX_NAME_LENGTH];printf("Enter student name: ");scanf("%s", name);for (int i = 0; i < num_students; i++) {if (strcmp(students[i].name, name) == 0) {printf("Name: %s\n", students[i].name);printf("Age: %d\n", students[i].age);printf("Gender: %c\n", students[i].gender); printf("Phone: %s\n", students[i].phone); printf("Email: %s\n", students[i].email); return;}}printf("Error: Student not found\n");}// 删除学生信息void delete_student() {char name[MAX_NAME_LENGTH];printf("Enter student name: ");scanf("%s", name);int found = 0;for (int i = 0; i < num_students; i++) {if (strcmp(students[i].name, name) == 0) { found = 1;for (int j = i; j < num_students - 1; j++) { students[j] = students[j+1];}num_students--;break;}}if (!found) {printf("Error: Student not found\n");} else {printf("Student deleted successfully\n"); }}int main() {int choice;do {printf("\nMenu:\n");printf("1. Add student\n");printf("2. Display students\n");printf("3. Find student\n");printf("4. Delete student\n");printf("5. Exit\n");printf("Enter choice: ");scanf("%d", &choice);switch (choice) {case 1: add_student(); break;case 2: display_students(); break;case 3: find_student(); break;case 4: delete_student(); break;case 5: printf("Exiting...\n"); break; default: printf("Invalid choice\n"); break; }} while (choice != 5);return 0。

c语言课程设计学生通讯录管理系统

c语言课程设计学生通讯录管理系统

C语言课程设计 - 学生通讯录管理系统1. 引言学生通讯录管理系统,简称STMS(Student Telephone Management System),是一款基于 C 语言开发的学生通讯信息管理系统。

该系统旨在帮助学校或其他机构方便地管理学生通讯录信息,包括学生的基本信息、联系方式等。

本文档将介绍该系统的设计要求、功能模块、数据结构、算法以及使用方法。

2. 设计要求学生通讯录管理系统应满足以下设计要求:•能够实现学生信息的添加、删除、修改和查询等基本操作;•提供用户友好的界面,方便用户进行操作;•数据存储应使用文件方式进行,确保数据可以持久保存;•提供合理的错误处理机制,提示用户操作引起的错误并给予相应的错误提示。

3. 功能模块学生通讯录管理系统包含以下功能模块:3.1 用户管理模块该模块用于管理系统注册的用户信息,包括用户的登录名、密码等。

•用户登录:用户输入用户名和密码,系统验证登录信息并提供相应权限;•用户注册:新用户可以通过该功能注册账号,并设置登录密码;•用户权限管理:系统根据用户不同的角色分配相应的权限。

3.2 学生信息管理模块该模块用于管理学生的基本信息和通讯录信息。

•添加学生信息:用户可以添加学生的基本信息和联系方式;•删除学生信息:用户可以根据学生的ID删除特定学生的信息;•修改学生信息:用户可以修改指定学生的信息;•查询学生信息:用户可以根据学生的姓名或其他关键词进行学生信息的查询。

3.3 通讯录管理模块该模块用于管理学生的通讯录信息,包括通讯录的名称、联系方式等。

•添加通讯录:用户可以添加新的通讯录,并指定通讯录的名称;•删除通讯录:用户可以根据通讯录的名称删除指定的通讯录;•修改通讯录:用户可以修改已存在的通讯录的名称;•查询通讯录:用户可以根据通讯录的名称查询对应的联系方式。

4. 数据结构学生通讯录管理系统采用以下数据结构:4.1 学生结构体typedef struct {int id; // 学生IDchar name[20]; // 学生姓名char gender; // 学生性别char phone[11]; // 学生电话号码char email[50]; // 学生电子邮箱} Student;4.2 通讯录结构体typedef struct {char name[50]; // 通讯录名称char phone[11]; // 通讯录联系方式} Directory;5. 算法学生通讯录管理系统采用以下算法实现部分功能:5.1 添加学生信息```c void addStudent() { Student student; // 用户输入学生信息 printf(。

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

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

在开始撰写文章前,我会先收集相关的C语言学生通讯录管理系统设计的资料和信息,这有助于我更好地理解这一主题。

接下来,我将按照你的要求,通过深度和广度的方式,撰写一篇高质量、深度和广度兼具的中文文章,来帮助你全面、深刻、灵活地理解这一主题。

【目录】一、引言1.1 主题概述1.2 目的和意义二、C语言学生通讯录管理系统设计2.1 系统需求分析2.2 数据结构设计2.3 功能模块设计2.4 界面设计2.5 系统实现与测试三、总结与展望【正文】一、引言1.1 主题概述C语言学生通讯录管理系统设计是指利用C语言编程来设计一个能够实现学生通讯录管理功能的系统。

这个主题涉及到数据结构、算法设计与实现、程序模块化设计等方面的知识,对于提高编程能力和实践能力都非常有帮助。

1.2 目的和意义通过学习C语言学生通讯录管理系统设计,可以帮助我们更深入地理解数据结构与算法在实际应用中的作用,提高我们的编程能力和实践能力,为以后的软件开发奠定坚实的基础。

二、C语言学生通讯录管理系统设计2.1 系统需求分析在设计C语言学生通讯录管理系统之前,首先需要对系统的需求进行分析。

这包括了对系统功能、性能、用户界面、输入输出等方面的需求分析。

2.2 数据结构设计数据结构设计是C语言学生通讯录管理系统的核心,包括了学生信息的存储结构、通讯录的组织方式等。

2.3 功能模块设计功能模块设计是指根据系统需求分析,将系统划分为若干个功能模块,每个功能模块实现一个具体的功能,通过模块化设计实现系统的高内聚、低耦合。

2.4 界面设计界面设计是系统与用户交互的重要部分,设计一个友好、直观的用户界面是C语言学生通讯录管理系统设计的关键。

2.5 系统实现与测试系统实现是指将系统设计的各个模块进行编码实现,系统测试是指对系统进行功能测试、性能测试、兼容性测试等,保证系统的稳定性和可靠性。

三、总结与展望在C语言学生通讯录管理系统设计的过程中,我们不仅学习了C语言编程的具体应用,还对数据结构与算法有了更深入的理解,提高了编程能力和实践能力。

c语言程序设计通讯录管理系统

c语言程序设计通讯录管理系统

c语言程序设计通讯录管理系统通讯录管理系统是一种常见的应用程序,用于管理个人或者组织的联系人信息。

本文将介绍一个基于C语言的通讯录管理系统的设计和实现。

一、需求分析通讯录管理系统需要满足以下功能需求:1. 添加联系人:可以添加新的联系人,包括姓名、电话号码、邮箱等信息。

2. 查找联系人:可以根据姓名或者电话号码查找已存在的联系人。

3. 删除联系人:可以根据姓名或者电话号码删除已存在的联系人。

4. 修改联系人:可以修改已存在联系人的信息,包括姓名、电话号码、邮箱等。

5. 显示所有联系人:可以显示当前通讯录中的所有联系人信息。

二、设计思路1. 数据结构:使用结构体来表示一个联系人的信息,包括姓名、电话号码、邮箱等字段。

使用数组来存储多个联系人的信息。

2. 添加联系人:通过用户输入的方式获取联系人信息,然后将联系人信息添加到联系人数组中。

3. 查找联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并显示其详细信息。

4. 删除联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并将其从数组中删除。

5. 修改联系人:通过用户输入的姓名或者电话号码,在联系人数组中查找匹配的联系人,并允许用户修改其信息。

6. 显示所有联系人:遍历联系人数组,逐个显示联系人的详细信息。

三、代码实现下面是一个简单的通讯录管理系统的C语言代码实现:```c#include <stdio.h>#include <string.h>#define MAX_CONTACTS 100typedef struct {char name[50];char phone[20];char email[50];} Contact;Contact contacts[MAX_CONTACTS];int numContacts = 0;void addContact() {printf("Enter name: ");scanf("%s", contacts[numContacts].name);printf("Enter phone number: ");scanf("%s", contacts[numContacts].phone);printf("Enter email: ");scanf("%s", contacts[numContacts].email);numContacts++;printf("Contact added successfully!\n");}void findContact() {char search[50];printf("Enter name or phone number to search: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {printf("Name: %s\n", contacts[i].name);printf("Phone: %s\n", contacts[i].phone);printf("Email: %s\n", contacts[i].email);found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void deleteContact() {char search[50];printf("Enter name or phone number to delete: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {for (int j = i; j < numContacts - 1; j++) {strcpy(contacts[j].name, contacts[j + 1].name);strcpy(contacts[j].phone, contacts[j + 1].phone);strcpy(contacts[j].email, contacts[j + 1].email);}numContacts--;printf("Contact deleted successfully!\n");found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void modifyContact() {char search[50];printf("Enter name or phone number to modify: ");scanf("%s", search);int found = 0;for (int i = 0; i < numContacts; i++) {if (strcmp(contacts[i].name, search) == 0 || strcmp(contacts[i].phone, search) == 0) {printf("Enter new name: ");scanf("%s", contacts[i].name);printf("Enter new phone number: ");scanf("%s", contacts[i].phone);printf("Enter new email: ");scanf("%s", contacts[i].email);printf("Contact modified successfully!\n");found = 1;break;}}if (!found) {printf("Contact not found!\n");}}void displayContacts() {printf("Contacts:\n");for (int i = 0; i < numContacts; i++) {printf("Name: %s\n", contacts[i].name); printf("Phone: %s\n", contacts[i].phone); printf("Email: %s\n", contacts[i].email); printf("\n");}}int main() {int choice;do {printf("1. Add contact\n");printf("2. Find contact\n");printf("3. Delete contact\n");printf("4. Modify contact\n");printf("5. Display all contacts\n"); printf("0. Exit\n");printf("Enter your choice: ");scanf("%d", &choice);switch (choice) {case 1:addContact();break;case 2:findContact();break;case 3:deleteContact();break;case 4:modifyContact();break;case 5:displayContacts();break;case 0:printf("Exiting...\n");break;default:printf("Invalid choice!\n");break;}} while (choice != 0);return 0;}```四、总结本文介绍了一个基于C语言的通讯录管理系统的设计和实现。

大一c语言通讯录管理系统源代码

大一c语言通讯录管理系统源代码

大一c语言通讯录管理系统源代码以下是一个简单的C语言通讯录管理系统的源代码示例:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_CONTACTS 100// 定义联系人结构体typedef struct {char name[50];char phone[20];char email[50];} Contact;// 全局通讯录数组Contact contacts[MAX_CONTACTS];int numContacts = 0;// 添加联系人void addContact() {if (numContacts >= MAX_CONTACTS) {printf("通讯录已满,无法添加新联系人。

\n");return;}Contact newContact;printf("请输入联系人姓名:");scanf("%s", );printf("请输入联系人电话:");scanf("%s", newContact.phone);printf("请输入联系人邮箱:");scanf("%s", newContact.email);contacts[numContacts] = newContact; numContacts++;printf("联系人添加成功。

\n");}// 显示所有联系人void displayContacts() {if (numContacts == 0) {printf("通讯录为空。

\n");return;}printf("所有联系人:\n");for (int i = 0; i < numContacts; i++) {printf("姓名:%s\t电话:%s\t邮箱:%s\n", contacts[i].name, contacts[i].phone, contacts[i].email); }}// 主菜单void showMenu() {printf("******************************\n"); printf("***** 通讯录管理系统*****\n"); printf("******************************\n"); printf("请选择操作:\n");printf("1. 添加联系人\n");printf("2. 显示所有联系人\n");printf("0. 退出\n");printf("******************************\n"); }int main() {int choice;while (1) {showMenu();printf("请选择操作(输入数字):");scanf("%d", &choice);switch (choice) {case 0:printf("已退出通讯录管理系统。

原创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语言程序设计通讯录管理系统

#include<stdio.h>#include<stdlib.h>#include<string.h>#define N 10struct comm /*定义数据结构*/{char num[13]; /*学号*/char name[10]; /*姓名*/char sex[6]; /*性别*/int age; /*年龄*/char tel[11]; /*电话号码*/int year; /*入学年份*/}AddBook[N];int length=0,length1=0;int add;int *fp1=&add;int input_AddBook();void save_AddBook();int load_AddBook();int dele_AddBook();void inquire_AddBook();void revise_AddBook();void list_AddBook();int add_AddBook();void sort_AddBook();int main(){int choice;length1=load_AddBook();do{system("cls");printf("\n ***********通讯录管理系统************\n\n"); printf(" 1.录入信息\n");printf(" 2.修改信息\n");printf(" 3.删除信息\n");printf(" 4.查找信息\n");printf(" 5.显示信息\n");printf(" 6.增加信息\n");printf(" 7.排序信息\n");printf(" 0.退出\n");printf("\n ***********通讯录管理系统************\n\n"); printf(" 请选择:\n");scanf("%d",&choice);switch(choice){case 0: break;case 1: length=input_AddBook();break;case 2: revise_AddBook();break;case 3: length=dele_AddBook();break;case 4: inquire_AddBook();break;case 5: list_AddBook();break;case 6: length=add_AddBook();break;case 7: sort_AddBook();break;}}while(choice!=0);save_AddBook();system("pause");return 0;}/**********以下是保存文件函数*************/void save_AddBook(){FILE *fp;int i=0;if((fp=fopen("通讯录.txt","r"))==NULL){printf("can not open file\n");getchar();exit(0);}// fscanf(fp,"学号姓名性别年龄电话入学年份\n ");// printf(" 学号姓名性别年龄电话入学年份\n");do{fscanf(fp,"%s",AddBook[i].num);//printf("%-15s",AddBook[i].num);fscanf(fp,"%s",AddBook[i].name);//printf("%-10s",AddBook[i].name);fscanf(fp,"%s",AddBook[i].sex);//printf("%-6s",AddBook[i].sex);fscanf(fp,"%d",&AddBook[i].age);//printf("%-4d",AddBook[i].age);fscanf(fp,"%s",AddBook[i].tel);//printf("%-15s",AddBook[i].tel);fscanf(fp,"%d",&AddBook[i].year);//printf("%-4d\n",AddBook[i].year);i++;}while(i<length+length1);fclose(fp);if((fp=fopen("通讯录二进制数据.txt","w+"))==NULL){printf("can not open file.\n");getchar();exit(0);}for(i=0;i<length+length1;i++)fprintf(fp,"\n%-15s%-10s%-6s%-4d%-15s%-4d",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//fwrite(&AddBook[i],sizeof(struct comm),1,fp);fclose(fp);//保存初识记录数fp=fopen("num.txt","w+");if(fp==NULL){ printf("can't open the file.\n");exit(0);}fprintf(fp,"%d",length+length1);fclose(fp);printf("*********************保存完成*********************\n");printf("以上信息已保存完毕!\n");}/**********以下是读文件函数*************/{FILE *fp,*fp2;int i=0,a;char ch;//读出原始记录数目fp=fopen("num.txt","r+");if(fp==NULL){printf("can't open the file!\n");exit(0);}fscanf(fp,"%d",&a);fclose(fp);//读出原始数据if((fp=fopen("通讯录二进制数据.txt","r"))==NULL){printf("can not open file\n");getchar();exit(0);}if((fp2=fopen("通讯录.txt","w"))==NULL){printf("can not open file\n");getchar();exit(0);}printf(" 学号姓名性别年龄电话入学年份\n");// dofor(i=0;i<a;i++){//fread(&AddBook[i],sizeof(struct comm),1,fp);//printf("%d\n",i);fscanf(fp,"%s%s%s%d%s%d",&AddBook[i].num, &AddBook[i].name, &AddBook[i].sex,&AddBook[i].age, &AddBook[i].tel, &AddBook[i].year);printf(" %s %s %s %d %s %d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//system("pause");fprintf(fp2,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//printf(" %-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddB ook[i].age,AddBook[i].tel,AddBook[i].year);}// i++;// }while(i<3);fclose(fp);fclose(fp2);printf("\n*************************读取完成*************************\n");printf("按任意键进入主菜单");getchar();return i;}/**********以下是删除信息函数*************/{FILE *fp;struct comm dele;int i=0,j=0,flag=0,a=0;char choice;do{system("cls");printf("************删除信息*************\n");printf("请输入您要删除的学生的学号:");scanf("%s",dele.num);for(i=0;i<length+length1;i++)if(strcmp(AddBook[i].num,dele.num) == 0)break;else{j++;if(j==length+length1)printf("您要删除的信息不存在!\n");}if((fp=fopen("通讯录.txt","wt"))==NULL){printf("Open file error");getchar();exit(0);}for(i=0;i<length+length1;i++)if(strcmp(AddBook[i].num,dele.num)!=0)fprintf(fp,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook [i].age,AddBook[i].tel,AddBook[i].year);a++;printf("\n 要继续吗?(Y/N)");choice=getchar();if (choice=='y'||choice=='Y'){printf("\n 继续!\n");flag=1;}elseflag=0;}while(flag==1);a=-a+1;fclose(fp);printf("\n***************删除完成**************");printf("%d",a);printf("\n 按任意键返回主菜单!");getchar();getchar();return a;}/**********以下是查找信息函数*************/void inquire_AddBook(){int choice;void inquire_name();void inquire_num();do{system("cls");printf("\n\n\n **********查询资料**********\n\n\n");printf(" 1.按姓名查询\n\n");printf(" 2.按学号查询\n\n");printf(" 0.退出查找系统\n\n");scanf("%d",&choice);switch(choice){ case 1: inquire_name();break; /* 为函数调用 */case 2: inquire_num();break; /* 同上 */case 0: break;}}while(choice!=0);getchar();}void inquire_name(){{ int i,choice,j=0;struct comm inquire;system("cls");printf("\n 请输入要查询的姓名:");scanf("%s",);for(i=0; i<length+length1; i++)if(strcmp(AddBook[i].name,)==0){printf(" 学号姓名性别年龄电话入学年份\n");printf("%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook[i]. age,AddBook[i].tel,AddBook[i].year);break;}else{j++;if(j==length+length1)printf("\n 查询信息不存在!");}getchar();getchar();}}void inquire_num(){{ int i,choice,j=0;struct comm inquire;system("cls");printf("\n 请输入要查询的学号:");scanf("%s",inquire.num);for(i=0;i<length+length1;i++)if(strcmp(AddBook[i].num,inquire.num)== 0){printf(" 学号姓名性别年龄电话入学年份\n");printf("%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook[i]. age,AddBook[i].tel,AddBook[i].year);break;}else{j++;if(j==length+length1)printf("\n 查询信息不存在!");}getchar();getchar();}}/**********以下是修改信息函数*************/void revise_AddBook(){struct comm revise;FILE *fp;int i=0,choice,flag;do{system("cls");printf("\n 输入要修改的学生学号:");scanf("%s",revise.num);for(i=0;i<length+length1;i++)if(strcmp(AddBook[i].num,revise.num)== 0){printf("\n ********************资料信息***********************\n");printf(" 学号姓名性别年龄电话入学年份\n");printf("%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook[i]. age,AddBook[i].tel,AddBook[i].year);printf("\n 您要修改哪一项?\n");printf("\n 0.修改完成\n");printf("\n 1.学号\n");printf("\n 2.姓名\n");printf("\n 3.性别\n");printf("\n 4.年龄\n");printf("\n 5.电话\n");printf("\n 6.入学年份\n");printf("\n 请选择:");scanf("%d",&choice);switch(choice){case 0: break;case 1: printf("\n 请输入修改后的学号:");scanf("%s",&AddBook[i].num);break;case 2: printf("\n 请输入修改后的姓名:");scanf("%s",&AddBook[i].name);break;case 3: printf("\n 请输入修改后的性别:");scanf("%s",&AddBook[i].sex);break;case 4: printf("\n 请输入修改后的年龄:");scanf("%d",&AddBook[i].age);break;case 5: printf("\n 请输入修改后的电话:");scanf("%s",&AddBook[i].tel);break;case 6: printf("\n 请输入修改后的入学年份:");scanf("%d",&AddBook[i].year);break;}break;}if(i==length+length1){printf("\n 无该资料!");getchar();}getchar();printf("\n\n 继续修改吗?(Y/N)");choice=getchar();if(choice=='Y'||choice=='y'){flag=1;printf("\n 继续!\n");}else{printf("修改后的信息为:\n");printf(" 学号姓名性别年龄电话入学年份\n");printf("%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddBook[i]. age,AddBook[i].tel,AddBook[i].year);flag=0;}}while(flag==1);if((fp=fopen("通讯录.txt","w"))==NULL){printf("Open file error");getchar();exit(0);}for(i=0;i<length+length1;i++)fprintf(fp,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);printf("\n 按任意键返回主菜单!");getchar();getchar();}/**********以下是显示信息函数*************/void list_AddBook(){FILE *fp;char ch;if((fp=fopen("通讯录.txt","r"))==NULL){printf("Open file error");system("pause");exit(0);}// rewind(fp);//ch=fgetc(fp);//while(ch!=EOF)//{// futchar(ch);//ch=fgetc(fp);//}int i=0;printf(" 学号姓名性别年龄电话入学年份\n");do{fscanf(fp,"%s%s%s%d%s%d",&AddBook[i].num, &AddBook[i].name, &AddBook[i].sex,&AddBook[i].age, &AddBook[i].tel, &AddBook[i].year);printf(" %s %s %s %d %s %d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//system("pause");// fprintf(fp2,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num, AddBook[i].name,AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//printf(" %-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num,AddBook[i].name,AddBook[i].sex,AddB ook[i].age,AddBook[i].tel,AddBook[i].year);/*printf("%-15s",AddBook[i].num);printf("%-10s",AddBook[i].name);printf("%-6s",AddBook[i].sex);printf("%-4d",AddBook[i].age);printf("%-15s",AddBook[i].tel);printf("%-4d\n",AddBook[i].year);i++;*/i++;}while(i<length+length1);fclose(fp);printf("\n*************************显示完毕****************************");getchar();getchar();}/**********以下是增加信息函数*************/int add_AddBook(){FILE *fp,*fp2;int i,add1=0;if((fp=fopen("通讯录.txt","a"))==NULL){printf("Open file error");getchar();exit(0);}printf("请输入要增加的通讯录信息:");for(i=0;i<N;i++){printf("\n请输入学生姓名:(#->end)");scanf("%s",AddBook[i].name);if(AddBook[i].name[0]=='#')break;printf("\n请输入学生学号:");scanf("%s",AddBook[i].num);printf("\n请输入学生性别:");scanf("%s",AddBook[i].sex);printf("\n请输入学生年龄:");scanf("%d",&AddBook[i].age);printf("\n请输入学生联系方式:");scanf("%s",AddBook[i].tel);printf("\n请输入学生入学年份:");scanf("%d",&AddBook[i].year);}add1=i;for(i=0;i<add1;i++){fprintf(fp,"%-15s%-10s%-6s%-4d%-15s%-4d\n",AddBook[i].num, AddBook[i].name, AddBook[i].sex, AddBook[i].age, AddBook[i].tel, AddBook[i].year);//fprintf(fp,"%c",10);/*fprintf(fp,"%-11s ",AddBook[i].num);fprintf(fp," %-10s",AddBook[i].name);fprintf(fp," %-8s",AddBook[i].sex);fprintf(fp," %-8d",AddBook[i].age);fprintf(fp," %-11s ",AddBook[i].tel);fprintf(fp," %-4d",AddBook[i].year);fprintf(fp,"%c",10); /*换行*/}fclose(fp);// printf("i+add=%d\n",i+add);system("pause");//return i+add;// add=i+*fp1;save_AddBook();getchar();return add1;}/**********以下是排序信息函数*************/void sort_AddBook(){FILE *fp;struct comm temp;int i,j;if((fp=fopen("通讯录.txt","rt"))==NULL){printf("Open file error");getchar();exit(0);}//fscanf(fp,"学号姓名性别年龄电话入学年份");//printf("学号姓名性别年龄电话入学年份 \n");for(i=0;i<length+length1;i++){fscanf(fp,"%s",AddBook[i].num);fscanf(fp,"%s",AddBook[i].name);fscanf(fp,"%s",AddBook[i].sex);fscanf(fp,"%d",&AddBook[i].age);fscanf(fp,"%s",AddBook[i].tel);fscanf(fp,"%d",&AddBook[i].year);}for(i=0;i<length+length1-1;i++)for(j=i+1;j<length+length1;j++)if(strcmp(AddBook[j].num,AddBook[i].num)<0){temp=AddBook[i];AddBook[i]=AddBook[j];AddBook[j]=temp;}printf("学号姓名性别年龄电话入学年份 \n"); for(i=0;i<length+length1;i++){printf("%-11s ",AddBook[i].num);printf("%-10s",AddBook[i].name);printf("%-8s",AddBook[i].sex);printf("%-8d",AddBook[i].age);printf("%-11s ",AddBook[i].tel);printf("%-4d",AddBook[i].year);printf("\n");}printf("\n*********************排序完成**********************\n");fclose(fp);system("pause");}/**********以下是输入信息函数*************/int input_AddBook(){int i;printf("\n 请输入通讯录信息: \n");for(i=0;i<N;i++){printf("\n请输入学生姓名:(#->end)");scanf("%s",AddBook[i].name);if(AddBook[i].name[0]=='#')break;printf("\n请输入学生学号:");scanf("%s",AddBook[i].num);printf("\n请输入学生性别:");scanf("%s",AddBook[i].sex);printf("\n请输入学生年龄:");scanf("%d",&AddBook[i].age);printf("\n请输入学生联系方式:");scanf("%s",AddBook[i].tel);printf("\n请输入学生入学年份:");scanf("%d",&AddBook[i].year);}return i;}。

大一C语言电话簿管理系统【精选文档】

大一C语言电话簿管理系统【精选文档】

电话簿管理系统目录一、设计目的 (2)二、项目设计的内容 (2)三、项目设计的要求与数据 (2)四、项目设计应完成的工作 (3)五、总体设计(包含几大功能) (4)六、详细设计(各功能的具体实现算法) (4)七、测试分析(包含各功能的测试用例,及测试结果) (5)八、总结 (12)1、设计目的进一步加深理解《C语言程序设计》,通过此次作业,对本学期所学的内容有一个更深的理解,将所学知识融会贯通,进一步培养自己对综合问题的分析和解决实际问题的能力.掌握利用所学知识编写简单程序的技巧,提升自己的实践能力,理论知识等。

2、项目设计的内容对用户的信息(包括姓名、电话)进行管理,包括对用户姓名电话的增加、查找、修改、删除、导出用户信息为txt文件、显示所有用户信息的操作。

假设,收集到若干人的姓名电话信息,要求编写一个可以实现上述操作的C语言程序。

学习相关开发软件,熟悉建设工程的过程。

3、项目设计的要求与数据1.用C语言实现程序。

2.对用户信息(姓名、电话号码)进行管理,包括用户信息的增加、查找、修改、删除、导出、显示操作。

3.各个功能的说明(1)增加用户信息功能:增加后保存至文件,可一次性增加若干条用户信息。

(2)查找用户信息功能:完成按姓名查找电话号码的操作并显示。

(3)修改用户信息功能:通过对姓名进行查找并修改的操作。

(4)删除用户信息功能:删除指定信息的功能。

(5)导出用户信息功能:保存当前所有用户信息为文本文件。

(6)显示用户信息功能:显示出当前所保存的所有用户信息。

4、项目设计应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写项目设计报告。

内容包括:1)封面扉页2)设计任务书3)目录4)总体设计方案5)使用说明及运行实例(包括界面)6)成员设计内容简介7)项目源程序代码(注意注释的使用)8)指导教师评语5、总体设计(包含几大功能)1.用户信息增加功能2.用户信息查找功能3.用户信息修改功能4.用户信息删除功能5.用户信息显示功能6.用户信息导出功能7.清屏6、详细设计(各功能的具体实现算法)1.输入用户信息功能:输入信息包括姓名、电话号码相关信息;可用函数void shuru()实现。

基于C语言实现个人通讯录管理系统

基于C语言实现个人通讯录管理系统

基于C语⾔实现个⼈通讯录管理系统之前利⽤C语⾔完成了⼀个关于个⼈通讯录管理系统的课题,主要是关于联系⼈的添加、查找、删除、修改、输出以及⽂件的写⼊与读出,还有⼀个甜点功能—模拟通话,它的实现原理也很容易理解,⽂章末尾会介绍到。

主框架:1、函数声明关于这⾥的函数声明,主要是为了可以清楚的了解整个系统的功能,这⾥不做过多介绍。

还有结构体链表的创建,贯穿了各个功能代码部分,必不可少。

2、联系⼈的添加这部分主要涉及联系⼈的姓名、地址、电话、QQ号和邮箱(当然需要其他功能可⾃⾏添加),考虑到数组操作不便前提下,使⽤链表的尾插法,通过不断开创新的结点,然后不断将新的结点的地址指向尾结点,使尾结点不断后移,⽽新创的结点时按照添加的先后顺序进⾏连接(参考下图可快速理解,此图⽚来源于⽹络),当然其中某些项的条件限制也是必不可少的。

⽐如:电话、QQ号、邮箱int Addpeo() //添加联系⼈{int t,n,a;char flag='y'; //仅作为第⼀次执⾏条件ptcs p=head,q;while(flag!='n'&&flag!='N') //判断是否继续添加{q=(ptcs)malloc(sizeof(pcs)); //申请内存p->next=q; //赋予下⼀个节点p=q;q->next=NULL; //尾结点地址赋空值,尾插法printf("\n\t请输⼊:\n");printf("\t\t姓名:");scanf("\t\t%s",q->);printf("\t\t地址:");scanf("\t\t%s",q->chat.add);printf("\t\t⼿机号:");scanf("\t\t%s",q->chat.tel);do{n=0; //仅做记录if(strlen(q->chat.tel)!=11) //计算⼿机号的长度,判断是否输⼊规范 {n=1;printf("\t\t您输⼊的⼿机号格式不存在,请重新输⼊:");scanf("\t\t%s",q->chat.tel);}else{for(t=0;t<11;t++){if(q->chat.tel[t]<'0'||q->chat.tel[t]>'9'){n=1;printf("\t\t您输⼊的⼿机号格式不合理,请重新输⼊:");scanf("\t\t%s",q->chat.tel);break;}}}}while(n);//输⼊QQ号printf("\t\tQQ号:");scanf("\t\t%s",q->chat.tecent);do{n=0;if(strlen(q->chat.tecent)>10) //以10位QQ号为准,判断是否符合规范 {n=1;printf("\t\t您输⼊的QQ号格式不存在,请重新输⼊:");scanf("\t\t%s",q->chat.tecent);}else{for(t=0;t<10;t++){if(q->chat.tecent[t]<'0'||q->chat.tecent[t]>'9'){n=1;printf("\t\t您输⼊的QQ号格式不合理,请重新输⼊:");scanf("\t\t%s",q->chat.tecent);break;}}}}while(n);//输⼊邮箱printf("\t\tEmail:");scanf("\t\t%s",q->chat.email);do{//判断邮箱 @符号输⼊规范(这⾥不限定邮箱号码位数)a=0;for(t=0;q->chat.email[t]!='\0';t++){if(q->chat.email[t]=='@')a++; //@数为1}if(a!=1){printf("\t\t输⼊的邮箱格式不合理,请重新输⼊:");scanf("\t\t%s",q->chat.email);}}while(a!=1); //是否输⼊@ ,为1则终⽌循环printf("\n\t是否继续添加?(Y/N)");scanf("\t%c",&flag);}return 0;}3、联系⼈的查询这步使⽤的是遍历查询,共设置了三种⽅式,在定义链表指针的前提下,通过遍历链表进⾏信息的对⽐,从⽽判断联系⼈是否存在,如果存在就直接显⽰给⽤户,不存在就直接退回功能选项。

c语言课程设计学生通讯录管理系统

c语言课程设计学生通讯录管理系统

c语言课程设计学生通讯录管理系统题目:学生通讯录管理系统任务说明:主要利用c语言的文件操作能力设计开发一个小型的通讯录管理系统,至少具有如下功能:①记录通讯录内的人员的学号、姓名、地址、电话号码。

②显示所有人员的信息。

③通过输入姓名查找人员信息。

④通过输入姓名查找到要删除的人员信息,然后可以进行删除。

⑤通过输入姓名查找到要修改的人员信息,然后可以进行修改。

⑥添加人员信息。

系统功能描述:本程序的功能是为用户提供简单的通讯录进行管理,通过该程序存储联系人信息,提供关键字(只能是英文关键字进行查找)查找功能,可以对数据进行修改、删除、添加等操作。

各按钮的功能如下:查找记录:以姓名为关键字,查找并显示该记录。

若查找不到,则显示“好象没有”;添加记录:将当前记录按姓名序加入通讯录,然后显示第一条记录;修改记录:修改当前记录,显示当前记录。

姓名为关键字,不允许修改;删除记录:删除当前记录,然后显示第一条记录;第一条记录:将当前记录指针移动至首节点,若已为首节点,则不移动;前一条记录:将当前记录指针向前移动一个节点,若已为首节点,则不移动;后一条记录:将当前记录指针向后移动一个节点,若已为尾节点,则不移动;最后一条记录:将当前记录指针移动至尾节点,若已为尾节点,则不移动;加载:从文件中掉入已保存的通讯录数据;保存:保存通讯录数据;退出:退出系统;设计思路:根据要求,电话录数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。

通讯录管理系统数据输入数据添加数据修改查找删除浏览图1 系统功能模块图软件中使用的结构体和结构体数组,如: struct callmember {char name[20]; char address[20]; char code[20]; char callnumber[20]; };对用户的信息进行保存,他们都以二进制的形式读写。

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

电话簿管理系统目录一、设计目的 (2)二、项目设计的内容 (2)三、项目设计的要求与数据 (2)四、项目设计应完成的工作 (3)五、总体设计(包含几大功能) (4)六、详细设计(各功能的具体实现算法) (4)七、测试分析(包含各功能的测试用例,及测试结果).. 5八、总结 (13)1、设计目的进一步加深理解《C语言程序设计》,通过此次作业,对本学期所学的内容有一个更深的理解,将所学知识融会贯通,进一步培养自己对综合问题的分析和解决实际问题的能力。

掌握利用所学知识编写简单程序的技巧,提升自己的实践能力,理论知识等。

2、项目设计的内容对用户的信息(包括姓名、电话)进行管理,包括对用户姓名电话的增加、查找、修改、删除、导出用户信息为txt文件、显示所有用户信息的操作。

假设,收集到若干人的姓名电话信息,要求编写一个可以实现上述操作的C语言程序。

学习相关开发软件,熟悉建设工程的过程。

3、项目设计的要求与数据1.用C语言实现程序。

2.对用户信息(姓名、电话号码)进行管理,包括用户信息的增加、查找、修改、删除、导出、显示操作。

3.各个功能的说明(1)增加用户信息功能:增加后保存至文件,可一次性增加若干条用户信息。

(2)查找用户信息功能:完成按姓名查找电话号码的操作并显示。

(3)修改用户信息功能:通过对姓名进行查找并修改的操作。

(4)删除用户信息功能:删除指定信息的功能。

(5)导出用户信息功能:保存当前所有用户信息为文本文件。

(6)显示用户信息功能:显示出当前所保存的所有用户信息。

4、项目设计应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写项目设计报告。

内容包括:1)封面扉页2)设计任务书3)目录4)总体设计方案5)使用说明及运行实例(包括界面)6)成员设计内容简介7)项目源程序代码(注意注释的使用)8)指导教师评语5、总体设计(包含几大功能)1.用户信息增加功能2.用户信息查找功能3.用户信息修改功能4.用户信息删除功能5.用户信息显示功能6.用户信息导出功能7.清屏6、详细设计(各功能的具体实现算法)1.输入用户信息功能:输入信息包括姓名、电话号码相关信息;可用函数void shuru()实现。

同时输入完成后实时保存至文件,使用函数void baocun(int n)实现。

2.查找功能:可用函数void chazhao()实现。

若找到就输出。

3.修改功能:可用函数void xiugai()实现。

4.删除功能:可用函数void shanchu()实现。

5.显示功能:可用函数void all()实现。

6.导出功能:可用函数void daochu()实现。

7.清屏功能:使用#include<conio.h>里的system("cls")实现。

七、测试分析(包含各功能的测试用例,及测试结果)7.1 源程序#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>struct phone{char name[20];char number[20];}pho[100];//用户信息/*----------------保存信息子程序----------------*/void baocun(int n){int i;FILE *fp;if((fp=fopen("data.pho","a+"))==NULL){printf("data is error.\n");exit(0);}for(i=0;i<n;i++)fprintf(fp,"%s %s\n",pho[i].name,pho[i].number);fclose(fp);}void readwrite()//将文件里的数据写入结构体{FILE *fp;int i;if((fp=fopen("data.pho","a+"))==NULL){printf("data is error.\n");exit(0);}for(i=0;i<100;i++){fscanf(fp,"%s %s\n",pho[i].name,pho[i].number);}fclose(fp);}/*----------------增加信息子程序----------------*/void shuru(){printf("==================================增添成员======================================\n");int i,n,flag=0;printf("请输入成员个数:");scanf("%d",&n);for(i=0;i<n;i++){printf("请输入姓名、电话号码:");scanf("%s %s",pho[i].name,pho[i].number);flag++;}baocun(n);if(flag==n) printf("保存成功。

\n");else printf("保存失败。

\n");printf("====================================================== ==========================\n");}/*----------------查找信息子程序 ----------------*/void chazhao(){printf("==================================查找成员======================================\n");char ch[20];int i,flag=0;printf("请输入查找人的姓名:");scanf("%s",&ch);readwrite();for(i=0;i<100;i++){if(strcmp(pho[i].name,ch)==0)//利用字符串进行查找{printf("已查找到该成员:\n");printf("%s %s\n",pho[i].name,pho[i].number);flag=1;}}if(!flag) printf("该成员不存在.\n");printf("====================================================== ==========================\n");}/*----------------删除信息子程序------------------*/void shanchu(){printf("==================================删除成员======================================\n");char a[10];int i,j,flag=0;FILE *fp;fp=fopen("data.pho","w+");//此处文件打开方式为w+,不能调用readwrite()for(i=0;i<100;i++){fscanf(fp,"%s %s\n",pho[i].name,pho[i].number);}//将文件里的数据写入结构体fclose(fp);//在此必须关闭一次文件printf("请输入要删除人的姓名:");scanf("%s",&a);for(i=0;i<100;i++){if(strcmp(pho[i].name,a)==0)//利用字符串进行查找{flag=1;for(j=i;j<100-i;j++){pho[j]=pho[j+1];}}}baocun(i);if(flag==1) printf("操作成功。

\n");if(flag==0) printf("查无此人。

\n");printf("====================================================== ==========================\n");}/*----------------修改信息子程序 --------------------*/void xiugai(){printf("================================修改成员信息====================================\n");char ch[20];int i,flag=0,flag1=0;FILE *fp;printf("请输入修改人姓名:");scanf("%s",&ch);readwrite();for(i=0;i<100;i++)if(strcmp(pho[i].name,ch)==0){flag=1;break;}printf("请输入修改后的姓名、号码:");scanf("%s %s",&pho[i].name,&pho[i].number);fp=fopen("data.pho","w+");for(i=0;i<100;i++){fprintf(fp,"%s %s\n",pho[i].name,pho[i].number);flag1=1;}fclose(fp);if(flag==1&&flag1==1) printf("修改成功。

\n");if(flag==0) printf("查无此人。

\n");if(flag==1&&flag1==0) printf("修改失败。

相关文档
最新文档