学生通讯录.docx
《学生通讯录.docx》由会员分享,可在线阅读,更多相关《学生通讯录.docx(12页珍藏版)》请在冰豆网上搜索。
![学生通讯录.docx](https://file1.bdocx.com/fileroot1/2023-3/2/396a0605-c348-4d95-8bff-e599f3754ade/396a0605-c348-4d95-8bff-e599f3754ade1.gif)
学生通讯录
题目学生通讯录系统
院系信息科学与技术学院
专业计算机科学与技术
班级学生通讯录系统
一.概要分析
随着社会的不断发展,人们的生活变的越来越富裕了,但同时也越来越忙碌了,每个人每天都在为各自的生活不停的工作。
在这种环境下,进入21世纪以来,中国大学也发生了翻天地覆的变化,大学生的生活更是丰富多彩了,大学生也忙碌起来了,每天除了学习外,也有很多课外活动,每个学生都有自己的个人私事处理,这样同学们经常不在一起,有时有重要或大事情发生很难取得联系相互通知。
为了解决上述的问题,方便学生与学生之间、学生与老师之间的相互联系,把学生的基本信息组织起来一起进行统一管理,以便在遇到紧急情况下能最快的与学生取得联系,由此想到做一个简单的班级学生通讯录系统的必要。
该系统将运用C语言的基本知识,具体将通过对C语言中基本数据类型、数据的输入和输出、数组、结构体、指针以及链表等语句的应用设计出一个简单程序来实现对学生基本信息的管理。
在程序的界面里面可以选择添加、删除、查询、修改和打印输出学生的信息,其中删除、查询、修改学生信息都通过对学生学号的选择来实现,本程序能基本满足简单学生信息管理以及通讯联系的使用需要,但功能还不够齐全,界面还不够美观,我会继续努力学习,改正程序中存在的不足。
二.系统需求
1.使用范围需求
该系统是根据班级学生信息制作的通讯录系统,主要便于同学之间的联系,由班长或班主任(管理员)设置,不过该系统很容易改造为更大空间的对学生信息的管理,比如增加考试成绩,荣誉与记过处分的记录管理,为参观提供方便。
2.功能需求
添加、删除、查询、修改和打印输出学生信息(保证学生信息能全部正确输入),其中这些功能的实现都将运用链表知识来实现,使用完后能正确退出本系统。
3.性能需求
虽然系统的数据量不是很大,但是也要保证数据的长期完整性和安全性。
系统操作简单易行,查询灵活方便。
通过系统的实现,可为同学或老师们提供查询查询功能以获得学生的信息。
4.系统平台需求
操作系统:
Windows系列
开发工具:
VisualC++6.0
VisualC++6.0是Microsoft公司推出的功能最强大、最复杂的语言产品之一,它是目前为止在Windows环境下进行大型软件开发的首选。
其具有如下特点:
(1)VisualC++的语法符合ANSLC++标准,并在此基础上针对Windows操作系统增加了一些语句;
(2)集成了MFC(MicrosoftFoundationClass)类库,MFC封装了WindowsAPI函数和消息,使程序员可以使用MFC高效率地开发各种应用程序;
(3)提供了MFCAppWizard,可方便地生成程序框架;
(4)提供了基于MFC的ClassWizard,通过它可以轻松地完成对各种MFC类的使用与维护。
VisualC++6.0作为VisualStudio家族中的一员,是Microsoft公司以C++语言为基础开发的可视化集成开发工具,与其他编程语言VisualBasic6.0、VisualForPro等一起,成为广大程序员喜爱的开发平台。
5.系统主界面需求
要求提供一个界面供管理员来选择以实现对学生基本信息的添加、删除、查询、修改等功能,也就是说提供一个菜单供管理员或用户选择,菜单要求尽量简洁、直观、美观。
本系统最终主界面如下:
6.数据流图
由用户选择选择输入学号查询学生信息,通过查询系统,进入处理,最终输出用户想要的信息。
该数据流图如下图所示:
系统管理员根据权限成功登录,根据需要对数据进行添加和修改或删除。
成功修改后,可对数据保存。
管理员模块数据流图如下图所示:
数据
三.系统设计
经过分析,对学生通讯录系统流程整理,得出其使用过程如下:
进入系统之后,来访者根据主界面菜单进行选择来实现其相应功能,输入相应的数字选项将会出现其进一步的界面菜单和对话框。
1.程序流程图
程序流程图如图3-1所示。
首先登录系统,如果是管理员的话要进行身份验证,验证成功后进入管理员模块。
管理员可以对系统内部数据进行修改、添加,并且可以控制整个系统的运行状态决定是否退出本系统。
如果你是一般用户,则不需要进行身份验证,直接进入一般用户模块。
选择输入,通过学生学号查询,你将得到你所需要查询的相关信息。
一般用户只能进行查询,不能对数据进行添加、删除、修改。
2.系统结构图
根据功能描述,学生通讯录系统可以分为2个主要功能模块,用户模块和管理员模块,此系统结构图如图3-2所示。
管理员模块的实际主要功能是对际情况有所改变的数据进行修改和添加新数据,并保证其及时性和准确性。
用户查询模块的主要功能是用户输入要查询学生信息的学号,则提供对应学生的相应信息,包括学生的学号,姓名,性别,年龄,电话号码。
用户还可以选择要不要打印出所查询的所有信息功能。
图3-1程序流程图
图3-2程序结构图
四.重要算法描述及部分代码
1.用结构体描述学生信息,结构体是由若干成员组成,各成员可有不同的类型。
本系统学生信息可用结构体描述为:
typedefstructStudent//学生信息
{
signedshortid;//学号
charname[11];//姓名
charsex[7];//性别
signedshortage;//年龄
chartelNum[16];//电话号码
}Student;
2.主要函数和数据的声明,其中对学生信息的查询,添加,修改,删除用链表实现,链表是最简单也是最常见的一种动态数据结构,链表中每一个元素称为结点,每个结点都应包括两部分:
一是用户需要用的实际数据,二是下一个结点的地址。
voidprintMenu();//打印菜单
voidprintBye();//打印结束语
voidprintList();//打印所有学生信息
voidprintStudent(Studentst);//打印学生信息
Node*lookupNode(signedshortstid);//根据学号查询学生信息。
intaddNode(Studentst);//添加学生信息。
成功返回链表长度。
内存分配失败-1;//信息重复0
intdeleteNode(signedshortstid);//根据学号删除学生信息。
成功返回链表长度;
//未找到-1
intupdateNode(Studentst);//根据学号修改学生信息成功返回链表长度;未找到0
3.主要模块函数的定义,以实现系统的功能和对数据的操作。
//查询功能的实现
Node*lookupNode(signedshortstid)
{
Node*temp=begin->next;
while(temp)
{
if(temp->data.id==stid)
returntemp;
temp=temp->next;
}
returnNULL;
}
//添加学生信息功能的实现
intaddNode(Studentst)
{
if(lookupNode(st.id))
return0;
Node*temp=(Node*)malloc(sizeof(Node));
if(!
temp)
return-1;
temp->data=st;
temp->next=begin->next;
begin->next=temp;
return++len;
}
//删除功能的实现
intdeleteNode(signedshortstid)
{
Node*temp=begin;
Node*pos=NULL;
while(temp->next)
{
if(temp->next->data.id==stid)
{
pos=temp->next;
temp->next=pos->next;
free(pos);
return--len;
}
temp=temp->next;
}
return-1;
}
//修改功能的实现
intupdateNode(Studentst)
{
Node*temp=lookupNode(st.id);
if(!
temp)
return0;
temp->data=st;
returnlen;
}
4.主程序也就是main()函数的实现,是系统的核心部分,其中用到大量C语基本语句,如循环语句、switch语句、break语句以及输入、输出等语句。
最主要的是它可以实现对各单独模块函数的调用以实现系统具体的功能,它首先调用系统菜单以供用户选择,然后main()函数将根据用户对菜单的选择继续调用其他函数,main()函数实现到以下代码部分就可以输出主界面菜单了。
voidmain()
{
//初始化链表。
begin=(Node*)malloc(sizeof(Node));
begin->next=NULL;
printf("----------------------------------------------------------------------------\n");
printf("---信A0611班级信息管理系统---\n");
printf("---2008-11-20---\n");
printf("----------------------------------------------------------------------------\n");
printf("||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||\n");
printMenu();//调用printMenu()函数,显示菜单
……
}
主界面菜单图如下:
用户根据菜单选择,例如选择1.增加学生信息,将会出现以下界面:
输入一个学生信息后,又提示你输入下一个新学号,这时用户如果不想在输入新学号,而想实现其他选择,则输入0即可,输入0将会回到主菜单(系统有提示),用户在再输入对应选择项目号,main()函数就调用对应的函数模块来实现其功能。
五.系统测试
1.系统测试概述
系统测试是软件的一个重要的组成部分。
软件测试在软件生命周期里横跨两个阶段。
通常在编写出每个模块之后就对它做必要的测试。
软件测试的目的与其它阶段的目的相反。
软件测试的目的是发现错误。
一般说来,测试不是由编写程序本人进行,它由专门的人员对它进行测试。
软件一般有两种方法:
黑盒测试和白盒测试。
黑盒测试把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。
白盒测试是把程序看成一个透明的盒子里,也就是完全了解程序的结果和处理过程。
软件测试过程一般分成以下几个步骤:
模块测试:
保证每个模块作为一个单元能正确运行,所以模块测试通常称为单元测试。
在这个测试步骤中所发现的往往是编码和详细设计的错误。
子系统测试:
把经过单元测试的模块放在一起形成一个子系统来测试。
模块相互间的协调和通信是这个测试过程中的主要问题,因此这个步骤着重测试模块的接口。
系统测试:
把经过测试的子系统装配成一个完整的系统来测试。
验收测试:
把软件系统作为单一的实体进行测试,要用户参与。
目的是验证系统确实能够满足用户的需要,在这个测试步骤中发现的往往是系统需求说明书中的错误。
平行测试:
同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。
本系统使用黑盒子法进行测试。
下面就输入一些信息,看能不能输出相应正确的结果。
2.系统测试
根据上一页提供的菜单界面输入相应信息进行测试,通过对测试结果的分析,测试数据与理论数据一致,能达到预期效果,说明该系统运行正常。
六.总结
通过这次程序实习这门课的学习,第一次自己做系统,感觉受益匪浅,现将学习心得体会总结为以下几点:
1.进一步学习、复习和巩固了以前所学的C语言的一些知识,并让我对C语言有了更深刻的认识,学会了更多算法的设计和用法。
2.通过做这个简单的系统,对我的程序设计能力培养和软件工程能力的培养具有重要的作用和意义。
3.提高了的自己的动手能力和独立思考的能力,能运用所学的知识去解决一些实际的问题,这是在以前的学习过程没有体会到过的。
4.在开发一个系统时,前期的分析准备工作非常的重要。
对于系统的需求要明确,这样才能做到有的放矢。
特别是对于系统中数据的存储和重要算法的设计,设计的不好会出现大量的冗余,不仅浪费存储空间,还影响到系统的整体效率。
5.在对具体实现功能模块进行编程时,要养成良好的加注释的习惯,这样的话不仅能理清思路,而且可以为以后的调试程序带来很大的方便。
6.独立思考的同时,要虚心向别人请教,可以达到事半功倍的效果。
在具体编程实现系统功能的过程中,我遇到了不少的问题,我曾通过不同渠道向同学、老师以及上相关网站、到bbs论坛寻求答案,收到了很好的效果。
以上几点是自己这次程序设计实习和做系统过程中的一些体会,感觉学校开设这门课程很有必要,它不仅可以检验我们对课程和知识技能的掌握程度,而且对将来我们做毕业设计起到充分的指导作用,同时提高了我对这学期软件工程这门课程学习的兴趣,因为这次做系统始终都用到了软件工程的思想。
由于是第一次自己做系统,该系统里面必然存在一些缺陷和不足,如:
用户界面不够美观,出错处理不够等多方面问题,希望老师今后在我们学习的过程中能够提出更多宝贵性的意见和建议,好让我在后面的学习过程中加强。