人才招聘网站的设计与实现.docx
- 文档编号:4142640
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:34
- 大小:174.73KB
人才招聘网站的设计与实现.docx
《人才招聘网站的设计与实现.docx》由会员分享,可在线阅读,更多相关《人才招聘网站的设计与实现.docx(34页珍藏版)》请在冰豆网上搜索。
人才招聘网站的设计与实现
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2011年秋季学期
面向对象课程设计
题目:
人才招聘网站的设计与实现
专业班级:
09级信息与计算科学01班
姓名:
学号:
指导教师:
成绩:
摘要
一般来讲,课程设计教学实验复杂一些,深度更广并且更加接近实用。
目的是通过课程设计的综合训练,培养学生实际分析问题、编程和动手能力,使学生对数据结构进行更深一层的了解,培养同学们对学习数据结构这门课程的兴趣,让同学们学会如何去查找资料和整合处理这些资料的能力,也为以后的大学毕业设计论文打下了一个初步的基础。
这些课程设计都是比较难的,要分成几个小项目,几个学生一组,培养团队协作精神。
最终帮助学生系统掌握课程的主要内容,更好地完成教学任务。
(1)基本掌握面向过程程序设计的基本思路和方法;
(2)达到熟练掌握数据结构的基本知识和技能;
(3)能够利用所学的基本知识和技能,解决简单的程序设计问题。
关键词:
课程设计,人才招聘网站的设计与实现
前言
人类已经跨入二十一世纪,科学技术的发展日新月异,初见端倪的只是经济不仅预示着经济社会生活将发生新的巨大的变化,更预示着信息社会已经来临。
信息的获取、分析、处理、发布、应用能力将作为现代人最基本的能力和文化水平的标志。
以计算机技术和网络技术为主的信息技术,已经在各个领域得到广泛的应,并逐步改变着人们的工作、学习和生活方式。
目前,世界各国都在积极发展信息技术教育。
现在人类社会一个新的发展时期正在到来,驱动人类社会发生这次变革的核心技术或标志技术就是信息技术。
在这种形式下,整个社会都不可能脱离网络而存在。
网络技术已经成为现代信息技术的主流,人们对网络的认识也随着网络应用的逐渐普及而迅速改变。
将来,网络必然将成为和电话一样通用的工具,成为人们生活、工作、学习中必不可少的一部分。
第1章需求分析
1.1数据需求
需求分析阶段主要有两个方面的任务:
分析招聘的数据要求和分析招聘的处理要求。
为了把招聘的数据清晰明确地表达出来,系统分析员通常建立一个概念性的数学模型。
概念性模型是一种面向问题的数学模型,是按学生的观点来对数据和信息建模。
最常用的表示概念性数据模型的方法是实体-联系方法。
这种方法用E-R图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法,该方法又称为E-R模型,E-R图中共用三种符号:
实体、属性和联系。
1.2功能需求
(1)会员登录功能
在这个功能里包括会员登录及身份验证:
用户注册成为会员、验证用户的注册信息、会员登录系统时的身份验证;。
(2)求职招聘信息功能
求职招聘信息功能包括在线发布求职招聘信息:
用户浏览招聘求职信息、用户按要求对信息进行查找、个人用户发布求职信息、企业用户发布招聘信息、用户查看自己发布的信息。
(3)系统管理
系统管理:
公司会员管理、个人会员管理、新闻发布管理、调查信息管理。
另外,我为了保证个人信息不外泄,在进入本系统之前我必须输入下确的密码。
这样可以防止非法学生越权操作损害数据库而造成损失。
1.3创新需求
在基本要求达到后,可进行创新设计,如系统招聘功能控制,对管理员级和一般级别的招聘系统功能操作不同
第2章系统设计
2.1总体设计
总体设计即概念模型设计,使用数据流图可以使我的逻辑结构一目了然,用图形表示出来,将更利于我理解和设计。
以下为学籍管理系统的数据流图:
在信息世界中,信息从客观事物出发流经数据库,通过决策机构最后又回到客观世界,信息的这一循环经历了三个领域:
信息世界,数据世界,现实世界。
现实世界的事物反映到人的头脑中,人的大脑对它有个认识过程,经过分析(选择、命名、分类等)进入信息世界。
这些信息再进一步加工、编码,然后进入数据世界,而软件系统的开发工作需要考虑这两个方面的问题,也就是要考虑系统开发所需要的数据,以及如何对这些数据进行操作。
这两个问题贯穿了整个软件系统的开发过程,这也就是数据库的设计问题,软件设计的一个核心。
2.2详细设计
在系统设计的开始,首先考虑的是如何用数据模型来数据库的结构与语义,以对现实世界进行抽象。
在本系统中采用目前广泛的“实体联系模型”(ER模型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。
1.主函数intmain(void):
设置背景颜色和字体颜色、调用设计者的相关信息函数、调用Menu函数,实现系统的主要功能处理;
2.主菜单Menu()函数:
确定如何选择所需功能,调用读取文件信息、数据输入、显示、排序、查找、增加、删除、修改、保存等函数,完成招聘信息管理系统的数据处理;
3.读取文件的信息Read()函数:
从文件中读取招聘信息的信息表并显示出来;
4.数据输入函数creat():
建立链表,完成招聘信息录入;
5.数据显示函数output():
将招聘信息数据显示出来;
6.数据统计函数count():
统计招聘人数;
7.数据增加函数insert():
添加招聘信息;
8.数据删除函数cancel():
删除招聘信息数据;
9.数据修改函数modify():
修改招聘信息等信息数据;
10.数据查找函数find():
查找某一招聘信息等信息情况;
11.数据排序函数sort():
将存储在文件中的招聘信息按一定要求排序;
12.数据保存函数save():
对系统中的数据进行相关的操作后将其保存起来;
13.作者信息函数editor():
显示设计者的相关信息;
14.登陆函数Pass():
设定使用权限。
程序流程图
程序流程图主是对各功能模块的具体描述,以一种图表的方式简洁明了的将各模块的呈现出来,通过这些流程图可清楚的看出整个程序的运行过程,体会程序的流畅性。
1.
主函数流程图
图1-1主函数的流程图
2.各子功能函数流程图
图1-2Menu函数流程图
图1-3删除函数的N-S流程图
第3章设计及用法说明
这是一个关于招聘信息管理系统,具有输入、输出、统计、删除、查询、修改数据等功能,建立了一个含有名称、类别、编号、工资、总工资等成员的结构体数据类型的变量structepployee。
1.用户使用时,根据提示操作,进入登陆页面。
输入登陆名admin,登陆密码admin,进入操作系统。
如果登陆信息输错三次,自动退出系统。
2.按显示的数字选择操作,先输入招聘数据,然后进行其他操作。
所以输入“1”,开始录入相关数据。
用户录入完数据后,在名称处键以“#”,结束操作。
3.提取文件信息,输入数字“0”,回车确定操作,将系统以前操作过的保存的文件提取出来,并显示。
4.显示招聘信息,输入数字“2”,将需显示的招聘信息的编号输入,回车确定操作,系统提取相关数据并显示。
5.将输入的数据进行统计排序,输入数字“3”,回车确定操作,系统显示工资统计表、及各项工资的平均值。
6.查找招聘信息,输入“4”,回车确定操作,系统显示“请输入要查找的编号”,输入想要查找的招聘的编号,系统提取保存的数据,并显示出来。
7.增加招聘信息,输入“5”回车确定操作,系统显示输入的页面,将需增加的招聘信息输入,输入完后回车确定,系统显示成功插入,并显示招聘信息信息表。
8.删除招聘信息,输入“6”,回车确定操作,系统显示“请输入要删除的编号”,输入要删除的招聘编号,系统将保存的数据删除,并显示剩余的招聘信息信息表。
9.修改招聘信息,输入“7”,回车确定操作,输入要修改的编号,系统显示该招聘的信息,将改后的信息输入系统。
10.将所有操作过的信息保存,输入“8”,回车确定操作,系统显示成功保存信息。
11.退出系统,输入“9”,回车确定操作,系统显示退出的页面,输入任意一个键,退出系统。
(温馨提示:
因时间的限制等原因,本程序内存设置还不够很完善,所以对于整个系统的使用应按照系统设置的顺序,一项项完成下来,方可不出现漏洞。
如果没按照顺序操作,可能会在使用的过程出现一些小差错。
)
第4章系统调试
1.开始运行程序,进入系统页面,显示制作者的信息。
图2-1显示制作者信息的页面
2.任意键继续操作,进入登陆页面。
图2-2登陆系统的页面
输错管理员名字或者密码进入到的页面如下
图2-3登陆系统出错的页面
3.成功进入操作系统,按照使用说明进行操作,进入的是总系统的提示页面。
图2-4系统操作的页面
图2-5输入数据的页面
图2-6文件提取信息的页面
图2-7排序统计的页面
图2-8查找招聘信息的页面
图2-9查找不到招聘信息的页面
图2-10退出系统的页面
第5章小结
通过两星期的数据结构程序设计实习,我从中受益匪浅,并且对数据结构程序设计这一门课程有了更深一步的认识。
我把这学期所学的理论知识和实践联系起来,在所开发的项目中渐渐成长。
虽然我对这些新的知识运用得还不是很熟练,但是相信我也在滴水穿石地成长起来。
发现问题,提出问题,解决问题,使我从不足之处出发,寻找新的学习方向。
通过这个程序设计,我不仅提高了动手操作能力,对C++语言有了更深的认识,能够更好地运用C++语言进行编程设计,同时在思维、看待问题的全面性等方面也有了很大的提高。
不过由于时间、经验不够、对语言的掌握程度不深等问题,在这个系统设计还存在一些问题,比如内存设计还不够完善,整个系统的流畅性等,希望可以在今后的设计上能够解决这些问题,做的更好。
这次学习使我克服了偷懒的毛病,这在我以后的学习和工作中的心理定位与调节有很大的帮助。
我感受到了做系统是一项非常烦琐周密的学习活动,它不但需要一个人周密的思考问题的能力,处理问题的能力,还需要有足够的耐心和严谨治学的作风,来不得半点马虎。
在实习中,我设计了一组对招聘进行管理的系统,它基本满足了界面友好,易于操作的要求,因此更利于招聘操作方便,运行简易,从而达到对招聘更加有效系统的管理,并且速度更快内容更直接地达到招聘所想要的效果。
在该软件中我实现了对招聘信息的输入和存取、读取,对招聘相关信息的删除和插入,并且可以按学号查询招聘的相关信息,以及按平均分的高低对招聘进行排序等的功能。
但软件中仍然存在一些不足,例如在输入有关招聘的数据时名字没有限定,插入新的招聘信息的程序还有待完善,删除后没有把新的招聘信息列表进行保存,菜单不美观等。
学好计算机要重视实践操作,不仅仅是学习数据结构,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以在以后的学习过程中,我会更加注视实践操作。
我一边实习一边探索,发现理论和实践要充分地结合,是需要扎实的基本功的,这就表明学好基础知识是理论付诸实践的前提。
在实习中我学到了很多,希望在以后我能充分利用实习的机会充实自己,并希望这样的机会能被更好更多地提供。
参考文献
[1]刘振安、刘燕君、孙忱.C++语言课程设计-北京:
机械工业出版社,2007.1
[2]陈维兴,林小茶.C++面向对象程序设计教程-北京:
清华大学出版社,2004.8
[3]网站:
附录源程序
//人才招聘管理系统
#include
#include
#include
#include
#include
#include
#defineNULL0
intconstN=20;
#defineLENsizeof(structepployee)
usingnamespacestd;
intn=0;//定义一个全局变量统计招聘工作数
//定义一个招聘信息的结构体
structepployee
{
charname[N];//用来存放名称
charsex[N];//用来存放类别
longid;//用来存放编号
floatpaid[3];//用来存放工资
inttotal;//用来存放总工资
structepployee*next;
};
//招聘类
classInformation
{
public:
Information();//构造函数.
~Information();//析构函数.
epployee*creat();//建立链表
voidoutput(epployee*head);//显示招聘信息
intcount(epployee*head);//定义函数count()统计招聘总数
epployee*insert(epployee*head);//指针函数*insert()用来添加招聘信息.
epployee*cancel(epployee*head,longid);//指针函数*cancel()用来删除招聘信息.
epployee*find(epployee*head,longid);//指针函数*find()用来查找招聘信息.
epployee*modify(epployee*head,longid);//指针函数*modife()用来修改招聘的信息.
voidsort(epployee*head);//定义paixu()函数将招聘的总额从大到小排列并输出
voidaverage(epployee*head);//定义招聘信息平均值的函数
voidsave(epployee*head);//保存文件信息
epployee*Read();//读取文件信息
private:
epployee*p1,*p2,*p3,*head,st;
};
Information:
:
Information()
{cout<<"******************************************************************************\n";
cout<<"------------------------<<欢迎您使用招聘信息管理系统>>------------------------\n";
cout<<"******************************************************************************\n\n";
}
//作者的信息和提示
voideditor()
{
cout<<"\n\t\t\t本程序制作者:
\n\n\t\t\t杨帆\n\n\t\t\tQQ:
378254123";
cout<<"\n\n\t\t\tMadeByVC6.0++\n\n\t\t\t2012年1月10日\n\n\t\t\t按
!
";
cout<<"\n\n\t\t\t如果需要对原来的信息进行操作,则先选择0读取文件信息\n"< } Information: : ~Information() {cout<<"******************************************************************************\n"; cout<<"------------------------<<谢谢您使用招聘信息管理系统>>------------------------\n"; cout<<"******************************************************************************\n"; } //建立链表信息 epployee*Information: : creat(void) {//定义一个指向structepployee的结构体指针函数*creat()用来录入招聘信息. charch[N];n=0;//用来存放招聘名称 p1=p2=(epployee*)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元 cout<<"-------------<<请建立招聘信息表,在名称处键以#结束输入! >>--------------"< cout<<"名称: "; cin>>ch; head=NULL;//给指针head赋初值 while(strcmp(ch,"#")! =0)//调用字符比较函数strcmp()用来判断是否继续输入 { p1=(epployee*)malloc(LEN);//调用malloc()函数用来开辟一个新的存储单元 strcpy(p1->name,ch);//将循环结构前面输入的名称复制到结构体名为p1的数组name中 cout<<"类别: "; cin>>p1->sex; cout<<"编号: "; cin>>p1->id; while((p1->id)<0||(p1->id)>100000)//判断输入的编号是否有效(100000个) { cout<<"对不起,您的输入错误! 请重新输入(>0<1000000): "; cin>>p1->id; } cout<<"基本工资: "; cin>>p1->paid[0]; while((p1->paid[0])<0||(p1->paid[0])>100000)//判断输入的分数是否有效(>=0<=100000) { cout<<"对不起,您的输入错误! 请重新输入(>0<100000): "; cin>>p1->paid[0]; } cout<<"加班工资: "; cin>>p1->paid[1]; while((p1->paid[1])<0||(p1->paid[1])>100000)//判断输入的分数是否有效(>=0<=100000) { cout<<"对不起,您的输入错误! 请重新输入(>0<100000): "; cin>>p1->paid[1]; } cout<<"其他奖金: "; cin>>p1->paid[2]; while((p1->paid[2])<0||(p1->paid[2])>100000)//判断输入的分数是否有效(>=0<=100000) { cout<<"对不起,您的输入错误! 请重新输入(>0<100000): "; cin>>p1->paid[2]; } p1->total=p1->paid[0]+p1->paid[1]+p1->paid[2];//计算总额 if(n==0)head=p1;//如果是输入第一组招聘信息就将指针p1赋给指针head elsep2->next=p1;//否则将p1赋给p2所指结构体的next指针 p2=p1;//将指针p1赋给指针p2 n++;//将招聘人数n的值加1 cout<<"\n名称: "; cin>>ch;//将输入的名称存放到字符数组ch中 } p2->next=NULL;//将p2所指结构体的next指针重新赋空值 return(head);//将输入的第一组招聘信息返回 } //定义output()函数将招聘的信息从头指针所指内容开始输出 voidInformation: : output(epployee*head) { //system("cls"); if(head==NULL)cout<<"这是一个空表,请先输入招聘信息! \n"; else{ cout<<"-------------------------------------------------------------------------------\n"; cout<<"*招聘信息信息表*\n"; cout<<"-------------------------------------------------------------------------------\n"; cout<<"|编号||名称||类别||基本工资||加班工资||其他奖金||总额|\n"; cout<<"-------------------------------------------------------------------------------\n"; p1=head;//将头指针赋给p do { cout< < < < < < < cout<<"-------------------------------------------------------------------------------\n"; p1=p1->next;//将下一组招聘信息的next指针赋给p }while(p1! =NULL);//若指针p非空则继续,目的是把所有的招聘信息都传给指针p然后输出. } } //统计招聘人数的函数 intInformation: : count(structepployee*head)//定义函数count()统计招聘总数 { if(head==NULL)return(0);//若指针head为空返回值为0 elsereturn(1+count(head->next));//函数的递归调用 } //添加招聘的信息的函数 epployee*Information: : insert(epployee*head) //插入新结点定义一个指向structepployee的结构体指针函数*insert()用来添加招聘信息. { //system("cls"); cout<<"\t----------------<<请输入新增招聘信息>>----------------\n"< p1=(epployee*)malloc(LEN);//使p1指向插入的新结点 cout<<"编号: "; cin>>p1->id; while((p1->id)<0||(p1->id)>100000) { cout<<"对不起,您的输入错误! 请重新输入(>0<100000): "; cin>>p1->id;//将输入的编号存放到p1所指结构体的数组id中 } cout<<"名称: "; cin>>p1->name;//将输入的名称存放到结构体名为p1的数组name中 cout<<"类别: "; cin>>p1->sex; cout<<"基本工资: "; cin>>p1->paid[0]; while((p1->paid[0])<0||(p1->paid[0])>100000) { cout<<"对不起,您的输入错误! 请重新输入(>0<100000): "; cin>>p1->paid[0];//将输入的基本工资存放到p1所指结构体的数组paid中 } cout<<"加班工资: "; cin>>p1->paid[
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 人才 招聘 网站 设计 实现