第一篇:学校人员管理系统设计文档
学校人员管理系统
主要流程计算机师范一班20111946 王婷 提纲: 设计要求实现要点及依据 补充说明
设计要求
设计并实现简单的大学各类人员信息管理系统。对各类人员信息进行管理,包括增加、删除、查询、修改、排序和统计。要求用面向对象方法设计一个异质链表,该链表用来存储大学中各类人员的信息。希望将人员信息保存到文件中,便于下次操作。
主要流程
A。提示进入系统--
B。询问载入已有文件还是新建一个文件并作相应处理--
C。询问进行何种操作(增加、删除、查询、修改、排序和统计)--
D。根据选择进行处理--
E。询问是否要继续操作(是,转到C处继续循环,否,往下执行)--
F询问是否保存文件并作相应处理--
G。退出系统
实现要点及依据
类的关系:定义四个类:person,teacher,student,worker,list,其中teacher,student和worker从person继承,并将某些共有的成员函数在person中定义为虚函数,以提供共同的接口。另外,将链表类list声明为前面四者的友元函数,以方便对其成员的访问。
异质链表:此表包含一个头节点和头指针。节点的格式是固定的,并没有采用变长的形式。实现的思路是:节点包含三个域:对象类型域(用整数表示)-对象指针域(指向相应的对象类型)-下一个节点的指针域(把后一个节点连接起来)。
文件的读写:我采用了两个类ifstream和ofstream,利用其提供的read()和write()函数,实现对文件的读写。
补充说明
在开始编写程序的时候,我对异质链表并不熟悉,要如何实现也没有底。曾经考虑过用模板,但中间出现了我无法修改的错误而作罢,而现在采取的这一种方式,不知道是不是正规的方式,有没有潜在的设计缺陷。另外,由于我对多态也掌握的不好,有些应该用多态的,我实际上是用if语句来实现的。
实现要点及依据
类的关系:定义四个类:person,teacher,student,worker,list,其中teacher,student和worker从person继承,并将某些共有的成员函数在person中定义为虚函数,以提供共同的接口。另外,将链表类list声明为前面四者的友元函数,以方便对其成员的访问。
异质链表:此表包含一个头节点和头指针。节点的格式是固定的,并没有采用变长的形式。实现的思路是:节点包含三个域:对象类型域(用整数表示)-对象指针域(指向相应的对象类型)-下一个节点的指针域(把后一个节点连接起来)。
文件的读写:我采用了两个类ifstream和ofstream,利用其提供的read()和write()函数,实现对文件的读写。
源代码:
见附件压缩包。解压后在vc++6.0环境下编译运行。
第二篇:学校通讯录管理系统数据库设计
4.2 数据库设计
在本实例中使用的是SQL Server 2000数据库管理系统。数据库服务器安装的位置为本机,数据库名称为communicationserver。下面将介绍数据库分析和设计、数据表的创建、数据表关系图和创建存储过程的内容。
4.2.1 数据库分析和设计
在本节中,将根据上一节系统功能的设计分析创建各数据表的实体E-R关系图,它是数据库设计非常重要的一步,下面用E-R图的形式表示出各实体的属性。
1.用户E-R实体图
用户的实体具有用户ID、密码、姓名、性别、电话、E-mail、用户权限7个属性,ER图如图4-5所示。
姓名用户权限性别电话用户E-mail用户ID图4-5 用户E-R实体图
密码 2.地区E-R实体图
地区的实体具有地区编号、地区名称2个属性,E-R图如图4-6所示。
地区编号地区图4-6 地区E-R实体图
地区名称 3.职务E-R实体图
职务的实体具有职务编号、职务名称2个属性,E-R图如图4-7所示。
职务编号职务图4-7 职务E-R实体图
职务名称 4.学校E-R实体图
学校的实体具有学校名称、学校所在地区、在校学生人数3个属性,可用E-R图表示,如图4-8所示。
学校名称学校在校学生人数学校编号学校所在地区
图4-8 学校E-R实体图
5.通讯录E-R实体图
通讯录的实体具有联系人姓名、地址、联系电话、所属职务、所在学校、所在单位、所属地区7个属性,E-R图如图4-9所示。
联系人姓名联系电话所在单位通讯录所在学校图4-9 通讯录E-R实体图
所属地区地址所属职务
4.2.2 数据表的创建
在上面一节中讲解了实体的E-R图,本节中将根据E-R图的内容,创建企业信息管理系统中的各数据表,在此系统中共涉及到5个数据表的应用,分别为如下。
1、字段采用camel 风格定义
2、用不同颜色区分字段 主键:蓝色 外键:白色
既是主键又是外键:淡蓝色 普通字段:青绿 1.用户信息表
用户信息表(Users)用于存放校园通讯录信息管理系统中所有系统管理用户的信息,用户管理是每个管理系统中必不可少的,也是比较重要的一部分,本系统中进行了较详细的设计,表中各个字段的数据类型、大小以及简短描述如表4-1所示。
表4-1 用户信息表 TB_Users 字段名称 sUserID sUserName sUserPassword sUserSex sUserEmail sUserPhone sUserPurview 2.地区信息表
地区信息表(Client)用于存放校园通讯录信息管理系统中所有地区的信息,地区信息的管理是系统中比较重要的内容,地区的名称是其中的关键信息,表中各个字段的数据类型、大小以及简短描述如表4-2所示。
表4-2 地区信息表
TB_Area 字段名称 sAreaID sAreaName 3.职务信息表
职务信息表(Compact)用于存放校园通讯录信息管理系统中所有职务的信息,职务信息的管理是系统中比较重要的内容,职务的名称是其中的关键信息,表中各个字段的数据类型、大小以及简短描述如表4-3所示。
表4-3 职务信息表
TB_Duty
字段名称 sDutyID sDutyName
字段类型 varchar(20)varchar(50)
字段描述 职务编号[PK] 职务名称
字段类型 varchar(20)varchar(50)
字段描述 地区编号[PK] 地区名称
字段类型 varchar(10)varchar(20)varchar(10)char(2)varchar(20)varchar(20)char(1)
字段描述 用户ID [PK] 用户姓名
记录用户登入本系统时的用户密码
用户性别 用户E-mail 用户的联系电话 用户权限 4.学校信息表
学校信息表(Com_detail)用于存放校园通讯录信息管理系统中所有学校的信息,学校信息的管理是系统中比较重要的内容,学校名称是其中的关键信息,表中各个字段的数据类型、大小以及简短描述如表4-4所示。
表4-4 学校信息表
TB_School 字段名称 sSchoolID sSchoolName iStudentNum sAreaID_FK 5.通讯录信息表
通讯录信息表(product)用于存放校园通讯录信息管理系统中所有通讯录的信息,通讯录信息的管理是系统中比较重要的内容,联系电话是其中的关键信息,表中各个字段的数据类型、大小以及简短描述如表4-5所示。
表4-5 通讯录信息表
TB_AddrList
字段类型 varchar(20)varchar(50)int varchar(20)
字段描述 学校编号[PK] 学校名称 学校人数 地区编号[FK] 字段名称 iAddrID sLinkName sAddress sLinkPhone sUnitName sSchoolID_FK sDutyID_FK sAreaID_FK
字段类型 int varchar(50)varchar(20)varchar(20)varchar(50)varchar(20)varchar(20)varchar(20)
字段描述
通讯录编号(自动编号)[PK] 联系人姓名 地址 联系电话 工作单位 学校编号[FK] 职务编号[FK] 地区编号[PK] 4.2.3 创建视图
学校信息视图表V_SchoolInfo 字段名称 sSchoolName sAreaName
字段类型 varchar(50)varchar(50)
字段描述 学校名称 地区名称 sLinkName sDutyName sLinkPhone
create view V_SchoolInfo as
varchar(20)varchar(20)varchar(20)
联系人姓名 职务名称 联系电话
select sSchoolName,sAreaName,sLinkName,sDutyName,sLinkPhone from TB_AddrList,TB_School,TB_Duty,TB_Area where TB_AddrList.sSchoolID_FK=TB_School.sSchoolID
and and TB_AddrList.sDutyID_FK=TB_Duty.sDutyID TB_AddrList.sAreaID_FK=TB_Area.sAreaID 4.2.4 数据表关系图
在学校通讯录信息管理系统中各数据表的关系图,如图4-10所示。在TB_School数据表中,TB_Area数据表的sDutyID_FK字段作为外键。在TB_AddrList数据表中,TB_School数据表的sSchoolID_FK字段、TB_Area数据表中的sAreaID_FK字段和TB_Duty数据表中的sDutyID_FK字段作为外键。
图4-10 数据表关系图 4.2.5 创建存储过程
因为使用存储过程可以给系统带来优化,所以系统将很大程度地使用存储过程,在系统中共应用了10个存储过程,以Add开头的存储过程为系统中信息添加的存储过程,以Update开头的存储过程为系统中信息修改的存储过程,这些存储过程将会在系统程序文件的后台应用中调用,下面将对系统中应用的存储过程进行解释。
1.AddTB _Users存储过程
AddTB _Users存储过程用于向用户信息表中添加新的用户信息。以下代码表示了这一存储过程。CREATE PROCEDURE AddTB_Users @sUserID varchar(10), @sUserName varchar(20), @sUserPassword varchar(10), @sUserSex char(2), @sUserEmail varchar(20), @sUserPhone varchar(20), @sUserPurview char(1)AS
INSERT INTO TB_Users(sUserID, sUserName, sUserPassword, sUserSex, sUserEmail, sUserPhone,sUserPurview)
VALUES(@sUserID, @sUserName, @sUserPassword, @sUserSex, @sUserEmail, @sUserPhone, @sUserPurview)GO 2.Add 存储过程 Add TB_Area存储过程用于往地区信息表中添加新的地区信息。以下代码表示了这一存储过程。
CREATE PROCEDURE AddTB_Area
@sAreaID varchar(20),@sAreaName varchar(50)AS
INSERT INTO TB_Area(sAreaID,sAreaName)
VALUES(@sAreaID,@sAreaName)GO 3.AddTB_Duty存储过程
AddTB_Duty存储过程用于往职务信息表中添加新的职务信息。以下代码表示了这一存储过程。CREATE PROCEDURE AddTB_Duty
@sDutyID varchar(20),@sDutyName varchar(50)AS
INSERT INTO TB_Duty(sDutyID,sDutyName)
VALUES(@sDutyID,@sDutyName)GO 4.AddTB_School存储过程
AddTB_School 该存储过程用于往学校信息表中添加新的学校信息。以下代码表示了这一存储过程。CREATE PROCEDURE AddTB_School
@sSchoolID varchar(20),@sSchoolName varchar(50),@iStudentNum int,@sAreaID_FK varchar(20)AS
INSERT INTO TB_School(sSchoolID,sSchoolName,iStudentNum,sAreaID_FK)
VALUES(@sSchoolID,@sSchoolName,@iStudentNum,@sAreaID_FK)GO 5.AddTB_AddrList存储过程
AddTB_AddrList存储过程用于往通讯录信息表中添加新的通讯录信息。以下代码表示了这一存储过程。CREATE PROCEDURE AddTB_AddrList
@sLinkName varchar(20),@sAddress varchar(50),@sLinkPhone varchar(20),@sUnitName varchar(20),@sSchoolID_FK varchar(20),@sDutyID_FK varchar(20)AS
INSERT INTO TB_AddrList(sLinkName,sAddress,sLinkPhone,sUnitName,sSchoolID_FK,sDutyID_FK)
VALUES(@sLinkName,@sAddress,@sLinkPhone,@sUnitName,@sSchoolID_FK,@sDutyID_FK)GO 6.UpdateTB _Users存储过程
UpdateTB _Users存储过程用于修改用户信息表中,符合条件的用户信息,其中密码信息不可以更新。以下代码表示了这一存储过程。CREATE PROCEDURE UpdateTB_Users
@sUserID varchar(10),@sUserName varchar(20),@sUserSex char(2),@sUserEmail varchar(20),@sUserPhone varchar(20),@sUserPurview char(1)AS
UPDATE TB_Users SET
sUserID =@sUserID,sUserName =@sUserName,sUserSex=@sUserSex,sUserEmail=@sUserEmail,sUserPhone=@sUserPhone,sUserPurview=@sUserPurview WHERE
sUserID =@sUserID GO 7.UpdateTB_Area存储过程
UpdateTB_Area存储过程用于修改地区信息表中的地区信息。以下代码表示了这一存储过程。CREATE PROCEDURE UpdateTB_Area
@sAreaID varchar(20),@sAreaName varchar(50)AS
UPDATE TB_Area SET
sAreaID =@sAreaID,sAreaName =@sAreaName WHERE
sAreaID =@sAreaID GO 8.UpdateTB_Duty存储过程
UpdateTB_Duty存储过程用于修改职务信息表中的职务信息。以下代码表示了这一存储过程。
CREATE PROCEDURE UpdateTB_Duty
@sDutyID varchar(20),@sDutyName varchar(50)AS
UPDATE TB_Duty SET
sDutyID =@sDutyID,sDutyName =@sDutyName WHERE
sDutyID =@sDutyID GO 9.UpdateTB_School存储过程
UpdateTB_School存储过程用于修改学校信息表中的学校信息。以下代码表示了这一存储过程。CREATE PROCEDURE UpdateTB_School
@sSchoolID varchar(20),@sSchoolName varchar(50),@iStudentNum int,@sAreaID_FK varchar(20)AS
UPDATE TB_School SET
sSchoolID =@sSchoolID,sSchoolName =@sSchoolName,iStudentNum =@iStudentNum,sAreaID_FK=@sAreaID_FK WHERE
sSchoolID =@sSchoolID GO 10.UpdateTB_AddrList存储过程
UpdateTB_AddrList存储过程用于修改通讯录信息表中的通讯录信息。以下代码表示了这一存储过程。
CREATE PROCEDURE UpdateTB_AddrList
@iAddrID int,@sLinkName varchar(20),@sAddress varchar(50),@sLinkPhone varchar(20),@sUnitName varchar(20),@sSchoolID_FK varchar(20),@sDutyID_FK varchar(20)AS
UPDATE TB_AddrList SET
sLinkName =@sLinkName,sAddress =@sAddress,sLinkPhone =@sLinkPhone,sUnitName=@sUnitName,sSchoolID_FK=@sSchoolID_FK,sDutyID_FK=@sDutyID_FK WHERE
iAddrID =@iAddrID GO
第三篇:c++学校人员信息管理系统
1.C++课程设计题目:《学校人员信息管理系统》
用c++设计一个大学教师和学生管理程序,教师包括编号(a),姓名(c),职称(d)和教研室数据(b)的数据输入输出;大学生包括编号(m),姓名(s),性别(t),班号(n),英语(e),高等数学(f)和数据结构(g)三门课程成绩输入输出和计算机平均分(ave);研究生包括编号,姓名,性别,班号,指导教师和研究方法数据输入输出;博士后数据的输入输出;博士后既是教师也是研究生.(用派生,继承的方法可以做)2.功能如下图所示:
学生成绩管理系统主函数主菜单录入学生信息保存信息到文件浏览学生信息按姓名或学号查询信息删除信息退出系统 3.部分代码 #include
int compareStr(char*str1,char*str2);//名字作为关键字,这个函数就用来比较 void addList(chainList *list);//同名的话,覆盖,或者改为新名字加入 void
deleteNode(chainList *node);//根据名字删除
void editList(chainList *list,char *name);//要编辑的人名和新的资料
chainList *searchList(chainList *list,char*name);//只提供名字查询(其他以后加入)//返回前一个节点的指针
void orderList(chainList *list);//按名字排序
void orderListByAge(chainList *list);//按年龄降序排列
void orderListBySex(chainList *list);//按照性别排列,女士优先 void printStaticInfo(chainList*list);void printList(chainList *list);int main(){cout<<“tYou are welcome to the management system!”<
cout<<“File's name:”< cin>>fileName; file.open(fileName);if(!file)//为何输入不存在地文件后,机子变得很慢,而且没有结果出来? {cout<<“File not found!System exit.”< return 1; } // cout<<“test”< fileRead(head,file);//读入文件到链表 file.close();} printStaticInfo(head);char ctn; do {cout<<“main menu:”< addList(head); break;case '2': cout<<“Please input the person's name to be deleted:”< char nm[20]; cin>>nm; chainList *pdel; pdel=searchList(head,nm); char sure;//Make sure whether you want to delete the data sure='n'; if(!pdel->next) { cout<<“The person you input cann't be found”< } else{ cout<<“The persons infor follows:”< pdel->next->pl->print(); cout<<“Are you sure to delete it?Press y or n”< cin>>sure; if(sure=='y') { deleteNode(pdel); cout< } } break;case '3': cout<<“Please input the person's name:”< pp=searchList(head,nm1); if(pp->next) { cout<<“The person's infor follows:”< pp->next->pl->print(); cout<<“Now ,please edit the infors.”< editList(head,nm1); } else cout<<“The person can't be found!”< break; case '4': cout<<“Please input the person's name:”< char name[30]; cin>>name; chainList *p; p=searchList(head,name); if(p->next) { p->next->pl->print(); } else cout<<“The person can't be found!”< break; case '5': cout<<“You want to order the list by:”< cout<<“1.name 2.age 3.sex(lady first)”< char ch; cin>>ch; switch(ch) { case '1': cout<<“You choose to order the list by name.The result are as follows:”< orderList(head); printStaticInfo(head); break; case '2': cout<<“You choose to order the list by age.The result are as follows:”< orderListByAge(head); printStaticInfo(head); break; case '3': cout<<“You choose to order the list by sex.The result are as follows:”< orderListBySex(head); printStaticInfo(head); break; default: cout<<“Wrong choice!”< } break; case '6': printStaticInfo(head); break; default: cout<<“Wrong choice!”< } }while(ctn!='0');cout<<“Do you want to save the file?No,press n.Else,any other key.”< cout<<“Please input the file's name:”< cin>>fileName; ofstream fin; fin.open(fileName);//如果文件已经存在,询问是否覆盖。如何知道是否存在 if(!fin) { cout<<“Can't open output file.n”; return 1; } fileWrite(head,fin); fin.close(); cout<<“File has been successfully saved!”< void fileRead(chainList *list,ifstream &ff){ chainList*p=list;int tp; } char nm[20];int ag;char sx;int slr;int grd; int e;int m;int g;int average;char schl[20];char sb[20];int teaYear;int aa=1;persons*psn;//插入人员指针 ff>>tp;while(tp){ ff>>ag; ff>>nm; ff>>sx; switch(tp){ case 1: ff>>grd;ff>>schl; psn=new student(ag,nm,sx,grd,schl,e,m,g,average); break;case 2: ff>>sb; ff>>teaYear; psn=new teacher(ag,nm,sx,sb,teaYear); break;case 3: ff>>slr; psn=new empoyee(ag,nm,sx,slr); break;} } chainList*s=new chainList(tp,psn);p->next=s;p=s;ff>>tp;void fileWrite(chainList *list,ofstream &ff){ chainList*p=list->next;while(p){ ff< typeOfPn<<“ ”< pl->age<<“ ”< pl->name<<“ ”< pl->sex<<“ ”; switch(p->typeOfPn) { case 1: ff<<((student*)p->pl)->grade<<“ ”<<((student*)p->pl)->school< break; case 2: ff<<((teacher*)p->pl)->subject<<“ ”<<((teacher*)p->pl)->yearsOfT< break; case 3: ff<<((empoyee*)p->pl)->salary< break; } p=p->next;} int aa=0;ff< int i=0;while((p1[i]==p2[i])&&p1[i]&&p2[i]) i++;if(p1[i]==p2[i]){ return 0;} else { if(p1[i]>p2[i]) return 1; else return-1;} } void addList(chainList *list)//添加节点 { char tp;int type;do{ cout<<“The person whose info you want to input is:”< 2.a teacher 3.a common employee”< char nm[20];int ag;char sx;int slr;int grd;char schl[20]; int e;int m; int g;int average;char sb[20];int teaYear;int aa=1;persons*psn;//插入人员指针 switch(tp){ case '0':aa=0; type=0; break;case '1': type=1; cout<<“name:”< cin>>nm; cout<<“age:”< cin>>ag; cout<<“male or female?m or f?”< cin>>sx; cout<<“The student's grade”< cin>>grd; cout<<“From which school:”< cin>>schl; cout<<“the score of english:”< cin>>e; cout<<“the score of math:”< cin>>m; cout<<“the score of sjjg:”< cin>>g; cout<<“average:”< psn=new student(ag,nm,sx,grd,schl,e,m,g,average); break; case '2':type=2; cout<<“name:”< cin>>nm; cout<<“age:”< cin>>ag; cout<<“male or female?m or f?”< cin>>sx; cout<<“subject field:”< cin>>sb; cout<<“Years as a teacher:”< cin>>teaYear; psn=new teacher(ag,nm,sx,sb,teaYear); break; case '3':type=3; cout<<“name:”< cin>>nm; cout<<“age:”< cin>>ag; cout<<“male or female?m or f?”< cin>>sx; cout<<“The employee's salary:”< cin>>slr; psn=new empoyee(ag,nm,sx,slr); break; default:type=6; aa=0; cout<<“Wrong choice!”< } chainList*p=list;//新节点在p所指的节点之前插入,if(aa) { int com; if(p->next) { com=compareStr(nm,p->next->pl->name); cout< } while(p->next&&com>0)//比p节点小或者p为空退出 { p=p->next; if(p->next) com=compareStr(nm,p->next->pl->name); } chainList *s=new chainList(type,psn); s->next=p->next; p->next=s; } }while(type); } void deleteNode(chainList *node){ chainList*ptemp=node->next; node->next=ptemp->next; delete ptemp;} void editList(chainList *list,char *name)//删除,添加就是编辑。缺点:不想删除的也被删除了。{ chainList *pde;pde=searchList(list,name); char tp;int type;do{ cout<<“The person whose info you want to input is:”< cout<<“1.a student 2.a teacher 3.a common employee”< cout<<“0.Return to main menu.”< cin>>tp;//为什么一输入字符就死循环?? char nm[20]; int ag; char sx; int slr; int grd; char schl[20]; int e; int m; int g; int average; char sb[20]; int teaYear; int aa=1; persons*psn;//插入人员指针 if(tp==1||tp==2||tp==3) deleteNode(pde);switch(tp){ case '0':aa=0;type=0;break;case '1': type=1;cout<<“name:”< cout<<“age:”< cin>>ag; cout<<“male or female?m or f?”< cin>>sx; cout<<“The employee's salary:”< cin>>slr; psn=new empoyee(ag,nm,sx,slr); break; default:type=6; aa=0; cout<<“Wrong choice!”< } chainList*p=list;//新节点在p所指的节点之前插入,if(aa) { int com; if(p->next) { com=compareStr(nm,p->next->pl->name); cout< } while(p->next&&com>0)//比p节点小或者p为空退出 { p=p->next; if(p->next) com=compareStr(nm,p->next->pl->name); } chainList *s=new chainList(type,psn); s->next=p->next; p->next=s; } }while(type); } chainList *searchList(chainList *list,char*name)//查找函数 { chainList *p=list;int com;if(p->next) com=compareStr(name,p->next->pl->name); while(p->next&&com)//com为0值(即名字相同)或者p->next为空退出 { p=p->next;if(p->next)com=compareStr(name,p->next->pl->name);} return p;} void orderList(chainList *list){ chainList *p,*q;p=list;q=p->next;while(q->next&&p){ while((p->next!=q->next)&&p->next)//如果相等,则什么也不做 { int i=compareStr(q->next->pl->name,p->next->pl->name); i=-i; if(i>0)//字母顺序小的插在前面 { chainList*s; s=q->next; q->next=s->next; s->next=p->next; p->next=s; p=s; break; } if(i==0)//字母顺序相同的插到后面 { chainList*ss; ss=q->next; q->next=ss->next; p=p->next;//让p永远指向插入位置前一个位置。 ss->next=p->next; p->next=ss; p=ss; break; } p=p->next; } p=list;//让p重新指向头节点。 if(q->next) q=q->next;//q前进一步。 } } void orderListByAge(chainList *list){ chainList*p,*q;p=list;q=p->next;while(q->next&&p){ while(p->next!=q->next)//如果相等,则什么也不做 { int i=q->next->pl->age-p->next->pl->age; if(i>0)//年龄大的插到用于比较的节点前面 { chainList*s; s=q->next; q->next=s->next; s->next=p->next; p->next=s; p=s; break; } if(i==0)//年龄相同的插到后面 { chainList*ss; ss=q->next; q->next=ss->next; p=p->next;//让p永远指向插入位置前一个位置。 ss->next=p->next; p->next=ss; p=ss; break; } p=p->next; } p=list;//让p重新指向头节点。 if(q->next) q=q->next;//q前进一步。 } } void orderListBySex(chainList *list)//按性别排序,插入排序 { chainList*p,*q;p=q=list; while(q->next){ if(q->next->pl->sex=='f') { chainList*s; s=q->next; q->next=s->next;//删除,然后插到前面 s->next=p->next; p->next=s; p=s; } q=q->next;} } void printStaticInfo(chainList*list){ int count,countS,countT,countE,countMale,countFemale;count=countS=countT=countE=countMale=countFemale=0;chainList*p=list->next;while(p){ p->pl->print(); count++; if(p->pl->sex=='m') countMale++; else countFemale++; switch(p->typeOfPn) { case 1: countS++; break; } case 2: countT++; break;case 3: countE++; break;} p=p->next; } cout<<“********************************************”< 部分截图 1.信息的输入 2.浏览学生信息 开始N开始YNY输出所有信息返回主菜单录入信息保存信息返回主菜单打开文件文件中有无信息结束3.按姓名或学号查询信息 4.删除信息 开始NY输入姓名或学号开始NY输入姓名或学号N 打开文件打开文件Y输出信息(name==sign)||(number==sign))Y删除信息(name==sign)||(number==sign))N返回主菜单返回主菜单 心得体会: 通过本次课程设计懂得了,学习计算机语言知识,要不断实践,不断学习新的内容,特别是课堂中没有涉及的内容要自主的去学习并学会运用。在今后的学习中我要加强自主学习的能力,加强动手能力。通过一星期的C++语言程序设计课程设计,我们从中受益匪浅,并且对C++语言程序设计这一门课程有了更深一步的认识。在实习中,我们可以把这学期所学的理论知识和实践联系起来,在所要开发的项目中渐渐成长。虽然我们对这些C++语言知识运用得还不是很熟练,但是相信我们也在滴水穿石地成长起来。发现问题,提出问题,解决问题使我们从不足之处出发,寻找新的方向。在课程设计中,我设计了一个学生信息管理系统,它基本足了界面友好,易于操作的要求,因此更利于用户操作方便,运行简易,从而达到对人员管理更加有效系统的管理,并且速度更快内容更直接地达到用户所想要的效果。在该软件中我们实现了对学生信息的输入和存取、读取,对学生相关信息的删除等,并且可以按学号查询学生的相关信息等的功能。但软件中仍然存在一些不足,例如在输入有关学生的数据时名字没有限定,插入新的学生信息的程序还有待完善,菜单不美观等。我一边设计一边探索,发现理论和实践要充分地结合,是需要扎实的基本功的,这就表明学好基础知识是理论付诸实践的前提。在实习中我们学到了很多,希望在以后我们能充分利用这样的机会充实自己,并希望这样的机会能被更好更多地提供。 银行押运人员管理系统 本系统是针对近年来银行押运过程中存在人员身份验证不严密、信息更新不及时,从而产生冒领、挪用等安全漏洞设计的一套系统。本系统采用成熟的活体指纹自动识别技术,采用指纹技术认证到人,同时利用网络,实时更新下达任务人员数据,保证交接中身份认证的准确性,排除私自调班的可能性,并对验证过程进行拍照以及实时录像等操作,从而加强管理,杜绝冒充等犯罪情况的发生,并提供准确及时的识别记录。系统利用网络及识别终端,最大限度的节省部署系统的开支,并保障安全性。 随着我国经济的快速发展,经济领域特别是针对金融业的犯罪时有发生,银行金库每日都涉及大量现金出入库的工作,运钞车的工作范围又覆盖到了金库、储蓄所、商户等单位,因此,很容易成为金融犯罪的目标,2001年5月温州中行冒牌运钞车接走巨额现金的案件就显现了银行金管中心在款箱交接上的安全漏洞,引起了社会广泛的关注;而近几年来针对调缴款的犯罪有增无减,2006年初沈阳某银行调款员就利用职权之便及管理漏洞,分两次共调款300多万元并出逃,至今被公安机关通缉。这些事实说明了目前银行款箱交接、上门收送款、金库管理需要更科学安全的管理手段。 在此背景下我们顺势设计开发了此套身份验证识别管理系统。本系统采用成熟的活体指纹自动识别技 术,采用指纹技术认证到人,同时利用网络,实时更新下达任务人员数据,保证交接中身份认证的准确性,排除了私自调班的可能性,并对验证过程进行拍照以及实时录像等操作,从而加强管理,杜绝冒充等犯罪情况的发生,并提供准确及时的识别记录。系统利用网络及识别终端,最大限度的节省部署系统的开支,同时安全性得到了保障。 系统由银行模块、押运公司模块、信息中心模块、权限系统组成,实现权限分立,杜绝信息泄密可能,并有效防止勾结犯罪的可能性。 系统特点: ■操作简单、便于管理、安全性高的特点; ■任务信息全面,并及时准确下达; ■活体指纹验证,生物特征唯一性; ■显示档案照片及现场抓拍照片,杜绝指纹作假; ■根据网点、时间、人员、路线,多方位验证人员信息有效性; ■系统可脱机工作,也可联机工作,适应性强; 新疆某监狱人员管理系统 方案简介 监狱人员位置管理,是监狱信息化建设的一个新领域。结合目前的监狱管理体系,干警和犯人的状态虽然可以通过视频进行监控,但系统的工作时间往往和人的工作时间吻合,不能实现24小时全程管理。新疆某监狱对在押2000余名犯人和300多名干警,通过RFID技术进行24小时管理,在监狱各个位置实现了对管理对象位置和状态的实施监控。同时利用该系统也解决了犯人在监狱的门禁、支付等问题。对临时来访人员和车辆也进行实施的统计和监控。 方案目的 对犯人位置更精确的管理,是近些年来监狱信息化建设的一个重点。近年来,随着监狱各项管理制度和狱政设施的不断完善和更新,监狱防范和控制各种安全事件的能力大大增强。但是随着犯罪类型和在押犯成分的日趋复杂,伺机劫持人质、脱逃、自杀、凶杀、哄监闹狱等事件也时有发生,给狱警的人身安全和监狱场所的整体稳定带来极其不利的影响。 由于监狱场所的特殊性,很多信息设备的使用受到限制,因此采用一种可靠安全的技术对监狱内各种对象进行实时管理,补充目前基于视频等监控设备管理上的不足,就提上了议事日程。我司经过多年研究和对监狱管理需求的了解,研发了基于RFID技术的智能监狱管理系统。该系统以物联网、传感网相关技术为核心,结合监狱以后管理系统,力求打造更加完善的监狱管理体系。 方案原理 该方案主要是利用RFID技术,通过标识卡、读写器等终端设备,利用RFID无线通信技术实现对监狱人员的身份识别、定位跟踪和轨迹查询等功能。 RFID标识卡:给监狱内的相关人员佩戴非随意拆卸式的腕带,该卡具有唯一编号,能够实现身份认证、定位跟踪和监控等功能。 读写器:主要是作为信息传输设备,实现监控区域信号全覆盖,可接受标识卡发送的信息,并将信息上传到采集系统。 采集系统:对读写器上传的数据进行处理,实现上层的各种应用。如犯人腕带有无信号、被破坏等情况下,会自动报警、并记录每个犯人的历史行动轨迹。 狱警及工作人员随身佩带专用RFID狱警腕带,腕带有设置报警按钮,一旦发生紧急情况,按下求援按钮发出求援信号,以通知监控中心,且在电子地图上及时显示报警位置,这样后端可以及时进行支援,保证了狱警的安全。 系统结构 主要功能 实时人员定位 实时区域汇总 跟踪 报警 超时报警 区域禁出禁入报警 呼救报警 设备故障报警 外来车辆监控管理 资产管理 小额支付 视频联动管理 功能特点 人员位置管理:包括犯人、狱警和外来人员的位置管理; 报警管理:包括边界报警、区域报警、拆卸腕带报警、设备报警、呼救报警等。区域管理:实时显示某个区域的人数及人员信息。 小额支付:可实现犯人在监狱内的餐饮、购物等小额支付功能。门禁管理:实现门禁功能; 统计报表:根据狱方要求,进行各种统计报表的设计; 历史查询:对历史轨迹、历史数据报表等可查询打印。 监狱管理软件界面 应用硬件 TZTF-8122标识卡(防拆型犯人腕带卡) TZBS-8106型读写器 TZBS-8111型智能网关 TZPR-5103型手持式读写器 TZLF-2101型低频定位器第四篇:银行押运人员管理系统
第五篇:新疆某监狱人员管理系统