大一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个简单的通讯录管理系统

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语言学生通讯录管理系统设计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语⾔实现通讯录管理系统(⽤链表实现)题⽬:通讯录(通过链表实现)设计并实现⼀个简易的通讯录软件,管理个⼈通讯记录。
⼀条通讯记录可包括:姓名、⼯作单位、⼿机、住宅电话、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语言编程简介学生通讯录管理系统是一个帮助学生管理通讯录信息的应用程序。
通过该系统,学生可以添加、删除、查询和修改通讯录中的联系人信息,从而更好地组织和管理自己的通讯录信息。
功能需求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语言程序设计 手机通讯录管理系统

根据上面的分析,可以将这个系统分为如下五大模块:
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语言代码

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语言大作业_电话号码管理系统设计

#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();}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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("修改失败。