C++课程设计公司人事管理系统

时间:2019-05-15 09:20:50下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《C++课程设计公司人事管理系统》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《C++课程设计公司人事管理系统》。

第一篇:C++课程设计公司人事管理系统

C++程序设计实践教学环节任务书 承接的项目额(10%)提成,业务经理既拿固定月薪(2000元)也领取提成,财务人员固定工资(2000元),文秘为固定工资(1500元)。

(4)可按姓名显示、查找、增加、删除、修改和保存各类人员的信息。

五、解决方案

一、题目: 公司人事管理系统

(1)分析系统中的各个实体之间的关系及其属性和行为;

(2)根据问题描述,设计系统的类层次;

二、目的与要求(3)完成类层次中各个类的描述(包括属性和方法);(4)完成类中各个成员函数的定义; 1.目的:(5)完成系统的应用模块;(1)基本掌握面向过程程序设计的基本思路和方法;(6)功能调试;(2)达到熟练掌握C语言的基本知识和技能;(7)完成系统总结报告以及系统使用说明书。(3)能够利用所学的基本知识和技能,解决简单的程序设计问题。

六、进度安排 2.要求此次课程设计时间为一周,分四个阶段完成: 基本要求: 1.分析设计阶段。指导教师应积极引导学生自主学习和钻研问题,明确设计要

(1)要求利用C++语言面向对象的编程思想来完成系统的设计; 求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。

(2)突出C++语言的类和对象的特征,以多个类实现对每一个子功能的封装; 2.编码调试阶段:根据设计分析方案编写C++代码,然后调试该代码,实现课

(3)进行简单界面设计,能够实现友好的交互; 题要求的功能。

(4)具有清晰的程序流程图和类的详细定义; 3.总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需求分析、(5)熟练掌握C++语言对文件的各种操作。总体设计、详细设计、编码、测试的步骤和内容。4.考核阶段。创新要求:在基本要求达到后,可进行创新设计,如系统用户功能控制,对管理员级和一

七、撰写课程设计报告或课程设计总结 般级别的用户系统功能操作不同。课程设计报告要求:

三、信息描述 总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试 的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及公司共有4格记。技术经理。现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总 额并显示全部信息,并且老板可以对各种人员进行增加、查寻、修改、删除。

八、参考资料

四、功能描述 1.《C++程序设计》.郑莉.清华大学出版社2.《C++编程思想》.Bruce Eckel [刘宗田].机械工业出版社(1)其中,人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序3.《C++ Primer》中文版.Lippman[潘爱民].中国电力出版社出版 加1。4.《Effective C++中文版》Scott Meyers[侯捷].华中科技大学出版社(2)程序对所有人员有提升级别的功能。

(3)月薪的计算方法是:经理拿固定月薪(5000元),技术人员按完成的代码量(1000元/每千行代码)领取月薪,业务人员的报酬按该推销员当月销售额(15%)与

第二篇:C++课程设计(教务管理系统)

#include using namespace std;#include #include #include #include #include #include“01.h” class University;

void menu(University uni);//菜单函数声明

class Student//学生类 { public: string name;int age;string sex;int number;string major;

public: void disp_stu();

friend void file_in(University &uni);

friend void file_out(University uni);};void Student::disp_stu(){

}

class Institute//学院类 { public: string name;cout<<“学生姓名:”< head;//封装学生信息

public: void add_stu();

//添加学生

bool delete_stu(int i);

// 删除学生

bool modefy_stu(int i);

//修改学生信息

void disp_ins_1();

// 显示本院学生信息

friend void file_in(University &uni);

friend void file_out(University uni);};void Institute::add_stu(){

} Student *p=new Student;cout<<“学生名字:”;cin>>(*p).name;cout<<“学生年龄:”;cin>>(*p).age;cout<<“学生性别:”;cin>>(*p).sex;cout<<“学生学号:”;cin>>(*p).number;cout<<“学生专业:”;cin>>(*p).major;head.Add(p);//在链表末尾增加一个节点

bool Institute::delete_stu(int i){

} head.Remove(i);//删除链表指定位置节点 return true;bool Institute::modefy_stu(int i){

Student *p=new Student;cout<<“学生名字:”;cin>>(*p).name;cout<<“学生年龄:”;cin>>(*p).age;cout<<“学生性别:”;cin>>(*p).sex;cout<<“学生学号:”;cin>>(*p).number;cout<<“学生专业:”;cin>>(*p).major;head.Remove(i);//删除链表指定位置节点 head.Insert(i,p);//在链表指定位置插入一个新节点

return true;} void Institute::disp_ins_1(){

}

class University//学校类 { public: string name;int age;string addr;List head;//封装学院信息 public:

void design_stu();//学生信息设置 int i;Node *q;q=head.pHead;//q指向学生节点双向链表头指针

cout<<“学院名字:”<

} cout<<“-------”<pData->disp_stu();q=q->pNext;

void add_ins();

//添加学院

bool delete_ins(int n);

// 删除学院

void design_cqut();

//设置学校信息 bool modefy_cqut();

//修改学校信息 void disp_cqut();

//显示学校信息 void design_ins();

//学院信息设置 bool modefy_ins(int n);

//修改学院 void disp_ins();

//显示学院信息

void search_menu();void search_name(string n);//姓名

void search(string n);//性别//函数重载

void search(int n);//学号

bool search_age(int n);//年龄

friend void file_in(University &uni);};friend void file_out(University uni);

void University::design_stu(){

int i,m,j;int n;cout<<“

★★★★★★学生信息设置★★★★★★

”<>i;system(“cls”);//清屏 switch(i){ case 1:

{

disp_ins();

cout<

cout<<“输入学生所在学院序号:”<

cin>>m;system(“cls”);//清屏

head.pCurrent=head.pHead;//当前指针指向双向链表头指针

for(j=1;j

{

}

} head.pCurrent=head.pCurrent->pNext;//当前指针指后移

cout<<“输入要添加的学生信息:”;head.pCurrent->pData->add_stu();cout<<“按任意键返回上一级菜单:”<

disp_ins();

cout<

cout<<“输入学生所在学院序号:”<

cin>>m;system(“cls”);//清屏

head.pCurrent=head.pHead;//当前指针指向双向链表头指针

for(j=1;j

{

head.pCurrent=head.pCurrent->pNext;//当前指针指后移

} } head.pCurrent->pData->disp_ins_1();cout<>n;head.pCurrent->pData->delete_stu(n);cout<<“按任意键返回上一级菜单:”<

{

disp_ins();

cout<

cout<<“输入学生所在学院序号:”<

cin>>m;system(“cls”);//清屏

head.pCurrent=head.pHead;//当前指针指向双向链表头指针

for(j=1;j

{

}

}

head.pCurrent=head.pCurrent->pNext;//当前指针指后移

head.pCurrent->pData->disp_ins_1();cout<

} cin>>n;head.pCurrent->pData->modefy_stu(n);cout<<“按任意键返回上一级菜单:”<

void University::add_ins(){

}

bool University::delete_ins(int n){

}

bool University::modefy_ins(int n){

Institute *p=new Institute;cout<<“学院名字:”;cin>>(*p).name;head.Remove(n);//删除链表指定位置节点 head.Insert(n,p);//在指定位置插入节点信息 return true;head.Remove(n);//删除链表指定位置节点 return true;Institute *p=new Institute;cout<<“学院名字:”;cin>>(*p).name;head.Add(p);//在链表末尾增加一个节点

}

void University::disp_ins(){

int i;Node *q;q=head.pHead;//q指向学院节点双向链表头指针

for(i=1;i<=head.size;i++){

cout<pData->name<pData->head.size<

}

void University::design_ins(){

int i;int j;cout<<“

★★★★★★学院信息设置★★★★★★

”<pNext;

cout<>i;system(“cls”);//清屏 switch(i){ case 1:

{

} disp_ins();cout<<“按任意键返回上一级菜单:”<

disp_ins();

add_ins();

cout<<“按任意键返回上一级菜单:”<

getch();system(“cls”);//清屏 design_ins();

break;} case 3: {

} disp_ins();cout<<“输入删除学院序号:”;cin>>j;delete_ins(j);cout<<“按任意键返回上一级菜单:”<

disp_ins();cout<<“输入修改学院序号:”;cin>>j;modefy_ins(j);cout<<“按任意键返回上一级菜单:”<

} case 5:menu(*this);break;} }

bool University::modefy_cqut(){ cout<<“学校名字:”;cin>>name;cout<<“创建年代:”;cin>>age;cout<<“学校地址:”;cin>>addr;return true;}

void University::design_cqut(){ int i;

University uni;cout<<“

★★★★★★学校信息设置★★★★★★ cout<>i;system(”cls“);//清屏

switch(i){

case 1:

{

disp_cqut();

cout<<”按任意键返回上一级菜单:“<

getch();system(”cls“);//清屏

design_cqut();

break;

}

case 2:

{

modefy_cqut();

cout<<”按任意键返回上一级菜单:“<

getch();system(”cls“);//清屏

design_cqut();break;”<

}

} } case 3:menu(uni);break;

void University::disp_cqut(){

cout<<“学校有关信息为:”<

}

void University::search_name(string n){

int i,j,m=0;head.pCurrent=head.pHead;//当前指针指向学院节点头指针 for(i=0;ipData->head.pCurrent=head.pCurrent->pData->head.pHead;//当前指cout<<“学校名字:”<

for(j=0;jpData->head.size;j++)

{

if(n==head.pCurrent->pData->head.pCurrent->pData->name)

{

} head.pCurrent->pData->head.pCurrent->pData->disp_stu();m++;head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;//学生当前指针后移

}

bool University::search_age(int n){

int i,j,m=0;head.pCurrent=head.pHead;for(i=0;ipNext;//学院当前指针后移

} cout<<“有”<

}

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pHead;for(j=0;jpData->head.size;j++){ if(n==(head.pCurrent->pData->head.pCurrent->pData->age)){

} head.pCurrent->pData->head.pCurrent->pData->disp_stu();m++;head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;} head.pCurrent=head.pCurrent->pNext;} cout<<“有”<

void University::search(string n){

} int i,j,m=0;head.pCurrent=head.pHead;for(i=0;ipData->head.pCurrent=head.pCurrent->pData->head.pHead;

for(j=0;jpData->head.size;j++){

if(n==head.pCurrent->pData->head.pCurrent->pData->sex){ head.pCurrent->pData->head.pCurrent->pData->disp_stu();} m++;

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;

} cout<<“有”<pNext;void University::search(int n){

int i,j,m=0;head.pCurrent=head.pHead;for(i=0;i

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pHead;

for(j=0;jpData->head.size;j++)

{

if(n==head.pCurrent->pData->head.pCurrent->pData->number)

{

head.pCurrent->pData->head.pCurrent->pData->disp_stu();

m++;

}

head.pCurrent->pData->head.pCurrent=head.pCurrent->pData->head.pCurrent->pNext;

}

head.pCurrent=head.pCurrent->pNext;} cout<<“有”<

/****************************************信息查询菜***********************************************/

void University::search_menu(){ int i;cout<<“

★★★★★信息查询显示★★★★★”<>i;system(“cls”);//清屏

switch(i){ case 1: {

disp_ins();

cout<<“按任意键返回上一级菜单:”<design_ins();break;} case 2:

{

} head.pCurrent=head.pHead;//当前指针指向学院节点头指针 for(i=0;i

} head.pCurrent->pData->disp_ins_1();head.pCurrent=head.pCurrent->pNext;cout<<“按任意键返回上一级菜单:”<search_menu();break;case 3: {

} int j;disp_ins();cout<<“请输入学生所在学院序号:”;cin>>i;system(“cls”);//清屏 head.pCurrent=head.pHead;for(j=1;jpNext;head.pCurrent->pData->disp_ins_1();cout<<“按任意键返回上一级菜单:”<search_menu();break;

case 4:

{

string n;cout<<“输入要查询的姓名:”;cin>>n;system(“cls”);//清屏 search_name(n);

} cout<<“按任意键返回上一级菜单:”<search_menu();break;case 5:

{

} int n1;cout<<“输入要查询的年龄:”;cin>>n1;search_age(n1);cout<<“按任意键返回上一级菜单:”<search_menu();break;

system(“cls”);//清屏

case 6: {

} string n;cout<<“输入要查询的性别:”;cin>>n;system(“cls”);//清屏 search(n);cout<<“按任意键返回上一级菜单:”<search_menu();break;case 7: {

} int n;cout<<“输入要查询的学号:”;cin>>n;system(“cls”);//清屏 search(n);cout<<“按任意键返回上一级菜单:”<search_menu();break;case 8: {

menu(*this);

}

} } break;/**********************************************************************/ {

int i,j;ifstream inf(“cqutData.txt”,ios::in);inf>>uni.name;inf>>uni.age;inf>>uni.addr;inf>>uni.head.size;//学院个数 for(i=0;i>p->name;

导出文件数据void file_in(University &uni)

Node *m=new Node;//建立学院信息节点 m->pData=p;//把输入的学院信息节点赋给建立的学院信息节点 m->pNext=0;if(i==0)uni.head.pHead=m;//把节点m赋给学院信息节点

else uni.head.pEnd->pNext=m;//把节点m赋给下一个学院信息节点 m->pPrev=uni.head.pEnd;//节点m指向学院信息的尾节点

uni.head.pCurrent=uni.head.pEnd=m;//学院信息的尾节点始终指向m节点 inf>>uni.head.pCurrent->pData->head.size;//学生个数 for(j=0;jpData->head.size;j++){

Student *q=new Student;inf>>q->name;inf>>q->age;inf>>q->sex;inf>>q->number;inf>>q->major;

Node *n=new Node;n->pData=q;n->pNext=0;if(j==0)uni.head.pCurrent->pData->head.pHead=n;else uni.head.pCurrent->pData->head.pEnd->pNext=n;

n->pPrev=uni.head.pCurrent->pData->head.pEnd;

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pEnd=n;//学生信息的尾节点始终指向n节点

} } }

/************************************************************************************/ void file_out(University uni){

ofstream ouf(“cqutData.txt”,ios::out);int i,j;ouf<

导入文件数据ouf<

uni.head.pCurrent=uni.head.pHead;//当前指针指向学院节点头指针 for(i=0;i

ouf<pData->name<

ouf<pData->head.size<

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pHead;//当前指针指向学生节点头指针

for(j=0;jpData->head.size;j++){

ouf<pData->head.pCurrent->pData->name<pData->head.pCurrent->pData->age<pData->head.pCurrent->pData->sex<pData->head.pCurrent->pData->number<pData->head.pCurrent->pData->major<

uni.head.pCurrent->pData->head.pCurrent=uni.head.pCurrent->pData->head.pCurrent->pNext;//学生当前指针后移

}

} } uni.head.pCurrent=uni.head.pCurrent->pNext;//学院当前指针后移

/************************退出系统菜单****************************/

void exit(University uni){

} int i;cout<<“是否保存修改内容:”<>i;system(“cls”);//清屏 switch(i){ case 1:

{

} file_out(uni);exit(0);break;case 2:{exit(0);break;} case 3:

{ menu(uni);break;} case 4:

{

file_out(uni);

}

} menu(uni);break;

/***************************************************************************************/ void menu(University uni){

system(“cls”);/*清屏*/ int i;cout<

主菜单 cout<<“★★★★★★★★★★★★★主菜单★★★★★★★★★★★★★”<

cout<

cout<

cout<>i;system(“cls”);//清屏

}

int main(){ University u;

} file_in(u);menu(u);return 0;switch(i){

case 1:uni.design_cqut();break;case 2:uni.design_ins();break;case 3:uni.design_stu();break;

case 4:uni.search_menu();break;

case 5:exit(uni);break;}

第三篇:C++课程设计学生信息管理系统

C++程序设计实践教学环节任务书

一、题目:学生信息管理系统

二、目的与要求

1.目的:

(1)掌握面向对象程序设计的基本思路和方法;

(2)了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块

组装与整体调试的全过程;

(3)进一步熟悉C++中类的概念、类的封装、继承的实现方式;(4)学会分析简单的实际问题,并能利用所学的知识建立系统的逻辑结构,学会简单的调试技巧和方法。逐步熟悉面向对象程序设计的方法,养成良好的编程习惯。

2.要求基本要求:

(1)要求利用C++面向对象的编程思想来完成系统的设计;(2)进行简单界面设计,能够实现友好的交互;(3)具有清晰的程序流程图和数据结构的详细定义;(4)熟练掌握C++对文件的各种操作。

三、信息描述

有关该系统基本信息的描述(如:学号、姓名、系别、班级和各科成绩等)。

四、功能描述

1.添加、删除

系统将提示用户输入新添加学生的信息;由用户输入要删除的学生的学号,然后调用删除函数,删除该名学生的资料。2.查找

首先由用户输入要查找的学生的学号,系统用查找函数查找,然后系统就调用输出函数。

3.修改

首先由用户输入要修改的学生的学号,然后系统用修改函数查找,显示该名学生的资料,然后系统提示用户输入需要修改的项目和新的资料。4.界面要求

开始登录管理界面、主要提示菜单界面(提示用户执行何种操作)等。

五、解决方案

1.分析程序的功能要求,划分程序功能模块。2.画出系统流程图。

3.代码的编写、程序的功能调试。4.完成系统总结报告以及使用说明书

六、进度安排

此次课程设计时间为一周或两周,分四个阶段完成:

1.分析设计阶段。指导教师应积极引导学生自主学习和钻研问题,明确

设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。

2.编码调试阶段:根据设计分析方案编写代码,然后调试该代码,实现

课题要求的功能。

3.总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需

求分析、总体设计、详细设计、编码、测试的步骤和内容。4.考核阶段。

七、撰写课程设计报告或课程设计总结

总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。

八、参考资料

《C++语言程序设计教程》

网上相关资料(....略)

第四篇:人事管理系统Java课程设计报告

湖南科技大学计算机科学与工程学院

数据库课程设计报告

题目:人事管理管理系统

学 号:1005030221 姓 名:艾向兵 指导教师:张黎

完成时间:2012年1月4日 组员:苏勇,成佳裕,艾向兵

企业人事管理系统主要用于员工个人资料的录入,职务变动的记录和管理。使用人事管理系统,便于公司领导掌握人员的动向,及时调整人才的分配 1.1系统功能需求分析

人事管理系统主要有以下几项功能要求:.新员工资料的输入。

.自动分配员工编号,并且设置初始的用户密码:.人事变动的记载,包括岗位和部门的调整。.员工信息的查询和修改,包括员工个人信息和密码 1.2 系统功能模块设计

根据系统功能要求,可以将系统分解成几个模块来分别设计应用程序界面,如图,人事资源管理 包括:新员工档案输入,人事变更,员工档案查询

1.3 与其它系统的关系

本关系是公司管理信息系统的基础部分,为其他子系统,如考勤管理系统,工资管理系统和员工培训系统,提供员工的基本信息。同时为其他系统提供了员工登录的密码认证和权限分配。1.4数据库设计 数据库需求分析:

员工信息:员工号,密码,权限,姓名,性别,生日,专业,通讯地址,电话,Email,当前状态,其他。

人事变动:记录号,员工,变动,详细描述

部门设置:部门编号,名称

员工变动代号表

员工信息表

员工职位代码表

管理员登陆界面

信息查询,修改,删除主界面

查询单个员工的界面

总 结

这次的课程设计,是在学习了Java以后通过阅读课本及在图书馆借阅相关书籍同严景、孟珍三人共同完成的。在开发这个系统的过程中,碰到很多或大或小的问题,我们一起思考,一起努力,最后大部分都解决了,得到了现在的这个简单的人事管理系统。

在编制过程中,我们首先考虑到了界面的友好性,并在界面设计时不采用烦琐的细节,使界面简单、清晰,便于操作。一开始我们是想做个登录界面,实现用户的登录权限管理,但试了几次都没有达到预期的效果,最后不得不放弃。

通过这次课程设计,我知道了什么事情都不那么简单,只有努力去做了,你才会有收获,不管收获大小,付出的过程总是有的。有些事情只有亲身感受,你才知道它的价值有多大。同时在遇到困难的时候要沉着冷静,首先要冷静分析问题,对于很难解决的问题要学会请教他人,还可以与别人合作。

在这次数据库系统课程设计中,我主要进行的是界面的设计,以及进行进行整合操作,界面是我学习Java以来第一次做,以前不怎么用的JTabel等,现在都已经熟练的应用了,特别是这次的弹出窗口,我在做这个的时候可谓是一窍不通,因为把按钮JButton定义为了局部变量而在时间响应中而得不到另一个窗口的弹出。

还有就是在整个过程中的ID传递让我不知怎么办,一个简单的参数传递才得以搞定,基础知识还是不够牢靠。在得到修改表的数据库内容后未把值传给表格。

虽然这次课程设计付出了大量的时间,但是我知道我得到的收获远远不是这些时间可以衡量的,它将给我今后的学习和工作带来更多的收益。通过对此课题的开发,使我对用Java开发系统有了一个比较清楚的认识,体会到理论和实践的重要性。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如没有设置登录界面,没有考虑到异常等多方面问题,这些都有待进一步完善和提高。对于文中出现的不足和系统中出现的问题敬请老师指导。

弹出登录程序的界面程序

public void actionPerformed(ActionEvent e){

if(e.getSource()==okButton){

String userID=text.getText();String passWD=String.valueOf(passwd.getPassword());if(userID.equals(“1”)&&passWD.equals(“1”)){

JOptionPane.showMessageDialog(null, “登陆成功!”, “消息”, JOptionPane.INFORMATION_MESSAGE);

new UserWindow2().userWindow2();//弹出第二个窗体

} else{

JOptionPane.showMessageDialog(null, “对不起您的用户名或密码错误!”, “错误”,JOptionPane.ERROR_MESSAGE);

text.setText(“");passwd.setText(”“);} } if(e.getSource()==deleButton){

text.setText(”“);passwd.setText(”“);}

} 进行信息查询,修改,删除的程序响应代码:

public void actionPerformed(ActionEvent e){

if(e.getSource()==button1){

new UserWindow3();

} if(e.getSource()==button2){

UserWindow7 u= new UserWindow7();u.userWindow7();} if(e.getSource()==button3){ UserWindow5 u=new UserWindow5();

u.userWindow5();}

public void actionPerformed(ActionEvent e){

if(e.getSource()==button){ int id= Integer.parseInt(text0.getText());//得到用户编号

String name=text1.getText();//得到用户姓名

String sex=text2.getText();//得到性别

String birthDay=text3.getText();//得到生日 String department=text4.getText();//得到所在部门 String job =text5.getText();//得到职位

String education=text6.getText();//得到教育程度 String spcialty=text7.getText();//专业技能 String address=text8.getText();//得到地址 String tel=text9.getText();//得到电话

String email=text10.getText();//得到电子邮箱 String state=text11.getText();//得到员工状态 String remark=text12.getText();//得到备注 Insert in=new Insert();//

boolean b;

b=in.insert(id,name,sex,birthDay,department,job,education,spcialty,address,tel,email,state,remark);if(b){ JOptionPane.showMessageDialog(null, ”数据保存成功!“, ”消息“, JOptionPane.INFORMATION_MESSAGE);}

} }

public void actionPerformed(ActionEvent e){

// TODO Auto-generated method stub

id = Integer.parseInt(text.getText());

if(e.getSource()==button){ UserWindow8 us = new UserWindow8();us.userWindow8(id);

}

Container container=this.getContentPane();container.setLayout(new BorderLayout());

JPanel pan =new JPanel();JLabel lab = new JLabel(”请输入工号:“);JTextField text=new JTextField(10);JButton button =new JButton(”查询“);JButton button1=new JButton(”删除“);pan.add(lab);pan.add(text);pan.add(button);pan.add(button1);container.add(pan);

String []titles={”员工编号“,”姓名“,”性别“,”生日“,”部门“,”职务“,”教育程度“,”专业技能“,”家庭住址“,”联系电话“,”电子邮箱"};

String [][]userInfo={};

JTable table =new JTable(userInfo,titles);table.isCellEditable(2,2);JScrollPane scrollpane

=new

JScrollPane(taboooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo......................le);

container.add(scrollpane,BorderLayout.SOUTH);

第五篇:C++课程设计(简单图书管理系统)

课 程 设 计

课程名称

C++课程设计 题目名称

图书管理系统

2016 年月 29 日

目录

一.设计内容与要求...............................................................................................................2 二.设计思路:.......................................................................................................................4 三.关键模块实现及主要代码...............................................................................................4 四.实验结果及分析.............................................................................................................13

五、心得体会.........................................................................................................................16

六、参考文献.........................................................................................................................17

一.设计内容与要求

(1)、设计一个图书管理系统,能够实现用户信息管理,图书信息的 录入、查询、删除等功能。

(2)、实现用户管理,系统具有用户注册功能。管理员的账号和密码由系统指定,登录后可进行修改。一般用户注册后才能登录使用系统。管理员具有录入、查询、删除图书信息及一般用户的功能。一般用户只有图书查询功能。

(3)、登录功能,只有注册了的用户才能进入系统,没有注册的则有提示信息出现。

(4)、图书管理功能,管理员能够录入、查询、删除图书信息。(5)、图书查询功能,管理员及一般用户能够通过图书的基本信息,如图书作者、书名、出版社、出版日期等等,进行查询。

提示:上述为基本功能,可参考实际的系统进行扩展。

二.设计思路:

为了实现用户信息以及图书信息的管理,建立一个用户CUser类与图书信息CBoodata类,其中CUser类应该包含用户账号以及密码,CBookdata类应该包含图书作者,书名,出版社,出版日期。同时应该建立两个dat文件,一个为存储用户信息,一个用来储存图书信息。程序主要分为4个页面:(1)登录页面,由Cdialog类派生出CMyprojectDlg类,用来处理账号注册与用户登录。

(2)图书查询页面。由Cdialog类派生出CSearch类。包含读取所有图书数据响应函数,以及根据作者姓名或者书名来查询图书响应函数。

(3)管理员图书管理页面。由Cdialog类派生出CBookdata类。包含读取所有图书响应函数,添加图书响应函数,修改图书响应函数,删除图书响应函数。(4)用户信息管理页面,由Cdialog类派生出CUserdata类。包含读取所有用户信息响应函数,删除用户响应函数、添加用户响应函数、修改用户信息响应函数。

因为本人能力有限,而且自己是根据老师给的教程以及结合书本内容来完成课程设计,于是我第一想到的就是应数组来存储信息,而不是用链表,所以,对于文件数据的删除与修改,难免会过于乏力。

三.关键模块实现及主要代码

(1)自己建立的类 1.用户类: class CUser { public: int num;char password[20];};

2.图书信息类:

class Book

//图书类 { public:

char author[10];

//设置作者姓名

char bname[20];

//设置图书书名

char pub_name[20];

//设置出版社名称

int pub_date;

//设置出版年月 };

(2)登录页面,由Cdialog类派生出CMyprojectDlg类,用来处理账号注册与用户登录。1.用户注册处理响应函数:

void CMyprojectDlg::OnButton3()

//用户注册 { // TODO: Add your control notification handler code here

////////////////////////////////////////////////////////////////////////////////////// //以下代码主要还是把这条记录写入文件,注意写入的格式:文件的前四个字节是保持用户记录数,//后面依次保持用户记录注意,写用户的每个信息的顺序要与读取时的顺序一致。

UpdateData(TRUE);CUser user;int n_user=0;

//用户的个数,管理员默认为第一个。自己输入为账号:1111,密码:0000。

int size=0;

fstream file(“user.dat”,ios::in|ios::out);// 建立一个文件类,关于其用法,请baidu。

file.seekg(ios::beg);

//将文件指针指向文件头。

file.read((char*)&n_user,sizeof(n_user));

//读取用户数。

n_user+=1;file.seekp(ios::beg);file.write((char*)&n_user,sizeof(n_user));//写学生记录个数

user.num=m_num;

//之前定义user.password为string,导致密码匹配时有错误。。。

memcpy(user.password,m_password.GetBuffer(m_password.GetLength()),m_password.GetLength());// 把类CString对象的内容赋值到字符数组中

user.password[m_password.GetLength()]='';//在数组末尾加结束符号

//在文件末尾,把新的记录写入。

file.seekp(4+(n_user-1)*sizeof(CUser),ios::beg);

//这里出错

file.write((char*)&user.num,sizeof(user.num));file.write((char*)&user.password,sizeof(user.password));

file.close();

///////////////////////////////////////////////////////////////////////////////////////// //用消息框提示

CString str;str.Format(“成功注册,成为第 %d 个注册用户,请按确定返回重新登录.”,n_user-1);

///因为第一个为管理员,不算为用户人数。

AfxMessageBox(str);

} 2.用户登录处理响应函数。其中包含判断是管理员,还是普通用户。void CMyprojectDlg::OnButton2()

//用户登录 { // TODO: Add your control notification handler code here

UpdateData(TRUE);

CUser m_user[100];int i;int size;int n_user=0;//文件中用户的个数

////////////////////////////////////////////////////////////////////////////////////////// //读取文件中的用户记录,注意读取顺序与写入的顺序要一致,文件最开始的4个字节是表示记录个数。

//根据记录个数,依次读取用户记录 放在成员变量m_st数组中(已在类体中声明了)

CFile file;

file.Open(“user.dat”,CFile::modeReadWrite);size=GetFileSize((void*)file.m_hFile,NULL);//读取文件大小,size==0表示是空文件

if(size>0){

file.SeekToBegin();

file.Read(&n_user,sizeof(n_user));}

if(n_user>0 && n_user<99)//实验中限定为0~100个用户记录

{

for(i=0;i

{

//请注意与写入数据的顺序要保持一样,否则会读错数据。

file.Read(&(m_user[i].num),sizeof(m_user[i].num));

file.Read(&(m_user[i].password),sizeof(m_user[i].password));

} } file.Close();///////////////////////////////////////////////// if(m_num==1111&&m_password==“0000”)

//管理员进入管理员页面

{

CAdministrators administrators;

administrators.DoModal();}

CString str_password;for(i=0;i

//普通用户,进入图书查询页面

{

str_password=m_user[i].password;

if(m_user[i].num==m_num)

{

if(str_password==m_password)

{

CSearch search;

search.DoModal();

}

else

{

CString str;

str.Format(“密码或者账号错误,请重新输入!”);

AfxMessageBox(str);

}

} } }

(3)图书查询页面。包含读取所有图书数据,以及根据作者姓名或者书名来查询图书。1.读取所有图书响应函数。

void CSearch::OnButton5()

//显示出所有图书 { // TODO: Add your control notification handler code here int i;int size;int n_book=0;//文件book的本数

////////////////////////////////////////////////////////////////////////////////////////// //读取文件中的书本记录,注意读取顺序与写入的顺序要一致,文件最开始的4个字节是表示记录个数。

//根据记录个数,依次读取书籍记录 放在成员变量m_user_book数组中(已在类体中声明了)

CFile file;

file.Open(“book.dat”,CFile::modeReadWrite);size=GetFileSize((void*)file.m_hFile,NULL);//读取文件大小,size==0表示是空文件

if(size>0){

file.SeekToBegin();

file.Read(&n_book,sizeof(n_book));}

if(n_book>0 && n_book<99)//实验中限定为0~100个书本记录

{

m_num_book=n_book;

for(i=0;i

{

//请注意与写入数据的顺序要保持一样,否则会读错数据。

file.Read(&(m_user_book[i].author),sizeof(m_user_book[i].author));

file.Read(&(m_user_book[i].bname),sizeof(m_user_book[i].bname));

file.Read(&(m_user_book[i].pub_name),sizeof(m_user_book[i].pub_name));

file.Read(&(m_user_book[i].pub_date),sizeof(m_user_book[i].pub_date));

} } file.Close();///////////////////////////////////////////////// //在列表控件中显示所有条记录

//插入每列的表头;

m_list.InsertColumn(0,“作者”,LVCFMT_LEFT,100,1);

m_list.InsertColumn(1,“书名”,LVCFMT_LEFT,100,1);m_list.InsertColumn(2,“出版社”,LVCFMT_LEFT,100,1);m_list.InsertColumn(3,“出版日期”,LVCFMT_LEFT,100,1);//每一行插入一条书本记录

for(i=0;i

CString str;

str=m_user_book[i].author;

m_list.InsertItem(i,str);//InsertItem向CListCtr控件申请一行用来存放数据,同时写入一行的头名称(即编号为0列的数据)

str=m_user_book[i].bname;

m_list.SetItemText(i,1,str);//设置第i行第1列的的数据为书名

str=m_user_book[i].pub_name;

m_list.SetItemText(i,2,str);//设置第i行第2列的的数据为出版社

str.Format(“%d”,m_user_book[i].pub_date);

///整型变为字符串,便于在控件显示

m_list.SetItemText(i,3,str);//设置第i行第3列的的数据为出版日期

} }

2.图书查询响应函数。

void CSearch::OnButton4()

//查询图书 { // TODO: Add your control notification handler code here

UpdateData(TRUE);m_list.DeleteAllItems();int num=0;//表示查找结果的个数

int i;

for(i=0;i

{

CString str;

int ret1=0,ret2=0;

str=m_user_book[i].author;

ret1=str.Find(m_author,0);//ret1>=0, 表示str中包含了m_author的字段

str=m_user_book[i].bname;

ret2=str.Find(m_bname,0);//ret2>=0, 表示str中包含了m_bname的字段

if(ret1>=0)

//按作者查询

{

str=m_user_book[i].author;

m_list.InsertItem(num,str);//InsertItem向CListCtr控件申请一行用来存放数据,同时写入一行的头名称(即编号为0列的数据)

str=m_user_book[i].bname;

m_list.SetItemText(num,1,str);//设置第i行第1列的的数据为书名

str=m_user_book[i].pub_name;

m_list.SetItemText(num,2,str);//设置第i行第2列的的数据为出版社

str.Format(“%d”,m_user_book[i].pub_date);

///整型变为字符串,便于在控件显示

m_list.SetItemText(num,3,str);//设置第i行第3列的的数据为出版日期

num+=1;//结果+1;

}

} }

(4)管理员图书管理页面。包含读取所有图书,添加图书,修改图书,删除图书的功能。1.读取所有图书功能实现与(3)的实现一样。2.添加图书响应函数。

void CBookdata::OnButton7()

//添加图书 { UpdateData(TRUE);Book book;int n_book=0;

//书本的个数

int size=0;

fstream file(“book.dat”,ios::in|ios::out);// 建立一个文件类,关于其用法,请baidu。

file.seekg(ios::beg);

//将文件指针指向文件头。

file.read((char*)&n_book,sizeof(n_book));

//读取书籍数。

////////////////////////////////////////////////////////////////////////////////////// //以下代码主要还是把这条记录写入文件,注意写入的格式:文件的前四个字节是保持书本记录数,//后面依次保持书本记录注意,写学生的每个信息的顺序要与读取时的顺序一致。

n_book+=1;file.seekp(ios::beg);file.write((char*)&n_book,sizeof(n_book));//写学生记录个数

memcpy(book.author,m_add_author.GetBuffer(m_add_author.GetLength()),m_add_author.GetLength());// 把类CString对象的内容赋值到字符数组中 book.author[m_add_author.GetLength()]='';//在数组末尾加结束符号

memcpy(book.bname,m_add_bname.GetBuffer(m_add_bname.GetLength()),m_add_bname.GetLength());// 把类CString对象的内容赋值到字符数组中

book.bname[m_add_bname.GetLength()]='';//在数组末尾加结束符号

memcpy(book.pub_name,m_add_pub_name.GetBuffer(m_add_pub_name.GetLength()),m_add_pub_name.GetLength());// 把类CString对象的内容赋值到字符数组中

book.pub_name[m_add_pub_name.GetLength()]='';//在数组末尾加结束符号

book.pub_date=m_add_pub_date;

//在文件末尾,把新的记录写入。

file.seekp(4+(n_book-1)*54,ios::beg);

file.write((char*)&book.author,sizeof(book.author));file.write((char*)&book.bname,sizeof(book.bname));file.write((char*)&book.pub_name,sizeof(book.pub_name));file.write((char*)&book.pub_date,sizeof(book.pub_date));

file.close();///////////////////////////////////////////////////////////////////////////////////////// //用消息框提示

CString str;str.Format(“文件中已有 %d 本书籍记录.”,n_book);AfxMessageBox(str);}

3.修改图书响应函数。

void CBookdata::OnButton5()

//修改图书,,必须先读取图书才能修改图书。{ // TODO: Add your control notification handler code here UpdateData(TRUE);m_list.DeleteAllItems();m_list.InsertColumn(0,“作者”,LVCFMT_LEFT,100,1);

m_list.InsertColumn(1,“书名”,LVCFMT_LEFT,100,1);m_list.InsertColumn(2,“出版社”,LVCFMT_LEFT,100,1);m_list.InsertColumn(3,“出版日期”,LVCFMT_LEFT,100,1);

CString str_author,str_bname,str_pub_name,str;

//将book类的字符串数组赋值为字符串变量,方便比较。

CFile file;// 建立一个文件类,关于其用法,请baidu。

file.Open(“book.dat”,CFile::modeReadWrite);//打开文件

file.SeekToBegin();

file.Write(&m_num_book,sizeof(m_num_book));//写书本记录本数

for(int i=0;i

{

str_author=m_book[i].author;

str_bname=m_book[i].bname;

str_pub_name=m_book[i].pub_name;

if(str_author==m_author||str_bname==m_bname||str_pub_name==m_pub_name||m_book[i].pub_date==m_pub_date)

{

memcpy(m_book[i].author,m_modify_author.GetBuffer(m_modify_author.GetLength()),m_modify_author.GetLength());// 把类CString对象的内容赋值到字符数组中

m_book[i].author[m_modify_author.GetLength()]='';//在数组末尾加结束符号

memcpy(m_book[i].bname,m_modify_bname.GetBuffer(m_modify_bname.GetLength()),m_modify_bname.GetLength());// 把类CString对象的内容赋值到字符数组中

m_book[i].bname[m_modify_bname.GetLength()]='';//在数组末尾加结束符号

memcpy(m_book[i].pub_name,m_modify_pub_name.GetBuffer(m_modify_pub_name.GetLength()),m_modify_pub_name.GetLength());// 把类CString对象的内容赋值到字符数组中

m_book[i].pub_name[m_modify_pub_name.GetLength()]='';//在数组末尾加结束符号

m_book[i].pub_date=m_modify_pub_date;

}

////////////////////////////////////////////////////////////////////////////////////// //以下代码主要还是把这条记录写入文件,注意写入的格式:文件的前四个字节是保持学生记录数,//后面依次保持学生记录注意,写学生的每个信息的顺序要与读取时的顺序一致。

file.Write(&m_book[i].author,sizeof(m_book[i].author));

file.Write(&m_book[i].bname,sizeof(m_book[i].bname));

file.Write(&m_book[i].pub_name,sizeof(m_book[i].pub_name));

file.Write(&m_book[i].pub_date,sizeof(m_book[i].pub_date));

///////////////////////////////////////////////////////////////////////////////////////// //在列表控件中显示所有条记录

str=m_book[i].author;

m_list.InsertItem(i,str);//InsertItem向CListCtr控件申请一行用来存放数据,同时写入一行的头名称(即编号为0列的数据)

str=m_book[i].bname;

m_list.SetItemText(i,1,str);//设置第i行第1列的的数据为书名

str=m_book[i].pub_name;

m_list.SetItemText(i,2,str);//设置第i行第2列的的数据为出版社

str.Format(“%d”,m_book[i].pub_date);

///整型变为字符串,便于在控件显示

m_list.SetItemText(i,3,str);//设置第i行第3列的的数据为出版日期

}

file.Close();

//用消息框提示

str.Format(“成功修改书籍记录.”);AfxMessageBox(str);}

4.删除图书响应函数。

void CBookdata::OnButton6()

//删除图书,,读取了图书数据后才能删除图书 { // TODO: Add your control notification handler code here UpdateData(TRUE);m_list.DeleteAllItems();m_list.InsertColumn(0,“作者”,LVCFMT_LEFT,100,1);

m_list.InsertColumn(1,“书名”,LVCFMT_LEFT,100,1);m_list.InsertColumn(2,“出版社”,LVCFMT_LEFT,100,1);m_list.InsertColumn(3,“出版日期”,LVCFMT_LEFT,100,1);

CString str_author,str_bname,str_pub_name,str;

//将book类的字符串数组赋值为字符串变量,方便比较。

int n_book,n_flag=0;

// n_flag为删除标志,1为有元素删除了

CFile file;// 建立一个文件类,关于其用法,请baidu。

file.Open(“book.dat”,CFile::modeReadWrite);//新建一个文件并且打开文件

file.SeekToBegin();

file.Write(&m_num_book,sizeof(m_num_book));//写书本记录本数,先填入本来的书本数。

for(int i=0;i

{

str_author=m_book[i].author;

str_bname=m_book[i].bname;

str_pub_name=m_book[i].pub_name;

if(str_author==m_del_author||str_bname==m_del_bname||str_pub_name==m_del_pub_name||m_book[i].pub_date==m_del_pub_date)

{

n_flag=1;

//删除标志置1

i+=1;

//第i个元素为要删除元素,跳过

}

////////////////////////////////////////////////////////////////////////////////////// //以下代码主要还是把这条记录写入文件,注意写入的格式:文件的前四个字节是保持 学生记录数,//后面依次保持学生记录注意,写学生的每个信息的顺序要与读取时的顺序一致。

file.Write(&m_book[i].author,sizeof(m_book[i].author));

file.Write(&m_book[i].bname,sizeof(m_book[i].bname));

file.Write(&m_book[i].pub_name,sizeof(m_book[i].pub_name));

file.Write(&m_book[i].pub_date,sizeof(m_book[i].pub_date));

}

if(n_flag==1)

{

n_book=m_num_book-1;

//表示删除了一本书,则将文件的书本数减1。

file.SeekToBegin();

file.Write(&n_book,sizeof(n_book));//写书本记录本数,先填入本来的书本数。

//用消息框提示

str.Format(“成功删除书籍记录.”);

AfxMessageBox(str);

}

else

{

//用消息框提示

str.Format(“没有这一本书的记录,不能删除.”);

AfxMessageBox(str);

}

file.Close();}

(5)、用户信息管理页面,包含读取所有用户信息,删除、添加、修改用户信息。1.读取所有用户信息以(4)基本相同。

2.删除用户信息实现基本方法与(4)基本相同。3.添加用户信息实现基本方法与(4)基本相同。4.修改用户信息实现基本方法与(4)基本相同。

四.实验结果及分析

(1.)登录页面 成功注册

普通用户成功登录页面

查询结果

管理员登录页面

图书管理页面

成功添加图书。

用户信息管理页面

分析:基本功能是可以实现的,但是因为是用数组来存放图书信息与用户信息,所以对于数据大了之后处理能力不够方便以及效率不高。而且删除信息的时候只是删除该条数据的信息,数据后面的信息往上移动,所以最后面会有两条重复的信息,虽然文件开头储存信息数目已经减一,读取数据是按照文件开头储存的信息数目来读取信息,但是有时候读取会有乱码。我在程序中找不到那个隐藏的bug,五、心得体会

这次C++课程设计学到了很多,懂得了C++看起来虽然简单,可是要用这个计算机语言来实现一些有用的功能,怎么运用确实是一门挺高深的学问,我们学习计算机语言不能只是看书看概念,要多上机实验,这样才能对计算机语言有比较深的了解,才能够提高自己的编程以及调试找BUG的能力。现在来总结一下编程过程中遇到的一些值得注意的问题。

1.派生出一个类时,为编辑框增加变量名后,然后在类声明中自己增加类成员,如果再想在对话框中增加编辑框并且添上变量名会出现错误。(如下,在Csearch 类中自己添加下面箭头指向的代码后,会出现下图右的错误,解决方法是把箭头指向的代码放到//}}AFX_DATA后面,因为此语句为MFC对话框自行添加编辑变量的结束,如果我们将自己定义的变量也添加到此语句前,编译器不清楚是MFC自行添加的变量还是用户自行添加的变量。)2.遇到编译器没有出错,可是运行结果与自己想象的不一样,很可能是逻辑错误。如: 在用户注册时,我是将用户数据直接存到文件尾,这是不正确的,因为管理员页面有删除用户的功能,这个功能的原理是先读文件头的用户数(假定为10个),然后将用户的数据先读取出来,然后经过一个判断,再储存重新储存回文件,而文件中储存的用户数据大小是没有变化的,也就是说文件尾会有两份最后一个用户的数据(即如果删除的是第七个,文件中最后会有两份第十个用户的数据,文件头的记录用户数为9个),如果添加用户直接储存在文件尾则会储存在第11个用户的位置,可是以后读取的话只是读取到第10个。所以会出现读取错误,密码不匹配的问题。应该根据记录的用户数让文件指针指向最后一个用户数据后面。file.seekp(4+(n_user-1)*sizeof(CUser),ios::beg);

以上两个问题是困扰我比较久的,其他问题经过百度还有自己的调试,解决还算快,不值得重点说。

六、参考文献

1.C++面向对象程序设计(第二版)

谭浩强 编著 2.成绩管理系统MFC教程

3.CNDN论坛,关于文件操作的指针运算。

下载C++课程设计公司人事管理系统word格式文档
下载C++课程设计公司人事管理系统.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    c++课程设计:教务管理系统源代码

    #include #include using namespace std; class Person { public: Person(string n):name(n){} virtual void show(){} ~Person(){} protected: string name; }; class......

    航空售票系统+C++课程设计源代码

    #include #include #define M 5//每种飞机票的总数目 #define N 3//飞机票的总数目 class Plane {private: char name[40];//终点站名int number;//航班号int Number;//......

    C++课程设计 教职工信息管理系统源代码

    教职工信息管理系统源码 #include #include #include #include #define maxsize 100 fstream iofile; //文件指针 class Time //时间类 { public: int year; int......

    c++课程设计心得体会

    课程设计心得体会 学生成绩管理是高等学校教务管理的重要组成部分,其内容较多,要完成能够实现人员的信息录入、查询、修改、删除、统计、保存、显示等操作。系统具体实现的功......

    c++课程设计总结

    课程设计总结 经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。 在......

    C++课程设计学生成绩管理分析系统

    五、解决方案 C++程序设计实践教学环节任务书 1. 分析程序的功能要求,划分程序功能模块。 2. 画出系统流程图。 一、题目: 学生成绩管理分析系统 3. 代码的编写。定义类和各......

    人事管理系统

    企业人事财务管理系统的开发与设计 内容摘要 随着Internet的不断发展,传统的管理方式,消耗大量的人力物力,传统的方式已经赶不上时代的脚步,所以开发一个高效的企业人事财务管......

    C++程序设计课程设计人口户籍信息管理系统源程序

    九、源程序代码 #include #include #include #include//kj;lj;j;j; class population { private: int maxnum;//人口户籍编号最大值r int sno;//编号 char name[20]; char......