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语言学生通讯录管理系统设计

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语言程序设计学生通讯录管理系统Document number【AA80KGB-AA98YT-AAT8CB-2A6UT-A18GG】#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: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;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);}else{printf("\n\t\t没有相同姓名的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}}add(){int i;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 j;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);}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语言程序设计学生通讯录管理系统

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: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;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);}else{printf("\n\t\t没有相同姓名的用户纪录");printf("\n\t\t按任意键返回主菜单");getch();return(0);}}add(){int i;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 j;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);}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语言编程

学生通讯录管理系统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、能建立、修改和增删学生通讯录2、能够按多种方式进行查询,例如按姓名、按电话号码等。

3、通讯录的数据保存在文件中,运行程序时将通讯录数据从文件读取到内存中。

对通讯录进行增加、删除、修改学生数据后,提供功能菜单,可以将内存中修改过的通讯录重新保存至文件。

二、应用程序功能的详细说明1、应用程序实现了可视化的系统操作界面。

2、对学生通讯录形成了系统化的管理,操作简便明了。

3、程序具有系统帮助,添加、显示、查询、刷新、删除、排序、保存、修改、读取学生通讯录的功能。

各项功能均可按照文字提示操作,浅显易懂。

4、系统的各个功能模块都用函数的形式来实现(readfile()、seek()、modify()、sort()、insert()、del()、save()、menu())方便查看。

5.可以将信息保存在文件("student.txt")中,亦可将信息从文件中读取出来,灵活方便。

三、主要模块的算法描述模块一:头文件,变量定义,函数的声明对系统所使用的变量进行定义,对函数进行声明。

模块二:录入学生信息声明函数void readfile(),说明一个文件指针FILE *fp打开文件"student.txt"。

模块三:学生信息的查找声明void seek()为查找函数,通过switch(item)设定用学号查找,用姓名查找两个分支。

模块四:学生信息的修改声明void modify()为学生信息修改函数,通过switch(item)设定所要修改的项目。

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语言程序设计专业班级:(15)班学生姓名:谢* 学号:任课教师:赵** 学期:课程报告任务书开发一个通讯录管理系统,基本信息包括:编号、姓名、性别、出生年月、固定电话、手机号、电子邮件等基本信息(也可以根据自己情况进行扩充)。

使之能提供以下基本功能:(1)通讯录等信息录入功能(注:数据等要求用文件保存)--输入(2)通讯录信息的浏览功能--输出(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):①按电话号码进行查询②按姓名查询等③按照年龄排序④按姓名排序等(4)通讯录条目的删除与修改等扩展功能:可以按照自己的程度进行扩展。

比如(1)简单的权限处理(2)报表打印功能(3)模糊查询,如姓张的人员等;或者给定电子邮件的部分进行查询等(4)给定指定年龄范围之内的查询等等。

总之,可以根据自己需求进行分析功能,成绩评定按照难度进行区分。

成绩评定教师:一. 需求分析1,具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。

2,数据包括:人名、工作单位、电话号码和E-MAIL地址。

3,可对记录中的姓名和电话号码进行修改。

4,可增加和删除记录。

5,可显示所有的保存记录。

6,可按人名或电话号码进行查询。

分析建议采用结构体数组和文件系统实现。

结构体成员包括人名、工作单位、电话号码和E-MAIL地址。

根据题目的要求程序应该采用结构体数组和文件系统实现。

应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。

二、概要设计(1).程序的模块组成及各个函数的功能:程序的模块组成:主函数:main();输出数据函数:printf();读取数据函数:scanf();显示记录函数:Display();删除记录函数:shanchu();查找记录函数:chaxun();自定义清屏函数:system(“cls”);自定义输入函数:input();字符输入函数:getchar();修改数据函数:xiugai();保存数据函数:baocun();排序数据函数:paixu();各函数的主要功能:输出数据函数:随时输出数据;读取数据函数:读取输入的数据信息;显示菜单函数:显示可供选择的主菜单;显示记录函数:显示通讯录所有输入的信息;删除记录函数:显示要删除的通讯录所有输入的信息;查找记录函数:显示要查询的通讯录所有输入的信息;自定义清屏函数:清除前面运行留下的信息;自定义输入函数:输入通讯录的成员;;字符输入函数:从终端输入一个字符,遇回车键返回;修改数据函数:修改通讯录的成员信息;保存数据函数:保存通讯录的成员信息;排序数据函数:排序通讯录的成员信息;(2)程序中的抽象数据类型的定义:用户的状态结构用户{编号:姓名:电话;年龄;邮箱:地址;(3)总体流程图根据上面的分析,可以将程序系统的设计分为如下几个模块:插入、显示、删除、查询、修改、保存和退出。

学生通讯录管理系统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能建立,修改,增删通讯录2能按多种方式查询3通讯录数据保存在文件中,运行程序时从文件读取到内存里,可以将修改后的数据重新保存至文件。

*/#include<stdio.h>#include<stdlib.h>#include<string.h>struct student//定义学生结构体{char name[10];char sex[4];char addr[30];char exl[10];char tel[12];}stu[100],s;void Initiate()//创建新的通讯录{FILE *fw;int n;if((fw=fopen("txl.text","wb"))==NULL){printf("cannot open file\n");}printf("请输入新建的条目:");scanf("%d",&n);for(int i=1;i<=n;i++){printf("请输入第%d条信息!\n",i);printf("姓名:");scanf("%s",&stu[i].name);printf("\n");printf("性别:");scanf("%s",&stu[i].sex);printf("\n");printf("地址:");scanf("%s",&stu[i].addr);printf("\n");printf("邮编:");scanf("%s",&stu[i].exl);printf("\n");printf("电话:");scanf("%s",&stu[i].tel); printf("\n");fwrite(&stu[i],sizeof(struct student),1,fw);}fclose(fw);}void Show()//显示通讯录{FILE *fr;int i=1;if((fr=fopen("txl.text","rb"))==NULL){printf("cannot open file\n");}printf("姓名\t性别\t地址\t邮编\t电话\n");while(!feof(fr)){fread(&stu[i],sizeof(struct student),1,fr);if(!feof(fr))//判断是否指针在文件的最后,如果在最后则不予执行{printf("%s\t%s\t%s\t%s\t%s\n",stu[i].name,stu[i].sex,stu[i].addr,stu[i].exl,stu[i].tel);i++;}}fclose(fr);}void Add(){FILE *fw;if((fw=fopen("txl.text","ab"))==NULL){printf("cannot open file\n");}printf("姓名:\n");scanf("%s",&);printf("性别:\n");scanf("%s",&s.sex);printf("地址:\n");scanf("%s",&s.addr);printf("邮编:\n");scanf("%s",&s.exl);printf("电话:\n");scanf("%s",&s.tel);fwrite(&s,sizeof(struct student),1,fw);fclose(fw);}void Del()//删除条目{char name[10];int i=1; FILE *fr;FILE *fw;printf("请输入姓名:");scanf("%s",name);if((fr=fopen("txl.text","rb"))==NULL){printf("cannot open file\n");}if((fw=fopen("txl1.text","wb"))==NULL){printf("cannot open file\n");}while(!feof(fr))//循环条件{fread(&s,sizeof(struct student),1,fr);if(!feof(fr))//判断是否指针在文件的最后,如果在最后则不予执行fwrite(&s,sizeof(struct student),1,fw);}fclose(fr);fclose(fw);remove("txl.text");if((fr=fopen("txl1.text","rb"))==NULL){printf("cannot open file\n");}if((fw=fopen("txl.text","wb"))==NULL){printf("cannot open file\n");}int j=1;while(!feof(fr))//循环条件{fread(&s,sizeof(struct student),1,fr);if(!feof(fr))//判断是否指针在文件的最后,如果在最后则不予执行{if(strcmp(name, )!=0)//相等等于0{fwrite(&s,sizeof(struct student),1,fw);//符合条件的才复制}}}fclose(fr);fclose(fw);remove("txl1.text");}void Queryname()//按姓名查询,先读出条目,在每个进行判断{char name[10];FILE *fr;int i=0;printf("请输入要查询的姓名:");scanf("%s",name);if((fr=fopen("txl.text","rb"))==NULL){printf("cannot open file\n");}printf("姓名\t性别\t地址\t邮编\t电话\n");while(!feof(fr)){ i++;fread(&stu[i],sizeof(struct student),1,fr);if(strcmp(name, stu[i].name)==0){printf("%s\t%s\t%s\t%s\t%s\n",stu[i].name,stu[i].sex,stu[i].addr,stu[i].exl,stu[i].tel);}}fclose(fr);}void Querysex()//按性别查询,先读出条目,在每个进行判断{char sex[4];FILE *fr;int i=0;printf("请输入要查询的性别:");scanf("%s",sex);if((fr=fopen("txl.text","rb"))==NULL){printf("cannot open file\n");}printf("姓名\t性别\t地址\t邮编\t电话\n");while(!feof(fr)){ i++;fread(&stu[i],sizeof(struct student),1,fr);if(strcmp(sex, stu[i].sex)==0){printf("%s\t%s\t%s\t%s\t%s\n",stu[i].name,stu[i].sex,stu[i].addr,stu[i].exl,stu[i].tel);}}fclose(fr);}void Alter(){Del();Add();}void Menu(){printf("**************欢迎使用通讯录系统**************");printf("\n");printf("\n");printf(" 1.创建通讯录\n");printf(" 2.插入信息\n");printf(" 3.姓名查询\n");printf(" 4.性别查询\n");printf(" 5.修改记录\n");printf(" 6.删除记录\n");printf(" 7.显示所有记录\n");printf(" 8.退出通讯录\n");printf("\n");printf("请予以选择");}void main(){int choice=1;while(choice<8){Menu();scanf("%d",&choice);system("cls");if(choice<9&&choice>0){switch(choice){case 1:Initiate();break;case 2:Add();break;case 3:Queryname();break;case 4:Querysex();break;case 5:Alter();break;case 6:Del();break;case 7:Show();break;case 8:printf("感谢你的使用!\n");exit(0);}}elseprintf("请正确选择\n");choice=1;}}。

(完整word版)c语言课程设计学生通讯录管理系统

(完整word版)c语言课程设计学生通讯录管理系统

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

②显示所有人员的信息。

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

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

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

⑥添加人员信息。

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

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

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

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

图1 系统功能模块图软件中使用的结构体和结构体数组,如:struct callmember{char name[20];char address[20];char code[20];char callnumber[20];};对用户的信息进行保存,他们都以二进制的形式读写。

其中:char name[20];char address[20];char code[20];char callnumber[20]分别对姓名、地址、邮编、电话号码进行储存在子函数中还使用了结构体数组:struct callmember one[100];还使用了exit()、 fclose()等库函数。

大一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语言学生通讯录管理系统
getchar();
break;
}
}
}
void insert()
{ FILE *fp;
int i=0,j,flag=1,flag1=0;
i=n;
while(1){system("cls");
printf("现在文件中学生的信息数目为:%d\n\n",n);
printf(" %-10s%-8s%-6s%-10s%-16s%-16s%-8s\n",stu[i].code,stu[i].name,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].youbian);
printf("\t************************************************************");
printf("请您输入第 %d 个学生的地址: ",i+1);
scanf("%s",stu[i].add);printf("\n");
printf("请您输入第 %d 个学生的电话: ",i+1);
scanf("%s",stu[i].tel);printf("\n");
printf("\t************************************************************");
printf("\n\n");
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语言

通讯录管理系统目录目录 (1)1.需求分析 (2)2.概要设计 (3)3.详细设计 (5)4.用户使用手册 (7)4.1 环境设置 (7)4.2 操作步骤 (8)5.使用的主要技术 (14)6.总结 (14)附录 (14)1.需求分析随着通讯科技的发展,人们对通讯录的需求也非常紧迫。

在计算机还未普及之前通讯管理都是由联系人采用名片,笔录手工记帐的方式来操作的。

现在一般的通讯录管理都是采用计算机作为工具的实用的计算机通讯录管理程序来帮助人们进行更有效的通讯录信息管理。

在系统中创建通讯录std_table.txt进行后续操作每条信息记录要求包含:1.姓名2.电话3.性别4.年龄5.生日6.寝室地址系统功能包括:1.创建或连续创建学生通讯录2.显示全部学生通讯录信息3.添加学生通讯录信息4.修改学生通讯录信息5.删除学生通讯录信息6.查询学生通讯录信息7.排序学生通讯录信息8.退出2.概要设计根据需求分析中的描述,知道需要一个学生类型,由于基本数据类型无法实现将一个用户的信息绑定在一起,所以需要定义一个struct student的链表struct student{ char name[15];char tel[20];char sex[15];char age[3];char birth[20];char address[40];struct student *next;};在这链表中,学生的姓名、电话、性别、年龄、生日、寝室地址全部使用char数组类型。

在此程序中使用多种函数,函数的参数全部使用局部变量,这样可以提高函数灵活调用的特性,使程序更加灵活。

struct student * create(struct student *head);//建立链表struct student * insert(struct student *head,char *name,char tel[],char sex[],char age[],char birth[],char address[]);//插入学生信息void print(struct student *head);//输出全部学生信息void save_new(struct student * head);//保存(new)void save_new_plus(struct student * head);//保存(new)_plusvoid save_in(struct student * head);//保存(in)void save_in_sort(struct student * head);//保存(sort)void new_table();//新建通讯录void new_table_plus();//新建通讯录_plusvoid add_student();//追加学生信息void query_student_all();//查询所有学生void update(struct student *head);//把链表内信息写入文件void query_student_name(struct student *head);//按姓名查询指定学生void query_student_tel(struct student *head);//按电话查询指定学生struct student * delete_student_name(struct student *head);//按姓名删除指定学生struct student * delete_student_tel(struct student *head);//按电话删除指定学生struct student * modify_student_name(struct student *head);//按姓名修改指定学生struct student * modify_student_tel(struct student *head);//按电话修改指定学生struct student * sort_student_name(struct student *head);//按姓名排序struct student * sort_student_tel(struct student *head);//按电话排序struct student * insert_student_name(struct student *head);//按姓名插入struct student * insert_student_tel(struct student *head);//按电话插入void main_select();//主菜单void query_select();//查询菜单void add_select();//添加菜单void delete_select();//删除菜单void update_select();//更新菜单3.详细设计********************************************************************* 创建链表的主要过程函数:1)建立链表struct student * create(struct student *head);2)插入学生信息struct student * insert(struct student *head,char *name,char tel[],char sex[],char age[],char birth[],char address[]);3)输出全部学生信息至窗口void print(struct student *head);4)把链表内信息写入文件void update(struct student *head);********************************************************************* 新建学生通讯录信息和添加学生通讯录信息主要过程函数:1)新建通讯录void new_table();void new_table_plus();2)追加学生信息void add_student();3)保存void save_new(struct student * head);void save_new_plus(struct student * head);void save_in(struct student * head);void save_in_sort(struct student * head);********************************************************************* 查询学生通讯录信息主要过程函数:1)查询所有学生void query_student_all();2)指定查询(按姓名、按电话)void query_student_name(struct student *head);void query_student_tel(struct student *head);********************************************************************* 删除学生通讯录信息主要过程函数:1)指定删除(按姓名、按电话)struct student * delete_student_name(struct student *head);struct student * delete_student_tel(struct student *head);2)保存到文件********************************************************************* 修改学生通讯录信息主要过程函数:1)指定修改(按姓名、按电话)struct student * modify_student_name(struct student *head);struct student * modify_student_tel(struct student *head); 2)保存到文件********************************************************************* 排序学生通讯录信息主要过程函数:1)指定排序(按姓名、按电话)struct student * sort_student_name(struct student *head);struct student * sort_student_tel(struct student *head);2)保存到文件********************************************************************* 插入学生通讯录信息主要过程函数:1)指定插入(按姓名、按电话)struct student * insert_student_name(struct student *head);struct student * insert_student_tel(struct student *head);2)保存到文件*********************************************************************菜单函数:1)主菜单void main_select();2)查询菜单void query_select();3)添加菜单void add_select();4)删除菜单void delete_select();5)更新菜单void update_select();*********************************************************************4.用户使用手册4.1 环境设置1.在指定的目录下创建一个win32工程,如图1所示。

学生通讯录管理系统(C语言课程设计实验报告)

学生通讯录管理系统(C语言课程设计实验报告)

C语言课程设计姓名:刘显学号:09041131班级:090411专业:计算机科学与技术学院:信息工程学院设计题目:学生通讯录管理系统指导教师:宋文琳提交时间:2010年9月4日课程题目:学生通讯录管理系统要求:学生通讯录信息包括:学号、姓名、班机、联系电话、E-mail、宿舍等主要功能:1、通讯录信息录入功能2、通讯录信息删除功能3、通讯录信息浏览功能4、通讯录信息查询功能5、按学号排序功能一、总体设计首先,整个系统必须有一个主函数,为了尽量提高程序的易修改性,且不至于相互干扰,将每一个功能分成不同的模块,用不同的函数来实现,例如在我写的这个程序中,一共用了11个函数,分别是:主菜单函数menu()、关于函数gaunyu ()、帮助函数help()、输出单个学生信息函数shuchu()、输入函数shuru()、输出所有学生信息函数findall()、按姓名查找函数findname()、按学号查找函数findnum ()、删除函数shanchu()、排序函数paixu ()、主函数main(),这样在整个程序的设计过程中也就一目了然,写起来也相对轻松了不少。

这个程序我只是总体上参考了一下网上程序的架构,具体的各个函数是参照课本上《链表》那一章的内容的,比如结构体的建立、查找和排序等功能,这些书上都有类似的,其中排序功能虽没有原版的,但是在第六章中有一个用冒泡法排序的例题,我就是仿照这个模式来对结构体进行排序的,总之整个程序中蕴含了我很多的汗水。

二、具体设计关于这个程序的具体设计,也不是一两句话就能说完的,所以我也不想再在这里赘述了,因为程序里都可以看的到,几乎每个函数都倾注了我的大量汗水,我在这上面花了不少的时间,不过从中也收获了很多,因为不停地修改不停的调试,总之还是直接看源程序吧,因为也没必要在这里重复地说废话。

三、源代码以下是整个程序的源代码,其中我的主菜单函数是很美观的,但由于这里字体和板式的限制,不能很好的显现,可以看我下面程序运行的截图就知道了。

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

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

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

②显示所有人员的信息。

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

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

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

⑥添加人员信息。

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

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

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

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

图1 系统功能模块图软件中使用的结构体和结构体数组,如:struct callmember{char name[20];char address[20];char code[20];char callnumber[20];};对用户的信息进行保存,他们都以二进制的形式读写。

其中:char name[20];char address[20];char code[20];char callnumber[20]分别对姓名、地址、邮编、电话号码进行储存在子函数中还使用了结构体数组:struct callmember one[100];还使用了exit()、 fclose()等库函数。

C语言大作业——学生通讯录管理系统

C语言大作业——学生通讯录管理系统

C语言大作业——学生通讯录管理系统#include#include//#define NULL 0#define LEN sizeof(struct message)struct message //定义结构体{char name[15];char number[15];char phone[15];char qq[13];char addr[25];struct message *next; //指向下一数据};int n;void creat() //建立电话簿{int num;char choice[5]={'2'};FILE *fp;struct message *head;struct message *p,*q;n = 0;p = q = (struct message *) malloc(LEN);fp=fopen("通讯录1.txt","wb");system("cls");printf("\n请输入姓名:");scanf("%s",p->name);printf("\n请输入电话号码:");scanf("%s",p->phone);printf("\n请输入学号:");scanf("%s",p->number);printf("\n请输入QQ:");scanf("%s",p->qq);printf("\n请输入住址:");scanf("%s",p->addr);fwrite(p,LEN,1,fp);fclose(fp);head = 0;num = 1;while(num!=0){n = n+1;if(n==1) head = p;else q->next = p;q = p;p = (struct message *) malloc(LEN); //分配存储区while(choice[0]!='1' && choice[0]!='0') //判断是否继续{printf("\n1 继续输入\n 0 返回\n");printf("请选择操作:");scanf("%s",choice);}switch(choice[0]){case '1':{fp=fopen("通讯录1.txt","rb");system("cls");printf("\n请输入姓名:");scanf("%s",p->name);printf("\n请输入电话号码:");scanf("%s",p->phone);printf("\n请输入学号:");scanf("%s",p->number);printf("\n请输入QQ:");scanf("%s",p->qq);printf("\n请输入住址:");scanf("%s",p->addr);fwrite(p,LEN,1,fp);fclose(fp);choice[0] = '2';} continue;case '0': num = 0;system("cls");}}q->next = 0;}void add() //添加通讯录{int num;char choice[5]={'2'};FILE *fp;struct message *head;struct message *p,*q;n = 0;p = q = (struct message *) malloc(LEN); //分配空间fp=fopen("通讯录1.txt","ab");system("cls");printf("\n请输入姓名:"); //输入内容scanf("%s",p->name);printf("\n请输入电话号码:");scanf("%s",p->phone);printf("\n请输入学号:");scanf("%s",p->number);printf("\n请输入QQ:");scanf("%s",p->qq);printf("\n请输入住址:");scanf("%s",p->addr);fwrite(p,LEN,1,fp);fclose(fp);head = 0;num = 1;while(num!=0){n = n+1;if(n==1) head = p;else q->next = p;q = p;p = (struct message *) malloc(LEN); //分配空间while(choice[0]!='1' && choice[0]!='0') //判断是否继续{printf("\n1 继续输入\n 0 返回\n");printf("请选择操作:");scanf("%s",choice);}switch(choice[0]){case '1':{fp=fopen("通讯录1.txt","rb");system("cls");printf("\n请输入姓名:");scanf("%s",p->name);printf("\n请输入电话号码:");scanf("%s",p->phone);printf("\n请输入学号:");scanf("%s",p->number);printf("\n请输入QQ:");scanf("%s",p->qq);printf("\n请输入住址:");scanf("%s",p->addr);fwrite(p,LEN,1,fp);fclose(fp);choice[0] = '2';} continue;case '0': num = 0;system("cls");}}q->next = 0;}void findname(struct message * fphead) //按姓名查找{ struct message *p;int a = 0;char findname[20];system("cls");printf("请输入要查找的姓名:\n");scanf("%s",findname);for(p=fphead->next;p!=NULL;p=p->next){if(strcmp(p->name,findname)==0){printf("姓名电话号码学号QQ 住址\n");printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr);a = 1;}}if(a != 1)printf("无此通讯录!\n");}void findphone(struct message * fphead) //按电话查找{struct message *p;int a = 0;char findphone[15];system("cls");printf("请输入要查找的电话:\n");scanf("%s",findphone);for(p=fphead->next;p!=NULL;p=p->next){if(strcmp(p->phone,findphone)==0){printf("姓名电话号码学号QQ 住址\n");printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr);a = 1;}}if(a != 1)printf("无此通讯录!\n");}void findnumber(struct message * fphead) //按学号查找{struct message *p;int a = 0;char findnumber[15];system("cls");printf("请键入要查找的学生学号:\n");scanf("%s",findnumber);for(p=fphead->next;p!=NULL;p=p->next){if(strcmp(p->number,findnumber)==0){printf("姓名电话号码学号QQ 住址\n");printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr);a = 1;}}if(a != 1)printf("无此通讯录!\n");}void modify(struct message * fphead) //修改记录{FILE *fp;struct message *p,*q;int a = 0;char findname[15];system("cls");printf("请键入要查找的姓名:\n");scanf("%s",findname);for(p=fphead->next;p!=NULL;p=p->next){if(strcmp(p->name,findname)==0){printf("姓名电话号码学号QQ 住址\n");printf("%-15s %-15s %-15s %-13s %-25s\n\n\n\n",p->name,p->phone,p->number,p->qq,p->addr);printf("\n请键入新姓名:");scanf("%s",p->name);printf("\n请键入新电话号码:");scanf("%s",p->phone);printf("\n请键入新学号:");scanf("%s",p->number);printf("\n请键入新QQ:");scanf("%s",p->qq);printf("\n请键入新住址:");scanf("%s",p->addr);fp = fopen("通讯录2.txt","wb");q = fphead->next; //P为链表头指针while(q!=0){fwrite(q,LEN,1,fp);if(q->next!=0)q = q->next;elseq = 0;}fclose(fp);unlink("通讯录1.txt"); //用新文件覆盖原文件rename("通讯录2.txt", "通讯录1.txt");printf("修改成功!");a = 1;}}if(a != 1)printf("无此通讯录!\n");}void del(struct message * fphead) //删除记录{FILE *fp,*fq;struct message *p,*q,*r;char sname[15];p = q = (struct message *) malloc(LEN);p = fphead;system("cls");fp = fopen("通讯录1.txt","rb");fq = fopen("通讯录2.txt","wb");printf("请输入欲删除记录的姓名:");scanf("%s",sname);while(strcmp(p->name,sname)!=0 && p->next!=0) //查找节点并删除该节点q = p;p = p->next;}if(strcmp(p->name,sname)==0){if(p==fphead)fphead = p->next;else{q->next = p->next;}r = fphead->next; //r为链表头指针while(r!=0){fwrite(r,LEN,1,fq);if(r->next!=0)r = r->next;elser = 0;}printf("删除成功!");}else{printf("无此通讯录!");}fclose(fp);fclose(fq);unlink("通讯录1.txt"); //用新文件覆盖原文件rename("通讯录2.txt", "通讯录1.txt");}struct message * open(void) //打开文件,载入链表{FILE *fp;struct message *p=NULL,*q=NULL,*temp=NULL,*fphead=NULL;fp=fopen("通讯录1.txt","rb");fphead=(struct message *)malloc(LEN); //分配空间temp = q = fphead;while(! feof(fp)) //循环读取,载入链表p=(struct message *)malloc(LEN);temp=q;q->next=p;q=p;fread(p,LEN,1,fp);}temp->next=NULL;fclose(fp);return(fphead); //返回链表头指针}void print() //显示通讯录{struct message *p;FILE *fp;system("cls");if((fp=fopen("通讯录1.txt","rb"))!=NULL){printf("姓名电话号码学号QQ 住址\n");p = (struct message *)malloc(LEN); //分配空间while(!feof(fp)){fread(p,LEN,1,fp);printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr);}fclose(fp);else{printf("未建立通讯录!");}}void main() //主函数{FILE * fp;struct message * fphead;int begin = 1,f;char choice[5];while(begin == 1){printf("\t\t>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>\n");printf("\t\t\t\t欢迎使用学生通讯录\n");printf("\t\t<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<\n\n\n");printf("\t\t\t*主窗口菜单*\n\n");printf("\t\t\t1:显示通讯录中所有记录;\n\n");printf("\t\t\t2:建立新通讯录;\n\n");printf("\t\t\t3:添加新记录;\n\n");printf("\t\t\t4:查询通讯录中的记录;\n\n");printf("\t\t\t5:修改通讯录中的记录;\n\n");printf("\t\t\t6:删除通讯录中的记录;\n\n");printf("\t\t\t0:退出通讯录\n\n");printf("请选择操作:");scanf("%s",choice);switch(choice[0])case '1':{print();printf("按任意键返回主菜单!\n");getch();system("cls");} continue;case '2':{creat();} continue;case '3':{add();} continue;case '4':{if((fp = fopen("通讯录1.txt","rb")) != NULL){fclose(fp);system("cls");printf("1按姓名查询;\n2按电话查询;\n3按学号查询;\n"); printf("请输入查询方式:");scanf("%d",&f);if(f==1){fphead = open();findname(fphead);}if(f==2){fphead = open();findphone(fphead);}else if(f==3){fphead = open();findnumber(fphead);}}else{system("cls");printf("未建立通讯录!");}printf("按任意键返回主菜单!\n");getch();system("cls");} continue;case '5':{if((fp = fopen("通讯录1.txt","rb")) != NULL) {fclose(fp);fphead = open();modify(fphead);}else{printf("未建立通讯录!");}printf("按任意键返回主菜单!\n");getch();system("cls");}continue;case '6':{if((fp = fopen("通讯录1.txt","rb")) != NULL) {fclose(fp);fphead = open();del(fphead);}else{system("cls");printf("未建立通讯录!");}printf("按任意键返回主菜单!\n");getch();system("cls");} continue;case '0': exit(0);default:{system("cls");printf("输入错误,按任意键返回主菜单!\n"); getch();}}}system("pause"); }。

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

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

C语言课程设计---学生通讯录管理系统。

一、系统背景学生通讯录管理系统是一个收集、管理完善学生信息的设计方案,用于关注学生个人详细信息,包括学生姓名,性别,年龄,家庭住址等,旨在为学校、家长提供全面、及时的信息管理服务,使用简单、实用性强,并可以根据实际需求,调整系统功能内容及操作流程的学生通讯录管理系统。

二、系统功能1、信息录入:管理员可以对学生信息进行录入,包括学生的学号、姓名、性别、年龄、家庭住址、父母电话号码等。

3、信息查询:管理员可以根据学生学号、姓名等搜索学生信息,可以快速找到所需的学生节点信息。

4、信息统计:系统可以依据信息的个性化特点,自动生成学生通讯录,便于管理人员查阅。

5、用户管理:管理员可以管理系统用户的用户名、密码、权限等,并可以根据需求增加、修改、删除用户账号信息。

三、系统流程1、系统开发:从需求分析、详细设计、界面设计到程序编码完成,包括系统功能模块开发,业务流程分析,数据库设计,数据交互,压力测试,过程控制,系统安全,系统维护与更新等,以确保系统可靠性。

2、部署与安装:系统部署完毕后,需要完成服务器端基本信息采集,如确定服务器IP地址,运行环境,程序配置,操作系统配置,备份配置,文件安全配置,权限设置等安装步骤,以确保系统安全性。

3、运行维护:根据系统实际应用情况,工程师应对系统及数据库进行定期检查,完善系统运行日志,以及故障分析,体系数据库定期备份,完善系统的安全及性能,以确保系统正常运行。

四、系统实施1、硬件及软件:学生通讯录管理系统的实施需要运行在较新的计算机硬件系统上,需要使用Windows操作系统,是采用C语言作为开发语言,开发工具可以采用Visual Studio C++、Embarcadero C++ 11或以上,数据库系统采用Oracle 9i或者MySQL。

2、系统测试:针对系统实际功能,专业测试工程师应当进行系统测试, 并对测试结果进行分析,能够及时发现和修正系统中可能存在的严重错误和不确定性缺陷, 从而获得系统良好的可靠性。

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

#include <stdio.h>#include <malloc.h>//#define NULL 0#define LEN sizeof(struct message)struct message //定义结构体{char name[15];char number[15];char phone[15];char qq[13];char addr[25];struct message *next; //指向下一数据};int n;void creat() //建立电话簿{int num;char choice[5]={'2'};FILE *fp;struct message *head;struct message *p,*q;n = 0;p = q = (struct message *) malloc(LEN);fp=fopen("通讯录1.txt","wb");system("cls");printf("\n请输入姓名:");scanf("%s",p->name);printf("\n请输入电话号码:");scanf("%s",p->phone);printf("\n请输入学号:");scanf("%s",p->number);printf("\n请输入QQ:");scanf("%s",p->qq);printf("\n请输入住址:");scanf("%s",p->addr);fwrite(p,LEN,1,fp);fclose(fp);head = 0;num = 1;while(num!=0){n = n+1;if(n==1) head = p;else q->next = p;q = p;p = (struct message *) malloc(LEN); //分配存储区while(choice[0]!='1' && choice[0]!='0') //判断是否继续{printf("\n1 继续输入\n 0 返回\n");printf("请选择操作:");scanf("%s",choice);}switch(choice[0]){case '1':{fp=fopen("通讯录1.txt","rb");system("cls");printf("\n请输入姓名:");scanf("%s",p->name);printf("\n请输入电话号码:");scanf("%s",p->phone);printf("\n请输入学号:");scanf("%s",p->number);printf("\n请输入QQ:");scanf("%s",p->qq);printf("\n请输入住址:");scanf("%s",p->addr);fwrite(p,LEN,1,fp);fclose(fp);choice[0] = '2';} continue;case '0': num = 0;system("cls");}}q->next = 0;}void add() //添加通讯录{int num;char choice[5]={'2'};FILE *fp;struct message *head;struct message *p,*q;n = 0;p = q = (struct message *) malloc(LEN); //分配空间fp=fopen("通讯录1.txt","ab");system("cls");printf("\n请输入姓名:"); //输入内容scanf("%s",p->name);printf("\n请输入电话号码:");scanf("%s",p->phone);printf("\n请输入学号:");scanf("%s",p->number);printf("\n请输入QQ:");scanf("%s",p->qq);printf("\n请输入住址:");scanf("%s",p->addr);fwrite(p,LEN,1,fp);fclose(fp);head = 0;num = 1;while(num!=0){n = n+1;if(n==1) head = p;else q->next = p;q = p;p = (struct message *) malloc(LEN); //分配空间while(choice[0]!='1' && choice[0]!='0') //判断是否继续{printf("\n1 继续输入\n 0 返回\n");printf("请选择操作:");scanf("%s",choice);}switch(choice[0]){case '1':{fp=fopen("通讯录1.txt","rb");system("cls");printf("\n请输入姓名:");scanf("%s",p->name);printf("\n请输入电话号码:");scanf("%s",p->phone);printf("\n请输入学号:");scanf("%s",p->number);printf("\n请输入QQ:");scanf("%s",p->qq);printf("\n请输入住址:");scanf("%s",p->addr);fwrite(p,LEN,1,fp);fclose(fp);choice[0] = '2';} continue;case '0': num = 0;system("cls");}}q->next = 0;}void findname(struct message * fphead) //按姓名查找{struct message *p;int a = 0;char findname[20];system("cls");printf("请输入要查找的姓名:\n");scanf("%s",findname);for(p=fphead->next;p!=NULL;p=p->next){if(strcmp(p->name,findname)==0){printf("姓名电话号码学号QQ 住址\n");printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr);a = 1;}}if(a != 1)printf("无此通讯录!\n");}void findphone(struct message * fphead) //按电话查找{struct message *p;int a = 0;char findphone[15];system("cls");printf("请输入要查找的电话:\n");scanf("%s",findphone);for(p=fphead->next;p!=NULL;p=p->next){if(strcmp(p->phone,findphone)==0){printf("姓名电话号码学号QQ 住址\n");printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr);a = 1;}}if(a != 1)printf("无此通讯录!\n");}void findnumber(struct message * fphead) //按学号查找{struct message *p;int a = 0;char findnumber[15];system("cls");printf("请键入要查找的学生学号:\n");scanf("%s",findnumber);for(p=fphead->next;p!=NULL;p=p->next){if(strcmp(p->number,findnumber)==0){printf("姓名电话号码学号QQ 住址\n");printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr);a = 1;}}if(a != 1)printf("无此通讯录!\n");}void modify(struct message * fphead) //修改记录{FILE *fp;struct message *p,*q;int a = 0;char findname[15];system("cls");printf("请键入要查找的姓名:\n");scanf("%s",findname);for(p=fphead->next;p!=NULL;p=p->next){if(strcmp(p->name,findname)==0){printf("姓名电话号码学号QQ 住址\n");printf("%-15s %-15s %-15s %-13s %-25s\n\n\n\n",p->name,p->phone,p->number,p->qq,p->addr);printf("\n请键入新姓名:");scanf("%s",p->name);printf("\n请键入新电话号码:");scanf("%s",p->phone);printf("\n请键入新学号:");scanf("%s",p->number);printf("\n请键入新QQ:");scanf("%s",p->qq);printf("\n请键入新住址:");scanf("%s",p->addr);fp = fopen("通讯录2.txt","wb");q = fphead->next; //P为链表头指针while(q!=0){fwrite(q,LEN,1,fp);if(q->next!=0)q = q->next;elseq = 0;}fclose(fp);unlink("通讯录1.txt"); //用新文件覆盖原文件rename("通讯录2.txt", "通讯录1.txt");printf("修改成功!");a = 1;}}if(a != 1)printf("无此通讯录!\n");}void del(struct message * fphead) //删除记录{FILE *fp,*fq;struct message *p,*q,*r;char sname[15];p = q = (struct message *) malloc(LEN);p = fphead;system("cls");fp = fopen("通讯录1.txt","rb");fq = fopen("通讯录2.txt","wb");printf("请输入欲删除记录的姓名:");scanf("%s",sname);while(strcmp(p->name,sname)!=0 && p->next!=0) //查找节点并删除该节点q = p;p = p->next;}if(strcmp(p->name,sname)==0){if(p==fphead)fphead = p->next;else{q->next = p->next;}r = fphead->next; //r为链表头指针while(r!=0){fwrite(r,LEN,1,fq);if(r->next!=0)r = r->next;elser = 0;}printf("删除成功!");}else{printf("无此通讯录!");}fclose(fp);fclose(fq);unlink("通讯录1.txt"); //用新文件覆盖原文件rename("通讯录2.txt", "通讯录1.txt");}struct message * open(void) //打开文件,载入链表{FILE *fp;struct message *p=NULL,*q=NULL,*temp=NULL,*fphead=NULL;fp=fopen("通讯录1.txt","rb");fphead=(struct message *)malloc(LEN); //分配空间temp = q = fphead;while(! feof(fp)) //循环读取,载入链表p=(struct message *)malloc(LEN);temp=q;q->next=p;q=p;fread(p,LEN,1,fp);}temp->next=NULL;fclose(fp);return(fphead); //返回链表头指针}void print() //显示通讯录{struct message *p;FILE *fp;system("cls");if((fp=fopen("通讯录1.txt","rb"))!=NULL){printf("姓名电话号码学号QQ 住址\n");p = (struct message *)malloc(LEN); //分配空间while(!feof(fp)){fread(p,LEN,1,fp);printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr);}fclose(fp);}else{printf("未建立通讯录!");}}void main() //主函数{FILE * fp;struct message * fphead;int begin = 1,f;char choice[5];while(begin == 1){printf("\t\t>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");printf("\t\t\t\t欢迎使用学生通讯录\n");printf("\t\t<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n\n");printf("\t\t\t*主窗口菜单*\n\n");printf("\t\t\t1:显示通讯录中所有记录;\n\n");printf("\t\t\t2:建立新通讯录;\n\n");printf("\t\t\t3:添加新记录;\n\n");printf("\t\t\t4:查询通讯录中的记录;\n\n");printf("\t\t\t5:修改通讯录中的记录;\n\n");printf("\t\t\t6:删除通讯录中的记录;\n\n");printf("\t\t\t0:退出通讯录\n\n");printf("请选择操作:");scanf("%s",choice);switch(choice[0]){case '1':{print();printf("按任意键返回主菜单!\n");getch();system("cls");} continue;case '2':{creat();} continue;case '3':{add();} continue;case '4':{if((fp = fopen("通讯录1.txt","rb")) != NULL){fclose(fp);system("cls");printf("1按姓名查询;\n2按电话查询;\n3按学号查询;\n");printf("请输入查询方式:");scanf("%d",&f);if(f==1){fphead = open();findname(fphead);}if(f==2){fphead = open();findphone(fphead);}else if(f==3){fphead = open();findnumber(fphead);}}else{system("cls");printf("未建立通讯录!");}printf("按任意键返回主菜单!\n");getch();system("cls");} continue;case '5':{if((fp = fopen("通讯录1.txt","rb")) != NULL){fclose(fp);fphead = open();modify(fphead);}else{system("cls");printf("未建立通讯录!");}printf("按任意键返回主菜单!\n");getch();system("cls");}continue;case '6':{if((fp = fopen("通讯录1.txt","rb")) != NULL){fclose(fp);fphead = open();del(fphead);}else{system("cls");printf("未建立通讯录!");}printf("按任意键返回主菜单!\n");getch();system("cls");} continue;case '0': exit(0);default:{system("cls");printf("输入错误,按任意键返回主菜单!\n");getch();system("cls");}}}system("pause");}。

相关文档
最新文档