.net程序设计实验四-员工信息查询程序
员工信息管理系统(含附源代码)03

scanf("%s",work[i].name);
printf("\n\t请输入员工身份证号:");
scanf("%s",work[i].ID);
printf("\n\t请输入员工性别:");
scanf("%s",work[i].sex);
printf("\n\t请输入员工出生日期(yyyy-mm-dd):");
开始选择更新内容i结束开始选择查询内容i结束按性别统计年龄查询函数isum判断两工作号相等isumworkiworki1sumflag1是否继续输入工作号退出删除结束开始输出信息结束开始开始isum输入年龄输出信息结束判断员工的年龄段变量自加开始输入年龄chisum存在员工输出员工信息继续查询退出查询结束身份证排序
scanf("%s",work[i].sex);
printf("\n\t请输入员工出生日期(yyyy-mm-dd):");
scanf("%d-%d-%d",&work[i].birthday.year,&work[i].birthday.month,&work[i].birthday.day);
printf("\n\t请输入员工年龄:");
printf("\t **输入'e'退出列表**\n");
ch=getche();
if(ch=='e')
break;
clrscr();
printf("\t *****员工基本信息列表*****\n");
职工信息管理系统实验报告

职工信息管理系统一、课题内容和要求要求对职工信息有增加、查找功能和删除功能。
职工信息包括工号、姓名、性别、年龄。
(1)增加员工记录要求用户输入4项内容,并创建结点链入已存在的链表尾部,如果是第一个记录请创建头结点。
查找员工记录要求用户输入要查找的员工编号完成查找工作并输出该员工信息。
删除员工记录要求用户输入要删除的员工编号完成查找和拆链工作。
(2)在增加和删除完一个员工记录之后应该把所有的员工记录都打印出来。
(3)请将所有职工信息存入文件当中,并在主界面中显示一条“读取文件职工信息”,该功能可将文件中的职工信息打印至屏幕。
二、需求分析菜单函数(表现层):包括主菜单和查询菜单。
对职工信息操作的函数(逻辑层):包括添加职工信息、删除职工信息、修改职工信息、查询职工信息和查询全部职工信息。
对文件操作的函数(数据层):把数据写入文件中,注意是把整条链表的数据都写入。
利用文件指针可以完成:从文件中读取所有数据、从文件中查找符合条件的数据、从文件中删除符合条件的数据和从文件中修改符合条件的数据。
对链表操作的函数(存储结构):新建链表或新建一个结点,插入、删除、修改结点,销毁一个链表。
其它的函数:设计光标位置函数、显示职工信息(属于表现层)、登陆函数(属于表现层)和主函数(主要进行身份识别和管理员登陆)。
三、概要设计职工信息包括以下几点:1.工号2.姓名3.性别4.年龄其中对职工信息的操作包括以下几点:1.增加职工信息2.修改职工信息3.删除职工信息4.查询职工信息四、源程序代码//包含的头文件#include"stdio.h"#include"stdlib.h"#include"string.h"#include"Conio.h"#include"windows.h"#include"math.h"//职工结构体的定义struct employee{char num[30];//职工编号,唯一标识这个职工,不能重复char name[30];//姓名char sex[30];//性别char age[30];//年龄};//链表结点的定义typedef struct node{struct employee e;struct node * next;}ListNode,*LinkList;//函数声明void Gotoxy(int x,int y);int addInfo(LinkList pnode);int delInfo(LinkList pnode);int modInfo(LinkList pnode);LinkList searchInfo(LinkList pnode);void addFile(LinkList head);LinkList getFile();LinkList getByNode(LinkList pnode);int deleteByNode(LinkList pnode);int modifyByNode(LinkList oldNode,LinkList newNode); LinkList creatListOrNode();void addNode(LinkList head,LinkList pnode);int delNode(LinkList head,LinkList pnode);int modNode(LinkList head,LinkList pnode,LinkList newNode); void displayInfo(LinkList head);int login();void mainMenu();void searchMenu();LinkList searchAllInfo();void destroy(LinkList head);/************* 以下是菜单函数(表现层)**************///主菜单void mainMenu(){LinkList pnode=creatListOrNode();LinkList p=creatListOrNode();int nChoice=1;while(nChoice){strcpy(pnode->e.num,"null");strcpy(pnode->,"null");strcpy(pnode->e.sex,"null");system("cls");//清屏Gotoxy(25,3);printf("**********************************");Gotoxy(25,4);printf("** 职工信息管理系统**");Gotoxy(25,5);printf("**********************************");Gotoxy(25,6);printf("** —操作选单—**");Gotoxy(25,7);printf("添加职工信息——————————1");Gotoxy(25,8);printf("删除职工信息——————————2");Gotoxy(25,9);printf("修改职工信息——————————3");Gotoxy(25,10);printf("查询职工信息——————————4");Gotoxy(25,11);printf("返回——————————————0");Gotoxy(25,12);printf("**********************************");Gotoxy(25,13);printf("** 请用数字键选择操作**");Gotoxy(25,14);scanf("%d",&nChoice);Gotoxy(25,15);switch(nChoice){case 1:Gotoxy(25,16);printf("请按顺序输入职工信息\n(职工号姓名性别年龄)");Gotoxy(0,18);scanf("%s%s%s%s" ,pnode->e.num,pnode->,pnode->e.sex,pnode->e.age);if(addInfo(pnode)){Gotoxy(25,19);printf("添加成功! 按任意键后重新选择!");getch();}else{Gotoxy(25,19);printf("此工号已存在,添加失败! 按任意键后重新选择!");getch();}break;case 2:Gotoxy(25,16);printf("请按顺序输入职工号:");Gotoxy(25,18);scanf("%s",pnode->e.num);if(delInfo(pnode)){Gotoxy(25,19);printf("删除成功! 按任意键后重新选择!");getch();}else{Gotoxy(25,19);printf("此工号不存在,删除失败! 按任意键后重新选择!");getch();}break;case 3:Gotoxy(25,16);printf("请按顺序输入职工号:");Gotoxy(25,18);scanf("%s",pnode->e.num);p=searchInfo(pnode)->next;if(p!=NULL){Gotoxy(0,19);printf("%-8s%-8s%-8s%-8s","工号","姓名","性别","年龄");Gotoxy(0,20);printf("%-8s%-8s%-8s%-8s",p->e.num,p->,p->e.sex,p->e.age);Gotoxy(0,21);printf("请按顺序输入职工信息\n(姓名性别年龄)");Gotoxy(0,23);scanf("%s%s%s%s" ,pnode->,pnode->e.sex,pnode->e.age);modInfo(pnode);Gotoxy(25,24);printf("修改成功! 按任意键后重新选择!");getch();}else{Gotoxy(25,19);printf("此工号不存在,修改失败! 按任意键后重新选择!");getch();}break;case 4:searchMenu();break;case 0:nChoice=0;break;default :Gotoxy(25,22);printf("输入错误!请重新输入!");Gotoxy(25,23);printf("按任意键后重新选择!");getch();}}}//查询菜单void searchMenu(){LinkList pnode=creatListOrNode();LinkList p=creatListOrNode();int nChoice=1;while(nChoice){strcpy(pnode->e.num,"null");system("cls");//清屏Gotoxy(25,3);printf("**********************************"); Gotoxy(25,4);printf("** 查询菜单**"); Gotoxy(25,5);printf("**********************************"); Gotoxy(25,6);printf("** —操作选单—**"); Gotoxy(25,7);printf("按工号查找———————————1"); Gotoxy(25,8);printf("显示全部职工信息————————2"); Gotoxy(25,9);printf("返回上一级菜单—————————0"); Gotoxy(25,10);printf("**********************************"); Gotoxy(25,11);printf("** 请用数字键选择操作**"); Gotoxy(25,12);scanf("%d",&nChoice);Gotoxy(25,13);switch(nChoice){case 1:Gotoxy(25,14);printf("请按顺序输入职工工号:");Gotoxy(25,15);scanf("%s",pnode->e.num);p=searchInfo(pnode);displayInfo(p);break;case 2:p=searchAllInfo();displayInfo(p);break;case 0:nChoice=0;break;default :Gotoxy(25,19);printf("输入错误!请重新输入!");Gotoxy(25,20);printf("按任意键后重新选择!");getch();}}}/************* 以上是菜单函数(表现层)**************//************* 以下是对职工信息操作的函数(逻辑层)**************/ //添加职工信息int addInfo(LinkList pnode){LinkList head=getFile();LinkList p=creatListOrNode();strcpy(p->e.num,pnode->e.num);if(getByNode(p)->next!=NULL)//说明此工号已经存在,不能添加{return 0;}else//此工号没记录,可以添加{addNode(head,pnode);addFile(head);return 1;}}//删除职工信息int delInfo(LinkList pnode){return deleteByNode(pnode);}//修改职工信息int modInfo(LinkList pnode){return modifyByNode(getByNode(pnode)->next,pnode);}//查询职工信息LinkList searchInfo(LinkList pnode){return getByNode(pnode);}//查询出全部职工信息LinkList searchAllInfo(){return getFile();}/************* 以上是对职工信息操作的函数(逻辑层)**************//************* 以下是对文件操作的函数(数据层)**************///把数据写入文件中,注意是把整条链表的数据都写入void addFile(LinkList head){//文件指针FILE *fp;LinkList p=head->next;if((fp=fopen("employeeInfo.txt","w"))==NULL){printf("不能打开该文件!\n");exit(0);}while(p!=NULL){fprintf(fp,"%-8s%-8s%-8s%-8s\n",p->e.num,p->,p->e.sex,p->e.age);p=p->next;}if(fclose(fp)){printf("不能关闭文件!\n");exit(0);}}//从文件中读出所有数据LinkList getFile(){LinkList newList=creatListOrNode();FILE *fp;if((fp=fopen("employeeInfo.txt","r"))==NULL){fp=fopen("employeeInfo.txt","a+");}while(!feof(fp)){LinkList pnode=creatListOrNode();fscanf(fp,"%s%s%s%s\n",pnode->e.num,pnode->,pnode->e.sex,pnode->e.age);if(ftell(fp)!=0){addNode(newList,pnode);}}if(fclose(fp)){printf("不能关闭文件!\n");exit(0);}return newList;}//从文件中查找符合条件的数据LinkList getByNode(LinkList pnode){LinkList newList=creatListOrNode();LinkList p=getFile();p=p->next;while(p!=NULL){LinkList q=creatListOrNode();if(strcmp(p->e.num,pnode->e.num)==0 || strcmp(p->,pnode->)==0 || strcmp(p->e.sex,pnode->e.sex)==0 ){q->e=p->e;addNode(newList,q);}p=p->next;}return newList;}//从文件中删除符合条件的数据int deleteByNode(LinkList pnode){int f=0;LinkList head=getFile();LinkList p=head->next;while(p!=NULL){if(strcmp(p->e.num,pnode->e.num)==0){delNode(head,p);f=1;break;}p=p->next;}if(f==1){addFile(head);return 1;}elsereturn 0;}//从文件中修改符合条件的数据int modifyByNode(LinkList oldNode,LinkList newNode){int f=0;LinkList head=getFile();LinkList p=head->next;while(p!=NULL){if(strcmp(p->e.num,oldNode->e.num)==0){modNode(head,p,newNode);f=1;break;}p=p->next;}if(f==1){addFile(head);return 1;}elsereturn 0;}/************* 以上是对文件操作的函数(数据层)**************//************* 以下是对链表操作的函数(存储结构)**************/ //新建链表或新建一个结点LinkList creatListOrNode(){LinkList head=(LinkList)malloc(sizeof(ListNode));head->next=NULL;return head;}//往链表中插入一个结点void addNode(LinkList head,LinkList pnode){if(head->next==NULL){head->next=pnode;pnode->next=NULL;}else{pnode->next=head->next;head->next=pnode;}}//删除一个结点int delNode(LinkList head,LinkList pnode){LinkList p,q;p=head->next;q=head;while(p!=NULL){if(p==pnode){break;}q=p;p=p->next;}if(p!=NULL){q->next=p->next;free(p);return 1;}elsereturn 0;}//修改一个结点int modNode(LinkList head,LinkList pnode,LinkList newNode) {LinkList p;p=head->next;while(p!=NULL){if(p==pnode){break;}p=p->next;}if(p!=NULL){p->e=newNode->e;return 1;}elsereturn 0;}//销毁一个链表void destroy(LinkList head){LinkList p=creatListOrNode();p=head->next;while(p!=NULL){free(p);p=p->next;}}/************* 以上是对链表操作的函数(存储结构)**************//************* 以下是其它的函数**************///设置光标位置函数void Gotoxy(int x,int y){COORD c;//坐标结构体c.X=x;c.Y=y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);//设置光标位置}//显示职工信息(属于表现层)void displayInfo(LinkList head){int i=21;LinkList p=head->next;if(p==NULL){Gotoxy(25,20);printf("没有记录!");}else{Gotoxy(0,20);printf("%-8s%-8s%-8s%-8s","工号","姓名","性别","年龄");while(p!=NULL){Gotoxy(0,i);printf("%-8s%-8s%-8s%-8s",p->e.num,p->,p->e.sex,p->e.age);p=p->next;i++;}}Gotoxy(25,i);printf("按任意键继续!");getch();}//登陆函数(属于表现层)int login(){char username[50];char password[50];Gotoxy(25,10);printf("请输入用户名:");Gotoxy(25,11);scanf("%s",username);Gotoxy(25,12);printf("请输入密码:");Gotoxy(25,13);scanf("%s",password);if((strcmp(username,"caofei")==0)&&(strcmp(password,"10002732")==0)){return 1;}else{return 0;}}//主函数(主要进行身份识别和管理员登陆)void main(){int m;int nChoice=1;while(nChoice){system("cls");//清屏Gotoxy(25,2);printf("_____________________________");Gotoxy(25,3);printf("欢迎进入职工信息管理系统!");Gotoxy(25,4);printf(" 学号:10002732 姓名:曹飞");Gotoxy(25,5);printf("-----------------------------");Gotoxy(25,7);printf("请按数字键选择你的身份:");Gotoxy(25,8);printf("管理员—1,普通员工—2,退出—0");Gotoxy(25,9);scanf("%d",&m);if(m==1){if(login()){mainMenu();}else{Gotoxy(25,14);printf("输入的用户名或密码错误!请重新输入!");Gotoxy(25,15);printf("按任意键后重新选择!");getch();}}else if(m==2){searchMenu();}else if(m==0){nChoice=0;Gotoxy(25,10);printf("谢谢使用!");Gotoxy(25,11);}else{Gotoxy(25,10);printf("输入错误!请重新输入!");Gotoxy(25,11);printf("按任意键后重新选择!");getch();}}}/************* 以上是其它的函数**************/五、测试数据及其结果分析首次打开程序的欢迎界面,包括管理员、普通职工和退出三个选项。
C语言程序设计-职工信息管理系统(链表)

信息与电子工程学院C语言课程设计职工信息管理系统设计实验日期和时间: 2011年06月27日-06月29日实验类别:课程设计实验类型:设计性一、实验环境操作系统:windows xp编程工具:Microsoft Visual C++ 6.0开发环境:CPU(Inter(R)Core(TM)2 Quad cpu QB200 @ 2.33GHz)内存:2.76GB 硬盘:228.3GB开发地点:现代教育中心201机房A17座IP:10.250.11.17二、实验目的和要求实验目的:(1)使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作算法。
(2)使学生进一步掌握程序设计、编写、调试能力。
(3)使学生了解软件开发的基本步骤和内容。
实验要求:完成一个职工信息管理系统程序,具体内容如下:(1)在内存中用链表记录,在硬盘上用二进制文件保存。
(2)设计完的程序能够以命令行或者菜单形式增加、删除、更新和查询数据的内容。
数据内容能够排序以方便查询。
(3)数据库中应该有至少20条记录。
三、实验内容和结果(1)程序整体功能;1、系统总体框2、模块设计该程序主要分为7个模块,分别是创建与添加模块、显示模块、查找模块、修改模块、删除模块、存档模块、文件统计模块、退出模块(2)程序组成及各模块/函数功能;创建与添加模块:该模块的功能是输入职工信息。
函数为void Add(Node *woker)原理:采用尾插法,先建立链表与头结点,新增一个结点,键盘输入职工号、职工姓名、职工性别、职工出生年月、职工学历、职工职位、职工工资,将这些信息存储到新增结点中,将新增加的节点连到链表的尾端,如此以往,将尾结点的指针域置空,这样就得到了一条存储职工信息的链表,这样就完成了职工信息的创建与增加。
显示模块:该模块功能是显示职工信息。
函数为void Disp(Node *woker) 原理:先新建一个指针P指向头结点,判断它的指针域是否为空,若为空,则输出“没有记录可以显示”;若不为空,则输出它的指针域所指向节点所储存的职工信息,并将该指针向后移一个结点,直到P指向空,即输出了所有职工的信息,这样就完成了所有职工信息的显示。
员工信息管理系统实验报告

华侨大学厦门工学院《面向对象程序设计实践》课程实验报告(分组实验)实验名称 __ 员工基本信息管理系统_ __系部 __ 计算机科学与工程系_____班级 ___ 软件3班____________小组名称 ______ 第三组_____________指导老师文欣计算机科学与工程系2014年06月12日一、实验名称员工基本信息管理系统二、实验目的及任务要求目的:对员工的信息进行有效的管理和储存任务要求:对员工的信息进行增加,删除,查找,修改等功能三、实验环境eclipse.exe四、实验内容//注册用户import javax.swing.*;import java.awt.*;import java.awt.Event.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.*;public class UserRegister extends JFrame implements ActionListener { JLabel lblUserName;JLabel lblUserPwd;JTextField txtUserName;JPasswordField txtUserPwd;JButton btnRegister;JButton btnCancel;public UserRegister() {super("用户注册");lblUserName = new JLabel("用户名");lblUserName.setBounds(40, 40, 70, 50);txtUserName = new JTextField(10);txtUserName.setBounds(120, 50, 100, 24);lblUserPwd = new JLabel("密码");lblUserPwd.setBounds(40, 70, 70, 50);txtUserPwd = new JPasswordField(10);txtUserPwd.setEchoChar('*');txtUserPwd.setBounds(120, 85, 100, 24);btnRegister = new JButton("注册");btnRegister.setBounds(55, 135, 60, 30);btnCancel = new JButton("取消");btnCancel.setBounds(140, 135, 60, 30);Container cc = this.getContentPane();cc.setLayout(null);cc.add(lblUserName);cc.add(txtUserName);cc.add(lblUserPwd);cc.add(txtUserPwd);cc.add(btnRegister);cc.add(btnCancel);btnRegister.addActionListener(this);btnCancel.addActionListener(this);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLocation(300, 200);this.setSize(270, 220);this.setResizable(false);this.setVisible(true);}public void actionPerformed(ActionEvent e) {if (e.getSource() == btnRegister) {DataBaseManager db = new DataBaseManager();String username = txtUserName.getText().trim();char[] pwd = txtUserPwd.getPassword();String password = new String(pwd);password = password.trim();if (username.equals("") || password.equals("")) { System.out.println(username.trim());JOptionPane.showMessageDialog(null, "用户名或密码不能为空");return;}String sql = "select * from user where username=" + "'" + username + "'";ResultSet rs = db.getResult(sql);try {if (rs.next()) {JOptionPane.showMessageDialog(null, "该用户名已存在!", "Message",JOptionPane.DEFAULT_OPTION);}else {sql = "insert into user values(" + "'" + username + "'"+ ",'" + password + "')";db.updateSql(sql);System.out.println(sql);JOptionPane.showMessageDialog(null, "注册成功!", "Message",JOptionPane.DEFAULT_OPTION);}}catch (Exception ee) {System.out.println(ee.getMessage());} finally {db.closeConnection();}}else if (e.getSource() == btnCancel) {this.dispose();}}public static void main(String args[]) {new UserRegister();}}//用户登录import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Font;import java.awt.HeadlessException;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.DriverManager;import java.sql.Statement;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import javax.swing.AbstractButton;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;class Login extends JFrame implements ActionListener { //JLabel j1 = null;JTextField text = null;//JLabel j2 = null;JLabel j3 = null;JLabel j4 = null;JPasswordField pass = null;JTextField text1 =null;JButton b1 = null;JButton b2 = null;Font fnt = new Font("方正舒体", Font.BOLD, 20);JPanel p=new ImagePanel("F:\\my picture\\验证码 .jpg");JPanel jpanel=new ImagePanel("F:\\my picture\\登录界面.jpg"); public Login(String title) throws HeadlessException { super(title);// TODO Auto-generated constructor stub//j1 = new JLabel("用户名");//j1.setFont(fnt);//j1.setForeground(Color.white);text = new JTextField(10);text.setFont(fnt);text.setForeground(Color.black);text.setOpaque(false);text.setBorder(null);text1=new JTextField(10);text1.setFont(fnt);text1.setForeground(Color.black);text1.setOpaque(false);text1.setBorder(null);//j2 = new JLabel("密码");//j2.setFont(fnt);//j2.setForeground(Color.white);j3=new JLabel(" ");j3.setFont(fnt);j3.setForeground(Color.white);pass = new JPasswordField(10);pass.setEchoChar('*');pass.setFont(new Font("",Font.ITALIC,15));pass.setForeground(Color.black);pass.setOpaque(false);pass.setBorder(null);b1 = new JButton(" ");b1.setFont(fnt);b1.setForeground(Color.white);b1.setContentAreaFilled(false);b1.setBorder(null);b2 = new JButton(" ");b2.setFont(fnt);b2.setForeground(Color.white);b2.setContentAreaFilled(false);b2.setBorder(null);int xcenter =155;int ycenter = 50;setLocation(xcenter, ycenter);jpanel.setLayout(null);setSize(1050,680);p.setBounds(750,371,82,28);//j1.setBounds(40, 40, 70, 30);text.setBounds(538, 283, 177, 30);//j2.setBounds(40, 100, 70, 50);pass.setBounds(538, 326, 177, 30);text1.setBounds(538,370,177,30);b1.setBounds(531, 444, 76, 23);b2.setBounds(646, 444, 76, 23);//jpanel.add(j1);jpanel.add(text);//jpanel.add(j2);jpanel.add(pass);jpanel.add(text1);jpanel.add(b1);jpanel.add(b2);jpanel.add(p);this.getContentPane().add(jpanel);b1.addActionListener(this);b2.addActionListener(this);this.setResizable(false);this.setVisible(true);}public void actionPerformed(ActionEvent e) { DataBaseManager db = new DataBaseManager();String sql = "select * from user";ResultSet rs = db.getResult(sql);boolean flag = false;if (e.getSource() == b1) {try {while (rs.next()) {boolean flag1 = text.getText().trim().equals(rs.getString(1));boolean flag2 = pass.getText().trim().equals(rs.getString(2));if (flag1 && flag2) {if(text1.getText().trim().equals("xahv")){flag = true;JOptionPane.showMessageDialog(this, "成功登陆");dispose();new StaffMain("员工信息管理系统");// TODO Auto-generated method stub}else{flag = true;JOptionPane.showMessageDialog(this, "验证码错误");//dispose();}}}if (flag == false) {JOptionPane.showMessageDialog(this, "用户名或密码错误" );text.setText("");pass.setText("");}}catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}if (e.getSource() == b2) {text.setText("");text1.setText("");pass.setText("");}}}public class TestLogin {/*** @param args*/public static void main(String[] args) { // TODO Auto-generated method stubnew Login("登陆");}}//主界面import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Font;import java.awt.Frame;import java.awt.Graphics;import java.awt.GridLayout;import java.awt.HeadlessException;import java.awt.Image;import java.awt.Toolkit;import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import javax.swing.*;public class StaffMain extends JFrame implements ActionListener { private Font fnt = new Font("方正舒体", Font.BOLD, 25);private JButton j1 = new JButton("add~增加员工信息 ");private JButton j2 = new JButton("edit~修改员工信息 ");private JButton j3 = new JButton("del~删除员工信息 ");private JButton j4 = new JButton("query~查找员工信息 ");private JButton j5 = new JButton("all~所有员工信息 ");private JButton j6 = new JButton("exit~关于系统 ");private JLabel label = new JLabel("欢迎进入员工管理系统");private JPanel jpanel1 = new ImagePanel("f:\\my picture\\6f470395853e7f507bf480bb.jpg");public StaffMain(String s) throws HeadlessException { super(s);// TODO Auto-generated constructor stubContainer c = getContentPane();c.setLayout(new BorderLayout());setLocation(283, 84);setSize(800, 600);init();c.add(jpanel1);j1.addActionListener(this);j2.addActionListener(this);j3.addActionListener(this);j4.addActionListener(this);j5.addActionListener(this);j6.addActionListener(this);setResizable(false);setVisible(true);}void init() {jpanel1.setLayout(null);j1.setBounds(410, 100, 350, 30); j2.setBounds(380, 140, 350, 30); j3.setBounds(420, 180, 350, 30); j4.setBounds(390, 220, 350, 30); j5.setBounds(420, 260, 350, 30); j6.setBounds(390, 300, 350, 30); label.setBounds(185, 20, 450, 35); j1.setForeground(Color.white);j2.setForeground(Color.white);j3.setForeground(Color.white);j4.setForeground(Color.white);j5.setForeground(Color.white);j6.setForeground(Color.white); label.setForeground(Color.white); j1.setContentAreaFilled(false);j1.setBorder(null);j2.setContentAreaFilled(false);j2.setBorder(null);j3.setContentAreaFilled(false);j3.setBorder(null);j4.setContentAreaFilled(false);j4.setBorder(null);j5.setContentAreaFilled(false);j5.setBorder(null);j6.setContentAreaFilled(false);j6.setBorder(null);jpanel1.add(j1);jpanel1.add(j2);jpanel1.add(j3);jpanel1.add(j4);jpanel1.add(j5);jpanel1.add(j6);jpanel1.add(label);j1.setFont(fnt);j2.setFont(fnt);j3.setFont(fnt);j4.setFont(fnt);j5.setFont(fnt);j6.setFont(fnt);label.setFont(new Font("方正舒体", Font.BOLD, 40));}public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == j1) {dispose();new StaffAdd("增加员工信息");} else if (e.getSource() == j2) {dispose();new StaffUpdate("修改员工信息 ");} else if (e.getSource() == j3) {dispose();new StaffDelete();} else if (e.getSource() == j4) {dispose();new StaffQuery("查找员工信息");} else if (e.getSource() == j5) {dispose();new StaffAll();} else if (e.getSource() == j6) {new About();}}public static void main(String[] args) {// TODO Auto-generated method stubnew StaffMain("员工信息管理系统");}}//增加员工信息import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import java.awt.HeadlessException;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.ResultSet;import java.sql.SQLException;import javax.swing.ButtonGroup;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JRadioButton;import javax.swing.JTextField;class StaffAdd extends JFrame implements ActionListener {JPanel jpanel1 = new ImagePanel("f:\\my picture\\1.jpg");JLabel j1 = new JLabel("编号:");JLabel j2 = new JLabel("姓名:");JLabel j3 = new JLabel("性别 ");JLabel j4 = new JLabel("年龄:");JLabel j5 = new JLabel("工资:");JLabel j6 = new JLabel("地址:");JLabel j7 = new JLabel("部门:");JRadioButton radioButton1 = new JRadioButton("男"); JRadioButton radioButton2 = new JRadioButton("女"); JButton but1 = new JButton("添加 ");JButton but2 = new JButton("关闭 ");JButton but3 = new JButton("返回主菜单");Font fnt=new Font("方正舒体",Font.BOLD,25);JTextField text1 = new JTextField(10);JTextField text2 = new JTextField(10);JTextField text3 = new JTextField(10);JTextField text4 = new JTextField(10);JTextField text5 = new JTextField(10);JTextField text6 = new JTextField(10);ButtonGroup bg = new ButtonGroup();public StaffAdd(String s) throws HeadlessException { super(s);// TODO Auto-generated constructor stubStaffInit();jpanel1.add(j1);jpanel1.add(text1);jpanel1.add(j2);jpanel1.add(text2);jpanel1.add(j3);bg.add(radioButton1);bg.add(radioButton2);jpanel1.add(radioButton1);jpanel1.add(radioButton2);jpanel1.add(j4);jpanel1.add(text3);jpanel1.add(j5);jpanel1.add(text4);jpanel1.add(j6);jpanel1.add(text5);jpanel1.add(j7);jpanel1.add(text6);jpanel1.add(but1);jpanel1.add(but2);jpanel1.add(but3);this.getContentPane().add(jpanel1);but1.addActionListener(this);but2.addActionListener(this);but3.addActionListener(this);Toolkit kit = Toolkit.getDefaultToolkit();Dimension screen = kit.getScreenSize();int x = screen.width; /* 取得显示器窗口的宽度 */ int y = screen.height;setSize(820, 620);int xcenter = (x - 820) / 2;int ycenter = (y - 620) / 2;setLocation(xcenter, ycenter);setResizable(false);setVisible(true);}public void StaffInit(){jpanel1.setLayout(null);j1.setFont(fnt);j2.setFont(fnt);j3.setFont(fnt);j4.setFont(fnt);j5.setFont(fnt);j6.setFont(fnt);j7.setFont(fnt);text1.setFont(fnt);text2.setFont(fnt);text3.setFont(fnt);text4.setFont(fnt);text5.setFont(fnt);text6.setFont(fnt);but1.setFont(fnt);but2.setFont(fnt);but3.setFont(fnt);radioButton1.setFont(fnt);radioButton2.setFont(fnt);j1.setBounds(50,50,80,30);j2.setBounds(250,50,80,30);j4.setBounds(50,100,80,30);j5.setBounds(250,100,80,30);j6.setBounds(50,150,80,30);j7.setBounds(250,150,80,30);text1.setBounds(119,52,100,30);text2.setBounds(319,52,100,30);text3.setBounds(119,102,100,30);text4.setBounds(319,102,100,30);text5.setBounds(119,152,100,30);text6.setBounds(319,152,100,30);j3.setBounds(50,200,80,30);radioButton1.setBounds(150,203,85,30); radioButton2.setBounds(250,203,85,30); but1.setBounds(135,240,100,30);but2.setBounds(135,290,100,30);but3.setBounds(95,340,170,30);text1.setOpaque(false);text1.setBorder(null);text2.setOpaque(false);text2.setBorder(null);text3.setOpaque(false);text3.setBorder(null);text4.setOpaque(false);text4.setBorder(null);text5.setOpaque(false);text5.setBorder(null);text6.setOpaque(false);text6.setBorder(null);radioButton1.setContentAreaFilled(false); radioButton2.setContentAreaFilled(false); but1.setContentAreaFilled(false);but1.setBorder(null);but2.setContentAreaFilled(false);but2.setBorder(null);but3.setContentAreaFilled(false);but3.setBorder(null);j1.setForeground(Color.white);j2.setForeground(Color.white);j3.setForeground(Color.white);j4.setForeground(Color.white);j5.setForeground(Color.white);j6.setForeground(Color.white);j7.setForeground(Color.white);j1.setForeground(Color.white);text1.setForeground(Color.white);text2.setForeground(Color.white);text3.setForeground(Color.white);text4.setForeground(Color.white);text5.setForeground(Color.white);text6.setForeground(Color.white);but1.setForeground(Color.white);but2.setForeground(Color.white);but3.setForeground(Color.white);radioButton1.setForeground(Color.white);radioButton2.setForeground(Color.white);}public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stubDataBaseManager db = new DataBaseManager();String ID = text1.getText().trim();String sql = "select ID from staff";int flag = 0;if (e.getSource() == but1) {ResultSet rs = db.getResult(sql);try {while(rs.next())if (ID.equals(rs.getString(1))) {flag = 1;break;}} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}if (flag == 1) {JOptionPane.showMessageDialog(this, "编号相同不能插入");text1.setText("");text2.setText("");text3.setText("");text4.setText("");text5.setText("");text6.setText("");}if (flag == 0) {init();}} else if (e.getSource() == but2) {System.exit(0);} else {this.hide();new StaffMain("员工信息管理系统");}}public void init() {String sql;String s1 = text1.getText().trim();String s2 = text2.getText().trim();String s3 = radioButton1.getText();String s4 = radioButton2.getText();String s5 = text3.getText().trim();String s6 = text4.getText().trim();String s7 = text5.getText().trim();String s8 = text6.getText().trim();if (radioButton1.isSelected()) {sql = "insert into staff values('" + s1 + "','" + s2 + "','" + s3 + "','" + s5 + "','" + s6 + "','" + s7 + "','" + s8 + "')";new DataBaseManager().updateSql(sql);JOptionPane.showMessageDialog(this, "添加成功!", "提示",RMATION_MESSAGE);text1.setText("");text2.setText("");text3.setText("");text4.setText("");text5.setText("");text6.setText("");} else if (radioButton2.isSelected()) {sql = "insert into staff values('" + s1 + "','" + s2 + "','" + s4 + "','" + s5 + "','" + s6 + "','" + s7 + "','" + s8 + "')";new DataBaseManager().updateSql(sql);JOptionPane.showMessageDialog(this, "添加成功!", "提示",RMATION_MESSAGE);text1.setText("");text2.setText("");text3.setText("");text4.setText("");text5.setText("");text6.setText("");} else {JOptionPane.showMessageDialog(this, "请选择性别", "提示",RMATION_MESSAGE);}}public static void main(String args[]) {new StaffAdd("增加员工信息");}}//修改员工信息import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import java.awt.HeadlessException;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Vector;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;class StaffUpdate extends JFrame implements ActionListener, ItemListener { private JComboBox jcb;private JLabel jlabel = new JLabel("按编号修改:");private JLabel j1 = new JLabel("姓名: ");private JLabel j2 = new JLabel("性别: ");private JLabel j3 = new JLabel("年龄: ");private JLabel j4 = new JLabel("工资: ");private JLabel j5 = new JLabel("地址: ");private JLabel j6 = new JLabel("部门: ");private JTextField text1 = new JTextField(25);private JTextField text2 = new JTextField(25);private JTextField text3 = new JTextField(25);private JTextField text4 = new JTextField(25);private JTextField text5 = new JTextField(25);private JTextField text6 = new JTextField(25);private JPanel panel1 = new ImagePanel("F:\\my picture\\111 (2).jpg");private JButton but1 = new JButton("修改");private JButton but2 = new JButton("清除");private JButton but3 = new JButton("返回主菜单 "); private Font fnt=new Font("方正舒体",Font.BOLD ,25);private Container con = getContentPane();public StaffUpdate(String s) throws HeadlessException { super(s);panel1.setLayout(null);init();jcb.setOpaque(false);jlabel.setBounds(150,30,280,50);jcb.setBounds(295,40,100,30);j1.setBounds(20,100,100,50);j2.setBounds(20,150,120,50);j3.setBounds(20,200,120,50);j4.setBounds(20,250,120,50);j5.setBounds(20,300,120,50);j6.setBounds(20,350,120,50);but1.setBounds(80,435,100,30);but2.setBounds(200,435,100,30);but3.setBounds(115,485,180,30);text1.setBounds(85,111,80,30);text2.setBounds(85,161,80,30);text3.setBounds(85,211,80,30);text4.setBounds(85,261,80,30);text5.setBounds(85,311,80,30);text6.setBounds(85,361,80,30);text1.setOpaque(false);text1.setBorder(null);text2.setOpaque(false);text2.setBorder(null);text3.setOpaque(false);text3.setBorder(null);text4.setOpaque(false);text4.setBorder(null);text5.setOpaque(false);text5.setBorder(null);text6.setOpaque(false);text6.setBorder(null);but1.setContentAreaFilled(false);but1.setBorder(null);but2.setContentAreaFilled(false);but2.setBorder(null);but3.setContentAreaFilled(false);but3.setBorder(null);jlabel.setFont(fnt);jcb.setFont(fnt);j1.setFont(fnt);j2.setFont(fnt);j3.setFont(fnt);j4.setFont(fnt);j5.setFont(fnt);j6.setFont(fnt);text1.setFont(fnt);text2.setFont(fnt);text3.setFont(fnt);text4.setFont(fnt);text5.setFont(fnt);text6.setFont(fnt);but1.setFont(fnt);but2.setFont(fnt);but3.setFont(fnt);panel1.add(jlabel);panel1.add(jcb);panel1.add(j1);panel1.add(j2);panel1.add(j3);panel1.add(j4);panel1.add(j5);panel1.add(j6);panel1.add(text1);panel1.add(text2);panel1.add(text3);panel1.add(text4);panel1.add(text5);panel1.add(text6);panel1.add(but1);panel1.add(but2);panel1.add(but3);con.add(panel1);but1.addActionListener(this);but2.addActionListener(this);but3.addActionListener(this);jcb.addItemListener(this);setBounds(258, 57, 850, 650);setVisible(true);}public void init() {DataBaseManager db = new DataBaseManager();String sql = "select * from staff";ResultSet rs = db.getResult(sql);Object s1[] = new Object[100];int i = 0;try {while (rs.next()) {s1[i] = rs.getString(1);i++;text1.setText(rs.getString("name"));text2.setText(rs.getString("sex"));text3.setText(rs.getString("age"));text4.setText(rs.getString("wage"));text5.setText(rs.getString("address"));text6.setText(rs.getString("department"));}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}jcb = new JComboBox(s1);}public void itemStateChanged(ItemEvent e) {// TODO Auto-generated method stubif (e.getStateChange() == ItemEvent.SELECTED) {// 判断是否是选中String s = (String) e.getItem();// 返回受事件影响的项DataBaseManager db = new DataBaseManager();String sql = "select name,sex,age,wage,address,department from staff where ID="+ "'" + s + "'";ResultSet rs = db.getResult(sql);try {while (rs.next()) {text1.setText(rs.getString("name"));text2.setText(rs.getString("sex"));text3.setText(rs.getString("age"));text4.setText(rs.getString("wage"));text5.setText(rs.getString("address"));text6.setText(rs.getString("department"));}} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}}public void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == but1) {DataBaseManager db = new DataBaseManager();String s1 = (String) jcb.getSelectedItem();// 返回被选项String s2 = text1.getText();String s3 = text2.getText();String s4 = text3.getText();String s5 = text4.getText();String s6 = text5.getText();String s7 = text6.getText();String sql = "update staff set name=" + "'" + s2 + "',sex='" + s3 + "',age='" + s4 + "',wage='" + s5 + "',address='" + s6+ "',department='" + s7 + "'where ID=" + "'" + s1 + "'";db.updateSql(sql);JOptionPane.showMessageDialog(this, "成功修改 ");} else if (e.getSource() == but2) {String s1 = (String) jcb.getSelectedItem();text1.setText("");text2.setText("");text3.setText("");text4.setText("");text5.setText("");text6.setText("");String s2 = text1.getText();String s3 = text2.getText();String s4 = text3.getText();String s5 = text4.getText();String s6 = text5.getText();String s7 = text6.getText();String sql = "update staff set name=" + "'" + s2 + "',sex='" + s3 + "',age='" + s4 + "',wage='" + s5 + "',address='" + s6+ "',department='" + s7 + "'where ID=" + "'" + s1 + "'";DataBaseManager db = new DataBaseManager();db.updateSql(sql);} else {dispose();new StaffMain("员工信息管理系统");}}public static void main(String[] args) {// TODO Auto-generated method stubnew StaffUpdate("修改员工信息 ");}}//删除员工信息import java.awt.Color;import java.awt.Container;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.sql.ResultSet;import java.sql.SQLException;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;public class StaffDelete extends JFrame implements ActionListener { /****/private JLabel j1;//设置标签private JLabel j2;private JLabel j3;private JLabel j4;private JLabel j5;private JLabel j6;private JTextField text;//设置文本框private JTextField text1;private JTextField text2;private JTextField text3;private JTextField text4;private JTextField text5;private JTextField text6;private JButton but1;//设置按钮private JLabel jlabel;private JButton delete;private JButton returnButton;private Font fnt;//设置字体private Font fnt1;private JPanel panel1;//定义一个面板public StaffDelete() {super("删除员工信息");init();panel1.setLayout(null);//设置布局管理器panel1.add(but1);panel1.add(jlabel);panel1.add(j1);panel1.add(j2);panel1.add(j3);panel1.add(j4);panel1.add(j5);panel1.add(j6);panel1.add(text);panel1.add(text1);panel1.add(text2);panel1.add(text3);panel1.add(text4);panel1.add(text5);panel1.add(text6);panel1.add(delete);panel1.add(returnButton);setBounds(256, 57, 850, 650);this.getContentPane().add(panel1);setVisible(true);}void init() {panel1 = new ImagePanel("F:\\my picture\\1_120414121442_5.jpg");fnt = new Font("方正舒体", Font.BOLD, 30);fnt1 = new Font("华文新魏", Font.BOLD, 25);j1 = new JLabel("姓名:");j2 = new JLabel("性别:");j3 = new JLabel("年龄:");j4 = new JLabel("工资:");j5 = new JLabel("地址:");j6 = new JLabel("部门:");text = new JTextField(10);text1 = new JTextField(10);text2 = new JTextField(10);。
员工管理系统实验报告

一、实验目的1. 熟练掌握C语言编程技能,提高编程能力。
2. 理解并应用结构体、数组、链表等数据结构。
3. 学会使用文件操作,实现数据的持久化存储。
4. 设计并实现一个员工管理系统,提高实际编程能力。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 语言:C语言三、实验内容员工管理系统主要包括以下功能:1. 数据录入:录入员工信息,包括姓名、工号、性别、出生年月、部门、职位、联系方式等。
2. 数据显示:显示所有员工信息。
3. 数据查找:按工号或姓名查找员工信息。
4. 数据修改:修改指定员工的个人信息。
5. 数据删除:删除指定员工的个人信息。
6. 数据排序:按工号、姓名、部门等字段对员工信息进行排序。
四、实验步骤1. 创建员工结构体```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_NAME_LEN 50#define MAX_DEPT_LEN 50typedef struct {int id; // 员工工号char name[MAX_NAME_LEN]; // 员工姓名char gender; // 性别('M'、'F')char birth[11]; // 出生日期("YYYY-MM-DD") char dept[MAX_DEPT_LEN]; // 部门char position[MAX_NAME_LEN]; // 职位char contact[MAX_NAME_LEN]; // 联系方式} Employee;```2. 创建员工信息文件```cvoid createFile() {FILE fp = fopen("employee.dat", "wb");if (fp == NULL) {printf("创建文件失败!\n");exit(1);}fclose(fp);}```3. 数据录入```cvoid inputEmployee(Employee e) {printf("请输入员工工号:");scanf("%d", &e->id);printf("请输入员工姓名:");scanf("%s", e->name);printf("请输入性别(M/F):");scanf(" %c", &e->gender);printf("请输入出生日期(YYYY-MM-DD):"); scanf("%s", e->birth);printf("请输入部门:");scanf("%s", e->dept);printf("请输入职位:");scanf("%s", e->position);printf("请输入联系方式:");scanf("%s", e->contact);}```4. 数据显示```cvoid displayEmployee(Employee e) {printf("工号:%d\n", e->id);printf("姓名:%s\n", e->name);printf("性别:%c\n", e->gender);printf("出生日期:%s\n", e->birth);printf("部门:%s\n", e->dept);printf("职位:%s\n", e->position);printf("联系方式:%s\n", e->contact);}```5. 数据查找```cvoid searchEmployee(Employee e) {int id;printf("请输入要查找的员工工号:");scanf("%d", &id);FILE fp = fopen("employee.dat", "rb");if (fp == NULL) {printf("文件打开失败!\n");exit(1);}while (fread(e, sizeof(Employee), 1, fp) == 1) { if (e->id == id) {displayEmployee(e);break;}}fclose(fp);}```6. 数据修改```cvoid modifyEmployee(Employee e) {int id;printf("请输入要修改的员工工号:");scanf("%d", &id);FILE fp = fopen("employee.dat", "rb+");if (fp == NULL) {printf("文件打开失败!\n");exit(1);}while (fread(e, sizeof(Employee), 1, fp) == 1) { if (e->id == id) {displayEmployee(e);printf("请输入新的员工姓名:");scanf("%s", e->name);printf("请输入新的性别(M/F):");scanf(" %c", &e->gender);printf("请输入新的出生日期(YYYY-MM-DD):"); scanf("%s", e->birth);printf("请输入新的部门:");scanf("%s", e->dept);printf("请输入新的职位:");scanf("%s", e->position);printf("请输入新的联系方式:");scanf("%s", e->contact);fseek(fp, -sizeof(Employee), SEEK_CUR);fwrite(e, sizeof(Employee), 1, fp);break;}}fclose(fp);}```7. 数据删除```cvoid deleteEmployee(Employee e) {int id;printf("请输入要删除的员工工号:");scanf("%d", &id);FILE fp = fopen("employee.dat", "rb+");if (fp == NULL) {printf("文件打开失败!\n");exit(1);}Employee temp;int flag = 0;while (fread(e, sizeof(Employee), 1, fp) == 1) { if (e->id == id) {flag = 1;break;}}if (flag) {fseek(fp, -sizeof(Employee), SEEK_CUR);fread(&temp, sizeof(Employee), 1, fp);fwrite(&temp, sizeof(Employee), 1, fp);printf("删除成功!\n");} else {printf("未找到指定员工!\n");}fclose(fp);}```8. 数据排序```cvoid sortEmployee(Employee e, int (cmp)(const void , const void )) { qsort(e, 10, sizeof(Employee), cmp);}```9. 主函数```cint main() {Employee e;createFile();while (1) {printf("1. 数据录入\n");printf("2. 数据显示\n");printf("3. 数据查找\n");printf("4. 数据修改\n");printf("5. 数据删除\n");printf("6. 数据排序\n");printf("0. 退出\n");printf("请选择操作:");int choice;scanf("%d", &choice);switch (choice) {inputEmployee(&e);break;case 2:// 假设已经有10个员工信息for (int i = 0; i < 10; i++) { displayEmployee(&e);}break;case 3:searchEmployee(&e);break;case 4:modifyEmployee(&e);break;case 5:deleteEmployee(&e);break;case 6:sortEmployee(&e, cmpById);break;case 0:return 0;printf("无效的选项!\n");}}return 0;}```五、实验总结通过本次实验,我们学习了C语言编程的基本技能,掌握了结构体、数组、链表等数据结构,以及文件操作。
职工工资管理——程序设计实验报告

综合设计实验——职工工资信息管理专业:班级:学号:姓名:完成日期:2012/7/3一、实验目的:1、进一步熟悉开发环境,掌握编译、连接和调试的技巧;2、综合运用数组、指针、函数和文件,通过综合设计掌握数组、结构体、指针和函数之间的相互关系,掌握函数参数传递,理解“传值”、“传指针”和“传引用”3、熟悉具有复杂需求的大程序设计过程和注意事项二、实验内容:【题目描述】编写程序实现单位职工工资信息管理。
包含各种基本数据的录入、修改、删除、插入、查询、统计(应发工资=基本工资+职务工资+各种补助,实发工资=应发工资-水电费-公积金)【基本功能】:(1)添加功能:添加一个职工的基本信息,包括工资卡号、身份证号、姓名、基本工资、职务工资、各种补助、应发工资、水电费、公积金、实发工资等(2)删除功能:能够对一个职工的信息进行删除,例如按姓名进行删除(3)显示功能:显示所有职工的主要信息包括工资卡号、身份证号、姓名、基本工资、职务工资、各种补助、应发工资、水电费、公积金、实发工资等(4)查找功能:根据你键入的职工姓名,显示其详细信息(注:在main内显示查找到的职工信息!)(5)修改功能:根据你键入的职工姓名,对该职工工资信息进行修改。
(6)排序功能:对职工的信息按照实发工资进行排序(不得选用直接选择法,可以使用交换法、设标签的选择法、快速排序法等)。
【题目要求】(1) 按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;(2) 职工工资信息应该包含:工资卡号、身份证号、姓名、基本工资、职务工资、各种补助、应发工资、水电费、公积金、实发工资等;(3) 为各项操作功能设计一个菜单(可选)。
应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。
(4) 不使用C++的string类型来存放字符串(5) 函数接口参数设计允许使用C++引用类型(6) 建议使用动态堆内存分配,达到高效利用内存目的(本要求适合提高水平的同学,不做严格要求)【输入要求】应用程序运行后,在屏幕上显示一个菜单。
员工信息管理程序-数据结构与算法课程设计报告

合肥学院计算机科学与技术系课程设计报告2009~2010学年第二学期课程数据结构与算法课程设计名称员工信息管理程序学生姓名余傲学号0804012024专业班级08计本(2)班指导教师王昆仑2010年5月题目:员工管理程序一、问题分析和任务定义1、要求和任务:解决这个问题,要编写一个员工管理系统程序。
要求每个员工信息包括:编号、姓名、性别、年龄、学历、职务、电话、住址。
系统能够完成员工信息的查询、更新、插入、删除、排序功能。
要求:(1)排序:按其关键字,对所有员工的信息进行排序。
(2)查询:按指定条件查找员工。
(3)更新:按编号对某个员工的某项信息进行修改。
(4)插入:加入新员工的信息。
(5)删除:按编号删除已离职的员工的信息。
2、原始数据的输入及输出格式:原始数据要求输入员工的个人信息情况,包括编号、姓名、性别、年龄、学历、职务、电话及住址。
编号、年龄的输入为整型,其它输入均为字符数组。
输出的是对员工信息进行的排序、查询、更新、插入、删除等的具体情况。
员工信息如表一编号姓名性别年龄学历职位电话地址2001 tang male 25 master clerk 4367234 hefei2002 lily female 27 master clerk 4367116 hefei2003 wang male 29 doctor CEO 4367331 beijing2004 lucy female 26 master manager 4367137 henan将上述信息全都保存到employee.txt文件中,然后在从文件中读取信息进行相应操作并将操作结果存放于employee1.txt文件中。
3、设计算法的测试用例(1)输入四名员工信息。
显示四名员工的八种信息如下:2001 tang male 25 master clerk 4367234 hefei2002 lily female 27 master clerk 4367116 hefei2003 wang male 29 doctor CEO 4367331 beijing2004 lucy female 26 master manager 4367137 henan(2)查询:①按编号查询:输入要查找员工编号为2003,输出员工信息为(2003 wang male 29 doctor CEO 4367331 beijing);②按姓名查询:输入员工姓名为lucy,输出员工信息为(2004 lucy female 26 master manager 4367137 henan),输入员工姓名zhang,输出没有此员工。
《c语言程序设计报告》-职工信息管理系统

《c语言程序设计报告》一、设计题目:职工信息管理系统二、设计任务:职工信息包括:职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之难提供以下功能:(1)系统以菜单方式工作。
任一功能能执行完毕后均要求返回主菜单。
(2)职工信息录入功能——输入。
(3)职工信息浏览功能——输出。
(4)查询或排序功能(至少一种查询方式)——算法(5)按工资查询(6)按学历查询等(7)职工信息删除、修改功能(任选项)(8)退出:包括返回主界面和退出系统等功能。
3.课程设计要求:模块化程序设计上机调试通过较好的完成程序的主体设计,界面友好,功能齐全:程序思路清晰易懂,充分利用所学工具实现各项操作。
4、应用程序的模块示意图及流程图流程图5、程序设计与调试的体会:在这二周里,我觉得我学到了书上没有的知识。
刚开始盒到《C语言程序设计》课程设计任务与指导书时发现该程序特别难。
没有一点头绪,根本不知道从那里开始。
之后仔细看了设计方法及步骤时总算有了一点发现。
在调试的过程中有很多的语法错误,自己根本看不懂,即使这样我也没有放弃还是努力寻找错误,最终还是被我找到了并改正。
最难的是函数的调用,程序大体上编译成功,但是在调用函数时总是无法连接。
这是我编程序的最大难点。
程序编译完全成功后,我发现了C语言的强大的功能,C语言语言简洁、紧凑、使用方便、灵活、远算符丰富、数据结构丰富、具有良好的结构化,符合现代编程风格。
语法限制不太严格,程序设计自由度大。
程序设计是一门实践性很强的课程不可能只靠听课和看书就掌握C语言程序设计,应当十分重视自己的动手写程序和上机远行程序。
6、主要故障;(1)、在一个函数调用结束完后回不到主菜单排除方法:在该函数调用后加上bioskey()函数(2)、缺少函数的声名排除方法:在主程序里声名调用函数(3)、在写主程序的时候发现光标定位不准确,排除方法:在老师的指点下完成了这项7、源程序:#include <graphics.h>#include <conio.h>#include <stdio.h>#include <ctype.h>struct zhigong{int zhigonghao;char xingming[50];char xingbie[2];long birthday;char xueli[50]; /*定义结构体*/char zhiwu[50];long gongzi;char address[50];long phone;} workers[30];int n;main(){void input();void browse();void sortwage();void sortxl(); /*函数声名*/void del();void zhigonghao();int k;textcolor(RED); /*字体颜色*/textbackground(GREEN); /*背景颜色*/clrscr();gotoxy(1,10);{do{clrscr();printf("\n\t\t ************************************ ");printf("\n\t\t * welcome to coming * ");printf("\n\t\t ************************************ ");printf("\n\t\t * (1) input information * \n");printf("\n\t\t * (2) print information *\n");printf("\n\t\t * (3) search information *\n");printf("\n\t\t * (4) sort-wage *\n");printf("\n\t\t * (5) sort-xl *\n");printf("\n\t\t * (6) delete information *\n");printf("\n\t\t * (0) exit *\n");gotoxy(77,50);printf("\n\t\t please choose the service: (0~6)");scanf("%d",&k);switch(k){case 1:input();break;case 2:browse();bioskey(0);break;case 3:zhigonghao();bioskey(0);break;case 4:sortwage();bioskey(0);break;case 5:sortxl();bioskey(0);break;case 6:del();bioskey(0);break;case 0:exit(0);} }while(1);}}void input() /*函数调用*/{ char c;do{clrscr();gotoxy(91,27);printf("\nnumber:");scanf("%d",&workers[n].zhigonghao);gotoxy(94,25);printf("\nname:");scanf("%s",workers[n].xingming);gotoxy(97,24);printf("\nsex:");scanf("%s",workers[n].xingbie);gotoxy(100,29);printf("\nbirthday:");scanf("%ld",&workers[n].birthday);gotoxy(103,26);printf("\nxueli:");scanf("%s",workers[n].xueli);gotoxy(106,28);printf("\nzhiwu:");scanf("%s",workers[n].zhiwu);gotoxy(109,26);printf("\nwage:");scanf("%ld",&workers[n].gongzi);gotoxy(112,28);printf("\naddress:");scanf("%s",workers[n].address);gotoxy(115,26);printf("\nphone:");scanf("%ld",&workers[n].phone);n=n+1;gotoxy(25,20);printf(" you have added %d work,go on? (Y/N)\n",n);do{gotoxy(60,20);scanf("%c",&c);if (c!='y'&&c!='Y'&&c!='N'&&c!='n'){gotoxy(64,20);printf(" ");gotoxy(1,21);continue;}else break;}while (1);}while (c=='Y'||c=='y');}void browse() /*输出函数调用*/{ int i;clrscr();gotoxy(10,1);printf("\n\t***********browse all workers'information************");printf("\n\n");printf("********************************************************************************");printf("zhigonghao xingming xingbie birthday xueli zhiwu gongzi adress phone");printf("********************************************************************** **********");for(i=0;i<n;i++){ printf("%d,%13s,%8s,%13ld,%6s, %5s, %3ld, %6s, %ld\n",workers[i].zhigon ghao,workers[i].xingming,workers[i].xingbie,workers[i].birthday,workers[i].xueli,workers[i].zh iwu,workers[i].gongzi,workers[i].address,workers[i].phone);}}void zhigonghao() /*函数调用————职工号查询*/{int i,zgh;char c;do{ clrscr();gotoxy(1,5);printf("\t\t\t*****************************\n");printf("\t\t\t welcome to coming\n");printf("\t\t\t*****************************\n");printf("\t\t\tinput the zgh:");scanf("%d",&zgh);for (i=0;i<=n;i++){if (workers[i].zhigonghao==zgh){clrscr();printf("number:%d\n",workers[i].zhigonghao);printf("name:%s\n",workers[i].xingming);printf("sex:%s\n",workers[i].xingbie);printf("birthday:%ld\n",workers[i].birthday);printf("xueli:%s\n",workers[i].xueli); /*输出查找出的职工*/ printf("zhiwu:%s\n",workers[i].zhiwu);printf("wage:%ld\n",workers[i].gongzi);printf("address:%s\n",workers[i].address);printf("phone:%ld\n",workers[i].phone);getchar();gotoxy(1,20);printf("\t\t return the mune? (Y/N)\n");break;}else{clrscr();gotoxy(1,5);printf("\n\t\t****************************************");printf("\n\t\t** welcome to coming **");printf("\n\t\t****************************************");gotoxy(25,16);printf("no information");gotoxy(3,20);printf("\t\treturn the mune? (Y/N)\n");}}do{gotoxy(45,20);scanf("%c",&c);if (c!='y'&&c!='Y'&&c!='N'&&c!='n'){gotoxy(45,20);printf(" ");gotoxy(1,21);continue;}else break;}while(1);}while(c=='N'||c=='n');}void sortwage( ) /*函数调用————工资查询*/{int i,gongzi,p=0;char c;{ clrscr();gotoxy(1,5);printf("\t\t\t*****************************\n");printf("\t\t\t welcome to coming\n");printf("\t\t\t*****************************\n");printf("\t\t\tinput the gongzi:");scanf("%d",&gongzi);printf("********************************************************************** **********");printf("zhigonghao xingming xingbie birthday xueli zhiwu gongzi adress phone");printf("********************************************************************** **********");for (i=0;i<n;i++)if (workers[i].gongzi==gongzi){printf("%d,%13s,%8s,%13ld,%6s, %5s, %3ld, %6s, %ld\n",workers[i].zhigonghao,wor kers[i].xingming,workers[i].xingbie,workers[i].birthday,workers[i].xueli,workers[i].zhiwu,wor kers[i].gongzi,workers[i].address,workers[i].phone);p=p+1;}if(p==0)printf("\t\t\tno information");}}void sortxl( ) /*函数调用————学历查询*/{int i,p=0;char c,xueli[30];{ clrscr( );gotoxy(1,5);printf("\t\t\t******************************\n");printf("\t\t\t welcome to coming \n");printf("\t\t\t******************************\n");printf("\t\t\tinput the xueli:");scanf("%s",xueli);printf("********************************************************************** **********");printf("zhigonghao xingming xingbie birthday xueli zhiwu gongzi adress phone");printf("********************************************************************** **********");for (i=0;i<n;i++)if (strcmp(workers[i].xueli,xueli)==0){printf("%d,%13s,%8s,%13ld,%6s, %5s, %3ld, %6s, %ld\n",workers[i].zhigonghao,work ers[i].xingming,workers[i].xingbie,workers[i].birthday,workers[i].xueli,workers[i].zhiwu,worke rs[i].gongzi,workers[i].address,workers[i].phone);p=p+1;}if(p==0)printf("\t\t\tno information"); } }void del() /*函数调用————删除*/{int i,zhigonghao,j;char c;do{ clrscr();gotoxy(1,5);printf("\t\t\t******************************\n");printf("\t\t\t welcome to coming \n");printf("\t\t\t******************************\n");printf("\t\t\t input the zhigonghao:");scanf("%d",&zhigonghao);for (i=0;i<n;i++)if (workers[i].zhigonghao==zhigonghao){for(j=i;j<n;j++){workers[j].zhigonghao=workers[j+1].zhigonghao;strcpy(workers[j].xingming,workers[j+1].xingming);strcpy(workers[j].xingbie,workers[j+1].xingbie);workers[j].birthday=workers[j+1].birthday;strcpy(workers[j].xueli,workers[j+1].xueli);strcpy(workers[j].zhiwu,workers[j+1].zhiwu);workers[j].gongzi=workers[j+1].gongzi;strcpy(workers[j].address,workers[i+1].address);workers[j].phone=workers[j+1].phone;}n=n-1;getchar();printf("\n\n\n\n");printf("\t\t\tyou have deleted worker");gotoxy(1,20);printf("\t\t\t return the mune? (Y/N)\n");break;}else{clrscr();gotoxy(1,5);printf("\n\t\t****************************************");printf("\n\t\t** welcome to comging **");printf("\n\t\t****************************************");gotoxy(25,16);printf("no information");gotoxy(3,20);printf("\t\t\treturn the mune? (Y/N)\n");}do{gotoxy(45,20);scanf("%c",&c);if (c!='y'&&c!='Y'&&c!='N'&&c!='n'){gotoxy(45,20);printf(" ");gotoxy(1,21);continue;}else break;}while(1);}while(c=='N'||c=='n');}2005-6-12。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子与信息工程学院实验报告
班级学号姓名吴前斌
同组
实验课程:.net程序设计
实验项目:面向对象程序编程
实验日期:2019 年 3 月22 日
一、实验目的
通过实验掌握结构、结构数组的定义方法,掌握结构数组的赋值及使用方法。
理解使用数组、结构数组及控件数组处理有规律数据的优势。
二、实验环境
可上网计算机,Windows操作系统、Microsoft Visio
三、实验内容
[实验3-2-1] 员工信息查询程序
设计一个能对结构数组中保存的员工信息进行按姓名查询的Windows应用程序。
具体要求如下:
1)程序启动后显示图3-2-1所示的界面,用户在文本框中输入的员工姓名后单击“查询”按钮能在表格控件中用标签显示员工的姓名、性别、年龄、籍贯、学历、毕业院校等信息如图3-2-2。
如果用户未输入查询关键字(员工姓名)或输入的姓名不能与任何一条记录匹配,则显示图3-2-3所示的出错提示。
2)程序中所有员工信息保存在结构数组中。
创建一个用于查询数据的方法Find(),该方法通过一个string类型的参数从调用语句接收用户在文本框中输入的关键字,并按照关键字与“姓名”字段相同的原则,循环对比结构数组中的各元素。
若找到匹配的记录,则将结构变量中各字段值保存到一个string类型的数组中,并返回到调用语句。
3)创建一个用于将查询结果以标签文本的方式显示在表格控件相应单元格中的FillData()方法,该方法使用Find()方法的返回值创建相应的动态标签控件,并添加到表格控件的适当位置。
4)在窗体的装入事件处理程序中,通过向表格中添加动态标签控件的方式显示各数据的标题文本。
5)在“查询”按钮的单击事件处理程序中,通过调用Find()方法和FillData()方法实现程序功能。
图3-2-1 程序启动后的界面
图3-2-2 显示查询结果
图3-2-3 未输入数据和查无此人的出错提示
[实验3-2-2] HashTable
本题通过HashTable实现简易电话本的维护和查询。
具体要求如下:
1)电话本包含用户姓名和电话号码两个字段,用户记录通过HashTable对象保存。
2)创建一个User类,在各按钮的单击事件中通过调用相应的方法实现程序功能(增、删、改、查),程序运行结果如图3-2-4和图3-2-5所示。
图3-2-4
图3-2-5
四、实验步骤及结果记录(文字说明、关键代码配截图)
五、实验小结(实验过程中遇到哪些问题,你是如何解决的,哪些知识点是你学习中的难点)
六、源程序(和实验报告一起打包上交,打包文件命名:学号姓名.net程序设计实验3-2)
教师签名:
实验数据记录
[实验3-2-1] 员工信息查询程序
设计一个能对结构数组中保存的员工信息进行按姓名查询的Windows应用程序。
具体要求如下图1 :
图1
信息查询结果如图2所示:
图2
输入空内容的提示如下图3所示:
图3
输入错误后提示的内容如下图4所示:
图4
[实验3-2-2] HashTable
本题通过HashTable实现简易电话本的维护和查询。
实现的图形界面如下图5:
图5
对输入的信息进行添加到文本框中的操作界面显示效果如下图6:
图6
添加信息成功后的提示内容如下图7所示:
当将存入的信息进行删除后的提示如下图8所示:
图8
实现的代码如下所示:
namespace WindowsFormsApp9
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
this.Text = "HashTable应用示例";
listboxshow.Items.Clear();
}
public class User
{
static Hashtable ht = new Hashtable();
public string name;
public string tel;
public bool check()
{
return ht.Contains(name);
}
public void add()
{
ht.Add(name, tel);
}
public void delete()
{
ht.Remove(name);。