湖南科技大学计算机科学与工程学院
数据库课程设计报告
题目:人事管理管理系统
学 号:1005030221
姓 名:艾向兵
指导教师:张黎
完成时间:20##年1月4日
组员:苏勇,成佳裕,艾向兵
企业人事管理系统主要用于员工个人资料的录入,职务变动的记录和管理。使用人事管理系统,便于公司领导掌握人员的动向,及时调整人才的分配
1.1系统功能需求分析
人事管理系统主要有以下几项功能要求:
.新员工资料的输入。
.自动分配员工编号,并且设置初始的用户密码:
.人事变动的记载,包括岗位和部门的调整。
.员工信息的查询和修改,包括员工个人信息和密码
1.2 系统功能模块设计
根据系统功能要求,可以将系统分解成几个模块来分别设计应用程序界面,如图,
人事资源管理 包括:新员工档案输入,人事变更,员工档案查询
1.3 与其它系统的关系
本关系是公司管理信息系统的基础部分,为其他子系统,如考勤管理系统,工资管理系统和员工培训系统,提供员工的基本信息。同时为其他系统提供了员工登录的密码认证和权限分配。
1.4数据库设计
数据库需求分析:
员工信息:员工号,密码,权限,姓名,性别,生日,专业,通讯地址,电话,Email,当前状态,其他。
人事变动:记录号,员工,变动,详细描述
部门设置:部门编号,名称
员工变动代号表
员工信息表
员工职位代码表
管理员登陆界面
信息查询,修改,删除主界面
查询单个员工的界面
总 结
这次的课程设计,是在学习了Java以后通过阅读课本及在图书馆借阅相关书籍同严景、孟珍三人共同完成的。在开发这个系统的过程中,碰到很多或大或小的问题,我们一起思考,一起努力,最后大部分都解决了,得到了现在的这个简单的人事管理系统。
在编制过程中,我们首先考虑到了界面的友好性,并在界面设计时不采用烦琐的细节,使界面简单、清晰,便于操作。一开始我们是想做个登录界面,实现用户的登录权限管理,但试了几次都没有达到预期的效果,最后不得不放弃。
通过这次课程设计,我知道了什么事情都不那么简单,只有努力去做了,你才会有收获,不管收获大小,付出的过程总是有的。有些事情只有亲身感受,你才知道它的价值有多大。同时在遇到困难的时候要沉着冷静,首先要冷静分析问题,对于很难解决的问题要学会请教他人,还可以与别人合作。
在这次数据库系统课程设计中,我主要进行的是界面的设计,以及进行进行整合操作,界面是我学习Java以来第一次做,以前不怎么用的JTabel等,现在都已经熟练的应用了,特别是这次的弹出窗口,我在做这个的时候可谓是一窍不通,因为把按钮JButton定义为了局部变量而在时间响应中而得不到另一个窗口的弹出。
还有就是在整个过程中的ID传递让我不知怎么办,一个简单的参数传递才得以搞定,基础知识还是不够牢靠。在得到修改表的数据库内容后未把值传给表格。
虽然这次课程设计付出了大量的时间,但是我知道我得到的收获远远不是这些时间可以衡量的,它将给我今后的学习和工作带来更多的收益。通过对此课题的开发,使我对用Java开发系统有了一个比较清楚的认识,体会到理论和实践的重要性。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如没有设置登录界面,没有考虑到异常等多方面问题,这些都有待进一步完善和提高。对于文中出现的不足和系统中出现的问题敬请老师指导。
弹出登录程序的界面程序
publicvoid 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("");
}
}
进行信息查询,修改,删除的程序响应代码:
publicvoid 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();
}
publicvoid 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);
}
}
}
publicvoid 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++面向对象课程设计报告_(学生成绩管理系统)
课 程 设 计 报 告
课程名称 面向对象程序设计
课题名称 学生成绩管理系统
专 业 计算机科学与技术
班 级 计算机 1001
学 号
姓 名
指导教师
20##年 12 月 28 日
湖南工程学院
课 程 设 计 任 务 书
课程名称 面向对象程序设计
课 题 学生成绩管理系统
专业班级 计算机1001
学生姓名
学 号
指导老师
审 批
任务书下达日期 20## 年 11 月 15 日
任务完成日期 20## 年 12 月 28 日
一、设计内容与设计要求
1.课程设计目的:
面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。
2.课题题目
1)公司库存管理系统
2)高校学籍管理系统
3)高校工资管理系统
4)高校人事管理系统
5)通讯录程序设计
6)学生成绩管理系统
7) 图书管理系统
8)文本编辑器的设计与实现
9)学生考勤管理系统
10)公司人员管理系统
3.设计要求:
⑴ 设计课题题目:每位同学根据自己学号除以10所得的余数加1选择相应题号的课题。随意换题者不记成绩。
⑵ 根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。②完成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。③完成系统详细设计:包括数据库需求分析;数据库概念结构设计(E-R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。④系统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。⑤使用说明书及编程体会:说明如何使用你编写的程序,详细列出每一步的操作步骤。⑥关键源程序(带注释)
⑶ 按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷ 不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
二、进度安排
第 17 周 星期一 8:00——12:00
星期二 8:00——12:00
星期四 8:00——12:00
第 18 周 星期一 8:00——12:00
星期二 14:30——18:30
星期三 8:00——12:00
三、参考书籍
1.《C++程序设计课程设计》 刘振安编著 TP312C563
2.《C++ Builder和Delphi课程设计与系统开发案例》 伍俊良 清华大学出版社 7-302-06072-X
3.Visual C++课程设计案例精编 严华峰 中国水利水电出版社 7-5084-20##-1 2004
4.Visual C++课程设计与系统开发案例 伍俊良 清华大学出版社 7-302-05968-3 2002
5.Visual C++语言课程设计 : 案例精选与编程指导 陈清华朱红 东南大学出版社 7-81089-275-4 2003
6.VisualC++课程设计案例精编 中国水利水电出版社 7-5084-1004-1 2002
7.数据结构课程设计案例精编 : 用C/C++描述 李建学李光元吴春芳 清华大学出版社 7-302-14536-9 2007
(编程平台不限,vc++, c++ Builder等等。)
课题6:学生成绩管理系统
(一)、课程设计题目:
学生成绩管理系统
(二)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
(三)、设计方法和基本原理:
1、问题描述(功能要求):
设计一个实用的小型学生成绩管理程序,具有查询,检索和删除功能,并且能够打开或修改指定文件及将多个文件组成一个文件。它完全使用类来实现,充分体现面向对象的程序设计特点。
要求:
实现主要功能:建立文件,文件的存取和显示,删除记录,查询记录。可以随时检索,删除,或增加记录,也可以保存或取消新的记录。
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;
(2)分析系统中的各个实体及它们之间的关系包括属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告以及系统使用说明书
目 录
1. 系统需求分析.............................................................................................................. 1
2. 总体设计...................................................................................................................... 2
3. 详细设计...................................................................................................................... 3
4. 系统调试...................................................................................................................... 6
5. 结果分析...................................................................................................................... 8
6. 总结.............................................................................................................................. 9
7. 程序代码.................................................................................................................... 10
1. 系统需求分析
1.1系统设计的目的与意义:
现在的学校学生数量较多,各样的考试也比较频繁,因此需要一个学生成绩管理系统来对学生的成绩进行管理。
1.2 系统功能需求:
本系统有四个类,Score类、Subject类、Student类、Class类,存储学生的个人信息、考试科目及成绩信息。有学生成绩信息录入、学生成绩信息修改、学生成绩信息显示、学生成绩信息删除、学生成绩信息查询以及数据保存文件等功能。
2. 总体设计
2.1 系统功能分析:
系统通过调用函数来实现学生成绩信息录入、学生成绩信息修改、学生成绩信息删除、学生成绩信息查询以及数据保存文件等功能。Insert()函数用于录入学生成绩及信息;Update1()函数用来修改学生成绩及信息;Show()函数用于显示所有已有的记录;Delete()函数用来删除学生成绩及信息;Search1()及Search2()函数用来查询及信息;Save()函数用于将输入的信息存入文件内;主函数main()用于调用这些函数。
2.2系统功能模块划分与设计:
本系统定义了Score类、Subject类、Student类以及Class类这四个类,定义了Insert()、Update1()、Show()、Save()、Delete()、Search1()及Search2()等函数来实现系统所需功能。
2.3 系统功能模块图:
3. 详细设计
3.1 分数类的设计:
该类定义了一个整型变量用来存放分数,定义了设置份总数和显示分数的函数。
图 3.1
3.2 科目类的设计:
该类定义了一个Score类类型的变量,定义了一个字符数组用来存放科目名称,定义了设置和显示私有成员的函数。
图 3.2
3.3 学生类的设计:
该类定义了一个Subject类类型的数组,一个字符型数组和一个字符变量,两个整型变量以及设置和显示私有成员的函数。
图 3.3
3.4 班级类的设计:
该类定义了一个Student类类型的变量、字符型数组、整型及设置和显示私有成员的函数等。
图 3.4
3.5 各个类的关系描述:
图 3.5.1
图 3.5.2
图 3.5.3
4. 系统调试
4.1 在调试过程中,出现了下面一些错误:
1、输入数据时,输错了数据的类型会造成死循环,因此输入时需要注意。
2、一开始主界面输入非正确字母时,没有提示错误。容易造成用户误解,在主函数的switch语句结束处加上default:cout<<"选择错误,请从新选择!";就可以了。
4.2 具体调试过程:
主界面
学生成绩录入
学生成绩查询
学生成绩显示
学生成绩修改
记录存入文件
学生成绩删除
5. 结果分析
程序总共设计了四个类,满足了课题对类的要求,在设计的过程中,建立了较为清晰的类层次,也利用了面向对象的方法以及C++的编程思想来完成系统的设计,做到了用文件存储学生成绩信息、从文件中读取学生成绩信息、修改信息、查询信息、删除信息显示文件中存储的信息等要求。而且界面简洁,容易操作。但是程序太长,不够简练,导致出现错误很难发现和修改。
6. 总结
首先,接到设计题目之后,在对本题目进行分析的时候,我懂得了一个很重要的道理,那就是说一个程序的产生需要一个对题目要求有一个正确全面的分析。其次,就该考虑程序算法的问题了,一个好的算法是一个好程序的灵魂,也决定了一个程序的质量。
两个星期的课设虽然有些疲劳和困倦,但带给我很多的收获。C++已经学了一个学期了,有许多知识都存在似懂非懂的现象,这种现象通过实际的上机操作,已经减少了许多。对这些知识也有了更深的理解和很好的掌握。也有很多理论上说得过去的代码,但到了实际操作,却是行不通的。这种困惑,有许多已经通过实际操作解决了,并能够深刻认识,但也有很多没有明白。只能避过这些方法,换方法实现。在课程设计之前,因为有了综合实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输入电脑,并用编译器将其运行,发现通过不了,再来检查找出问题,这是一件非常辛苦的事情,也很浪费时间。于是在课程设计的时候,我花了四天的时间来规划与写代码,将要实现的内容分析清楚,才把代码输入电脑。我觉得写程序,应该先找到该程序中的核心地方,用多种方法来实现该核心,这才可能避免等到发现逻辑上或者编译器不支持上的错误,才来想补救的措施,这样花费时间在想补救措施是很不值得的。
这次的课程设计,真是让我充分的感觉到了要自己设计一个程序是多么的难,以及学习好c++是多么的重要。在这个程序的设计过程中,我清楚的意识到自己的水平有多么的薄弱,课程的知识学得有多么的不扎实。看网上的例子好像觉得也没那么难,自己一上机实际操作就出现了很多问题,调试的时候系统总是在报错,还有很多警告,每增加一个函数就要调试好久,有时候应为少了一个大括号或是分号,导致要找很久很久。虽然系统可以运行,也具有了一些基本的功能,但我意识到了自己有太多的不足。
以后还会有很多的课程设计,一定要吸取这次的教训,把知识学懂学透学精,真正的为我所用,这样走上社会我才能真正的发挥所长。
7. 程序代码
#include
#include
#include
using namespace std;
int M=100;
static int M2=0;
class Score{ //分数类
private:
int score;
public:
Score(int s=0){
score=s;
}
void set1(){
cout<<"请输入分数:"<
cin>>score;
}
void show1(){
cout<<": "<
}
};
class Subject{ //科目类
private:
Score sc;
char subject[20];
public:
Subject(){
for(int i=0;i<20;i++)
subject[i]=0;
}
void set2(){
cout<<"请输入科目名称:"<
cin>>subject;
sc.set1();
}
void show2(){
cout<
sc.show1();
}
};
class Student{ //学生类
private:
Subject p1[8];
char name[20];
int num;
char S;
int n;
public:
Student(){
for(int i=0;i<20;i++)
name[i]=0;
num=0;
S=0;
}
void set3();
void show3();
int getNU1(){return num;}
char *getNA1(){return name;}
};
void Student::show3(){ //学生类显示函数
int i;
cout<<"姓名:"<
for(i=0;i<8;i++)
p1[i].show2();
}
void Student::set3(){ //学生类修改函数
int i;
cout<<"请输入学生姓名:";
cin>>name;
cout<<"请输入该生学号:";
cin>>num;
cout<<"请输入该生性别:";
cin>>S;
cout<<"请输入每门课程的名字及分数."<
for(i=0;i<8;i++)
p1[i].set2();
}
class Class{ //班级类
private:
Student stu;
char name2[20];
int num2;
public:
Class(){
for(int i=0;i<20;i++)
name2[i]=0;
num2=0;
}
int getNU(){return stu.getNU1();}
string getNA(){return stu.getNA1();}
void set4(){
cout<<"请输入该生所在班级名称:";
cin>>name2;
cout<<"请输入该班班号:";
cin>>num2;
stu.set3();
}
void show4(){
cout<<"班级:"<
stu.show3();
}
friend void Search1(Class c1[],int count1);
friend void Search2(Class c2[],int count2);
friend void Update1(Class c3[],int count_d);
friend void Delete(Class c4[],int *count_c);
friend void Insert(Class c5[],int &count_a);
}b[100];
void Save(Class c6[],int count) //记录存入文件函数
{
fstream file("class.dat",ios::out|ios::binary);
if(!file)
{
cout<<"file coun't open."<
abort();
}
for(int i=0;i
file.write(reinterpret_cast(&c6[i]),sizeof(c6[i]));
file.close();
}
void Show(Class c7[]) //显示记录函数
{
int i=0;
for(i=0;c7[i].getNU()!=0;i++)
c7[i].show4();
}
void Insert(Class c5[],int &count_a) //信息录入函数
{
int i,in_number,n=0;
if(count_a==M)
{
cout<<"空间已满!";
return;
}
cout<<"请输入学生的学号:"<
do
{
do
{
cin>>in_number;
for(i=0;i
{
if(c5[i].getNU()==in_number)
cout<<"已有相同的学号,请重新输入!"<
break;
}
}while(c5[i].getNU()==in_number);
if(in_number<1)
cout<<"输入错误,请重新输入大于零的整数!"<
}while(in_number<=0);
i=count_a;
c5[i].set4();
count_a++;
cout<
if(n!=0)
cout<<"学生成绩录入成功!"<
}
void Search1(Class c1[],int count1) //按学号查询信息函数
{
int i,number,flag=1,n=0;
cout<<"请输入所要查询的学生的学号:"<
do
{
cin>>number;
if(number<=0)
cout<<"输入错误,请重新输入大于零的整数!"<
}while(number<=0);
for(i=0;i
if(c1[i].getNU()==number)
{
c1[i].show4();
flag=0;n=n+1;
}
if(n==0)
cout<<"没有查询到该学生的资料!"<
}
void Search2(Class c2[],int count2) //按姓名查询信息函数
{
int i,n=0;
char nam[20];
cout<<"请输入所要查询的学生的姓名:"<
cin>>nam;
for(i=0;i
if(c2[i].getNA()==nam)
{
c2[i].show4();
n=n+1;
}
if(n==0)
cout<<"没有查询到该学生的资料!"<
}
void Update1(Class c3[],int count_d) //信息修改函数
{
int i,n=0,flag=1,m;
char nam[20];
cout<<"请输入所要修改的学生的姓名:"<
cin>>nam;
for(i=0;i
{
if(c3[i].getNA()==nam)
{
cout<<"请输入所要修改的学生的学号:"<
cin>>m;
for(i=0;i
{
if(c3[i].getNU()==m)
{
c3[i].set4();
flag=0;n=n+1;
}
}
}
break;
}
if(n!=0)
cout<<"修改成功!"<
if(n==0)
cout<<"没有查询到该学生的资料!"<
}
void Delete(Class c4[]) //信息删除函数
{
fstream file("class.dat",ios_base::in|ios_base::out|ios_base::binary);
int i=0;
for(i=0;i<100;i++)
{
file.read(reinterpret_cast(&b[i]),sizeof(b[i]));
}
for(i=0;b[i].getNU()!=0;i++)
;
M2=i;
Class c9;
int n=0,number,flag=1;
cout<<"请输入要要进行操作的学生的学号:"<
cin>>number;
for(i=0;i
{
if(c4[i].getNU()==number)
{
for(i;i
c4[i]=c4[i+1];
flag=0;
(M2)--;n=1;
Save(b,M2);
break;
}
}
if(n==0)
cout<<"没有查询到可以删除的资料!"<
if(n!=0)
cout<<"资料删除成功!"<
}
int main()
{
char a1;
fstream file("class.dat",ios_base::in|ios_base::out|ios_base::binary);
cout<<"\t\t**************欢迎进入学生成绩管理系统**************"<
do
{
cout<<"请选择功能:"<
cout<<"\t\t\ta.学生成绩查询"<
cout<<"\t\t\tb.学生成绩录入"<
cout<<"\t\t\tc.学生成绩删除"<
cout<<"\t\t\td.学生成绩修改"<
cout<<"\t\t\te.显示全部记录"<
cout<<"\t\t\tf.记录存入文件"<
cout<<"\t\t\tg.退出系统"<
int i=0;
for(i=0;i<100;i++)
{
file.read(reinterpret_cast(&b[i]),sizeof(b[i]));
}
for(i=0;b[i].getNU()!=0;i++)
;
M2=i;
cin>>a1;
switch(a1)
{
case 'a':
{
cout<<"\t\t\t请继续选择:"<
cout<<"\t\t\t\t1.按学号查询信息"<
cout<<"\t\t\t\t2.按姓名查询信息"<
int x;
cin>>x;
switch(x)
{
case 1:Search1(b,M2);break;
case 2:Search2(b,M2);break;
default:cout<<"选择错误,请重新选择!"<
}
}
break;
case 'b':Insert(b,M2);break;
case 'c':
{
file.close();
Delete(b);
}break;
case 'd':Update1(b,M2);break;
case 'e':Show(b);break;
case 'f':
{
file.close();
Save(b,M2);
cout<<"保存文件成功!"<
fstream file("class.dat",ios_base::in|ios_base::out|ios_base::binary);
};break;
case 'g':{file.close();break;}
default:cout<<"选择错误,请重新选择!"<
}
}while(a1!='g');
return 0;
}
计算机与通信学院课程设计评分表
课程名称: 面向对象程序设计
教师签名:
日 期: