描述
一个简易但功能齐全的信息管理系统。
使用单链表作为实现各项功能的基础,逻辑简单,适合正在学习数据结构的同学
一、功能
(1)输入:九种基本信息:编号,姓名,年龄,性别,职称,部门,电话,入职时间,邮箱
(2)查询:按编号,姓名,部门的进一步查询
(3)删除:按名称删除职工信息
(4)修改:对除名称外的其他所有信息(编号,年龄,性别,职称,部门,电话,入职时间,邮箱)进行修改
(5)显示:按编号或入职时间的有序显示(由小到大)
(6)保存:将信息保存到自定义名称的文件中
二、显示效果
注:若在Clion编译器中运行程序,需将在控制台中运行改为控制台外,修改方式如图所示
(1)程序各功能的菜单显示,如:主菜单、查询菜单、修改菜单、显示菜单,
(2)每一功能完成后的提示语及清屏效果(该功能必须在窗口中实现)如:输入完成等
(3)程序的框架外观
(4)关闭程序时的动态效果
源码
每项功能都附有注释,源码较长,同学可以根据需要自行修改
#include "iostream"
#include "stdlib.h"
#include "string.h"
#include <windows.h>
#include<stdio.h>
using namespace std;
int ifempty=0; //链表长度
//职工信息
typedef struct{
char num[20]; //编号
char name[10]; //姓名
char age[10]; //年龄
char sex[10]; //性别
char work[50]; //职称
char department[50]; //部门
char call[50]; //电话
char time[20]; //入职时间
char email[20]; //邮箱
}DataType;
//定义节点
typedef struct node{
DataType data; //结点的数据区域
struct node *next; //结点的指针区域
}ListNode,*LinkList;
//创建整体数据链表
LinkList create(LinkList &L){
ifempty=0;
L=(LinkList) malloc(sizeof (ListNode));
L->next=NULL;
ifempty=0;
return L;
}
//控制光标生成
void gotoxy(short x, short y) {
COORD coord = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
//定义程序的主菜单
void menu(){
cout<<"|============================================================|"<<endl;
cout<<"| |"<<endl;
cout<<"| 欢迎使用职工信息管理系统 |"<<endl;
cout<<"| |"<<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<<"| 请选择功能: |";
gotoxy(24, 14);
}
//定义修改时程序的主菜单
void menuxg(){
cout<<"|============================================================|"<<endl;
cout<<"| |"<<endl;
cout<<"| 欢迎使用职工信息管理系统 |"<<endl;
cout<<"| |"<<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<<"| 请选择功能:2 |"<<endl;
cout<<"|------------------------------------------------------------|"<<endl;
}
//定义查询时程序的主菜单
void menucx(){
cout<<"|============================================================|"<<endl;
cout<<"| |"<<endl;
cout<<"| 欢迎使用职工信息管理系统 |"<<endl;
cout<<"| |"<<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<<"| 请选择功能:3 |";
}
//定义显示时程序的主菜单
void menuxs(){
cout<<"|============================================================|"<<endl;
cout<<"| |"<<endl;
cout<<"| 欢迎使用职工信息管理系统 |"<<endl;
cout<<"| |"<<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<<"| 请选择功能:5 |";
}
//输入职工信息
void InsertDataList_L(LinkList &L){
int i,n;
ListNode *p;
cout<<"|------------------------------------------------------------|"<<endl;
cout<<"| **************录入信息************** |"<<endl;
cout<<"| 请输入要录入的职工信息: |"<<endl;
p = (LinkList) malloc(sizeof(ListNode));
cout << "| 编号: |";
gotoxy(18, 18);
cin >> p->data.num;
cout << "| 姓名: |";
gotoxy(18, 19);
cin >> p->data.name;
cout << "| 年龄: |";
gotoxy(18, 20);
cin >> p->data.age;
cout << "| 性别: |";
gotoxy(18, 21);
cin >> p->data.sex;
cout << "| 职称: |";
gotoxy(18, 22);
cin >> p->data.work;
cout << "| 部门: |";
gotoxy(18, 23);
cin >> p->data.department;
cout << "| 电话: |";
gotoxy(18, 24);
cin >> p->data.call;
cout << "| 入职时间: |";
gotoxy(22, 25);
cin >> p->data.time;
cout << "| 邮箱: |";
gotoxy(18, 26);
cin >> p->data.email;
p->next = L->next;
L->next = p;
ifempty++;
getchar(); // 暂停
cout<<"| 输入完成 |"<<endl;
cout<<"| 按回车键继续······ |";
}
//按照编号查找
void searchnum(LinkList &L){
int flag=0; //flag 表示职工是否找到
int i=0;
ListNode *p;
p = L->next;
char numm[5]; //要查找的职工编号
cout<<"| 请输入要查找的职工编号: |";
gotoxy(36, 23);
cin>>numm;
while(i<ifempty){
if(strcmp(p->data.num, numm)==0){
flag=1;//找到指定职工
cout << "| 该职工信息为:" << endl;
cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<" "<<p->data.time<<" "<<p->data.email<<endl;
}
p=p->next;
i++;
}
if (flag==0){
cout<< "| 编号为" << numm << "的职工不存在! |";
getchar(); // 暂停
}
}
//按照姓名查找
void searchname(LinkList &L){
int flag=0; //flag 表示职工是否找到
int i=0;
ListNode *p;
p = L->next;
char namee[5]; //要查找的职工编号
cout<<"| 请输入要查找的职工姓名: |";
gotoxy(36, 23);
cin>>namee;
while(i<ifempty){
if(strcmp(p->data.name, namee)==0){
flag=1;//找到指定职工
cout << "|该职工信息为:" << endl;
cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<" "<<p->data.time<<" "<<p->data.email<<endl;
}
p=p->next;
i++;
}
if (flag==0){
cout<< "| 姓名为" << namee << "的职工不存在! |";
getchar(); // 暂停
}
}
//按照部门查找
void searchwork(LinkList &L){
ListNode *p,*q,*s;
if (ifempty>1){
for(int i=0;i<ifempty-1;i++)
{
s=L;
for(int j=0;j<ifempty-i-1;j++)
{
p=s->next;
q=p->next;
if(strcmp(p->data.num,q->data.num)>0)
{
swap(p->data,q->data);
}
s=s->next;
}
}
}
int flag=0; //flag 表示职工是否找到
int i=0;
p = L->next;
char workk[20]; //要查找的部门名称
cout<<"| 请输入要查找的部门名称: |";
gotoxy(36, 23);
cin>>workk;
while(i<ifempty){
if(strcmp(p->data.department, workk)==0){
if (flag==0){
cout << "| 该部门的职工有:" << endl;
cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
}
flag=1;//找到指定职工
cout <<"| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<" "<<p->data.time<<" "<<p->data.email<<endl;
}
p=p->next;
i++;
}
if (flag==0){
cout<< "| 部门为" << workk << "的职工不存在! |";
getchar(); // 暂停
}
}
//查询职工信息
void GetDataList_L(LinkList &L){
int y;
int n=0;
if(ifempty==0){
cout<<"|------------------------------------------------------------|"<<endl;
cout<<"| **************查询信息************** |"<<endl;
cout<<"| 目前没有职工信息··· |"<<endl;
gotoxy(32, 17);
return;
}else{
while(1){
if (n!=0){
menucx();
cout<<endl;
}
n++;
cout<<"|------------------------------------------------------------|"<<endl;
cout<<"| **************查询信息************** |"<<endl;
cout<<"| * 1. 按编号查询 * |"<<endl;
cout<<"| * 2. 按姓名查询 * |"<<endl;
cout<<"| * 3. 按部门查询 * |"<<endl;
cout<<"| * 0. 返回上一层 * |"<<endl;
cout<<"| ************************************ |"<<endl;
cout<<"| 请选择方式: |";
gotoxy(24, 22);
cin>>y;
switch (y) {
case 1:
searchnum(L);
getchar(); // 暂停
cout<<"| 查询完成 |"<<endl;
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 2:
searchname(L);
getchar(); // 暂停
cout<<"| 查询完成 |"<<endl;
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 3:
searchwork(L);
getchar(); // 暂停
cout<<"| 查询完成 |"<<endl;
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 0:
return;
default:
cout<<"| 请正确输入!!!"<<endl;
}
}
}
}
//删除职工信息
void DeletedataList_L(LinkList &L){
cout<<"|------------------------------------------------------------|"<<endl;
cout<<"| **************删除信息************** |"<<endl;
if(ifempty==0){
cout<<"| 目前没有职工信息··· |"<<endl;
gotoxy(32, 17);
return;
}
ListNode *p;
int j = 0;
p = L;
char namee[20];
cout <<"| 请输入要删除的职工姓名: |";
gotoxy(36, 17);
cin >> namee;
while (p->next) {
if (strcmp(p->next->data.name, namee) == 0) {
j = 1;
cout<<"| 删除完成 |"<<endl;
break;
}
p = p->next;
}
if(j){
p->next=p->next->next;
ifempty--;
} else{
cout<<"| 姓名为"<<namee<<"的职工不存在!"<<endl;
}
}
//修改编号
void changenum(LinkList &p){
cout << "| 请输入要改成的编号: |"<<endl;
gotoxy(32, 28);
cin >> p->data.num;
cout << "| 修改后的职工信息为: |"<<endl;
cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<" "<<p->data.time<<" "<<p->data.email<<endl;
}
//修改年龄
void changeage(LinkList &p){
cout << "| 请输入要改成的年龄:";
cin >> p->data.age;
cout << "| 修改后的职工信息为:" << endl;
cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<" "<<p->data.time<<" "<<p->data.email<<endl;
}
//修改部门
void changedepartment(LinkList &p){
cout << "| 请输入要改成的部门:";
cin >> p->data.department;
cout << "| 修改后的职工信息为:" << endl;
cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<" "<<p->data.time<<" "<<p->data.email<<endl;
}
//修改职称
void changework(LinkList &p){
cout << "| 请输入要改成的职称:";
cin >> p->data.work;
cout << "| 修改后的职工信息为:" << endl;
cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<" "<<p->data.time<<" "<<p->data.email<<endl;
}
//修改电话
void changecall(LinkList &p){
cout << "| 请输入要改成的电话:";
cin >> p->data.call;
cout << "| 修改后的职工信息为:" << endl;
cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<" "<<p->data.time<<" "<<p->data.email<<endl;
}
//修改入职时间
void changetime(LinkList &p){
cout << "| 请输入要改成的入职时间:";
cin >> p->data.time;
cout << "| 修改后的职工信息为:" << endl;
cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<" "<<p->data.time<<" "<<p->data.email<<endl;
}
//修改邮箱
void changeemail(LinkList &p){
cout << "| 请输入要改成的邮箱:";
cin >> p->data.email;
cout << "| 修改后的职工信息为:" << endl;
cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<" "<<p->data.time<<" "<<p->data.email<<endl;
}
//修改职工信息
void ModifyDataList_L(LinkList &L) {
if(ifempty==0){
cout<<"|------------------------------------------------------------|"<<endl;
cout<<"| **************修改信息************** |"<<endl;
cout<<"| 没有职工信息可以修改··· |"<<endl;
gotoxy(36, 17);
return;
}
ListNode *p;
int j = 0; //未找到
int i;
int n=0;
int z=0;
p = L->next;
char namee[5]; //要修改的职工姓名
cout << "|------------------------------------------------------------|"<<endl;
cout << "| 请输入要修改的职工姓名: |";
gotoxy(36, 16);
cin >> namee;
while (i<ifempty) {
if (strcmp(p->data.name, namee) == 0) {
j = 1;//找到指定职工
break;
}
p = p->next;
i++;
if (i == ifempty){
cout<< "| 姓名为" << namee << "的职工不存在! |";
getchar(); // 暂停
break;
}
}
if (j == 1) {
int y;
while (1) {
if (n!=0){
menuxg();
}if (z!=0){
cout << "| 请输入要修改的职工姓名:"<<namee<<" |"<<endl;
}
z=0;
cout<<"| **************修改信息************** |"<<endl;
cout<<"| * 1.修改编号 * |"<<endl;
cout<<"| * 2.修改年龄 * |"<<endl;
cout<<"| * 3.修改职称 * |"<<endl;
cout<<"| * 4.修改部门 * |"<<endl;
cout<<"| * 5.修改电话 * |"<<endl;
cout<<"| * 6.修改入职时间 * |"<<endl;
cout<<"| * 7.修改邮箱 * |"<<endl;
cout<<"| * 0.返回上层 * |"<<endl;
cout<<"| ************************************ |"<<endl;
cout<<"| 请选择方式: |";
gotoxy(24, 27);
n++;
cin>>y;
getchar(); // 清除输入缓冲区中的回车符
switch (y) {
case 1:
changenum(p);
getchar(); // 暂停
cout<<"| 修改完成 |"<<endl;
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 2:
changeage(p);
getchar(); // 暂停
cout<<"| 修改完成 |"<<endl;
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 3:
changework(p);
getchar(); // 暂停
cout<<"| 修改完成 |"<<endl;
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 4:
changedepartment(p);
getchar(); // 暂停
cout<<"| 修改完成 |"<<endl;
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 5:
changecall(p);
getchar(); // 暂停
cout<<"| 修改完成 |"<<endl;
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 6:
changetime(p);
getchar(); // 暂停
cout<<"| 修改完成 |"<<endl;
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 7:
changeemail(p);
getchar(); // 暂停
cout<<"| 修改完成 |"<<endl;
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 0:
return;
default:
z++;
cout<<"| 请正确输入!!! |";
getchar();
system("cls"); // 清屏
}
}
}
}
//按编号显示
void printnum(LinkList &L){
ListNode *p,*q,*s;
if (ifempty>1){
for(int i=0;i<ifempty-1;i++)
{
s=L;
for(int j=0;j<ifempty-i-1;j++)
{
p=s->next;
q=p->next;
if(strcmp(p->data.num,q->data.num)>0)
{
swap(p->data,q->data);
}
s=s->next;
}
}
}
p=L->next;
cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
while(1){
cout << "| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<" "<<p->data.time<<" "<<p->data.email<<endl;
p=p->next;
if (p->data.num == NULL){
break;
}
}
cout<<"|共有"<<ifempty<<"名职工 |"<<endl;
}
//按入职时间显示
void printtime(LinkList &L){
ListNode *p,*q,*s;
if (ifempty>1){
for(int i=0;i<ifempty-1;i++)
{
s=L;
for(int j=0;j<ifempty-i-1;j++)
{
p=s->next;
q=p->next;
if(strcmp(p->data.time,q->data.time)>0)
{
swap(p->data,q->data);
}
s=s->next;
}
}
}
p=L->next;
cout << "|-编号"<<"---姓名"<< "---年龄"<<"-----性别"<<"-----职称"<<"----部门"<<"------手机号码"<<"--------入职时间"<<"---------邮箱------"<< endl;
while(1){
cout <<"| "<< p->data.num<<"\t"<<p->data.name<<"\t"<<p->data.age<<"\t"<<p->data.sex<<"\t"<<p->data.work<<"\t"<<p->data.department<<"\t"<<p->data.call<<" "<<p->data.time<<" "<<p->data.email<<endl;
p=p->next;
if (p->data.num == NULL){
break;
}
}
cout<<"|共有"<<ifempty<<"名职工 |"<<endl;
}
//显示职工信息
void printList_L(LinkList &L){
int y;
int n=0;
if(ifempty==0){
cout<<"|------------------------------------------------------------|"<<endl;
cout<<"| **************显示信息************** |"<<endl;
cout<<"| 没有职工信息可以显示··· |"<<endl;
gotoxy(36, 17);
return ;
}else {
while (1) {
if (n != 0) {
menuxs();
cout << endl;
}
n++;
cout << "|------------------------------------------------------------|" << endl;
cout << "| **************显示信息************** |"<<endl;
cout << "| * 1. 按编号显示 * |"<<endl;
cout << "| * 2. 按入职时间显示 * |"<<endl;
cout << "| * 0. 返回上一层 * |"<<endl;
cout << "| ************************************ |"<<endl;
cout<<"| 请选择方式: |";
gotoxy(24, 21);
cin >> y;
getchar();
switch (y) {
case 1:
printnum(L);
cout<<"| 显示完成 |"<<endl;
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 2:
printtime(L);
cout<<"| 显示完成 |"<<endl;
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 0:
return;
default:
cout<<"| 请正确输入!!! |";
getchar();
system("cls"); // 清屏
}
}
}
}
//保存信息至文件
void saveList_L(LinkList &L){
ListNode *p;
int i=0;
p=L->next;
char filename[ifempty];
FILE *out;
cout<<"|------------------------------------------------------------|"<<endl;
cout<<"| **************保存信息************** |"<<endl;
if (ifempty==0){
cout<<"| 没有职工信息可以保存··· |"<<endl;
gotoxy(36, 17);
return;
}
cout<<"| 请输入要保存文件的名称: |";
gotoxy(36, 17);
cin>>filename;
do {
if (i==0){
fprintf(out,"|-编号---姓名---年龄-----性别-----职称----部门------手机号码--------入职时间---------邮箱------\n");
}
fprintf(out,"| %s\t%s\t%s\t%s\t%s\t%s\t%s %s %s\n",p->data.num,p->data.name,p->data.age,p->data.sex,p->data.department,p->data.work,p->data.call,p->data.time,p->data.email);
p=p->next;
i++;
} while (i<ifempty);
cout<<"| 保存成功 |"<<endl;
fclose(out);//关闭流对象
}
//编写主程序
int main(){
ListNode *L;
if (!(L=(ListNode *) malloc((sizeof (ListNode))))){
cout << endl;
exit(1);
}
create(L);
int n;
char m[10];
char s[10] = {"是"};
int j=0;
while(1){
top: menu();
cin>>n;
getchar();
switch (n) {
case 1:
InsertDataList_L(L);
getchar(); // 暂停
system("cls"); // 清屏
break;
case 2:
ModifyDataList_L(L);
getchar(); // 暂停
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 3:
GetDataList_L(L);
getchar(); // 暂停
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 4:
DeletedataList_L(L);
getchar(); // 暂停
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 5:
printList_L(L);
getchar(); // 暂停
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
break;
case 6:
saveList_L(L);
getchar(); // 暂停
cout<<"| 按回车键继续······ |";
getchar(); // 暂停
system("cls"); // 清屏
j++;
break;
case 0:
if(j==0){
cout<<"| 当前还未保存,是否确定退出: |";
gotoxy(40,15);
cin>>m;
getchar();
int zhi=strcmp(m,s);
switch (zhi) {
case 0:
cout<<"| 欢迎下次使用!!! |"<<endl;
cout<<"|============================================================|"<<endl;
cout<<"退出中";
Sleep(400);
cout<<"·";
Sleep(400);
cout<<"·";
Sleep(400);
cout<<"·";
Sleep(400);
cout<<"·";
Sleep(400);
cout<<"·";
Sleep(400);
cout<<"·";
Sleep(400);
exit(0);
default:
system("cls"); // 清屏
goto top;
}
}
getchar(); // 暂停
cout<<"============================================================"<<endl;
getchar(); // 暂停
exit(0);
default:
cout<<"| 请正确输入!!! |";
getchar();
system("cls"); // 清屏
}
}
}
最后有问题的同学也欢迎在评论区中提出,作者会尽力解答!!!