Linux下简易通讯录.docx
《Linux下简易通讯录.docx》由会员分享,可在线阅读,更多相关《Linux下简易通讯录.docx(42页珍藏版)》请在冰豆网上搜索。
Linux下简易通讯录
项
目
设
计
报
告
项目名称:
Linux下的简易电话簿
项目成员:
付荣山马章印卞士伟
项目时间:
2013.10.27—2013.11.3
目录
1需求分析…………………………………………………………3
1.1功能需求……………………………………………………3
1.2性能需求……………………………………………………3
1.3安全需求…………………………………………………3
1.4项目需求…………………………………………………3
2模块分析…………………………………………………………5
2.1总体模块流程图……………………………………………5
2.2总体
3详细设计…………………………………………………………6
3.1学生模块……………………………………………………6
3.2教师模块……………………………………………………7
3.3管理员模块…………………………………………………8
心得总结……………………………………………………………11
附录…………………………………………………………………13
1需求分析
1.1功能需求
1.1.1.地址簿内容包括姓名和号码,姓名长度不超过8个字符,
号码长度不超过16个字符。
姓名中可包括字符数字及符号,号码中
仅可包括数字和字符“+”。
地址簿条数不可超过1000条。
1.1.2.地址簿可实现浏览全部条目,增加条目,删除条目,编辑条目,
查找条目和快速匹配
1.1.3.地址簿默认按照姓名顺序排序,即A-Z。
可实现按姓名逆向排。
序,按号码顺序排序,按号码逆序排序功能。
1.1.4.地址簿有保存功能
1.2性能需求
1.2.1.该系统占用的内存不能太大,要建立索引表
1.2.2.在通讯录中查找的速度要快
1.3安全需求
1.3.1.用户登录时必须输入密码
1.3.2.密码必须使用密文,不能使用明文
1.3.3.数据必须安全存储
1.4项目需求
1.4.1.需提供详细完整的流程图,概要设计文档和详细设计文档。
1.4.2.设计模块清晰,代码要求做到低耦合,高重用。
2总体模块分析
2.1总体基本流程图分析
如系统功能模块框图所示,本系统主要有三大模块构成
(1)编辑信息模块
编辑信息模块主要完成对电话簿的添加,删除,修改的工作。
在此电话簿管理系统中,在此电话簿系统中可以用键盘逐个添加记录。
记录由与联系人有关的基本信息字段构成包括姓名和电话。
除此之外可以删除了修改信息。
(2)查询信息模块
查询记录模块主要完成在数组中查询满足相关条件记录。
在此电话簿管理信息系统中,用户可以按照联系人的姓名或联系人的电话号码在数组中进行查找。
若找到该记录,则显示信息。
(3)显示信息模块
显示信息模块可以按照地址簿默认按照姓名顺序排序,即A-Z。
可实现按姓名逆向排
3.详细设计模块分析
3.1学生模块主要函数
—voidstu_information(structstu*,int*)
—参数:
学生信息链表的首地址
该学生的学号
—返回值:
无
—功能:
查看自己的所有信息
—voidchoose_course(structstu*,int*,structteac*)
—参数:
学生信息链表的首地址
该学生的学号
老师信息链表首地址
—返回值:
无
—功能:
该学生选课
3.2老师模块主要函数
—voidteac_information(structteac*,int*)
—参数:
老师信息链表的首地址
该老师的编号
—返回值:
无
—功能:
查看自己的所有信息
—voidchange_score(structstu*,structteac*,int*)
—参数:
学生信息链表的首地址
老师信息链表的首地址
老师的编号
—返回值:
无
—功能:
该老师修改学生成绩
3.3管理员模块主要函数
对学生
—voidadd_stu_information(structuser*,structstu*)
—参数:
用户密码链表的首地址
学生信息链表的首地址
—返回值:
无
—功能:
管理员添加一个学生信息
—voidstu_information(structstu*)
—参数:
学生信息链表的首地址
—返回值:
无
—功能:
管理员查看学生的所有信息
—voidchange_stu_information(structstu*)
—参数:
学生信息链表的首地址
—返回值:
无
—功能:
管理员修改学生信息
—voiddelete_stu_information(structuser*,structstu*)
—参数:
用户密码链表的首地址
学生信息链表的首地址
—返回值:
无
—功能:
管理员删除学生信息
对老师
—voidadd_teac_information(structuser*,structteac*)
—参数:
用户密码链表的首地址
老师信息链表的首地址
—返回值:
无
—功能:
管理员添加一个老师信息
—voidteac_information(structteac*)
—参数:
老师信息链表的首地址
—返回值:
无
—功能:
查看老师的所有信息
—voidchange_teac_information(structteac*)
—参数:
老师信息链表的首地址
—返回值:
无
—功能:
修改老师的所有信息
—voiddelete_teac_information(structuser*,structteac*)
—参数:
用户密码链表的首地址
老师信息链表的首地址
—返回值:
无
—功能:
删除老师的所有信息
心得体会
学生管理系统是一功能十分強大的管理系统,它集各种功能用于一身,可以完成教学中的各种操作,如老师对学生的成绩的添加,修改等。
学生管理系统功能强大,程序编写也十分复杂,工作量很大,编写需要特别认真。
一个小小的失误都可能使程序出现很多的bug。
建立学生管理系统,采用计算机对学生以及老师进行管理,进一步提高办学效益和现代化水平。
帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。
这次完成学生管理系统分三步.
(1)是对要写成的学生管理系统做全面的需求分析,即对学生管理系统要使用的编写方法,管理功用,运行方式进行分析,并作出明确的解决方案.针对这次的学生管理系统,它的流程是:
以管理员,老师和学生三种方式进入,要有密码认证,错误三次将自动退出.学生进入系统在能查看此学生的各科目的成绩,平均分,还能修改自己的密码以及选课.老师进入系统也能查看对应各位学生的成绩,并能添加,修改学生的成绩,对学生成绩进行总分,平均分的运算,以及修改自己的密码.管理员进入系统分别能对老师和学生进行管理,都有四种功能,分别是添加,查看,修改和删除学生或老师的信息.
(2)是程序的编写.由于学生管理系统的功能十分強大,程序的编写也十分的复杂,所以我们三人一组,一起编写程序,遇到问题是共同解决.程序的编写是一项困难的任务,完成此程序必需运用书中的大部分知识,而且要有清晰的思路,有较強的语言组织能力.这次程序的编写与之前有很大的不同之处,要求我们创建一个工程,包括student.c,teacher.c,admin.c,share.c,share.h.不同程序模块的链接功能.刚开始大家都不熟悉如何创建项目,但随着大家的慢慢熟悉,都能熟练地创建项目并运用.
(3)是程序的检查和调用.程序写完后并不能保证它一定能运行,所以要对它进行调试,发现其中的bug,并作出相应的修改,以完善程序,使其逻辑性,运算能力都符合题目要求,使学生管理系统的运行
程序系统中包括学生模块,教师模块,管理员模块,学生成绩查询时在账号及学号进入界面后能够对其的选修课成绩查询,但是不能修改,可以对自己的密码进行修改。
教师可以上传成绩。
管理员可以对教师信息,学生信息,课程信息进行修改与添加。
但是不能对其成绩进行改变。
学生管理系统,运行,管理员登陆账号为120,密码为123456.在管理员界面可以修改自己的密码.
经过这次开发,我们尽力了从需求分析到成品发布的全部过程。
从中我们认识到,要开发一个软件,必须对它所有涉及到的各个方面都要有所了解。
关键地方必须熟悉。
作为设计者的系统分析阶段,必须对不同模块的联系,工作量有正确的认识才能合理的分配任务。
开发者要时刻保持清醒,要有合理的进度和质量的控制,才能保证按时按量的完成任务。
附录(代码)
Share.h
FILE*fp;
FILE*fp1;
FILE*fp2;
/*学生*/
/*----------------------------------------------------------------------------*/
voidstudent(St,Te,T);//学生模块函数
voidst_password(structstudent*,structteacher*);//学生验证密码
voidstudent_information(structstudent*,structteacher*,structstudent*);//学生查看自己的信息
voidchange_student_password(structstudent*,structteacher*,structstudent*);//学生修改自己的密码
voidchoose_course(structstudent*,structteacher*,structstudent*);//学生选课
structstudent*create_student();//创建学生链表
voidwb_st(structstudent*);//覆盖学生信息
structstudent//学生基本信息
{
intID;
charname[32];
charkey[32];
intage;
intgrade;
intplacing;//名次
intsymble;//学生选课标号
floatscore[3];//float[0]为学生自己成绩,float[1]为班级平均成绩,float[2]为所有班级的平均成绩
structstudent*next;
};
/*----------------------------------------------------------------------------*/
/*老师*/
/*----------------------------------------------------------------------------*/
voidteacher(St,Te,T);//老师模块函数
voidte_password(structstudent*,structteacher*);//老师验证密码
voidteacher_information(structteacher*,structstudent*,structteacher*);//老师查看自己的信息
voidchange_teacher_password(structteacher*,structstudent*,structteacher*);//老师修改自己的密码
voidchange_s