学生通讯录管理系统广东海洋大学.docx
- 文档编号:15049106
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:27
- 大小:264.05KB
学生通讯录管理系统广东海洋大学.docx
《学生通讯录管理系统广东海洋大学.docx》由会员分享,可在线阅读,更多相关《学生通讯录管理系统广东海洋大学.docx(27页珍藏版)》请在冰点文库上搜索。
学生通讯录管理系统广东海洋大学
《程序设计基础》课程设计
学生姓名
张三
学生学号
201311610000
所在专业
电子信息工程
所在班级
1132班
任课老师
李四
实习时间
2014年6月7日
一.功能需求分析
学生通讯录管理系统是对学生的基本信息(包括学号,姓名,年龄,性别,电话和地址)的管理。
开发工具采用VisualC++6.0,主要实现对于学生的学号,姓名等自然信息进行增加、查询、修改、删除及保存到文件等操作。
系统给用户提供了一个简单的人机界面,使用户可以根据提示输入操作项、调用系统提供的管理功能。
主要功能需求描述如下。
1.系统主控平台允许用户选择想要的操作,包括添加联系人、显示联系人、查询联系人、格式化通讯录、删除联系人以及推出通讯录管理系统等。
通过输入相应的序号选择相应的操作。
2.添加联系人用户根据提示输入学生的学号、姓名、年龄、性别、电话以及地址等。
用户可根据需要输入所需数量的学生信息,可根据提示输入学生数量或者继续其他操作。
输入完的学生信息会自动保存到相应的文本文件中,然后等待下一步操作。
3.显示联系人在选择了显示联系人后,系统将将文本文件中的学生信息调出显示,如果没有数据,系统则会提示“文件为空。
”
4.查询联系人可以分别根据姓名、学号从文本文件中对学生的所有信息进行查询,如果没有查询到任何信息,系统将会提示“没有找到符合您要求的联系人,请核查您的信息!
!
”,反之将会输出查询的学生信息。
5.初始化通讯录选择该项操作将会初始化文本文件中的所有信息,请慎重操作。
选择该项操作时,系统将会提示“是否初始化通讯录(y或n)”,防止错误操作产生不良后果。
选择y时,将会初始化文本文件并提示“初始化成功”。
6.退出主菜单退出通讯录管理系统
二.系统总体结构分析
根据实际情况,我们使用原型法,即以少量代价快速地构造一个可执行的软件系统模型,使用户和开发人员可以较快的确定需求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐加上去,直到所有的性质全部满足。
以下为系统逻辑模型图:
系统逻辑图2-1
1.数据类型的选择
structstudent
charxh[20];
charxm[10];
charnl[5];
charxb[10];
chardh[20];
chardz[50];
2.主要函数原型
charcaidan();//菜单
voidadd();//增加联系人函数
voidprint(structstudenta[],int);//输入所有联系人
voiddele(structstudenta[],int);//删除联系人
voidchazhao(structlianxirena[],int);//查找联系人
voidchazhao_xm(structlianxirena[],intn);//用名字查找
voidchazhao_xh(structlianxirena[],intn);//用年龄查找
voidchazhao(structstudentt[],intn)//格式化通讯录
3.调用到的函数
通过
switch(表达式)
{
case常量表达式1:
语句1
case常量表达式2:
语句2
case常量表达式n:
语句n
}
调用六个函数。
voidadd();
voidprint(structstudenta[],int);
voiddele(structstudenta[],int);
voidchazhao(structstudenta[],int);
voidchazhao_xm(structstudenta[],intn);
voidchazhao_xh(structstudenta[],intn);
voidchazhao(structstudentt[],intn);
4模块设计与介绍
对本系统的功能进行分析后可作如下的模块化设计:
输入模块实现功能:
按顺序将有学号(xh)、姓名(xm)、年龄(nl)、性别(xb)、电话(dh)、地址(dz)依次输入,并建立链表将其连接。
当输入数据完毕时Enter,输入结束。
删除模块实现功能:
在已经存储的文件中删除指定的通信录信息,并释放内存空间。
删除所有相关通信录信息。
查找模块实现功能:
在已经存储的文件中查找指定的通信录信息。
可以按照查找姓名或方法进行。
输出模块实现功能:
在输入特定的文件名之后,输出该文件中所包含的全部通信录信息。
添加模块实现功能:
添加相应信息保存操作,链表中的信息以文件形式被长期。
保存。
格式模块实现功能:
在已经存储的文件中删除全部的通讯录信息,并释放内存空间。
删除所有相关通讯录信息。
主序模块实现功能:
完成系统的界面处理,包括开始界面和主菜单界面。
三.模块介绍和总体实现
1.Add()增加模块
建立链表的具体操作就是逐一输入各结点数据,并建立其前后相链的关系。
voidadd()
{
inti;
FILE*fp;
if((fp=fopen("通讯录.txt","a"))==NULL)
{
printf("无法打开文件,按任意键退出!
!
\n");
chara;
scanf("%c",&a);
exit(0);
}
intnum;
printf("您想要增加几个联系人:
\n");
scanf("%d",&num);
structstudentt[100];
printf("请输入联系人信息\n");
printf("学号名字年龄性别电话地址\n");
printf("--------------------------------------------------------\n");
for(i=0;i { scanf("%s%s%s%s%s%s",t[i].xh,t[i].xm,t[i].nl,t[i].xb,t[i].dh,t [i].dz); printf("_________________________________________________\n"); } for(i=0;i { fprintf(fp,"\n"); fprintf(fp,"%s%s%s%s%s%s",t[i].xh,t[i].xm,t[i].nl,t[i].xb,t[i].dh,t [i].dz); } printf("******已成功添加%d个联系人******\n",num); fclose(fp); } 2.dele()删除模块 删除模块: 删除链表节点,通过此节点指针的上一个节点找到此节点next指针,删除节点指针p和后续节点指针p->next,后把next指向p->next。 在释放p指针。 要完成的是链表的删除操作,只需修改链表中要删除结点的前一个结点的链指针。 使之指向被删除结点的后面一个结点即可。 voiddele(structstudenta[],intn) { structstudenttemp[5]; charmingzi[20]; inti,j=0,s=0; printf("输入你要删除人得名字: "); scanf("%s",mingzi); printf("\n"); for(i=0;i { if(strcmp(mingzi,a[i].xm)! =0) { strcpy(temp[j].xh,a[i].xh); strcpy(temp[j].xm,a[i].xm); strcpy(temp[j].nl,a[i].nl); strcpy(temp[j].xb,a[i].xb); strcpy(temp[j].dh,a[i].dh); strcpy(temp[j].dz,a[i].dz); j++; } else { s++; printf("你要删除得人得信息是: \n"); printf("--------------------------------------------------------\n"); printf("学号名字年龄性别电话地址\n"); printf("--------------------------------------------------------\n"); printf("%-12s%-10s%-8s%-15s%-20s\n",a[i].xh,a[i].xm,a[i].nl,a[i].xb,a[i].dh,a[i].dz); } } FILE*fp; if((fp=fopen("通讯录.txt","w"))==NULL) { printf("无法打开文件,按任意键退出! ! \n"); chara; scanf("%c",&a); exit(0); } for(i=0;i { fprintf(fp,"\n"); fprintf(fp,"%s%s%s%s%s%s",temp[i].xh,temp[i].xm,temp[i].nl,temp[i].xb temp[i].dh,temp[i].dz); } if(s! =0)printf("****删除成功! ! ! ****\n"); elseprintf("您所要删除的联系人不存在,请核查拼写及大小写\n"); fclose(fp); } 3.print()输入模块 将最终想要保留的数据信息保存于文件中。 voidprint(structstudentt[],intn) { if(n==0){printf("*****文件为空! ! ****\n");return;} inti; printf("****************************通讯录********************************\n"); printf("学号名字年龄性别电话地址\n"); printf("__________________________________________________________________\n"); for(i=0;i { printf("%-20s%-10s%-8s%-6s%-15s%-20s\n",t[i].xh,t[i].xm,t[i].nl,t[i].xb,t[i].dh,t[i].dz); printf("\n"); } } 4.search()查找模块 链表的查找操作是指在已知链表中查找值为某指定值的结点。 voidchazhao(structstudentt[],intn) { inti; printf("输入选择: 1按姓名查找,2按学号查找: "); scanf("%d",&i); if(i==1)chazhao_xm(t,n); if(i==2)chazhao_xh(t,n); } 5.总体实现 由主程序分别调用子程序,组成一个完整的系统。 主程序 voidmain() { printf("**************************************************\n\n\n\n"); printf("***********欢迎使用学生通讯录管理系统*************\n\n"); printf("**************************************************\n\n"); FILE*fp; if((fp=fopen("通讯录.txt","a"))==NULL) { printf("无法打开文件,按任意键退出! ! \n"); chara; scanf("%c",&a); exit(0); } fclose(fp); for(;;) { intn=0;charch; structstudenttongxunlu[100]; structstudent*p; p=tongxunlu; FILE*fp; if((fp=fopen("通讯录.txt","r"))==NULL) { printf("无法打开文件,按任意键退出! ! \n"); chara; scanf("%c",&a); exit(0); } else while((ch=fgetc(fp))! =EOF) { fscanf(fp,"%s%s%s%s%s%s",p->xh,p->xm,p->nl,p->xb,p->dh,p->dz); p++; n++; } switch(caidan()) { case'1': add();break; case'2': print(tongxunlu,n);break; case'3': chazhao(tongxunlu,n);break; case'4': chushihua();break; case'5': dele(tongxunlu,n);break; case'6': exit(0); } } } charcaidan() { printf("**************************************************\n\n"); printf("******************通讯录主菜单********************\n\n"); printf("***********1.添加联系人2.显示联系人*************\n\n"); printf("***********3.查询联系人4.初始通讯录*************\n\n"); printf("***********5.删除联系人6.退出主菜单*************\n\n"); printf("**************************************************\n\n"); charchoose[7]; do { printf("请输入您的选择(1-6): "); scanf("%s",choose); } while(strcmp(choose,"1")&&strcmp(choose,"2")&&strcmp(choose,"3")&&strcmp(choose,"4")&&strcmp(choose,"5")&&strcmp (choose,"6")); returnchoose[0]; } 四.调试与测试 五.实习总结与体会 通过为期一周的课程设计,对《C语言》这门课程有了更深一步的了解。 它是计算机程序设计的重要理论技术基础,在我们网络工程专业的学习中占据着十分重要的地位。 自己C语言编程的能力有了提高,特别是在文件、指针、数组、函数和结构体方面有了很大提高,另外还学习了课本没有讲到的知识,学会了使用模块化编程的简单方法,另外在对话框的编程要求美观、方面也有了体会。 循环是C语言的重要方法,也是本程序的灵魂,它在本程序中既有“穿针引线”的作用,也起到了对数据进行分析、存贮、读取等重要的作用,本程序在使用循环过程中对循环进行了多方法的应用也是一个“亮点”,它使程序变得结构合理,通俗易懂,也降低了程序的难度。 以后要对这种方法进行深刻的体会。 数组在程序中有着很重要的作用,对数据的贮存、输入、读取起着很重要的作用,本程序几乎所有数据都以数组进行输入、贮存、读取方便了对数据的处理和输入,数组的的使用在本程序中有很大的好处。 函数是实现模块化编程的基础,它使程序变得方面易懂,对修改起了很大作用,降低了编程的难度,一个函数就是一个功能,它使各个功能之间有了一定的独立性,但也有了一定的联系性,一个函数的错误,不会导致整个程序的失败(主函数除外),对函数的良好应用时在本程序中又以深刻的体会,有了很大提高。 结构体的使用,为本程序提供了很大方便,也提高了程序的可读性,结构数组方便了对数据的管理。 这个程序的结构大体是从网络上借鉴的,但是大部分功能模块与任务要求不同,只能自己修改,最后终于调试通过,同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。 因为我们学习知识就是为了实践。 而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。 同时提高了自己对编程的兴趣,使自己对编程有了更深的理解,体会到编程的乐趣。 附录 源代码 #include #include #include structstudent { charxh[20]; charxm[10]; charnl[5]; charxb[10]; chardh[20]; chardz[50]; }; charcaidan() { ; printf("**************************************************\n\n"); printf("******************通讯录主菜单********************\n\n"); printf("***********1.添加联系人2.显示联系人*************\n\n"); printf("***********3.查询联系人4.初始通讯录*************\n\n"); printf("***********5.删除联系人6.退出主菜单*************\n\n"); printf("**************************************************\n\n"); charchoose[7]; do { printf("请输入您的选择(1-6): "); scanf("%s",choose); } while(strcmp(choose,"1")&&strcmp(choose,"2")&&strcmp(choose,"3")&&strcmp(choose,"4")&&strcmp(choose,"5")&&strcmp(choose,"6")); returnchoose[0]; } voidadd() { inti; FILE*fp; if((fp=fopen("通讯录.txt","a"))==NULL) { printf("无法打开文件,按任意键退出! ! \n"); chara; scanf("%c",&a); exit(0); } intnum; printf("您想要增加几个联系人: \n"); scanf("%d",&num); structstudentt[100]; printf("请输入联系人信息\n"); printf("学号名字年龄性别电话地址\n"); printf("--------------------------------------------------------\n"); for(i=0;i { scanf("%s%s%s%s%s%s",t[i].xh,t[i].xm,t[i].nl,t[i].xb,t[i].dh,t[i].dz); printf("_________________________________________________\n"); } for(i=0;i { fprintf(fp,"\n"); fprintf(fp,"%s%s%s%s%s%s",t[i].xh,t[i].xm,t[i].nl,t[i].xb,t[i].dh,t[i].dz); } printf("******已成功添加%d个联系人******\n",num); fclose(fp); } voiddele(structstudenta[],intn) { structstudenttemp[5]; charmingzi[20]; inti,j=0,s=0; printf("输入你要删除人得名字: "); scanf("%s",mingzi); printf("\n"); for(i=0;i { if(strcmp(mingzi,a[i].xm)! =0) { strcpy(temp[j].xh,a[i].xh); strcpy(temp[j].xm,a[i].xm); strcpy(temp[j].nl,a[i].nl); strcpy(temp[j].xb,a[i].xb); strcpy(temp[j].dh,a[i].dh); strcpy(temp[j].dz,a[i].dz); j++; } else { s++; printf("你要删除得人得信息是: \n"); printf("--------------------------------------------------------\n"); printf("学号名字年龄性别电话地址\n"); printf("--------------------------------------------------------\n"); printf("%-12s%-10s%-8s%-15s%-20s\n",a[i].xh,a[i].xm,a[i].nl,a[i].xb,a[i].dh,a[i].dz); } } FILE*fp; if((fp=fopen("通讯录.txt","w"))
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 通讯录 管理 系统 广东 海洋大学