回 帖 发 新 帖 刷新版面

主题:初学VC者~求简单程序

本人最近开始学VC++ 6.0 基于对话框的程序设计,看了教材感觉进步不快,希望高人们如果身边有现成的简单程序(如通讯录,人事管理之类的),可以让我参考一下~~~万分感谢!!!!
本人邮箱 weijiali1987@163.com

回复列表 (共1个回复)

沙发

第一部分通过一个结构体,定义了每个记录的基本形式。
typedef struct node
{  char n[20];//姓名
   char wid[20];//工作证号
   char sex[5];//性别
   char tel[10];//电话
   char ID[20];//身份证号
   char position[20];//职务
   char salary[10];//工资
   char birth[20];//出生年月
   char depart[20];//部门
   char addr[35];//详细地址
   struct node *next;
}NODE;
在这一步里我们定义了一个employee类,用来声明这些功能函数,比如
add(),printall(),~等 ,同时声明一些私有成员。
下面分别介绍一下各个函数基本作用:
Add()函数用来添加一个新的记录,包括姓名、工作证号、性别、电话、身份证号、职务、工资、出生年月、部门、详细地址,加一个新的员工信息之后,可按任意一键返回主上录。
此函数代码如下:
void employee::add()
 {
  q= new NODE;
  q->next=p;
  p=q;
  cout<<"姓名:";
  cin>>q->n;
  cout<<"工作证号:";
  cin>>q->wid;
  cout<<"性别:";
  cin>>q->sex;
  cout<<"家庭电话:";
  cin>>q->tel;
  cout<<"身份证号:";
  cin>>q->ID;
  cout<<"职务:";
  cin>>q->position;
  cout<<"薪水:";
  cin>>q->salary;
  cout<<"生日:";
  cin>>q->birth;
  cout<<"家庭住址:";
  cin>>q->addr;
  cout<<"部门:";
  cin>>q->depart;
  cout<<"按任意键返回!!"<<endl;
  
Del函数用来删除一个记录,包括姓名、工作证号、性别、电话、身份证号、职务、工资、出生年月、部门、详细地址。在删除时,先查找该员工是否有,如果有则删除,反之,给出提示“查无此人!!”,删除完毕,同样可按任意键返回主目录。
此函数代码如下:
void employee::del()
 { NODE *k;
  k=new NODE;
  k=p=q; 
  char n[20];
  cout<<"请输入工作证号:"<<endl;
  cin>>n;
  while (p!=t&&(strcmp(p->wid,n)!=0)!=0)
    {k=p;
    p=p->next;
     }
   if (p==t)
     {cout<<"查无此人!!"<<endl;
     }
  else
    {if (p==q)
    q=q->next;
    else
     k->next=p->next;
     free(p);
    }
  }
Deleteall 函数用来删除所有记录,包括姓名、工作证号、性别、电话、身份证号、职务、生年月、部门、详细地址。同del函数相同,在删除时,先查找有无此员工,如有则可全部删除,反之,则给出提示“查无此人”,只有确认后,重新输入要删除的信息才行。删除完毕,本函数会给出提示信息:“所有信息已删除!”
此函数代码如下:
void employee::deleteall()
{

while (q!=t)
 {p=q;
 q=q->next;
 free(p);
 }
cout<<"所有信息已删除!" ;
}
Edit函数用来修改记录,包括姓名、工作证号、性别、电话、身份证号、职务、工资、出生年月、部门、详细地址。同以上两个函数差不多,要查找是否有此员工信息,只有有此员工信息,才能修改,否则不能修改。
此函数代码如下:
void employee::edit()
 {
  p=q;
  char n[20];
  cout<<"请输入员工作证号:"<<endl;
  cin>>n;
  while (p!=t&&(strcmp(p->wid,n)!=0)!=0)
    {p=p->next;
     }
   if (p==t)
     {cout<<"查无此人!!"<<endl;
     }
 else
 {cout<<"姓名";
  cin>>p->n;
  cout<<"工作证号:";
  cin>>p->wid;
  cout<<"性别:";
  cin>>p->sex;
  cout<<"家庭电话:";
  cin>>p->tel;
  cout<<"身份证号:";
  cin>>p->ID;
  cout<<"职务:";
  cin>>p->position;
  cout<<"薪水:";
  cin>>p->salary;
  cout<<"生日:";
  cin>>p->birth;
  
      }
  cout<<"按任意键返回!!"<<endl;
  }
Employee 此成员函数不是普通的成员函数,本函数是用做接口的构造函数。
此函数代码如下:
employee::employee(NODE *m)
  { t=p=m;
  }
print()此函数用来显示员工信息,包括包括姓名、工作证号、性别、电话、身份证号、职务、工资、出生年月、部门、详细地址等所有的员工信息。同时按下任意键可返回主目录。
此函数代码如下:
void employee::print()                                         
  { p=q;
  char n[20];
  cout<<"请输入工作证号:"<<endl;
  cin>>n;
  while (p!=t&&(strcmp(p->wid,n)!=0)!=0)
    {p=p->next;
     }
   if (p==t)
     {cout<<"查无此人!!"<<endl;
     }
  else
    { cout<<"姓名:"<<p->n<<endl;
  cout<<"工作证号:"<<p->wid<<endl;
  cout<<"性别:"<<p->sex<<endl;
  cout<<"家庭电话:"<<p->tel<<endl;
  cout<<"身份证号:"<<p->ID<<endl;
  cout<<"职务:"<<p->position<<endl;
  cout<<"薪水:"<<p->salary<<endl;
  cout<<"生日:"<<p->birth<<endl;
  cout<<"部门:"<<p->depart<<endl;
  cout<<"家庭住址:"<<p->addr<<endl;
    }
  cout<<"按任意键返回!!"<<endl;
   }
printall() 此函数用来显示所有员工的所有信息,包括包括姓名、工作证号、性别、电话、身份证号、职务、工资、出生年月、部门、详细地址等所有的员工信息。同时按下任意键可返回主目录。
此函数代码如下:
void employee::printall()
{
  p=q;
 while (q!=t)
  {
  cout<<"姓名:"<<q->n<<endl;
  cout<<"工作证号:"<<q->wid<<endl;
  cout<<"性别:"<<q->sex<<endl;
  cout<<"家庭电话:"<<q->tel<<endl;
  cout<<"身份证号:"<<q->ID<<endl;
  cout<<"职务:"<<q->position<<endl;
  cout<<"薪水:"<<q->salary<<endl;
  cout<<"生日:"<<q->birth<<endl;
  cout<<"家庭住址:"<<q->addr<<endl;
  cout<<"部门:"<<q->depart<<endl;
  q=q->next;
 // getch();
 }
  q=p; 
}
display() 此函数用来显示主目录的界面,用了一此*号美化界面,让使用本程序的使用者能够通过1、2、3、4、5、6、7简单的操作此系统,得到程序的效果。
             

 *********************欢迎使用本系统****************** 
     *******************************************************************************
1:增加一个新成员!                          
2:修改成员信息!
3:查找成员信息!                       
4:显示所有成员信息!
5:删除成员信息!                      
6:删除所有成员信息!
7:退出! 
*******************************************************************************

在程序的最后,通过while 来实现整个程序的循环,并且使用了switch选择分支结构,使功能更容易实现。
附源程序:
#include <string.h>
#include <malloc.h>
#include <iostream.h>
#include <conio.h>
typedef struct node
{  char n[20];//姓名
   char wid[20];//工作证号
   char sex[5];
   char tel[10];
   char ID[20];
   char position[20];//职务
   char salary[10];
   char birth[20];
   char depart[20];//部门
   char addr[35];
   struct node *next;
}NODE;
 
  class employee
  {
  private:
  NODE *p;
  NODE *q;
  NODE *t;
  public:
  employee(NODE *m); 
  void add();
  void printall();
  void print();
  void deleteall();
  void edit();
  void del();
  };
  employee::employee(NODE *m)
  { t=p=m;
  }
  void employee::del()
 { NODE *k;
  k=new NODE;
  k=p=q; 
  char n[20];
  cout<<"请输入工作证号:"<<endl;
  cin>>n;
  while (p!=t&&(strcmp(p->wid,n)!=0)!=0)
    {k=p;
    p=p->next;
     }
   if (p==t)
     {cout<<"查无此人!!"<<endl;
     }
  else
    {if (p==q)
    q=q->next;
    else
     k->next=p->next;
     free(p);
    }
  }  
  void employee::print()                                         
  { p=q;
  char n[20];
  cout<<"请输入工作证号:"<<endl;
  cin>>n;
  while (p!=t&&(strcmp(p->wid,n)!=0)!=0)
    {p=p->next;
     }
   if (p==t)
     {cout<<"查无此人!!"<<endl;
     }
  else
    { cout<<"姓名:"<<p->n<<endl;
  cout<<"工作证号:"<<p->wid<<endl;
  cout<<"性别:"<<p->sex<<endl;
  cout<<"家庭电话:"<<p->tel<<endl;
  cout<<"身份证号:"<<p->ID<<endl;
  cout<<"职务:"<<p->position<<endl;
  cout<<"薪水:"<<p->salary<<endl;
  cout<<"生日:"<<p->birth<<endl;
  cout<<"部门:"<<p->depart<<endl;
  cout<<"家庭住址:"<<p->addr<<endl;
    }
  cout<<"按任意键返回!!"<<endl;
   }
  void employee::edit()
 {
  p=q;
  char n[20];
  cout<<"请输入员工作证号:"<<endl;
  cin>>n;
  while (p!=t&&(strcmp(p->wid,n)!=0)!=0)
    {p=p->next;
     }
   if (p==t)
     {cout<<"查无此人!!"<<endl;
     }
 else
 {cout<<"姓名";
  cin>>p->n;
  cout<<"工作证号:";
  cin>>p->wid;
  cout<<"性别:";
  cin>>p->sex;
  cout<<"家庭电话:";
  cin>>p->tel;
  cout<<"身份证号:";
  cin>>p->ID;
  cout<<"职务:";
  cin>>p->position;
  cout<<"薪水:";
  cin>>p->salary;
  cout<<"生日:";
  cin>>p->birth;
  
      }
  cout<<"按任意键返回!!"<<endl;
  }
  void employee::add()
 {
  q= new NODE;
  q->next=p;
  p=q;
  cout<<"姓名:";
  cin>>q->n;
  cout<<"工作证号:";
  cin>>q->wid;
  cout<<"性别:";
  cin>>q->sex;
  cout<<"家庭电话:";
  cin>>q->tel;
  cout<<"身份证号:";
  cin>>q->ID;
  cout<<"职务:";
  cin>>q->position;
  cout<<"薪水:";
  cin>>q->salary;
  cout<<"生日:";
  cin>>q->birth;
  cout<<"家庭住址:";
  cin>>q->addr;
  cout<<"部门:";
  cin>>q->depart;
  cout<<"按任意键返回!!"<<endl;
  
}
void employee::printall()
{
  p=q;
 while (q!=t)
  {
  cout<<"姓名:"<<q->n<<endl;
  cout<<"工作证号:"<<q->wid<<endl;
  cout<<"性别:"<<q->sex<<endl;
  cout<<"家庭电话:"<<q->tel<<endl;
  cout<<"身份证号:"<<q->ID<<endl;
  cout<<"职务:"<<q->position<<endl;
  cout<<"薪水:"<<q->salary<<endl;
  cout<<"生日:"<<q->birth<<endl;
  cout<<"家庭住址:"<<q->addr<<endl;
  cout<<"部门:"<<q->depart<<endl;
  q=q->next;
 // getch();
 }
  q=p; 
}
void employee::deleteall()
{

while (q!=t)
 {p=q;
 q=q->next;
 free(p);
 }
cout<<"所有信息已删除!" ;
}

 void display()
{  
     cout<<"\n              *********************欢迎使用本系统******************"<<endl;
     
     cout<<"\n********************************************************************************"<<endl;
                      cout<<"\n                        1:增加一个新成员!"<<endl;
                      cout<<"\n                        2:修改成员信息!"<<endl;
                      cout<<"\n                        3:查找成员信息!"<<endl;
                      cout<<"\n                        4:显示所有成员信息!"<<endl;
                      cout<<"\n                        5:删除成员信息!"<<endl;
                      cout<<"\n                        6:删除所有成员信息!"<<endl;
                      cout<<"\n                        7:退出!"<<endl;  
   cout<<"\n********************************************************************************"<<endl;
}
  void main()                      
 {
  NODE *pa;
  char i; 
  pa=(NODE*)malloc(sizeof(struct node)); 
  display();
  employee a(pa);
  while(i=getch())
  {
    switch(i)
     {
       case'1':a.add();getch();display();break;
       case'2':a.edit();getch();display();break;
       case'3':a.print();getch();display();break;
       case'4':a.printall();getch();display();break;
       case'5':a.del();getch();display();break;
       case'6':a.deleteall();getch();display();break;
       case'7':cout<<"谢谢使用曲氏员工管理系统1.0!"<<endl;break;}
  }
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册