学生通讯录管理系统.docx

上传人:b****6 文档编号:12750296 上传时间:2023-06-07 格式:DOCX 页数:16 大小:49.91KB
下载 相关 举报
学生通讯录管理系统.docx_第1页
第1页 / 共16页
学生通讯录管理系统.docx_第2页
第2页 / 共16页
学生通讯录管理系统.docx_第3页
第3页 / 共16页
学生通讯录管理系统.docx_第4页
第4页 / 共16页
学生通讯录管理系统.docx_第5页
第5页 / 共16页
学生通讯录管理系统.docx_第6页
第6页 / 共16页
学生通讯录管理系统.docx_第7页
第7页 / 共16页
学生通讯录管理系统.docx_第8页
第8页 / 共16页
学生通讯录管理系统.docx_第9页
第9页 / 共16页
学生通讯录管理系统.docx_第10页
第10页 / 共16页
学生通讯录管理系统.docx_第11页
第11页 / 共16页
学生通讯录管理系统.docx_第12页
第12页 / 共16页
学生通讯录管理系统.docx_第13页
第13页 / 共16页
学生通讯录管理系统.docx_第14页
第14页 / 共16页
学生通讯录管理系统.docx_第15页
第15页 / 共16页
学生通讯录管理系统.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

学生通讯录管理系统.docx

《学生通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《学生通讯录管理系统.docx(16页珍藏版)》请在冰点文库上搜索。

学生通讯录管理系统.docx

学生通讯录管理系统

学生通讯录管理系统

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

“学生通讯信息记录系统”的设计与实现

一、设计要求

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指针指向该结点的后驱,

*又令该结点的后驱的prior指点指向该结点的前驱*/

if(info!

=*last)/*如果该结点是尾结点,则令该结点的前驱为尾结点*/

info->next->prior=info->prior;

else

*last=info->prior;

}

free(info);/*释放该结点所占用的内存*/

printf("-Ok,删除成功!

\n");

}

}

structaddress*find(char*name)/*查找函数,形参为欲查找结点的name域*/

{

structaddress*info;

info=start;

while(info)

{

if(!

strcmp(name,info->name))returninfo;

info=info->next;

}

printf("未找到相关信息.\n");

returnNULL;

}

/*输出整个链表*/

voidlist(void)

{

structaddress*info;

info=start;

if(info==NULL)

printf("当前记录为空!

");

elseprintf("姓名\t院系\t宿舍楼\t宿舍号\t学号\t\n");

while(info)

{

display(info);

if(info->next==NULL){break;}info=info->next;

};

printf("\n\n");

}

voiddisplay(structaddress*info)/*输出传入结点函数*/

{

printf("%s\t",info->name);

printf("%s\t",info->street);

printf("%s\t",info->city);

printf("%s\t",info->state);

printf("%s\t",info->eip);

printf("\n");

}

voidsearch(void)/*查找函数*/

{

charname[40];

structaddress*info;

printf("请输入要查找的姓名:

");/*输入欲查找的姓名*/

gets(name);

info=find(name);

if(!

info)

printf("姓名不存在\n");/*如果没找到,显示Notfound*/

else

display(info);/*如果找到,显示该结点资料*/

}

七、用户使用手册

(1)本程序的执行文件为“学生通讯录管理系统.exe”。

(2)进入本系统之后,随即显示系统住菜单界面。

用户可以在该界面下根据提示输入并按回车键确定,执行相应的菜单命令。

(3)本系统可以对学生信息进行录入和删除。

 

数据结构课程设计

课题:

学生成绩管理系统

姓名:

孙轩宇

学号:

E01014316

专业:

计算机科技

院系:

计科院

班级:

10科技2班

 

2010.10.8

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2