Ⅲ 程序清单及程序运行结果
1.程序清单
/* Note:Your choice is C IDE */
#include "stdio.h"
#include "conio.h"
#include "string.h"
#define N 10
#define M 20
#define N1 10
int J=0;
struct worker{int
num; /*结构体中定义的职工号*/
char
name[M]; /*结构体中定义的职工姓名*/
long int
birthday; /*结构体中定义的职工出生年月*/
char
sex[N1]; /*结构体中定义的职工性别*/
char
xueli[N1]; /*结构体中定义的职工学历*/
char
job[N1]; /*结构体中定义的职工职务*/
unsigned long int
money; /*结构体中定义的职工工资*/
char
address[M]; /*结构体中定义的职工住址*/
unsigned long int
tel; /*结构体中定义的职工电话*/
};
struct worker
worker[N]; /*定义结构体,用于存放职工基本信息*/
main()
{
void
print(); /*声明菜单显示函数*/
void
input(); /*声明输入函数*/
void
printx(); /*声明具体信息显示函数*/
void
search(); /*声明查询函数*/
void
correct(); /*声明修改函数*/
void
menu(); /*声明显示菜单函数*/
void
del(); /*声明删除函数*/
void
add(); /*声明增加函数*/
printf("\n\n\n\n ************* welcome to use this
system! *************\n");
printf("\n\n\n\n\tInorder to run it successfully,please wait for
four or five second.\n");
printf("\tThank you!!!\n");
printf("\n\n\n\n\n\n\n\n\press any key to continue......
\n"); /*为使屏幕正确显示汉字,首先在这里打印出一些字符使用户停留片刻*/
getch(); /*接收press any key to continue中的无价值字符*/
menu();
}
void print()
{
clrscr(); /*清屏函数*/
printf("\n\n\n\n");
printf("\t\t\t$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
printf("\t\t\t |********请输入编号(1--7)*******|\n");
printf("\t\t\t ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
\n"); /*菜单*/
printf("\t\t |______________________________________|\n");
printf("\t\t |**************************************|\n"); /*调用printf函数单纯显示*/
printf("\t\t |<><><><><><><><><><><><><><><><><><><>|\n");
printf("\t\t |<>|________________________________|<>|\n");
printf("\t\t |<>| 1--输入职工信息。 |<>|\n");
printf("\t\t |<>| 2--显示职工信息。 |<>|\n");
printf("\t\t |<>| 3--查询职工信息。 |<>|\n");
printf("\t\t |<>| 4--修改职工信息。 |<>|\n");
printf("\t\t |<>| 5--删除职工信息。 |<>|\n");
printf("\t\t |<>| 6--增加职工信息。 |<>|\n");
printf("\t\t |<>| 7--退出系统。 |<>|\n");
printf("\t\t |<>|________________________________|<>|\n");
printf("\t\t |<><><><><><><><><><><><><><><><><><><>|\n");
printf("\t\t |______________________________________|\n");
}
void menu()
{
char
yes_no,choose; /*定义的char型,用于接受用户选择*/
do
{
print(); /*打印出菜单*/
choose=getch(); /*接收用户的选项*/
switch(choose)
{
case '1' : input();
break; /*调用input函数,输入基本信息*/
case '2' : printx();
break; /*调用printx函数,显示基本信息*/
case '3' : search();
break; /*调用serach函数,查询基本信息*/
case '4' : correct();
break; /*调用correct函数,修改基本信息*/
case '5' : del();
break; /*调用del函数,删除部分信息*/
case '6' : add();
break;
case '7' :
break; /*退出系统*/
default :
printf("非法选项!!"); /*接收用户的非法字符,并提示继续选择*/
}
if(choose=='7') break;
printf("\n\n\t是否在主菜单中继续选择吗?(Y/N)");
do
{
yes_no=getch();
}while(yes_no!='Y'&&yes_no!='N'&&yes_no!='y'&&yes_no!='n');
}while(yes_no=='y'||yes_no=='Y'); /*基本上所有的函数都在do while
循环中运行,退出循环后便退出系统*/}
void input()
{
int i,j;
FILE * fp;
clrscr(); /*清屏*/
printf("请输入职工基本信息:\n");
for(i=0;i
{
printf("请输入第 %d 个职工信息\n",i+1);
printf("职工号、姓名、出生年月、性别、学历、职务、工资、住址、电话\n");
scanf("%d%s%ld%s%s%s%lu%s%lu",&worker[i].num,worker[i].name,&worker[i].birthday,worker[i].sex,worker[i].xueli,worker[i].job,&worker[i].money,worker[i].address,&worker[i].tel);
} /*输入基本信息*/
for(i=0;i
if((fp=fopen("zhigong.txt","wb"))==NULL) /*执行文件打开操作*/
printf("文件打开失败!");
for(i=0;i
if(fwrite(&worker[i],sizeof(struct
worker),1,fp)!=1) /*执行文件写入磁盘操作*/
printf("文件写入失败!\n");
fclose(fp);
}
void
printx() /*输出函数,用于显示基本信息*/
{
int i;
FILE * fp;
clrscr();
for(i=0;i
{worker[i].num=0;strcpy(worker[i].name,'');worker[i].birthday=0;strcpy(worker[i].sex,'');strcpy(worker[i].xueli,'');strcpy(worker[i].job,'');worker[i].money=0;strcpy(worker[i].address,'');worker[i].tel=0;}
if((fp=fopen("zhigong.txt","rb"))==NULL)
printf("文件打开失败!"); /*以只读方式打开名为zhigong的文件*/
printf("\n\n\n");
for(i=0;i
{
fread(&worker[i],sizeof(struct
worker),1,fp); /*读入文件中的信息*/
printf("职工号%-4d 姓名%-10s出生日期%-8ld
性别%-4s 学历%-10s\n\t 职务%-10s工资%-8lu 住址%-18s电话%-10lu\n",worker[i].num,worker[i].name,worker[i].birthday,worker[i].sex,worker[i].xueli,worker[i].job,worker[i].money,worker[i].address,worker[i].tel);
}
fclose(fp); /*关闭文件*/
}
void search()
{
void
search1(); /*声明基本查询函数*/
void search2();
void search3();
void search4();
void
search5();
void search6();
char
choose; /*声明的变量用于接受用户的选择*/
clrscr();
printf("\n\t\t\t现在开始查询!\n");
printf("\n\n\t请选择查询方式\n\t1.按职工号查询。\n\t2.按职工姓名查询。\n\t3.按出生日期查询\n\t4.按学历查询\n\t5.按职务查询\n\t6.按电话号码查询\n\t7.中止查询。\n");
choose=getch();
switch(choose) /*在switch语句中选择要查询的方式*/
{
case '1' : search1();
break; /*调查choose的值,分别执行相应的函数*/
case '2' : search2(); break;
case '3' : search3(); break;
case '4' : search4(); break;
case '5' : search5(); break;
case '6' : search6(); break;
case '7' : break;
default : printf("非法选项!!");
}
}
void
search1() /*基本查询1,从职工号查询*/
{
int i,j,a=0;
FILE * fp;
clrscr();
printf("请输入职工的职工号:");
scanf("%d",&j); /*输入所要查询的编号,用于与worker[i].num比较*/
if((fp=fopen("zhigong.txt","rb"))==NULL) /*以只读方式打开名为zhigong的文件*/
printf("文件打开失败!");
printf("\n以下是您所要查询的信息:\n");
for(i=0;i
{
fread(&worker[i],sizeof(struct
worker),1,fp); /*从文件中读入信息*/
if(j==worker[i].num) /*如果相等,则显示*/
{ a=1;
printf(" 职工号 %-4d 姓名 %-10s 出生日期 %-8ld 性别 %-4s\n 学历 %-6s
职务 %-10s 工资 %-8lu 住址 %-18s
电话 %-10lu\n",worker[i].num,worker[i].name,worker[i].birthday,worker[i].sex,worker[i].xueli,worker[i].job,worker[i].money,worker[i].address,worker[i].tel);
}
}
if(a==0)
printf("\n\t抱歉,没有找到所要查询的职工!");
fclose(fp);
}
void
search2() &nbs