职工管理系统.docx
- 文档编号:29983250
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:17
- 大小:311.55KB
职工管理系统.docx
《职工管理系统.docx》由会员分享,可在线阅读,更多相关《职工管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
职工管理系统
1.需求分析
1.1课程设计的题目及介绍
我们课程设计的题目是班级通讯录管理系统,我们团队分工合作,包括添加、删除、查询学生信息等几大组成部分人。
我负责的是查询学生信息部分和显示信息。
肖燕主要负责添加学生信息部分和整个程序的衔接和调试。
袁亚主要负责删除学生信息等。
随着当今社会的发展,人们的人际关系交往不断增多,在不同的时间,不同的地点处理不同的事情,有时却很难搞清楚每个同学之间的联系方式,尤其是对经常旷课的学生来说,更是难以联系,遇到紧要的事情时,却联系不上本人,所以通讯录能够便捷的给我们带来所需要的相关信息。
一个班级的学生通讯录管理是班级管理的至关重要的一件事,所以每个班级都应该选择一个好的管理方案。
一直以来人们使用传统人工的方式管理文件通讯录档案,这种管理方式存在着许多缺点,如:
效率低、保密性差等,另外时间一长,将产生大量的文件和数据,这给查找、更新和维护都带来了不少的困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,作为计算机应用的一部分,使用计算机对通讯录信息进行管理,具有手工管理所无法比拟的优点。
例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,这些优点能够极大地提高通讯录管理的效率,也是科学化、正规化管理的重要条件。
1.2各部分分析
班级通讯录管理系统是一个专门针对存储学生联系方式以及一些简单个人信息的实用管理系统,它方便了教师对众多学生信息的存储和快速查阅的功能,大大减少了查找过程的时间。
班级通讯录管理系统主要功能分为四个模块:
添加学生信息、查询学生信息、删除学生信息、查看全部学生信息
添加学生信息:
录入学生的基本信息如学号,姓名,性别,出生年,月,日,联系地址,电话,QQ等。
如果任何信息输入错误会有提示相应提示,并要注重新输入,直到输入正确。
全部信息输入完毕后会提示“该生已输入完毕,是否继续输入(y/n)”。
查询学生信息:
可对系统中已录入的信息进行查询,如要查询的学号为123的信息,这时会直接列出学号为123学生的全部信息。
如果学号输入不符合要求,系统会要求重新输入,然后列出学号正确的学生信息。
或者学号输入符合规定,也在系统中没有该学号的学生,也会给出相应的提示“您输入的学号不存在!
”。
删除学生信息:
可对系统中已存在的信息按学号进行删除。
如果学号输入不符合要求,系统会要求重新输入,输入正确后,系统会列出该学号正确的学生信息,并将该记录删除,给出相应提示“删除成功!
”。
或者学号输入符合规定,也在系统中没有该学号的学生,也会给出相应的提示“无此学号!
”。
查看全部学生信息:
选择此项功能会将系统中全部学生记录以列表形式打印到屏幕上。
方便操作的查看。
2.概要分析
2.1单链表结构和系统结构图
变量名
数据类型
描述
num
int
学号
name
char
姓名
sex
Int
性别
year
Int
年
month
Int
月
day
Int
日
address
char
联系地址
tell
char
电话
int
图二:
系统结构图
图一:
单链表结构图
2.2查询学生信息部分流程图
图三:
查询学生信息流程
图四:
添加学生信息流程图
3.详细设计
3.1单链表的编写
开发项目时,以单链表的形式来组织、封装一些常用的方法,以便提高代码的重用率,大大方便了代码的管理。
本系统创建了一个单链表:
list。
主要用来定义学生基本信息。
3.2定义单链表的程序
typedefstructlist{
intyear,month,day,qq,num,sex;
chartel[20];
charname[10];
charaddress[100];
structlist*next;
}node,*link;
3.3操作函数的定义
3.3.1菜单输出函数voiddisplay()
voiddisplay()//显示函数
{cout< cout<<"**********<班级通讯录管理系统>**********"< cout<<"\t1: 添加学生信息"< cout<<"\t2;删除学生信息"< cout<<"\t3;查询学生信息"< voidsearchstu()//查找 {ptr=delptr;//回到表头 intno,p=0;cout<<"请输入您要查找的学号: "; cin>>no;while(no<1||no>1000) {cout<<"您输入的学号不正确,请再次输入! "< while(ptr! =NULL) {if(ptr->num==no) {cout<<"学号: "< cout<<"姓名: "< "< "< cout<<"联系地址: "< "< "< < p=1;break;}ptr=ptr->next;//ptr依序往后走访表 }if(p==0)cout<<"您输入的学号不存在! "< voidprint()//打印函数 {cout<<"**********<班级全部学生信息表>**********"< ptr=delptr;//让ptr回到表头 while(ptr! =NULL) {cout<<"学号: "< "< if(ptr->sex==1)cout<<"\t性别: "<<"男"; elsecout<<"\t性别: "<<"女"; cout<<"\t出生日期: "< cout<<"联系地址: "< "< "< ptr=ptr->next;//ptr依序往后走访表}} cout<<"\t4;查看全部学生信息"< cout<<"\t0;退出系统"< cout<<"****************************************"< 3.3.2结果输入函数voidprint()3.3.3添加信息函数voidins() 3.3.4删除数据函数voiddeletestu3.3.5信息查询函数voidsearchstu() 4.调试分析和测试结果 链表中的结点变量是通过指针变量来访问的。 因为在C语言中是用P—>来表示P所指的变量,又由于结点类型是一个结构类型,因此可用P—>data和P—>next分别表示结点的数据域变量和指针域变量。 指针变量的值要么为空(NULL),不指向任何结点;要么其值为非空,即它的值是一个结点的存储地址。 注意,当P为空值时,则它不指向任何结点,此时不能通过P来访问结点,否则会引起程序错误。 以下是运行后的一些重要截图。 4.1添加学生信息截图 实现思想: 录入完一条信息后,会提示输入完毕,是否继续输入,Y继续输入,N便是回主菜单。 实现思想: 先申请一个学生的链表空间,然后输出提示输入相关信息。 在输入性别时也作了限定,只能输入1或2,。 信息输入完毕后,将指向list单链表的指针向后移动一个单位。 时间复杂度为O (1)。 4.2删除学生信息截图 在删除这一块,遇到问题了,在执行删除命令时总出现错误,无论删除第几条数据,系统只删除第二条记录。 经过了研究和查阅资料,终于把问题解决了。 实现思想: 在删除数据时,若无记录则提示系统中无学生信息,请先输入,此时程序将不向下执行。 否则提示输入要删除的学生的学号,输入学号后,先判断学号是否合法,再判断系统中有无此学号,若无则提示系统中无此记录。 否则将删除该学号的学生信息。 时间复杂度为O(S)。 4.3查询学生信息截图 实现方法稍微简单,如用户选择这项功能,指针回到表头ptr=delptr;然后利用循环语句将系统中所有学生信息以列表的形式表现出来。 使用户清晰的了解全班的学生信息。 实现思想: 在查询数据时,需要先判断此系统中有无记录,若无记录则提示系统中无学生信息,请先输入,此时程序将不向下执行。 否则根据学号查询,需要先判断学号是否合法,然后判断系统中有无此学号,最后输出相应的信息。 时间复杂度为O(s)。 4.4查看全部学生信息截图 实现思想: 在查看全部学生数据时,需要先判断此系统中有无记录,若无记录则提示系统中无学生信息,请先输入,此时程序将不向下执行。 否则根据把系统中的全部信息以列表的形式输出。 时间复杂度为O(S)。 4.5退出截图 退出时会有相应该的提示,感谢使用本系统,并且Pressanykeytocontinue。 5.总结 这次程序设计的是在VC环境下写出一个能为用户提供一个班级学生的通讯录信息进行日常管理的平台,我们主要负责通过这个程序能实现学生信息的添加、删除、查询、统计等基本操作。 开始之前我们必须了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,程序可能不是最重要的,之前的准备工作才是最重要的,了解这个程序的全部运行过程才是最重要的,逐步熟悉程序设计的方法,同时增强实践动手能力,养成良好的编程习惯。 通过对数据结构这门课的学习,我了解到: “数据结构”在计算机科学中是一门综合性的专业基础课。 数据结构的特点是要多实践,不能只了解书上的理论知识,书上的知识可能有时候会很空洞,只有自己多实践才能真正掌握其中的一些方法与诀窍,在平时的学习中,我们更要举一反三,认识到数据结构的本质与学习方法,这样才有助于快速提高我们的编程能力与实践动手能力。 在课程设计中我体会到: 要想一步达到目的的确很难,尤其是刚开始接触这个课题的时候,我们首先在编写之前必须理清这个思路,对总体有个大体的影像,每个人分工也非常重要,这有助于提高整个团队的工作效率。 在所有的准备工作做好后,就可以开始程序的编写,首先完整了解整个系统的功能与结构,开始编写时犯错在所难免,但是总体的思路不能改变,写程序是个漫长的过程,我们每个成员必须有耐心,每编写完成一个部分就要停下来检查一下,一面影响后面的总体效果,对我们初学的来说程序简洁但又不失目的确实很难。 一个星期的数据结构课程设计,从头到尾的实践和体验下来,对于我们来说学到的不仅是那些知识,更多的是团队和合作。 写到最后的收获及体会时感触颇深,也许班级安排的课程设计有着更深层的意义。 它不仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起所能发挥出的巨大潜能! 在设计的同时,我们还发现了自己的不足之处,比如编写程序时不知道哪些可以用更加简洁的语句描述,一些语句在编写的时候不知道错了,只有在调试的时候才能更清楚地了解其中的奥妙,在整个程序完成后,才能从整体了解这个程序,所以通过这次课程设计我还是从中学到很到学习这门专业的方法,在以后的学习中,我一定会沿着这种方法继续努力下去的! 6.参考文献 [1]谭浩强;《C语言程序设计》(第2版);清华大学出版社;2008年;P16-P208; [2]严蔚敏、吴伟民;《数据结构》(C语言版);清华大学出版社;2010年;P1-P40;P263-P283; [3];梁旭、谷晓琳、黄明;《C语言课程设计》(第2版);电子工业出版社;2009年;P32-48; [4]XX知道 [5]XX百科 [6]XX文库 7.致谢 首先感谢学校给我们这次数据结构课程设计的机会,让我们拥有了展现运用自己知识的平台。 然后要感谢老师的谆谆教诲,是他们的悉心指导和严格要求,才使我们的课程设计有了较为完善的一面,才有了我们能力的提高,并在老师的帮助下得到了充分的锻炼。 这里包括以前给我们上过C语言课程课的徐晓蓉老师,还有上了数据结构的孙叶枫老师,当然还有席金菊老师,还有就是我的同学们,组员们。 这里有肖燕同学对我们这部分课程设计的构思和加工,还有查看、显示学生信息的部分工作,袁亚同学删除学生信息部分工作。 我们三个人既分工又合作,经过一星期的努力,终于把程序编好,又通过一周把实验报告写完了。 当然这里也少不了我自己的努力,大家一起的努力。 在此对所有对我给过帮助的致以由衷的谢意。 8.附录 #include usingnamespacestd; typedefstructlist {intyear,month,day,qq,num,sex;chartel[20];charname[10];charaddress[100]; structlist*next;}node,*link; linknewnode,ptr,delptr,q,temp;//声明表结构指针 ints=0; staticintputt=0;//putt记录是否为第一个输入的元素,因为要记录头结点位置 voiddisplay()//显示函数 {cout< cout<<"**********<班级通讯录管理系统>**********"< cout<<"\t1: 添加学生信息"< cout<<"\t2;删除学生信息"< cout<<"\t3;查询学生信息"< cout<<"\t4;查看全部学生信息"< cout<<"\t0;退出系统"< cout<<"****************************************"< voidins()//单链表的创建 {intcsex;if(putt==0){cout<<"请输入学生数据: "< delptr=newnode;//建立新结点 if(! delptr){cout<<"[Error! ! 内存申请失败! ]"< (1);}cout<<"请输入学号: "; cin>>delptr->num;while(delptr->num<100||delptr->num>=999) {cout<<"学号输入错误,请重新输入学号(100-999): "< cin>>delptr->num;}cout<<"请输入姓名: ";cin>>delptr->name; cout<<"请输入性别(1男/2女): ";cin>>delptr->sex;while(delptr->sex! =1&&delptr->sex! =2) {cout<<"性别输入错误,请重新输入性别(1男/2女): "< cout<<"下面输入出生日期: "< "; cin>>delptr->year;while(delptr->year<1900||delptr->year>2010) {cout<<"出生年份输入错误,请重新输入年份(1900-2010): "< cout<<"请输入月: ";cin>>delptr->month;while(delptr->month<1||delptr->month>12) {cout<<"出生月份输入错误,请重新输入月份(1-12): "< cout<<"请输入日: ";cin>>delptr->day;while(delptr->day<1||delptr->day>31) {cout<<"出生日期输入错误,请重新输入日期: "< cout<<"请输入联系地址: ";cin>>delptr->address;cout<<"请输入电话: ";cin>>delptr->tel; cout<<"请输入QQ: ";cin>>delptr->qq;delptr->next=NULL;ptr=delptr;putt=1;s++;} else{cout<<"请输入学生数据: "< if(! newnode){cout<<"[Error! ! 内存申请失败! ]"< (1);} cout<<"请输入学号: ";cin>>newnode->num; while(newnode->num<100||newnode->num>=999) {cout<<"学号输入错误,请重新输入学号(100-999): "< cin>>newnode->num;}cout<<"请输入姓名: ";cin>>newnode->name; cout<<"请输入性别(1男/2女): ";cin>>newnode->sex; while(newnode->sex! =1&&newnode->sex! =2) {cout<<"性别输入错误,请重新输入性别(1男/2女): "< cin>>newnode->sex;} cout<<"下面输入出生日期: "< "; cin>>newnode->year;while(newnode->year<1900||newnode->year>2010) {cout<<"出生年份输入错误,请重新输入年份(1900-2010): "< cin>>newnode->year;} cout<<"请输入月: ";cin>>newnode->month; while(newnode->month<1||newnode->month>12) {cout<<"出生月份输入错误,请重新输入月份(1-12): "< cin>>newnode->month;} cout<<"请输入日: ";cin>>newnode->day; while(newnode->day<1||newnode->day>31) {cout<<"出生日期输入错误,请重新输入日期: "< cin>>newnode->day;}cout<<"请输入联系地址: "; cin>>newnode->address;cout<<"请输入电话: "; cin>>newnode->tel;cout<<"请输入QQ: "; cin>>newnode->qq;newnode->next=NULL; ptr->next=newnode;//把新结点加在表后面 ptr=ptr->next;//让ptr保持在表的最后面 s++;}} voiddeletestu()//删除 {intno,i=0; cout<<"请输入您要删除的学号: ";cin>>no; q=delptr;if(no==q->num) {delptr=q->next;deleteq;i=1;cout<<"删除成功! ";} if(! i) {while(q) {if(q->next){if(no==q->next->num) {temp=q->next;q->next=q->next->next;deletetemp;i=1;cout<<"删除成功! ";break;}} else{break;}q=q->next;}}if(! i){cout<<"无此学号! ";}} voidsearchstu()//查找 {ptr=delptr;//回到表头 intno,p=0;cout<<"请输入您要查找的学号: "; cin>>no;while(no<1||no>1000) {cout<<"您输入的学号不正确,请再次输入! "< while(ptr! =NULL) {if(ptr->num==no) {cout<<"学号: "< cout<<"姓名: "< "< "< cout<<"联系地址: "< "< "< < p=1;break;}ptr=ptr->next;//ptr依序往后走访表 }if(p==0)cout<<"您输入的学号不存在! "< voidprint()//打印函数 {cout<<"**********<班级全部学生信息表>**********"< ptr=delptr;//让ptr回到表头 while(ptr! =NULL) {cout<<"学号: "< "< if(ptr->sex==1)cout<<"\t性别: "<<"男"; elsecout<<"\t性别: "<<"女"; cout<<"\t出生日期: "< cout<<"联系地址: "< "< "< ptr=ptr->next;//ptr依序往后走访表}} voidmain()//主函数 {charkey,confirmkey; while (1) {display();cout<<"请选择操作(1-4),退出(0)"< {case'0': {cout<<"感谢您使用本系统! "< (1);} case'1': {ins();cout<<"该生已输入完毕,是否继续输入? (y/n)"; cin>>confirmkey;while(confirmkey=='y'||confirmkey=='Y') {ins();cout<<"该生已输入完毕,是否继续输入(y/n)";cin>>confirmkey; }};break; case'2': {deletestu();};break; case'3':
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工 管理 系统