.net程序设计实验四-员工信息查询程序
- 格式:docx
- 大小:315.89 KB
- 文档页数:13
职工信息管理系统一、课题内容和要求要求对职工信息有增加、查找功能和删除功能。
职工信息包括工号、姓名、性别、年龄。
(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语言课程设计职工信息管理系统设计实验日期和时间: 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语言程序设计报告》一、设计题目:职工信息管理系统二、设计任务:职工信息包括:职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之难提供以下功能:(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。
贵州民族大学理学院综合型实验实验报告课程名称数据库系统应用实验学期 2014 至 2015 学年夏学期学生所在学院理学院年级专业班级学生姓名谢昌文学号任课教师实验成绩《数据库系统应用》课程综合型实验报告员工工资信息表字段名是否为空数据类型员工编号NOT NULL C(3)基本工资NULL N(4)岗位工资NULL N(4)绩效工资NULL N(4)补贴津贴NULL N(3)扣除工资NULL N(3)汇总NOT NULL N(5)5、数据库程序设计(一)用户登录模块登录模块的详细设计主要是用户登录的一个界面,判断登录的用户是否是该公司的员工进入后将面对的是主界面,从而进行相关的操作。
登录的界面主要由用户名和密码的信息,还有一些标题设置,确定和取消的按钮组成。
通过标题可以知道此系统的大概内容,由此,登录界面的设计完成。
窗体如下:登录模块源代码如下:private upassword ,aa=0select 员工信息表upassword=Alltrim(thisForm.passWd.value)locate For Alltrim(姓名)= Alltrim(erName.value)主窗体模块源代码如下:设置Command1 的Click事件代码:DO FORM "c:\users\administrator.pc-201507025mfap\desktop\暑假实训\员工信息表.scx"设置Command1 的Click事件代码:DO FORM "c:\users\administrator.pc-20121104mfap\desktop\暑假实训\员工工资信息表.scx"设置Command1 的Click事件代码:thisform.release(三)员工信息模块在这个版块中,主要是设计员工信息的基本内容,还有员工信息的管理。
员工可输入自己的编号查找自己的信息。
C语言课程设计报告职工信息管理系统设计班级:0346502姓名:杨鸣学号:20081003456指导老师:谷老师职工信息管理系统一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)职工浏览功能。
(4)职工信息查询功能,查询方式可按学历查询或者工号查询。
(5)职工信息的删除、修改功能(可选项)。
二、具体要求1、输入功能:职工信息录入(职工信息用文件保存),可以一次完成若干条记录的输入。
2、浏览功能:完成对全部职工信息的显示。
3、查找功能:①完成按职工的职工号查询职工的相关信息,并显示。
②完成按职工的学历查询职工的相关信息,并显示。
4、删除功能:通过输入职工的姓名完成对该名职工的信息进行删除。
5、修改功能:通过输入职工的姓名完成对该名职工的信息进行修改。
6、退出职工信息管理系统。
三、解决方案1、首先进行需求分析,搞清楚系统功能和任务;2、然后在总体设计中确定模块结构、划分功能模块,将软件功能需求分配给所划分的最单元模块。
确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略;3、在详细设计中,为每个模块确定采用的算法,选择适当的流程图来描述模块的详细过程。
确定每一模块采用的数据结构和模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其他模块的接口;4、根据分析编写C语言代码。
四、写课程设计总结课程设计报告要求总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容等。
总设计方案一.系统的总体流程图图1.系统的总体流程图菜单开始根据菜单输入n 的值选择程序保存结束是否继续进行NY5 修改职工信息 2 浏览职工信息 3 查询职工信息 4 删除职工信息6 退出1 录入职工信息二. 为了方便使用结构此系统结构均为全局类型定义struct employee //定义一个职工信息的结构体//{int num;char name[10];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];}em[100];三.各模块的功能及实现步骤1.菜单模块:显示职工管理系统的主菜单,供用户选择所需的功能,通过自己定义的void menu()函数来实现。
第1章概述1.1课题背景1.1.1课题来源随着目前大庆油田有限责任公司企业信息化建设的不断深入,办公电子化已经十分普及,尤其是企业门户网站的建立,给广大职工带来了极大的方便。
但是,目前还没有实现通过网络对专业标准进行方便的查询使用,为此,大庆油田有限责任公司勘探部提出研制《大庆油田有限责任公司勘探相关标准查询系统》软件,以方便广大干部职工查询和使用专业标准。
1.1.2课题的意义中油股份的上市,要求现在的石油行业按照现代石油公司模式进行企业的管理和经营,也就是要求这些企业在日常工作中严格执行相关标准,建立健全标准体系结构。
经过几年来的工作实践,大庆油田有限责任公司勘探部在完善油田公司勘探相关标准、制订勘探管理流程的同时,一直致力于油田公司勘探标准的宣贯工作。
截至2003年6月底,勘探相关专业在用的标准有国家标准15项、行业标准316项、企业标准185项,钻井专业分标委2003年8月成立,今年正在制定5个钻井方面的标准。
根据需要,每年还要对老标准进行逐步修订和对新标准进行制订。
这些标准数目非常庞大,制、修订时间不同,所以出版版本、出版时间也随之不一样,再加上标准制订单位不同,造成目前执行的标准来源不一样,标准载体不完全一样,有的是光盘,有的是单行册,有的是合订本,从而给查阅、宣贯、修订以及制订工作带来了极大的不便。
目前,在大庆地区使用勘探相关标准的人群比较分散,查询及使用标准极不方便,为此,大庆油田有限责任公司勘探部提出开发“大庆油田有限责任公司勘探相关标准查询系统”,该系统将勘探相关的8个专业的国家标准、行业标准及企业标准信息化,一方面实现了企业管理的信息化,另一方面为广大用户快速、准确地查询各标准提供了极大的方便。
同时,该项目的开发将实现国家标准、行业标准和企业标准的管理集成化。
目前,虽然许多部门都对标准的管理做了一些工作,但某些方面做得还不是很完善。
通过此系统,可以把有关勘探标准的各种操作集中到一个环境或平台上来进行,这样解决了以前各部门之间没有实现的无缝连接问题。
课程设计报告一C语言课程设计的目的设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)职工信息录入功能(职工信息用文件保存)(3)职工信息浏览功能(4)职工信息查询功能,查询方式可按学历查询或按职工号查询(5)职工信息删除修改功能(可选项)二课程设计报告正文1题目要求设计职工信息管理系统,要求职工心想包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
设计一职工信息管理系统,使之能提供以下功能:(6)系统以菜单方式工作(7)职工信息录入功能(职工信息用文件保存)(8)职工信息浏览功能(9)职工信息查询功能,查询方式可按学历查询或按职工号查询(10)职工信息删除修改功能(可选项)2需求分析根据题目要求,由于职工信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览职工的信息,应提供显示、查找、排序等操作;另外还应提供键盘式选择菜单实现功能选择。
3总体设计根据上面的需求分析,可以将这个系统设计分为以下模块:数据添加、数据查找、数据修改、数据删除、数据输出.系统功能模块如下:4详细设计1 主函数主函数设计要简洁,只提供部分函数的调用。
其中各功能模块用菜单方式选择。
【程序】void main(){int m;while(1){ printf(”\n\n\n\t\t ______________________________________\n");printf("\t\t 欢迎进入内蒙古科技大学员工信息系统\n”);printf(”\t\t 设计者:计算机—3班学号1076807334\n”);printf("\t\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf(”\n\t\t\t\t添加,请按1");printf(”\n\t\t\t\t查找,请按2”);printf("\n\t\t\t\t修改,请按3");printf("\n\t\t\t\t删除,请按4");printf("\n\t\t\t\t输出,请按5”);printf("\n\t\t\t\t退出,请按0\n");scanf("%d”,&m);if(m>=0&&m<=5){switch(m){case 1:append();break;case 2:search();break;case 3:modify();break;case 4:delete();break;case 5: output();break;case 0: exit();}printf(”\n\n操作完毕,请再次选择!");}elseprintf("\n\n选择错误,请再次选择!");}}2 数据添加【程序】void append(){if((fp=fopen(”worker.xls","a"))==NULL){printf("\n不能打开该文件!”);exit();}printf(”\n请输入添加职工信息(姓名、职工号、性别、年龄、学历、职位、工资、电话、地址)\n”);scanf(”%s%s%s%s%s%s%s%s%s",one。
职工信息查询系统设计报告一、设计思路1.要达到的目的⏹利用“打开”对话框,打开选中的数据文件zgxx.txt,并从该文件中读取职工姓名、职称和工资,保存在数组中,并显示在文本框中。
⏹清除文本框中的职工的信息。
⏹在文本框中显示职工的信息。
⏹按照姓名查询职工信息,并显示。
⏹查询具有某一职称的职工信息和人数,并显示。
⏹查询工资高于某个数值的职工的信息和人数,并显示。
2.关键问题的解决①设置属性设计时要注意一些功能需要在其它功能之后才能使用,如“清除数据”、“显示数据”等按钮需要在读入数据后才能使用,设计界面时需要将相应的按钮的Enable属性为false,在读入数据后才将按钮的Enable属性设置为True。
②编写代码需要对每一个窗体编写事件处理过程。
最主要的工作包含在主窗体中,代码包括事件处理过程和必要的声明。
变量声明部分声明本程序所需要的变量和数组,由于单击按钮时,都要对姓名、职称、工资进行操作,因此相应的数组和变量应定义为模块级的。
在编写事件处理过程代码时注意以下几点:(1)定义模块级动态数组分别用于存放姓名、职称、工资数据,这些数组应定义为模块级的。
(2)单击“读取数据”按钮,利用通用对话框所提供的打开标准对话框来选择要打开的数据文件,并利用文件的基本操作将该文件中的的数据依次读入到相应数组中。
(3)利用InputBox 函数来输入要查询的职工的姓名、职称或工资。
(4)利用MsgBox 函数或另一个窗体来显示高于高于或等于某个数值的职工信息。
(5)在“职称查询”或“工资查询”,定义数组分别用于存放符合要求的职工的姓名、职称、工资数据,由于不能确定符合要求的职工人数,所以数组要定义为动态的。
(6)注意为保留动态数组中存放的内容,在使用ReDim语句中要加上Preserve关键字。
二、模块之间的调用关系,或程序流程图三、部分程序关键源代码及注释Private Sub Command1_Click()CloseComDlg.Filter = "文本文件(*.txt)|*.txt|所有文件(*.*)|*.*" 选择文件夹ComDlg.FilterIndex = 0ComDlg.ShowOpenfilepath = ComDlg.FileNameOpen filepath For Input As #1Command2.Enabled = TrueCommand3.Enabled = TrueCommand5.Enabled = TrueCommand6.Enabled = TrueCommand7.Enabled = TrueText1.Text = "姓名职称工资" & vbCrLf & "---------------------------------------------" & vbCrLfDim StrLine As String, a() As String 在循环中存放每行的内容i = 0Do While Not EOF(1) EOF为文尾测试函数Line Input #1, StrLine ’将读入的一行存到变量StrLine中If StrLine <> "" Thena() = Split(StrLine, ",")For n = 0 To 2data(i, n) = a(n)NextEnd Ifi = i + 1Loopnum = iFor m = 0 To numFor n = 0 To 3Text1.Text = Text1.Text & data(m, n) & Space(4)NextText1.Text = Text1.Text & vbCrLfNextEnd Sub四、设计方案的完善及目前存在的问题1.设计方案要完善的地方可以加入背景图片2. 目前存在的问题文件读取不稳定五、本次设计的收获及心得体会提高了我综合利用VB语言进行程序设计的能力,增强了使用基本控件的、文件读写、数组操作和菜单设计等能力,提高了我对学习VB的兴趣。
一、实验目的1.使学生到达熟练掌握C++语言的根本知识和C++调试技能;2.根本掌握面向对象程序设计的根本思路和方法;3.能够利用所学的根本知识和技能,解决简单的面向对象程序设计问题。
二、实验要求:1.要求利用面向对象的方法完成系统的设计;2.要求利用C++的类的定义与实现来编程。
三、实验内容1.利用面向对象的思想设计一个公司人事管理系统,要求具有以下功能:1〕要求存储员工的XX、编号、级别、工资等相关信息;2〕能够实现计算月薪总额和显示全部信息;3〕实现工资的查询功能;4〕能够实现级别的提升和工资的修改功能。
四、实验步骤1.进入C++编辑环境;2.编辑实验代码;3.保存--编译----执行;五、实验代码及运行结果#include<iostream>#include<fstream>#include<string>#include<vector>#include<cstdio>using namespace std;class yuang{private:string name; //XXstring number; //编号string grade; //级别double money; //工资public:yuang();yuang(string na,string nu,string gr,double mo); //构造函数void display(); //显示信息 double getmoney(); //取工资string getnumber(); //取编号void gaigrade(); //改级别 void gaimoney(); //改工资 void input(); //输入数据 void write(ofstream& s); //存数据 void read(ifstream& s); //去数据 void sys();void sysm();};yuang::yuang(){name=" ";number=" ";grade=" ";money=0;}yuang::yuang(string na,string nu,string gr,double mo)//构造函数{name=na;number=nu;grade=gr;money=mo;}void yuang::display() //显示信息{cout<<"XX:";cout<<name<<endl;cout<<"编号:";cout<<number<<endl;cout<<"级别:";cout<<grade<<endl;cout<<"工资:";cout<<money<<endl;return;}double yuang::getmoney() //取工资{return money;}string yuang::getnumber() //取编号{return number;}void yuang::gaigrade() //改级别{string gr;cout<<"请输入修改后的级别: ";cin>>gr;grade=gr;}void yuang::gaimoney() //改工资{double mo;cout<<"请输入修改后的工资: ";cin>>mo;money=mo;}void yuang::input() //输入数据{cout<<"\nXX: ";cin>>name;cout<<"\n编号: ";cin>>number;cout<<"\n级别: ";cin>>grade;cout<<"\n工资: ";cin>>money;}void yuang::write(ofstream& s) //存数据{s<<name<<endl;s<<number<<endl;s<<grade<<endl;s<<money<<endl;return;}void yuang::read(ifstream& s)//去数据{s>>name;s>>number;s>>grade;s>>money;return;}void yuang::sys(){cout<<" * * * * * * * * * * * * * * * * * * * * * * * * * * "<<endl; cout<<" 欢迎使用员工信息查询系统"<<endl;cout<<" * * * * * * * * * * * * * * * * * * * * * * * * * * "<<endl;int i;for(i=0;i<3;i++)cout<<endl;cout<<" 1.添加员工信息 "<<endl;cout<<" 2.修改员工等级"<<endl;cout<<" 3.修改员工工资 "<<endl;cout<<" 4.显示薪资总额 "<<endl;cout<<" 5.显示所有信息 "<<endl;cout<<" 6.查询员工信息 "<<endl;cout<<" 0.退出系统 "<<endl;cout<<"请在0-6中选择以回车键完毕:"<<endl;}void yuang::sysm(){cout<<"请在0-6中选择以回车键完毕:"<<endl;cout<<"****************************************************************"<<endl; cout<<endl;cout<<" 1.添加员工信息 "<<endl; cout<<" 2.修改员工等级 "<<endl; cout<<" 3.修改员工工资 "<<endl; cout<<" 4.显示薪资总额 "<<endl; cout<<" 5.显示所有信息 "<<endl; cout<<" 6.查询员工信息 "<<endl; cout<<" 0.退出系统 "<<endl; cout<<endl;cout<<"****************************************************************"<<endl; }int main(){double sum=0;static int m;m=0;ifstream instream("员工.txt");yuang w;vector<yuang>Y(1000);w.sys();int i,j=0;string anumber;int a;for(i=0;i<100;i++){cout<<"请输入所选工程: ";cin>>a;switch(a){case 1:int b;cout<<"取数据输入1;更新数据输入2: ";cin>>b;switch(b){case 1:cout<<"请输入查询范围"<<endl;cin>>m;for(i=0;i<m;i++)Y[i].read(instream);break;case 2:cout<<"系统最大存取容量为1000"<<endl;cout<<"请输入所要添加员工的个数:";cin>>m;if(m>1000){cout<<"超过最大容量"<<endl;}else{for(i=0;i<m;i++){Y[i].input(); }ofstream out("员工.txt");for(i=0;i<m;i++){Y[i].write(out);}}break;}break;case 2:system("cls");w.sysm();cout<<"请输入编号: ";cin>>anumber;for(i=0;i<m;i++){if(Y[i].getnumber()==anumber){j=1;break;}}if(j==0)cout<<"对不起,您不是我们的员工。
import java.awt.event.ActionListener;import javax.swing.*;import java.awt.event.*;import java.awt.*;import java.sql.*;public class Employee extends JFrame implements ActionListener{String titles[]={"工号:","姓名:","性别:","出生日期:","联系电话:","家庭住址:","个人情况:"};JTextField employeeID=new JTextField(8);JTextField employeeName=new JTextField(8);JTextField employeeSex=new JTextField(2);JTextField employeeBirthday=new JTextField(6);JTextField employeePhone=new JTextField(11);JTextField employeeAddress=new JTextField(20);JTextArea employeeResume=new JTextArea();JButton first=new JButton("首页");JButton next=new JButton("下一条");JButton previous=new JButton("上一条");JButton last=new JButton("尾页");Statement stmt;ResultSet rs;Employee(){super("员工信息查询");setSize(350,330);try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn=DriverManager.getConnection("jdbc:odbc:mydb","sa","123");stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_R EAD_ONL Y);rs=stmt.executeQuery("select * from mdb");getContentPane().setLayout(new BorderLayout(0,8));JPanel p[]=new JPanel[6];for(int i=0;i<6;i++){p[i]=new JPanel(new FlowLayout(FlowLayout.LEFT,10,0));p[i].add(new JLabel(titles[i]));}p[0].add(employeeID);p[1].add(employeeName);p[2].add(employeeSex);p[3].add(employeeBirthday);p[4].add(employeePhone);p[5].add(employeeAddress);JPanel p1=new JPanel(new GridLayout(6,1,0,8));JScrollPane jsp=new JScrollPane(employeeResume,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.H ORIZONTAL_SCROLLBAR_NEVER);jsp.setPreferredSize(new Dimension(250,80));for(int i=0;i<6;i++)p1.add(p[i]);JPanel p2=new JPanel (new FlowLayout(FlowLayout.LEFT,10,0));p2.add(new JLabel(titles[6]));p2.add(jsp);JPanel p3=new JPanel();p3.add(first);p3.add(previous);p3.add(next);p3.add(last);getContentPane().add(p1,"North");getContentPane().add(p2,"Center");getContentPane().add(p3,"South");next.addActionListener(this);previous.addActionListener(this);first.addActionListener(this);last.addActionListener(this);rs.first();display();}catch(Exception e){e.printStackTrace();}setVisible(true);}public void actionPerformed(ActionEvent e){try{if (e.getSource()==next)rs.next();else if(e.getSource()==previous)rs.previous();else if (e.getSource()==first)rs.first();else if(e.getSource()==last)st();display();}catch(Exception ee){ee.printStackTrace();}}boolean display(){try{employeeID.setText(rs.getString("employeeID"));employeeName.setText(rs.getString("employeeName"));employeeSex.setText(rs.getString("employeeSex"));employeeBirthday.setText(rs.getString("employeeBirthday"));employeePhone.setText(rs.getString("employeePhone"));employeeAddress.setText(rs.getString("employeeAddress"));employeeResume.setText(rs.getString("employeeResume"));}catch(SQLException e){e.printStackTrace();return false;}return true;}public static void main(String[] args) {JFrame.setDefaultLookAndFeelDecorated(true);Employee em=new Employee();}}。
职工信息管理系统题目要求 (2)设计目的 (2)总体设计 (2)详细设计 (2)调试与测试 (12)源程序 (14)总结 (27)职工信息管理程序一.题目要求1.问题描述:设计一个系统来管理职工的信息。
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)2.要求:•系统需要提供一下功能:–1、以菜单方式工作–2、职工信息浏览功能–3、职工信息查询功能•查询方式:按学历查询和按职工号查询–4、职工信息删除–5、职工信息修改–6、职工信息的输入–职工信息存储在文本中。
.二.设计目的根据题目要求,由于职工信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览职工的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.三.总体设计根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删除模块,查找模块,显示模块.1、职工信息管理系统1、1输入信息1、2查询信息1、3删除信息1、4修改信息四.详细设计1.主函数:主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.menu();int a;char b;printf("选择要进行的项目\n");scanf("%d",&a);exa: switch(a){case 1:printf("输入职工信息\n");printf("\n");input();break;case 2:printf("浏览职工信息\n");printf("\n");display();break;case 3:printf("查询职工信息\n");printf("\n");search();break;case 4:printf("修改职工信息\n");printf("\n");xiugai();break;case 5:printf("删除职工信息\n");printf("\n");del();break;/* case 6:printf("添加职工信息\n");printf("\n");add();break; */case 6:exit(0);break;default :break;getchar();printf("是否继续进行(y or n):\n");scanf("%c",&b);if(b=='y'){menu();printf("再次选择操作:\n");scanf("%d",&a);goto exa;else exit(0);void input(){int n;printf("输入职工个数:\n");scanf("%d",&m);for(n=0;n<m;n++){printf("输入职工号");scanf("%d",&peo[n].num);printf("输入姓名: ");scanf("%s",peo[n].name);getchar();printf("输入性别:");scanf("%c",&peo[n].sex);printf("输入工资: ");scanf("%d",&peo[n].money);printf("输入地址: ");scanf("%s",peo[n].addr);printf("输入号码: ");scanf("%d",&peo[n].phone);printf("输入年龄: ");scanf("%d",&peo[n].age);printf("输入学历: ");scanf("%s",peo[n].xueli);}save(m);2.}修改模块:[分析]:用户输入要修改职工的职工号,根据职工号等信息查找学生记录,并提示用户修改该记录的哪部分信息.根据用户选择修改相应的信息.[流程图]:1、输入要修改的职工的职工号2、查询其信息3、使用函数删除其信息4、对其进行信息的重新输入[程序]:void xiugai(){int t,i,j;printf("输入要修改职工的职工号:\n"); scanf("%d",&t);printf("oo");for(i=0;i<100;i++){if(peo[i].num==t)j=i;break;printf("ww");//clear(peo,j);printf("qq");printf("输入职工号:");scanf("%d",&peo[j].num);printf("输入姓名: ");scanf("%s",peo[j].name);getchar();printf("输入性别:");scanf("%c",&peo[j].sex);printf("输入工资: ");scanf("%d",&peo[j].money);printf("输入地址: ");scanf("%s",peo[j].addr);printf("输入号码: ");scanf("%d",&peo[j].phone);printf("输入年龄: ");scanf("%d",&peo[j].age);printf("输入学历: ");scanf("%s",peo[j].xueli);save(::m);3.删除模块:[分析]:该模块的功能是,用户输入要删除的学生的学号,根据学生学号查找记录并删除.[流程图]:1、找到要删除的职工的信息2、对其使用写的功能,删除其中的值3、完成删除后浏览剩余信息[程序]:void del(){FILE *fp;int m=load();int s,n,j,i,l=0;printf("\n 原来的职工信息:\n");display();printf("\n");printf("请输入要删除的职工的职工号:\n");scanf("%d",&s);for(n=0;n<100;n++)if(peo[n].num==s)j=n;l=1;if(l==1)fp=fopen("D:\\data.txt","w");clear(peo,j);for(i=0;i<::m;i++)if(i==j)continue;fprintf(fp,"%d %s %d %c %d %d %s %s\n",peo[i].num,peo[i].name,peo[i].age,peo[i].s ex,peo[i].phone,peo[i].money,peo[i].addr,peo[i].xueli);printf("删除成功!");fclose(fp);return;elseprintf("没有找到!\n");display();4.查询模块[需求分析]:该模块的功能是根据输入的职工号查找对应的记录,找到以后,显示相应的职工信息.[流程图]:1、根据对应的提示查找信息2、运用循环比较的方法进行查找3、分别是按照职工号和学历程序:void search(){int d;printf("你选择的查询方法:1.按职工号2.按学历");scanf("%d",&d);switch(d){case 1:search_num();break;case 2:search_xueli();break;default :break;void search_num(){ int num;int i,h=1;int m=load();printf("请输入要查找的职工号:\n");scanf("%d",&num);for(i=0;i<m;i++)if(num==peo[i].num)printf(" 职工号姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%d\n",peo[i].num,peo[i].name,peo[i].sex,peo[i]. age,peo[i].xueli,peo[i].money,peo[i].addr,peo[i].phone);else ;}void search_xueli(){char xueli[30];int i,h=1;int m=load();printf("请输入要查找的学历:\n");scanf("%s",xueli);for(i=0;i<m;i++)if(strcmp(peo[i].xueli,xueli)==0) {printf(" 职工号姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%d\n",peo[i].num,peo[i].name,peo[i].sex,peo[i]. age,peo[i].xueli,peo[i].money,peo[i].addr,peo[i].phone);else ;void xiugai(){int t,i,j;printf("输入要修改职工的职工号:\n");scanf("%d",&t);printf("oo");for(i=0;i<100;i++){if(peo[i].num==t)j=i;break;printf("ww");//clear(peo,j);printf("qq");printf("输入职工号:");scanf("%d",&peo[j].num);printf("输入姓名: "); scanf("%s",peo[j].name); getchar();printf("输入性别:");scanf("%c",&peo[j].sex);printf("输入工资: "); scanf("%d",&peo[j].money); printf("输入地址: ");scanf("%s",peo[j].addr); printf("输入号码: ");scanf("%d",&peo[j].phone); printf("输入年龄: ");scanf("%d",&peo[j].age); printf("输入学历: ");scanf("%s",peo[j].xueli);save(::m);5.输出模块:[需求分析]:该模块的功能是显示所有职工记录信息.[程序]:我void display(){int t;//int m=load();printf("职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");for(t=0;t<::m;t++)printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%d\n",peo[t].num,peo[t].name, peo[t].sex,peo[t].age,peo[t].xueli,peo[t].money,peo[t].addr,peo[t].ph one);四调试与测试在这次课程设计中,程序编写过程中遇到了很多的问题,各种函数的运用也让人头疼,在上机编译运行过程中出现了很多的错误,例如:各种数据类型的定义,函数的调用等等。
员工信息查询php实验一、sc.php<font color ="#000000"><?php$link=mysql_connect("localhost","root","")or die("数据库服务器连接失败!<br>");mysql_select_db("employee",$link)or die("数据库选择失败!<br>"); mysql_query("set names 'gb2312'");?><head><meta http-equiv="content-type" content="text/html;charset=gb2312"> <title>员工信息</title></head><body><?php$name=$_POST["name"];$id=$_POST["id"];$sql="select * from employee where name like '%".$name."%'and id like '%".$id."%'";$result=mysql_query($sql,$link);$nums=mysql_num_rows($result);for($n=0;$n<$nums;$n++){$id["$n"]=mysql_result($result,$n,"id"); $name["$n"]=mysql_result($result,$n,"name"); $sex["$n"]=mysql_result($result,$n,"sex"); $tel["$n"]=mysql_result($result,$n,"tel"); $add["$n"]=mysql_result($result,$n,"add"); $salary["$n"]=mysql_result($result,$n,"salary"); }?></font><table width ="63%" border="1"><tr bgcolor="#99FF33"><td>工号:</td><td>姓名:</td><td>性别:</td><td>电话:</td><td>家庭住址信息:</td><td>基本工资:<?phpfor ($m=0;$m<$nums;$m++){echo"<tr>"."<td>".mysql_result($result,$m,"id")."</td>"."<td>".mysql_result($result,$m,"name")."</td>"."<td>".mysql_result($result,$m,"sex")."</td>"."<td>".mysql_result($result,$m,"tel")."</td>"."<td>".mysql_result($result,$m,"add")."</td>"."<td>".mysql_result($result,$m,"salary")."</td>"."</tr>";}?></td></tr></table><p><a href ="sr.php">返回</a></p></body></html>二、sr.php<html><head><meta http-equiv="content-type" content="text/html;charset=gb2312"> <title>员工信息查询主页</title><body><form id="form1" name="form1" method="post" action="sc.php"> <p>请输入查询内容:</p><p><label>姓名:<input type="text" name="name" /></label></p><p><label>ID:<input type="text" name="id" /></label></p><p><label><input type="submit" name="Submit" value="提交" /></label><label><input type="reset" name="Submit2" value="重置" /></label></p></body> </html>。
电子与信息工程学院实验报告
班级学号姓名吴前斌
同组
实验课程:.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);。