当前位置:文档之家› 学生通讯录管理

学生通讯录管理

C语言数据结构学院:信心工程学院专业:技术计科学与技术题目:班级通讯录管理系统班级:姓名:时间:一:程序设计目标:为某个班级建立一个学生通讯录管理系统,功能包括通讯录链表的建立、学生通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。

二:问题描述:为某个班级建立一个学生通讯录管理系统,可以方便查询每一个学生的宿舍电话、手机号、及电子邮箱。

其功能包括通讯录链表的建立、学生通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。

三:需求分析:1.创建单链表;2.向链表中插入数据;3.删除链表中的数据;4.查找链表中的内容;5.销毁单链表,释放内存空间;6.打印内容。

四:概要设计:为了实现上述程序功能,需要定义一个简化的线性表抽象数据类型:ADT LinearList {数据对象:D={ai |ai∈IntegerSet,i=0,1,2,…,n,n≥0}结构关系:R={<ai ,ai+1>|ai,ai+1∈D}基本操作:Initlist (L)操作前提:L是一个未初始化的线性表操作结果:将L初始化为一个空的线性表CrtLinkList(L)操作前提:L是一个已初始化的空表操作结果:建立一个非空的线性表L Insertlist (L,pos,e)操作前提:线性表L已存在操作结果:将元素e插入到线性表L的pos位置deleteList (L,pos,e)操作前提:线性表L已存在操作结果:将线性表L中pos位置的元素删除,删除的元素值通过e返回LocLinkList(L,e)操作前提:线性表L已存在操作结果:在线性表L中查找元素e,若存在,返回元素在表中的序号位置;若不存在,返回-1五:详细设计:(给出算法的伪码描述和流程图)输出提示信息void menu(void){ /*主菜单函数*/system("cls");printf("***************************************************\n");printf(" ^_^学生通讯录管理系统^_^\n");printf("*************************************************** \n");printf(" 1=录入学生通讯录信息\n");printf(" 2=列出所有学生通讯录 \n"); printf(" 3=按姓名查询信息 \n"); printf(" 4=按学号查询信息 \n"); printf(" 5=删除学生信息 \n"); printf(" 6=排序 \n"); printf(" 0=退出 \n"); printf("*************************************************** ***\n");}存入学生信息struct student *shuru(void) /*输入函数*/{system("cls");struct student *s1,*s2;n=1;intnum;printf("请输入学生个数(提示:个数不能输入0!):");scanf("%d",&num);s1=s2=(struct student *)malloc(sizeof(struct student)); printf("*************************************************") ;printf("请输入学号:");scanf("%ld",&s1->num);printf("请输入学生姓名:");scanf("%s",s1->name);printf("请输入班级:");scanf("%d",&s1->banji);printf("请输入电话号码:");scanf("%s",s1->shoujihaoma);printf("请输入电子邮件:");scanf("%s",s1->Email);printf("请输入学生宿舍电话号:");scanf("%d",&s1->sushedianhua);stu=s1;while(n<num){s2->next=s1;s2=s1;s1=(struct student *)malloc(sizeof(struct student));printf("*************************************************") ;printf("请输入学号:");scanf("%ld",&s1->num);printf("请输入学生姓名:");scanf("%s",s1->name);printf("请输入班级:");scanf("%d",&s1->banji);printf("请输入电话号码:");scanf("%s",s1->shoujihaoma);printf("请输入电子邮件:");scanf("%s",s1->Email);printf("请输入学生宿舍号:");scanf("%d",&s1->sushedianhua);n=n+1;}printf("*************************************************");s2->next=s1;s2=s1;s2->next=NULL;return(stu);//system("cls");}输出单个学生信息voidshuchu(struct student *s){printf(" %-8ld",s->num);printf("%-8s",s->name);printf("%-8d",s->banji);printf("%-8s",s->shoujihaoma);printf("%-8s",s->Email);printf("%-8d *\n",s->sushedianhua)输出所有学生信息void findall() /*输出所有学生信息*/{system("cls");struct student *s;//if(n=2)//printf("\n现在有%d个学生信息,分别是:\n",n);//elseprintf("\n现在有%d个学生信息,分别是:\n",n);printf("*学号\t姓名\t班级\t电话\t电子邮件\t宿舍*\n"); s=stu;while(s!=NULL){shuchu(s);s=s->next;}printf("___________________________________________________ _____________________");printf("返回主菜单请按【7】");if(getche()=='7') menu();}按姓名查找void findname(){ /*按姓名查找函数*/system("cls");struct student *s;char name[20];printf("\n请输入你要查询的学生姓名:\n");scanf("%s",name);s=stu;while(strcmp(s->name,name)!=0){s=s->next;}if(s==NULL){printf("查无此学生姓名!");goto end;}else{printf("该学生的信息为:");printf("* 学号姓名班级电话电子邮件宿舍 *");shuchu(s);}end:;删除单个信息struct student *shanchu(struct student*stu) /*删除函数*/ {system("cls");longnum;char s;struct student *s1,*s2;if(stu==NULL){printf("没有任何学生信息");goto end;}printf("请输入你要删除的学生学号:");scanf("%ld",&num);s1=stu;printf("警告:你确定要删除这个学生的信息吗(Y/N)?");scanf("%s",&s);if((s=='Y')||(s=='y')){while((num!=s1->num)&&(s1->next!=NULL)){s2=s1;s1=s1->next;}if(num==s1->num){ printf("该学生的信息为:");printf("* 学号姓名班级电话电子邮件宿舍 *");shuchu(s1);if(s1==stu)stu=s1->next;elses2->next=s1->next;printf("该学生的信息已经删除了!剩下的学生通讯录信息如下:"); n=n-1;}}findall();return(stu);end:;printf("返回主菜单请按【9】");if(getche()=='9') menu();}六:使用说明:按照屏幕提示操作:班级、学号输入只能是整型1:按1录入学生通讯录信息2:按2输出所有学生通讯录信息3:按3用学生姓名查询4:按5用学生学号查询5:按5删除学生信息6:按6排序0:按0退出七:程序数据测试:创建学生信息插入学生信息删除学生信息课程设计总结第一次设计如此长的程序真的很吃力。

相关主题