通讯录管理系统

设计要求
问题描述

  纸质的通讯录系统已经不能满足大家的要求,容易丢失、查找困难等问题是纸质通讯录所不能克服的缺点。“学生通讯管理系统”是为了帮助老师、同学,或者其他一些需要使用通讯录的人员进行管理和分析的一种应用程序。

需求分析
  1. 输入数据建立通讯录
  2. 查询通讯录系统中满足要求的信息
  3. 插入新的通讯录信息
  4. 删除不需要的通讯录信息
  5. 查看所有通讯录信息
概要设计
主界面设计

  为了实现学生通讯录管理系统各功能的管理,设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。本系统主控菜单运行界面如图所示。
alt

存储结构设计

  本系统主要采用链表结构类型来表示存储在“学生通讯录管理系统”中的信息。其中,链表结点由四个分量构成;通讯录成员学号、通讯录成员姓名、通讯录成员电话号码、指向该结构体的指针。

系统功能设计

本系统设置了5个子功能菜单,5个子功能的设计描述如下。

  1. 建立通讯录系统。可以一次输入多个成员通讯录的信息,建立通讯录。
    在这里插入图片描述
  2. 插入通讯记录。每次可以插入一个成员通讯录的信息。如果要连续插入多个成员通讯录信息必须多次选择该功能。
    添加
  3. 查询通讯记录。可以按两种方式查询所需要的通讯录成员记录,一是按学号查询,二是按姓名查询。
    查询
  4. 删除通讯记录。可以对通讯录中不再需要的信息进行删除。
    删除.png
  5. 显示通讯录系统。可以查看通讯录中所有的通讯录成员记录。
    显示
程序代码
# include <stdio.h>
# include <stdlib.h>
# include <string.h>

typedef struct student //定义学生结点
{
    char name[20]; //姓名
	int num; //学号 
	char phone[20]; //电话
	struct student *next;
}stud;

void Menu() //菜单
{
	printf("\n\n\n");
	printf("***********************班级通讯录管理系统***********************\n\n");
	printf("                   1.建立通讯录                                 \n\n");
	printf("                   2.添加通讯录                                 \n\n");
	printf("                   3.删除通讯录                                 \n\n");  
	printf("                   4.查询通讯录                                 \n\n");
	printf("                   5.显示通讯录                                 \n\n");
	printf("                   0.退出系统                                   \n\n");
	printf("****************************************************************\n");
}

void Init(stud *H) //初始化
{
	H->next=NULL;
}

void Input(stud *H) //输入
{
	int n;
	stud *p, *q;
	p=H;
	while(p->next)
	{
		p=p->next; //p指向链表的最后一个结点
	}
	while(true)
	{
	q=(stud *)malloc(sizeof(stud)); //申请空间
	q->next = NULL;
	printf("请输入学生信息:\n");
	printf("姓名:"); scanf("%s", &q->name); printf("\n");
	printf("学号:"); scanf("%d", &q->num); printf("\n");
	printf("电话:"); scanf("%s", &q->phone); printf("\n");
	p->next=q;
	p=q;
//	system("cls"); //清屏
    printf("是否接着输入:1(继续)/0(结束)\n");
	scanf("%d", &n);
	if(n==0) break;
	}
}

void Output(stud *H) //显示输出
{
//	system("cls");
	stud *p;
	p = H->next;
	if(!p) 
	{
		printf("\n没有学生记录!!!\n");
		return ;
	}
	printf("姓名           学号            电话\n");
	while(p) //输出学生记录
	{
		printf("%s           %d              %s\n", p->name, p->num,p->phone);
		p=p->next;
	}
}

void Findm(stud *H) //查询姓名 
{
//	system("cls");
	char str[20]; 
	bool f=false;
	stud *p;
	p=H->next;
	printf("请输入姓名:\n");
	scanf("%s", str);
	if(!p)
	{
		printf("没有符合条件的学生记录!\n");
		return ;
	}
	printf("姓名         学号        电话\n");
	while(p)
	{
		if(strcmp(str, p->name)==0) //找到了一条符合条件的记录
		{
			f=true;
			printf("%s          %d          %s\n", 
				    p->name, p->num,p->phone);
		}
		p=p->next;
	}
	if(!f)
	{
        printf("没有符合条件的学生记录!\n");
	}

}

void Findh(stud *H) //查询学号 
{
//	system("cls");
	char str; 
	bool f=false;
	stud *p;
	p=H->next;
	printf("请输入学号:\n");
	scanf("%d", str);
	if(!p)
	{
		printf("没有符合条件的学生记录!\n");
		return ;
	}
	printf("姓名         学号        电话\n");
	while(p)
	{
		if(str==p->num) //找到了一条符合条件的记录
		{
			f=true;
			printf("%s          %d          %s\n", 
				    p->name, p->num, p->phone);
		}
		p=p->next;
	}
	if(!f)
	{
        printf("没有符合条件的学生记录!\n");
	}
}

void Find(stud *H) //查询 
{
	int select;
//	system("cls");
	printf("*************************查询**************************************\n\n");
	printf("              1.按姓名                                             \n\n");
	printf("              2.按学号                                             \n\n");
	printf("              0.退出                                               \n\n");
	printf("*******************************************************************\n\n");
	while(true)
	{
		printf("请选择(0-2)");
		scanf("%d",&select); 
		if(select>=0&&select<3) break;
	}
	switch(select)
	{
//		case 0: return 0; break;
		case 1: Findm(H); break;
		case 2: Findh(H); break;
	}
}



void Del(stud *H)//删除学生信息
{
	char str[20];
	printf("\n请输入要删除记录的姓名:\n");
	scanf("%s", str);
	stud *p, *q;
	p=H;
	q=H->next;
	bool flag=false;
	while(q)
	{
		if(strcmp(q->name, str)==0)
		{
			flag=true;
			p->next=q->next;
			q=p->next;break;
		}
		p=q;
		q=q->next;
	}
	printf("\n删除成功!!\n");
	printf("\n\n删除成功后的学生通讯信息:\n");
	Output(H); 
}

void Add(stud *H) //添加学生信息
{
	int n;
	stud *p, *q;
	p=H;
	while(p->next) //p指向链表的最后一个结点
	{
		p=p->next;
	}
	while(true)
	{
	q=(stud *)malloc(sizeof(stud)); //申请空间
	q->next = NULL;
	printf("\n请输入添加学生的信息:\n");
	printf("姓名:"); scanf("%s", &q->name); printf("\n");
	printf("学号:"); scanf("%d", &q->num); printf("\n");
	printf("电话:"); scanf("%s", &q->phone); printf("\n");
	p->next=q;
	p=q;
//	system("cls"); //清屏
    printf("是否继续添加:1(继续)/0(结束)\n");
	scanf("%d", &n);
	if(n==0) break;
	}
	printf("\n添加成功!\n");
	printf("\n\n添加成功后的学生通讯信息:\n");
	Output(H); 
}

int main()
{
	stud *H;
	H = (stud *)malloc(sizeof(stud)); //注意,申请空间的时候最好是在主函数中申请
	Init(H); //初始化,申请一个头结点
	bool flag;
	int select, m;
	while(true)
	{
	Menu();
	printf("请输入(0-5):\n");
	flag=true;
	while(flag)
	{
		flag=false;
		scanf("%d", &select);
		if(select<0 || select>5) 
		{
			printf("输入不正确,请重新输入(0-5):\n");
			flag=true;
		}
	}
	switch(select)
	{
		case 0: return 0; break;
		case 1: Input(H); break;
		case 2: Add(H); break;
		case 3: Del(H); break;
		case 4: Find(H); break;
		case 5: Output(H); break;
	}
	printf("\n请选择:1(继续)/0(结束)\n");
	scanf("%d", &m);
	if(m==0)  return 0;
//	system("cls"); //清屏
	}
	return 0;
}

微信公众号
微信公众号

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#define _CRT_SECURE_NO_WARNINGS 1 #ifndef __CONTACT_H_ #define __CONTACT_H_ #include<stdio.h> #include<stdlib.h> #include<string.h> #define PEO_MAX 30 #define STUID_MAX 10 #define NAME_MAX 20 #define SEX_MAX 10 #define TEL_MAX 15 typedef struct People { char id[STUID_MAX]; char name[NAME_MAX]; char sex[SEX_MAX]; char tel[TEL_MAX]; }*peo; typedef struct Contact { int count; struct People people[PEO_MAX]; }*pCon; void add_peo(pCon pcon); //添加联系人信息 void show_peo(pCon pcon); //显示指定联系人信息 void find_peo(pCon pcon); //查找联系人信息 void modify_peo(pCon pcon); //修改指定联系人信息 void clear_peo(pCon pcon); //清空联系人信息 void show_menu(); //菜单显示 #endif int search(pCon pcon, char *name) { int i = 0; for (i=0; i < pcon->count; i++) { if (strcmp(name, pcon->people[i].name) == 0) return i; } return -1; } void add_peo(pCon pcon) //添加联系人 { if (pcon->count == PEO_MAX) { printf("The contact has fullen."); return; } printf("please input studentID: "); scanf("%s",(pcon->people[pcon->count]).id); printf("please input name: "); scanf("%s", (pcon->people[pcon->count]).name); printf("please input sex : "); scanf("%s", (pcon->people[pcon->count]).sex); printf("please input tel: "); scanf("%s", (pcon->people[pcon->count]).tel); pcon->count++; } void show_peo(pCon pcon)//显示联系人 { int i = 0; for (; i < pcon->count; i++) { printf("studentID name sex tel \n"); printf("%s\t%s\t%s\t%s\n", pcon->people[i].id, pcon->people[i].name, pcon->people[i].sex, pcon->people[i].tel); } } void find_peo(pCon pcon) //查找联系人信息 { int i; char name[NAME_MAX]; printf("please input the people you want to find:"); scanf("%s", name); i = search(pcon, name); if (i == -1) printf("The people doesn't exsit.\n"); else printf("%s\t%s\t%s\t%s\n", pcon->people[i].id, pcon->people[i].name, pcon->people[i].sex, pcon->people[i].tel); } void modify_peo(pCon pcon) //修改指定联系人信息 { int i; char name[NAME_MAX]; printf("please input the people you want to modify:"); scanf("%s", name); i = search(pcon, name); if (i == -1) printf("The people doesn't exsit.\n"); else printf("please input studentID: "); scanf("%s", (pcon->people[i]).id); printf("please input name: "); scanf("%s", (pcon->people[i]).name); printf("please input sex : "); scanf("%s", (pcon->people[i]).sex); printf("please input tel: "); scanf("%s", (pcon->people[i]).tel); } void clear_peo(pCon pcon) //清空联系人 { pcon->count = 0; } void show_menu() //菜单显示 { printf("==========通讯录==========\n"); printf(" \n"); printf("*******[1]显示通讯录******\n"); printf("*******[2]查 询******\n"); printf("*******[3]修 改******\n"); printf("*******[4]结 束******\n"); } int main() { struct Contact my_contact; int input = 1; my_contact.count = 0; while (input) { show_menu(); printf("please input:"); scanf("%d", &input;); switch (input) { case 1: add_peo(&my;_contact); break; case 2: show_peo(&my;_contact); break; case 3: find_peo(&my;_contact); break; case 4: modify_peo(&my;_contact); break; case 5: clear_peo(&my;_contact); break; default: break; } } return 0; }
JavaWeb通讯录管理系统是一种基于JavaWeb技术开发的通讯录管理系统。它主要用于管理个人或企业的联系人信息实现通讯录的增删改查功能。 该系统采用B/S架构,用户只需在浏览器中输入系统的URL地址即可访问系统,无需安装本地软件。同时,系统采用Java技术进行开发,具有良好的跨平台性和可移植性。 通讯录管理系统的主要功能包括: 1. 用户登录与身份验证:用户通过输入正确的用户名和密码进行登录系统,系统对用户进行身份验证,以保证系统的安全性。 2. 通讯录信息的添加与修改:用户可以添加或修改联系人的信息,包括姓名电话号码、电子邮件等信息。系统将存储、管理并维护这些联系人信息。 3. 通讯录信息的查询与展示:用户可以通过姓名或其他关键字进行查询,系统将根据查询条件进行联系人的检索,并将检索到的联系人信息展示给用户。 4. 通讯录信息的删除:用户可以删除不需要的联系人信息,系统将从数据库中删除相应的记录。 5. 导入与导出联系人信息:用户可以将联系人信息导入系统,或将系统中的联系人信息导出到本地,实现信息的灵活交互。 6. 用户管理:系统支持管理员对用户的管理,包括用户的注册、修改密码等功能。 总之,JavaWeb通讯录管理系统是一款功能强大、易于使用的通讯录管理工具,可以帮助用户高效地管理和维护联系人信息,提高工作效率和信息管理的便捷性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值