学生通讯录管理系统.docx
- 文档编号:3003561
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:14
- 大小:50.03KB
学生通讯录管理系统.docx
《学生通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《学生通讯录管理系统.docx(14页珍藏版)》请在冰豆网上搜索。
学生通讯录管理系统
“学生通讯信息记录系统”的设计与实现
一、设计要求
1.问题的描述
“学生通讯信息记录系统”是为了实现快速的对学生信息进行录入、删除、查找、显示。
各个功能靠函数实现。
2.需求分析
(1)应该包括以下功能:
输入信息、显示信息、查找以姓名作为关键字、删除信息
(2)作为一个完整的系统,应具有友好的界面和较强的容错能力
二、概要设计
1.主界面设计
2.储存结构设计
本系统主要采用链表类型来表示储存“学生信息记录系统”中的信息。
程序中定义了address结构。
其中,包括学生的姓名、宿舍信息和学号。
3.系统功能的设计
1)输入信息——enter();
2)显示信息———display();
3)查找以姓名作为关键字———search();
4)删除信息———delete();
三、模块设计
1.模块设计
本成绩包含两个模块:
主程序模块和链表操作模块。
2.系统的程序及功能设计
系统的功能主要靠函数的功能的实现的,以下是实现各功能的函数:
voidenter();/*函数声明*/
voidsearch();
voidsave();
voidload();
voidlist();
voidddelete(structaddress**start,structaddress**last);
voidinsert(structaddress*i,structaddress**start,structaddress**last);
voidinputs(char*,char*,int);
voiddisplay(structaddress*);
intmenu_select(void);
四、详细设计
1.数据类型定义
2.structaddress{/*定义结构*/
3.charname[10];
4.charstreet[50];
5.charcity[10];
6.charstate[15];
7.chareip[7];
8.structaddress*next;/*后继指针*/
9.structaddress*prior;/*前驱指针*/
10.};系统主要子程序详细设计
(1)插入学生信息
voidenter()/*输入函数,本函数循环输入资料,当输入姓名为空时退出*/
{
structaddress*info;/*定义当前结点*/
for(;;)
{
info=(structaddress*)malloc(sizeof(structaddress));/*为当前结点分配空间*/
if(!
info)
{
printf("\nOutofmemory");
exit(0);/*如果分配空间失败,退出程序*/
}
printf("输入空姓名结束:
\n");
inputs("请输入姓名:
",info->name,10);
if(!
info->name[0])
break;/*如果输入姓名为空,结束循环*/
inputs("请输入院系:
",info->street,50);
inputs("请输入宿舍楼:
",info->city,15);
inputs("请输入宿舍号:
",info->state,15);
inputs("请输入学号:
",info->eip,7);
insert(info,&start,&last);/*调用结点插入函数*/
}
}
五、测试分析
1.输入学生信息
2.显示信息
3.查找信息
4.删除信息
5.退出
六、程序清单
#include
#include
#include
structaddress{/*定义结构*/
charname[10];
charstreet[50];
charcity[10];
charstate[15];
chareip[7];
structaddress*next;/*后继指针*/
structaddress*prior;/*前驱指针*/
};
structaddress*start;/*首结点*/
structaddress*last;/*尾结点*/
structaddress*find(char*);/*声明查找函数*/
voidenter();/*函数声明*/
voidsearch();
voidsave();
voidload();
voidlist();
voidddelete(structaddress**start,structaddress**last);
voidinsert(structaddress*i,structaddress**start,
structaddress**last);
voidinputs(char*,char*,int);
voiddisplay(structaddress*);
intmenu_select(void);
voidmain()
{
start=last=NULL;
for(;;)
{
switch(menu_select())
{
case1:
enter();
continue;
case2:
ddelete(&start,&last);
continue;
case3:
list();
continue;
case4:
search();
continue;
case5:
exit(0);
}
}
}
intmenu_select(void)/*主目录*/
{
chars[80];
intc;
printf("\n欢迎使用学生通讯录系统");
printf("\n\n");
printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("\t┃************************************************************┃\n");
printf("\t┃***┃\n");
printf("\t┃*1.输入信息*2.删除信息*┃\n");
printf("\t┃***┃\n");
printf("\t┃************************************************************┃\n");
printf("\t┃***┃\n");
printf("\t┃*3.显示信息*4.查找*┃\n");
printf("\t┃***┃\n");
printf("\t┃************************************************************┃\n");
printf("\t┃5.退出┃\n");
printf("\t┃************************************************************┃\n");
printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
do{
printf("\n请输入你的选择:
\n");
gets(s);
c=atoi(s);
}while(c<0||c>7);
returnc;/*返回输入值*/
}
voidenter()/*输入函数,本函数循环输入资料,当输入姓名为空时退出*/
{
structaddress*info;/*定义当前结点*/
for(;;)
{
info=(structaddress*)malloc(sizeof(structaddress));/*为当前结点分配空间*/
if(!
info)
{
printf("\nOutofmemory");
exit(0);/*如果分配空间失败,退出程序*/
}
printf("输入空姓名结束:
\n");
inputs("请输入姓名:
",info->name,10);
if(!
info->name[0])
break;/*如果输入姓名为空,结束循环*/
inputs("请输入院系:
",info->street,50);
inputs("请输入宿舍楼:
",info->city,15);
inputs("请输入宿舍号:
",info->state,15);
inputs("请输入学号:
",info->eip,7);
insert(info,&start,&last);/*调用结点插入函数*/
}
}
voidinputs(char*prompt,char*s,intcount)/*输入函数,有越界检测功能*/
{
charp[255];
do
{
printf(prompt);
fgets(p,254,stdin);
if(strlen(p)>count)
printf("\nTooLong\n");
}while(strlen(p)>count);
p[strlen(p)-1]=0;
strcpy(s,p);
}
voidinsert(/*数据插入函数*/
structaddress*i,
structaddress**start,
structaddress**last
)
{
if(*last==NULL)/*如果尾结点为空,意味着当前链表为空*/
{
i->next=NULL;
i->prior=NULL;
*last=i;
*start=i;
return;
}
else
{
(*last)->next=i;
i->prior=*last;
i->next=NULL;
*last=(*last)->next;
}
}
voidddelete(structaddress**start,structaddress**last)/*删除函数*/
{
structaddress*info;
chars[80];
inputs("请输入姓名:
",s,10);/*输入欲删除结点的name域内容*/
info=find(s);/*查找该内容*/
if(info)/*如果找到*/
{
printf("Deleting......\n");
if(*start==info)/*如果该结点为首结点,把该结点的下驱作为新的首结点(入口)*/
{
*start=info->next;
if(*start)
(*start)->prior=NULL;
else*last=NULL;
}
else/*如果欲删除的结点不是首结点*/
{
info->prior->next=info->next;/*令该结点的前驱的next
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 通讯录 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)