程序介绍
该程序为个人简历信息管理系统,程序实现的主要功能有:信息录入、信息显示、信息查询、信息修改、信息删除;除此之外还区分了管理员账号和个人账号,不同的账号之间有差异也有联系。
设置的结构体信息包括了:姓名、性别、籍贯、民族、身份证号码、出生日期、电话号码、年龄、学校、专业、受教育的信息、个人工作经验和自我认识。
程序作用
该程序的应用让管理个人简历信息变得更加方便快捷;同纸质简历相比也减少了翻阅时繁琐的过程。
程序的结构示意图
程序的代码及其功能展示
结构体部分
在整个系统程序中,最重要且基础的部分就是结构体的构建,因为后面所有功能的实现都和它息息相关。把结构体设计得当,会让后面程序的设计更加顺利,也就是结构体相当于一个路引子。
struct cs {//设置一个关于时间的结构体来储存出生日期
int year;//年
int month;//月
int day;//日};
};
struct worker//工作者即投简历人员
{
char xm[9];//简历人员姓名
char xb[3];//简历人员性别
char jg[31];//简历人员籍贯
char mz[20];//简历人员民族
char id[20];//简历人员身份证号码
struct cs birthday;//简历人员出生日期
double dh;//简历人员电话号码
double nl;//简历人员年龄
char xx[30];//简历人员学校
char zy[21];//简历人员专业
char grjysj[15];//个人教育时间
char grjydw[30];//个人教育单位
char grjyzm[9];//个人教育证明人
char grjysj1[15];//个人教育时间
char grjydw1[30];//个人教育单位
char grjyzm1[9];//个人教育证明人
char grjysj2[15];//个人教育时间
char grjydw2[30];//个人教育单位
char grjyzm2[9];//个人教育证明人
char gzjy[2000];//个人工作经验
char zwrs[2000];//简历人员自我认识
}; struct worker people[5000];//总共设计5000个数据空间
struct worker search_people;//搜索的时候需要一个结构体来和之前的数据进行比较
struct worker space_data;//删除数据的时候需要一个空白的结构体用来覆盖数据
struct worker modify_data;//修改数据的时候需要用一个结构体来查询和对比已经有的那些数据
菜单设计(大菜单、主菜单、子菜单、临时菜单)
大菜单
大菜单的设计就是实现管理员系统和个人账户系统的切换功能,设置三个选项,显示界面有“管理员账户”“个人账户”“退出功能”。并在管理员账户和个人账户中添加返回大菜单的调用。
void Menu()//大菜单
{
int select;
system("cls");
printf("\t\t\t************************************************\n");
printf("\t\t\t***************个人简历信息管理系统*************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t******************1.管理员账号******************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t******************2.个人账号********************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t******************3.退出程序********************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t输入你的选择【1 or 3】");
scanf_s("%d", &select);
while (select < 1 || select > 3)
{
printf("\t\t\t输入错误,请重新输入你的选择【1 or 3】:");
scanf_s("%d", &select);
}
switch (select)
{
case 1: menu1();
Menu();
break;
case 2: menu2();
Menu();
break;
case 3: exit(0);
break;
}
}
主菜单
主菜单中显示的是系统完整功能的选项,因为这是管理员使用的菜单。在主菜单中功能选项包括“个人简历信息录入”“个人简历信息显示”“个人简历信息查询”“个人简历信息修改”“个人简历信息删除”“返回大菜单”。
void menu1()//主菜单
{
int select, k = 0, i;
char name1[17];
char password1[17];
system("cls");
getchar();
printf("\t\t\t输入管理员账号:");
gets(name1);
printf("\t\t\t输入管理员密码:");
gets(password1);
system("cls");
while (!((strcmp(name1, "1") == 0 && strcmp(password1, "1") == 0)))
{
printf("\t\t\t重新输入管理员账号:");
gets(name1);
printf("\t\t\t重新输入管理员密码:");
gets(password1);
system("cls");
k = k + 1;
if (k == 2)
{
printf("\n\n\n");
printf("\t\t\t\t您已经输错三次,将为你返回主菜单!!!");
printf("\n\n\n\n\n");
system("pause");
Menu();
break;
}
}
system("cls");
printf("\n\n");
printf("\t\t\t\t\t识别成功!");
printf("\n\n");
printf("\t\t\t\t\t正在努力加载");
for (i = 1; i <= 6; i++)
{
printf(".");
Sleep(200);
}
printf("\n\n\n");
printf("\t\t\t\t\t恭喜你,登录成功!\n");
system("pause");
system("cls");
printf("\t\t\t************************************************\n");
printf("\t\t\t******************个人简历菜单******************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************1.个人简历信息录入****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************2.个人简历信息显示****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************3.个人简历信息查询****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************4.个人简历信息修改****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************5.个人简历信息删除****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************6.返回大菜单**********************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t输入你的选择【1 or 6】");
scanf_s("%d", &select);
while (select < 1 || select > 6)
{
printf("\t\t\t输入错误,请重新输入你的选择【1-6】:");
scanf_s("%d", &select);
}
switch (select)
{
case 1:jianli_input();//简历录入
break;
case 2:jianli_output();//简历显示
break;
case 3:jianli_search();//简历查询
break;
case 4:jianli_modify();//简历修改
break;
case 5:jinali_delete();//简历删除
break;
case 6: Menu();//返回主菜单
break;
}
}
子菜单
我们将个人账户的信息管理写在子菜单的代码中,这样就有助于我们在使用个人账号功能的时候方便调回到子菜单页面;在子菜单中的个人账号功能选项包括“个人账户信息修改”“个人账户信息修改”“返回大菜单”。
void menu2()
{
int select, k = 0, j, i, flag, p;
char name2[17];//设置一个变量用在后面输入账号
char password2[17];//设置一个变量用在后面输入密码
system("cls");
getchar();
here6:
if (k < 3)
{
printf("\t\t\t注意:每个用户的初始化密码都为“1”");//提醒用户的密码为“1”,方便输入的时候参考
printf("\n\n");
printf("\t\t\t输入个人账户账号:");//输入账号
gets(name2);
printf("\t\t\t输入个人账户密码:");//输入密码
gets(password2);
system("cls");
for (p = 0; p < 5000; p++)
{
if (strcmp(name2, people[p].id) == 0 && strcmp(password2, "1") == 0)
{
system("cls");
printf("\n\n");
printf("\t\t\t\t\t识别成功!");
printf("\n\n");
printf("\t\t\t\t\t正在努力加载");
for (i = 1; i <= 6; i++)
{
printf(".");
Sleep(200);
}
printf("\n\n\n");
printf("\t\t\t\t\t恭喜你,登录成功!\n");
system("pause");
here://个人账户信息查询返回
here2://13退出修改的返回处
system("cls");
printf("\t\t\t************************************************\n");
printf("\t\t\t***************个人账户简历菜单*****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************1.个人账户信息查询****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************2.个人账户信息修改****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************3.返回大菜单**********************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t输入你的选择【1 or 3】");
scanf_s("%d", &select);
while (select < 1 || select > 3)
{
printf("\t\t\t输入错误,请重新输入你的选择【1-6】:");
scanf_s("%d", &select);
}
switch (select)
{
case 1:
for (i = 0; i < 5000; i++)
{
if (strcmp(people[p].id, people[i].id) == 0)
{
system("cls");
printf("%-21s", "姓名:");//个人简历姓名
printf("%-21s", people[i].xm);
printf("%-21s", "性别:");//个人简历性别
printf("%-21s", people[i].xb);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "籍贯:");//个人简历籍贯
printf("%-21s", people[i].jg);
printf("\n");
printf("%-21s", "民族:");//个人简历民族
printf("%-21s", people[i].mz);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "身份证号码:");//个人简历身份证号码
printf("%-21s", people[i].id);
printf("\n");
printf("%-21s", "出生年月日:");//个人出生日期
printf("%4d-%2d-%2d", people[i].birthday.year, people[i].birthday.month, people[i].birthday.day);
printf("\n");
printf("%-21s", "年龄:");//个人简历年龄
printf("%-21.0lf", people[i].nl);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "电话号码:");//个人简历电话号码
printf("%-21.0lf", people[i].dh);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "学校:");//个人简历学校
printf("%-21s", people[i].xx);
printf("\n");
printf("%-21s", "专业:");//个人简历专业
printf("%-21s", people[i].zy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "个人教育经历:");//个人教育经历
printf("\n");
printf("%-15s", "时间");
printf("%-20s", "地点(单位)");
printf("%-9s", "证明人");
printf("\n");
printf("%-15s", people[i].grjysj);
printf("%-20s", people[i].grjydw);
printf("%-9s", people[i].grjyzm);
printf("\n");
printf("%-15s", people[i].grjysj1);
printf("%-20s", people[i].grjydw1);
printf("%-9s", people[i].grjyzm1);
printf("\n");
printf("%-15s", people[i].grjysj2);
printf("%-20s", people[i].grjydw2);
printf("%-9s", people[i].grjyzm2);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "工作经验:");//个人工作经验
printf("%-500s", people[i].gzjy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "自我认识:");//个人简历自我认识
printf("%-500s", people[i].zwrs);
printf("\n\n\n"); printf("*************************************************************************");
printf("\n\n\n");
}
}
system("pause");
goto here;
break;
case 2:
for (i = 0; i < 5000; i++)
{
if (strcmp(people[p].id, people[i].id) == 0)
{
system("cls");
printf("%-21s", "姓名:");//个人简历姓名
printf("%-21s", people[i].xm);
printf("%-21s", "性别:");//个人简历性别
printf("%-21s", people[i].xb);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "籍贯:");//个人简历籍贯
printf("%-21s", people[i].jg);
printf("\n");
printf("%-21s", "民族:");//个人简历民族
printf("%-21s", people[i].mz);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "身份证号码:");//个人简历身份证号码
printf("%-21s", people[i].id);
printf("\n");
printf("%-21s", "出生年月日:");//个人出生日期
printf("%4d-%2d-%2d", people[i].birthday.year, people[i].birthday.month, people[i].birthday.day);
printf("\n");
printf("%-21s", "年龄:");//个人简历年龄
printf("%-21.0lf", people[i].nl);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "电话号码:");//个人简历电话号码
printf("%-21.0lf", people[i].dh);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "学校:");//个人简历学校
printf("%-21s", people[i].xx);
printf("\n");
printf("%-21s", "专业:");//个人简历专业
printf("%-21s", people[i].zy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "个人教育经历:");//个人教育经历
printf("\n");
printf("%-15s", "时间");
printf("%-20s", "地点(单位)");
printf("%-9s", "证明人");
printf("\n");
printf("%-15s", people[i].grjysj);
printf("%-20s", people[i].grjydw);
printf("%-9s", people[i].grjyzm);
printf("\n");
printf("%-15s", people[i].grjysj1);
printf("%-20s", people[i].grjydw1);
printf("%-9s", people[i].grjyzm1);
printf("\n");
printf("%-15s", people[i].grjysj2);
printf("%-20s", people[i].grjydw2);
printf("%-9s", people[i].grjyzm2);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "工作经验:");//个人工作经验
printf("%-500s", people[i].gzjy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "自我认识:");//个人简历自我认识
printf("%-500s", people[i].zwrs);
printf("\n\n\n"); printf("*************************************************************************");
printf("\n\n\n");
system("pause");
{
struct worker temp = { 0 };
int select1, select2;
here3://放弃执行修改后的返回位置
here4://个人账户信息修改后的返回处
system("cls");
printf("\t1 修改姓名 ");
printf("\t2 修改性别 ");
printf("\n");
printf("\t3 修改籍贯 ");
printf("\t4 修改民族 ");
printf("\n");
printf("\t5 修改出生日期 ");
printf("\t6 修改电话号码 ");
printf("\n");
printf("\t7 修改年龄 ");
printf("\t8 修改学校 ");
printf("\n");
printf("\t9 修改专业 ");
printf("\t10 修改教育经历 ");
printf("\n");
printf("\t11 修改个人工作经验");
printf("\t12 修改自我认识 ");
printf("\n");
printf("\t13 退出修改 ");
printf("\n\n");
printf("请输入您的选择:");
scanf("%d", &select1);
while (select1 < 1 || select1>13)
{
printf("\t\t\t 输入错误,请重新输入你的选择[1-14]:");
scanf("%d", &select1);
}
if (select1 == 1)
{
getchar();
printf("%s", "输入姓名:");//个人简历姓名
gets(temp.xm);
}
if (select1 == 2)
{
getchar();
printf("%s", "输入性别:");//个人简历性别
gets(temp.xb);
}
if (select1 == 3)
{
getchar();
printf("%s", "输入籍贯:");//个人简历籍贯
gets(temp.jg);
}
if (select1 == 4)
{
getchar();
printf("%s", "输入民族:");//个人简历民族
gets(temp.mz);
}
if (select1 == 5)
{
printf("%s", "输入出生年月日【xxxx-xx-xx】:");//个人出生日期
scanf_s("%d-%d-%d", &temp.birthday.year, &temp.birthday.month, &temp.birthday.day);
}
if (select1 == 6)
{
printf("%s", "输入电话号码:");//个人简历电话号码
scanf_s("%lf", &temp.dh);
}
if (select1 == 7)
{
getchar();
printf("%s", "输入年龄:");//个人简历年龄
scanf_s("%lf", &temp.nl);
}
if (select1 == 8)
{
getchar();
printf("%s", "输入学校:");//个人简历学校
gets(temp.xx);
}
if (select1 == 9)
{
getchar();
printf("%s", "输入专业:");//个人简历专业
gets(temp.zy);
}
if (select1 == 10)
{
for (k = 0; k < 3; k++)
{
getchar();
printf("输入时间:");
gets(temp.grjysj);//时间
getchar();
printf("输入地点(单位):");
gets(temp.grjydw);//单位
getchar();
printf("输入证明人:");
gets(temp.grjyzm);//证明人
}
}
if (select1 == 11)
{
getchar();
printf("%s", "个人工作经验:");//个人工作经验
gets(temp.gzjy);
}
if (select1 == 12)
{
getchar();
printf("%s", "输入自我认识:");//个人简历自我认识
gets(temp.zwrs);
}
printf("\t\t\t****************是否执行修改*****************\n");
printf("\t\t\t*********************************************\n");
printf("\t\t\t** 1 确定 2 放弃 **\n");
printf("\t\t\t*********************************************\n");
printf("\t\t\t输入你的选择【1 or 2】:");
scanf("%d", &select2);
while (select2 < 1 || select2>2)
{
printf("\t\t\t输入错误,请重新输入你的选择【1 or 2】:");
scanf_s("%d", &select2);
}
if (select2 == 1)
{
if (select1 == 1)
{
strcpy(people[i].xm, temp.xm);//姓名
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 2)
{
strcpy(people[i].xb, temp.xb);//性别
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 3)
{
strcpy(people[i].jg, temp.jg);//籍贯
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 4)
{
strcpy(people[i].mz, temp.mz);//民族
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 5)
{
people[i].birthday.year = temp.birthday.year;//出生年月日
people[i].birthday.month = temp.birthday.month;
people[i].birthday.day = temp.birthday.day;
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 6)
{
people[i].dh = temp.dh;//电话
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 7)
{
people[i].nl = temp.nl;//年龄
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 8)
{
strcpy(people[i].xx, temp.xx);//学校
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 9)
{
strcpy(people[i].zy, temp.zy);//专业
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 10)
{
strcpy(people[i].grjysj, temp.grjysj);
strcpy(people[i].grjydw, temp.grjydw);
strcpy(people[i].grjyzm, temp.grjyzm);//教育经历
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 11)
{
strcpy(people[i].gzjy, temp.gzjy);//工作经验
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 12)
{
strcpy(people[i].zwrs, temp.zwrs);//自我认识
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
printf("\t\t\t");
autosave();
system("pause");
if (select1 == 13)
{
goto here2;
}
}
if (select2 == 2)
{
goto here3;
}
}
}
}
goto here4;
break;
case 3: Menu();
break;
}
}
}
k = k + 1;
goto here6;
}
system("puase");
}
临时菜单
临时菜单的设计是为了避免管理员菜单进入的功能在退出时需要重复输入管理员密码的情况。临时菜单的设计跟主菜单(管理员菜单)的设计除了需要密码的部分和个别参数以外,其余部分都是相同的。
void menu()//临时菜单
{
int select;
system("cls");
printf("\t\t\t************************************************\n");
printf("\t\t\t******************个人简历菜单******************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************1.个人简历信息录入****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************2.个人简历信息显示****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************3.个人简历信息查询****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************4.个人简历信息修改****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************5.个人简历信息删除****************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t**************6.返回大菜单**********************\n");
printf("\t\t\t************************************************\n");
printf("\t\t\t输入你的选择【1 or 6】");
scanf_s("%d", &select);
while (select < 1 || select > 6)
{
printf("\t\t\t输入错误,请重新输入你的选择【1-6】:");
scanf_s("%d", &select);
}
switch (select)
{
case 1:jianli_input();//简历录入
break;
case 2:jianli_output();//简历显示
break;
case 3:jianli_search();//简历查询
break;
case 4:jianli_modify();//简历修改
break;
case 5:jinali_delete();//简历删除
break;
case 6: Menu();//返回主菜单
break;
}
}
菜单登录说明
注:进入管理员菜单和个人菜单都必须输入正确的账号和密码,管理员的账号和密码是固定的(1,1),而个人账号是系统已存在的个人身份证号码(初始密码是“1”)。
信息录入(输入)
信息的录入功能,我们需要实现的是信息的正确格式输入和信息的成功保存。首先我们应该确定需要输入的信息种类和数量,接着根据结构体里面的变量类型进行准确定义,最后就可以将我们的代码按照一定的逻辑顺序和排版去实现。
void jianli_input()
{
int j, i;
system("cls");//清屏
printf("\t\t\t*********************************************\n");
printf("\t\t\t* 欢迎来到个人简历信息录入功能界面 *\n");
printf("\t\t\t*********************************************\n");
printf("\n\n\n");
int select, k;
printf("\t\t\t\t《是否要录入个人简历信息?》 \n");
printf("\t\t\t*********************************************\n");
printf("\t\t\t**** 1 是 2 否 ****\n");
printf("\t\t\t*********************************************\n");
printf("\t\t\t输入你的选择【1 or 2】:");
scanf_s("%d", &select);
while (select < 1 || select > 2)
{
printf("\t\t\t输入错误,请重新输入你的选择【1 or 2】:");
scanf_s("%d", &select);
}
if (select == 2)
menu();
for (i = 0; i < 5000; i++)
{
if (people[i].dh == 0)
{
getchar();
printf("%s", "输入姓名:");//个人简历姓名
gets(people[i].xm);
printf("%s", "输入性别:");//个人简历性别
gets(people[i].xb);
printf("%s", "输入籍贯:");//个人简历籍贯
gets(people[i].jg);
printf("%s", "输入民族:");//个人简历民族
gets(people[i].mz);
here:
printf("%s", "输入身份证号码:");//个人简历身份证号码(不能一样)
gets(people[i].id);
{
int flag = 0;//假设不同
for (j = 0; j <= i - 1; j++)
{
if (strcmp(people[i].id, people[j].id) == 0)
{
flag = 1;//身份证号码一样
printf("你所输入的身份证号码已经存在,请你重新输入:\n");
goto here;
}
}
}
printf("%s", "输入出生年月日【xxxx-xx-xx】:");//个人出生日
scanf_s("%d-%d-%d",&people[i].birthday.year,&people[i].birthday.month,&people[i].birthday.day);
printf("%s", "输入电话号码:");//个人简历电话号码
scanf_s("%lf", &people[i].dh);
getchar();
printf("%s", "输入年龄:");//个人简历年龄
scanf_s("%lf", &people[i].nl);
getchar();
printf("%s", "输入学校:");//个人简历学校
gets(people[i].xx);
printf("%s", "输入专业:");//个人简历专业
gets(people[i].zy);
printf("%s", "个人教育经历:");//个人教育经历
printf("\n");
printf("时间1:");
gets(people[i].grjysj);//时间
printf("地点(单位)1:");
gets(people[i].grjydw);//单位
printf("证明人1:");
gets(people[i].grjyzm);//证明人}
printf("时间2:");
gets(people[i].grjysj1);//时间
printf("地点(单位)2:");
gets(people[i].grjydw1);//单位
printf("证明人2:");
gets(people[i].grjyzm1);//证明人}
printf("时间3:");
gets(people[i].grjysj2);//时间
printf("地点(单位)3:");
gets(people[i].grjydw2);//单位
printf("证明人3:");
gets(people[i].grjyzm2);//证明人}
printf("\n");
printf("%s", "个人工作经验:");//个人工作经验
gets(people[i].gzjy);
printf("%s", "输入自我认识:");//个人简历自我认识
gets(people[i].zwrs);
int select1;
printf("\t\t\t************是否继续录入简历信息*************\n");
printf("\t\t\t*********************************************\n");
printf("\t\t\t** 1 确定 2 放弃 **\n");
printf("\t\t\t*********************************************\n");
printf("\t\t\t输入你的选择【1 or 2】:");
scanf_s("%d", &select1);
while (select1 < 1 || select1>2)
{
printf("\t\t\t输入错误,请重新输入你的选择【1 or 2】:");
scanf_s("%d", &select1);
}
if (select1 == 2)
{
autosave();
break;
}
}
}
system("pause");
menu();
}
信息显示(输出)
展示的信息是我们通过录入功能保存的,在代码的实现过程中如果使用的变量和定义的不匹配可能会出现类似:系统默认给“0”、乱七八糟的陌生符号等。如果不是用语的问题,我们也可以在此基础上设置比较条件,如果条件存在就能正常输出,如果条件不存在就禁止输出。
void jianli_output()
{
int i, k;
system("cls");
printf("\t\t\t*********************************************\n");
printf("\t\t\t* 欢迎来到个人简历信息显示功能界面 *\n");
printf("\t\t\t*********************************************\n");
printf("\n\n\n");
for (i = 0; i < 5000; i++)
{
if (people[i].dh != 0)
{
printf("%-21s", "姓名:");//个人简历姓名
printf("%-21s", people[i].xm);
printf("%-21s", "性别:");//个人简历性别
printf("%-21s", people[i].xb);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "籍贯:");//个人简历籍贯
printf("%-21s", people[i].jg);
printf("\n");
printf("%-21s", "民族:");//个人简历民族
printf("%-21s", people[i].mz);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "身份证号码:");//个人简历身份证号码
printf("%-21s", people[i].id);
printf("\n");
printf("%-21s", "出生年月日:");//个人出生日期
printf("%4d-%2d-%2d ", people[i].birthday.year, people[i].birthday.month, people[i].birthday.day);
printf("\n");
printf("%-21s", "年龄:");//个人简历年龄
printf("%-21.0lf", people[i].nl);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "电话号码:");//个人简历电话号码
printf("%-21.0lf", people[i].dh);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "学校:");//个人简历学校
printf("%-21s", people[i].xx);
printf("\n");
printf("%-21s", "专业:");//个人简历专业
printf("%-21s", people[i].zy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "个人教育经历:");//个人教育经历
printf("\n");
printf("%-15s", "时间");
printf("%-20s", "地点(单位)");
printf("%-9s", "证明人");
printf("\n");
printf("%-15s", people[i].grjysj);
printf("%-20s", people[i].grjydw);
printf("%-9s", people[i].grjyzm);
printf("\n");
printf("%-15s", people[i].grjysj1);
printf("%-20s", people[i].grjydw1);
printf("%-9s", people[i].grjyzm1);
printf("\n");
printf("%-15s", people[i].grjysj2);
printf("%-20s", people[i].grjydw2);
printf("%-9s", people[i].grjyzm2);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "工作经验:");//个人工作经验
printf("%-500s", people[i].gzjy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "自我认识:");//个人简历自我认识
printf("%-500s", people[i].zwrs);
printf("\n\n\n");
printf("*************************************************************************");
printf("\n\n\n");
}
}
system("pause");
menu();
}
信息查询
查询功能中应用了显示功能,因为在查询功能中我们不只是去匹配所需要的信息,我们还需要把所查找到的信息进行展示,所以我们实现的查询功能要设置一个比较环节和设计一个展示环节。先确认信息是否存在,若不存在则进入循环(重新输入),若存在就进行下一步的信息展示,这样我们将会得到一个较为完整的查询功能。
void jianli_search()
{
int select2, flag, i;
struct worker search_people;//搜索用的结构体
system("cls");
printf("\t\t\t*********************************************\n");
printf("\t\t\t* 欢迎来到个人简历信息查询功能界面 *\n");
printf("\t\t\t* 1.按照姓名查询 *\n");
printf("\t\t\t* 2.按照身份证号码查询 *\n");
printf("\t\t\t* 3.退出功能 *\n");
printf("\t\t\t*********************************************\n");
printf("\n\n\n");
printf("\t\t\t输入你的选择【1-3】:");
scanf_s("%d", &select2);
while (select2 < 1 || select2 > 3)
{
printf("\t\t\t输入错误,请你重新输入你的选择【1-3】:");
scanf_s("%d", &select2);
}
switch (select2)
{
case 1:
getchar();
printf("\t\t\t请你输入所要查询的同学的姓名:");
gets(search_people.xm);
flag = 0;
for (i = 0; i < 5000; i++)
{
if (strcmp(search_people.xm, people[i].xm) == 0)
{
system("cls");
flag = 1;
printf("%-21s", "姓名:");//个人简历姓名
printf("%-21s", people[i].xm);
printf("%-21s", "性别:");//个人简历性别
printf("%-21s", people[i].xb);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "籍贯:");//个人简历籍贯
printf("%-21s", people[i].jg);
printf("\n");
printf("%-21s", "民族:");//个人简历民族
printf("%-21s", people[i].mz);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "身份证号码:");//个人简历身份证号码
printf("%-21s", people[i].id);
printf("\n");
printf("%-21s", "出生年月日:");//个人出生日期
printf("%4d-%2d-%2d", people[i].birthday.year, people[i].birthday.month, people[i].birthday.day);
printf("\n");
printf("%-21s", "年龄:");//个人简历年龄
printf("%-21.0lf", people[i].nl);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "电话号码:");//个人简历电话号码
printf("%-21.0lf", people[i].dh);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "学校:");//个人简历学校
printf("%-21s", people[i].xx);
printf("\n");
printf("%-21s", "专业:");//个人简历专业
printf("%-21s", people[i].zy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "个人教育经历:");//个人教育经历
printf("\n");
printf("%-15s", "时间");
printf("%-20s", "地点(单位)");
printf("%-9s", "证明人");
printf("\n");
printf("%-15s", people[i].grjysj);
printf("%-20s", people[i].grjydw);
printf("%-9s", people[i].grjyzm);
printf("\n");
printf("%-15s", people[i].grjysj1);
printf("%-20s", people[i].grjydw1);
printf("%-9s", people[i].grjyzm1);
printf("\n");
printf("%-15s", people[i].grjysj2);
printf("%-20s", people[i].grjydw2);
printf("%-9s", people[i].grjyzm2);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "工作经验:");//个人工作经验
printf("%-500s", people[i].gzjy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "自我认识:");//个人简历自我认识
printf("%-500s", people[i].zwrs);
printf("\n\n\n");
printf("*************************************************************************");
printf("\n\n\n");
}
}
if (flag == 0)
printf("\t\t\t未查到此人!\n");
system("pause");
jianli_search();
case 2:
getchar();
printf("\t\t\t请你输入所要查询的身份证号码:");
gets(search_people.id);
flag = 0;
for (i = 0; i < 5000; i++)
{
if (strcmp(search_people.id, people[i].id) == 0)//身份证号码进行比较,如果对应则进行
{
system("cls");
flag = 1;
printf("%-21s", "姓名:");//个人简历姓名
printf("%-21s", people[i].xm);
printf("%-21s", "性别:");//个人简历性别
printf("%-21s", people[i].xb);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "籍贯:");//个人简历籍贯
printf("%-21s", people[i].jg);
printf("\n");
printf("%-21s", "民族:");//个人简历民族
printf("%-21s", people[i].mz);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "身份证号码:");//个人简历身份证号码
printf("%-21s", people[i].id);
printf("\n");
printf("%-21s", "出生年月日:");//个人出生日期
printf("%4d-%2d-%2d", people[i].birthday.year, people[i].birthday.month, people[i].birthday.day);
printf("\n");
printf("%-21s", "年龄:");//个人简历年龄
printf("%-21.0lf", people[i].nl);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "电话号码:");//个人简历电话号码
printf("%-21.0lf", people[i].dh);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "学校:");//个人简历学校
printf("%-21s", people[i].xx);
printf("\n");
printf("%-21s", "专业:");//个人简历专业
printf("%-21s", people[i].zy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "个人教育经历:");//个人教育经历
printf("\n");
printf("%-15s", "时间");
printf("%-20s", "地点(单位)");
printf("%-9s", "证明人");
printf("\n");
printf("%-15s", people[i].grjysj);
printf("%-20s", people[i].grjydw);
printf("%-9s", people[i].grjyzm);
printf("\n");
printf("%-15s", people[i].grjysj1);
printf("%-20s", people[i].grjydw1);
printf("%-9s", people[i].grjyzm1);
printf("\n");
printf("%-15s", people[i].grjysj2);
printf("%-20s", people[i].grjydw2);
printf("%-9s", people[i].grjyzm2);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "工作经验:");//个人工作经验
printf("%-500s", people[i].gzjy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "自我认识:");//个人简历自我认识
printf("%-500s", people[i].zwrs);
printf("\n\n\n");
printf("*************************************************************************");
printf("\n\n\n");
}
}
if (flag == 0)
printf("\t\t\t未查到此人!\n");
system("pause");
jianli_search();
case 3: menu();
}
}
信息修改
信息的修改功能建立在前面两个功能的基础上,首先需要进行的也是查询相应的信息,然后再显示出查询到的信息(同上面的功能一样),接着判断是否需要进行修改操作,最后进行修改或者退出。设计的是部分修改功能,即需要修改哪一个信息就选择相对应的选项,再编辑新的信息。设置了一个临时结构体,用来储存编辑的新信息,这样就能够方便实现信息的覆盖和替换。
void jianli_modify()
{
struct worker modify_people;
int i, j, flag, k, p, select;
system("cls");
printf("\t\t\t*********************************************\n");
printf("\t\t\t* 欢迎来到个人简历信息修改功能界面 *\n");
printf("\t\t\t*********************************************\n");
printf("\n");
printf("\t\t\t1.按照身份证号码输入");
printf("\n");
printf("\t\t\t2.放弃输入");
printf("\n\n\n");
printf("\t\t\t输入你的选择【1-2】:");
scanf_s("%d", &select);
while (select < 1 || select>2)
{
printf("\t\t\t输入错误,请你重新输入你的选择【1-2】:");
scanf_s("%d", &select);
}
switch (select)
{
case 1:
{
printf("\n\n");
printf("请输入想查询的身份证号码:");
getchar();
gets(modify_people.id);
flag = 0;
for (i = 0; i < 5000; i++)
{
if (strcmp(modify_people.id, people[i].id) == 0)
{
system("cls");
flag = 1;
printf("%-21s", "姓名:");//个人简历姓名
printf("%-21s", people[i].xm);
printf("%-21s", "性别:");//个人简历性别
printf("%-21s", people[i].xb);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "籍贯:");//个人简历籍贯
printf("%-21s", people[i].jg);
printf("\n");
printf("%-21s", "民族:");//个人简历民族
printf("%-21s", people[i].mz);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "身份证号码:");//个人简历身份证号码
printf("%-21s", people[i].id);
printf("\n");
printf("%-21s", "出生年月日:");//个人出生日期
printf("%4d-%2d-%2d ", people[i].birthday.year, people[i].birthday.month, people[i].birthday.day);
printf("\n");
printf("%-21s", "年龄:");//个人简历年龄
printf("%-21.0lf", people[i].nl);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "电话号码:");//个人简历电话号码
printf("%-21.0lf", people[i].dh);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "学校:");//个人简历学校
printf("%-21s", people[i].xx);
printf("\n");
printf("%-21s", "专业:");//个人简历专业
printf("%-21s", people[i].zy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "个人教育经历:");//个人教育经历
printf("\n");
printf("%-15s", "时间");
printf("%-20s", "地点(单位)");
printf("%-9s", "证明人");
printf("\n");
printf("%-15s", people[i].grjysj);
printf("%-20s", people[i].grjydw);
printf("%-9s", people[i].grjyzm);
printf("\n");
printf("%-15s", people[i].grjysj1);
printf("%-20s", people[i].grjydw1);
printf("%-9s", people[i].grjyzm1);
printf("\n");
printf("%-15s", people[i].grjysj2);
printf("%-20s", people[i].grjydw2);
printf("%-9s", people[i].grjyzm2);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "工作经验:");//个人工作经验
printf("%-500s", people[i].gzjy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "自我认识:");//个人简历自我认识
printf("%-500s", people[i].zwrs);
printf("\n\n\n");
printf("*************************************************************************");
printf("\n\n\n");
system("pause");
{
struct worker temp = { 0 };
int select1, select2;
there5:
there:
system("cls");
printf("\t1 修改姓名 ");
printf("\t2 修改性别 ");
printf("\n");
printf("\t3 修改籍贯 ");
printf("\t4 修改民族 ");
printf("\n");
printf("\t5 修改身份证号码 ");
printf("\t6 修改出生日期 ");
printf("\n");
printf("\t7 修改电话号码 ");
printf("\t8 修改年龄 ");
printf("\n");
printf("\t9 修改学校 ");
printf("\t10 修改专业 ");
printf("\n");
printf("\t11 修改教育经历 ");
printf("\t12 修改个人工作经验");
printf("\n");
printf("\t13 修改自我认识 ");
printf("\t14 退出修改 ");
printf("\n\n");
printf("请输入您的选择:");
scanf_s("%d", &select1);
while (select1 < 1 || select1>14)
{
printf("\t\t\t 输入错误,请重新输入你的选择[1-14]:");
scanf_s("%d", &select1);
}
if (select1 == 1)
{
getchar();
printf("%s", "输入姓名:");//个人简历姓名
gets(temp.xm);
}
if (select1 == 2)
{
getchar();
printf("%s", "输入性别:");//个人简历性别
gets(temp.xb);
}
if (select1 == 3)
{
getchar();
printf("%s", "输入籍贯:");//个人简历籍贯
gets(temp.jg);
}
if (select1 == 4)
{
getchar();
printf("%s", "输入民族:");//个人简历民族
gets(temp.mz);
}
if (select1 == 5)
{
here:
getchar();
printf("%s", "输入身份证号码:");//个人简历身份证号码(不能一样)
gets(temp.id);
{
int flag = 0;//假设不同
for (j = 0; j <= i - 1; j++)
{
if (strcmp(temp.id, people[j].id) == 0)
{
flag = 1;//身份证号码一样
break;
}
}
if (flag == 1)
{
printf("你所输入的身份证号码已经存在,请你重新输入:\n");
goto here;
}
}
}
if (select1 == 6)
{
printf("%s", "输入出生年月日【xxxx-xx-xx】:");//个人出生日期
scanf_s("%d-%d-%d", &temp.birthday.year, &temp.birthday.month, &temp.birthday.day);
}
if (select1 == 7)
{
printf("%s", "输入电话号码:");//个人简历电话号码
scanf_s("%lf", &temp.dh);
}
if (select1 == 8)
{
getchar();
printf("%s", "输入年龄:");//个人简历年龄
scanf_s("%lf", &temp.nl);
}
if (select1 == 9)
{
getchar();
printf("%s", "输入学校:");//个人简历学校
gets(temp.xx);
}
if (select1 == 10)
{
getchar();
printf("%s", "输入专业:");//个人简历专业
gets(temp.zy);
}
if (select1 == 11)
{
printf("%s", "输入个人教育经历:");//个人教育经历
printf("\n");
getchar();
printf("时间1:");
gets(temp.grjysj);//时间
printf("地点(单位)1:");
gets(temp.grjydw);//单位
printf("证明人1:");
gets(temp.grjyzm);//证明人}
printf("时间2:");
gets(temp.grjysj1);//时间
printf("地点(单位)2:");
gets(temp.grjydw1);//单位
printf("证明人2:");
gets(temp.grjyzm1);//证明人}
printf("时间3:");
gets(temp.grjysj2);//时间
printf("地点(单位)3:");
gets(temp.grjydw2);//单位
printf("证明人3:");
gets(temp.grjyzm2);//证明人}
printf("\n");
}
if (select1 == 12)
{
getchar();
printf("%s", "个人工作经验:");//个人工作经验
gets(temp.gzjy);
}
if (select1 == 13)
{
getchar();
printf("%s", "输入自我认识:");//个人简历自我认识
gets(temp.zwrs);
}
printf("\t\t\t****************是否执行修改*****************\n");
printf("\t\t\t*********************************************\n");
printf("\t\t\t** 1 确定 2 放弃 **\n");
printf("\t\t\t*********************************************\n");
printf("\t\t\t输入你的选择【1 or 2】:");
scanf("%d", &select2);
while (select2 < 1 || select2>2)
{
printf("\t\t\t输入错误,请重新输入你的选择【1 or 2】:");
scanf_s("%d", &select2);
}
if (select2 == 1)
{
if (select1 == 1)
{
strcpy(people[i].xm, temp.xm);//姓名
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 2)
{
strcpy(people[i].xb, temp.xb);//性别
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 3)
{
strcpy(people[i].jg, temp.jg);//籍贯
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 4)
{
strcpy(people[i].mz, temp.mz);//民族
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 5)
{
strcpy(people[i].id, temp.id);//身份证号码
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 6)
{
people[i].birthday.year = temp.birthday.year;//出生年月日
people[i].birthday.month = temp.birthday.month;
people[i].birthday.day = temp.birthday.day;
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 7)
{
people[i].dh = temp.dh;//电话
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 8)
{
people[i].nl = temp.nl;//年龄
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 9)
{
strcpy(people[i].xx, temp.xx);//学校
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 10)
{
strcpy(people[i].zy, temp.zy);//专业
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 11)
{
strcpy(people[i].grjysj, temp.grjysj);
strcpy(people[i].grjydw, temp.grjydw);
strcpy(people[i].grjyzm, temp.grjyzm);
printf("\n");
strcpy(people[i].grjysj1, temp.grjysj1);
strcpy(people[i].grjydw1, temp.grjydw1);
strcpy(people[i].grjyzm1, temp.grjyzm1);
printf("\n");
strcpy(people[i].grjysj2, temp.grjysj2);
strcpy(people[i].grjydw2, temp.grjydw2);
strcpy(people[i].grjyzm2, temp.grjyzm2);//教育经历
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 12)
{
strcpy(people[i].gzjy, temp.gzjy);//工作经验
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
if (select1 == 13)
{
strcpy(people[i].zwrs, temp.zwrs);//自我认识
printf("\n\n\n");
printf("\t\t\t数据已经修改成功!\n");
system("pause");
}
printf("\t\t\t");
autosave();
system("pause");
if (select1 == 14)
{
jianli_modify();
}
goto there5;
}
if (select2 == 2)
{
printf("\n\n\n");
printf("\t\t\t数据未修改!\n");
system("pause");
goto there;
}
}
}
else
continue;
}
if (flag == 0)
{
printf("\n\n\n");
printf("\t\t\t查无此信息!\n");
system("pause");
jianli_modify();
}
}
case 2:
menu();
break;
}
}
信息删除
信息的删除功能同样建立在之前的几个功能的基础上。在进行删除功能的时候,我们也需要先查询到相关信息,然后再自行判断是不是所需要删除的信息(是则删除,否则退出),最后再用空白结构体(默认为0)覆盖。
void jinali_delete()
{
int i, select1, select2, flag;
struct worker search_people;
system("cls");
printf("\t\t\t*********************************************\n");
printf("\t\t\t* 欢迎来到个人简历信息删除功能界面 *\n");
printf("\t\t\t* 1.按照身份证号码删除 *\n");
printf("\t\t\t* 2.退出功能 *\n");
printf("\t\t\t*********************************************\n");
printf("\n\n\n");
printf("\t\t\t输入你的选择【1-2】:");
scanf_s("%d", &select1);
while (select1 < 1 || select1>2)
{
printf("\t\t\t输入错误,请你重新输入你的选择【1-2】:");
scanf_s("%d", &select1);
}
switch (select1)
{
case 1:
getchar();
printf("\t\t\t请你输入所要查询的身份证号码:");
gets(search_people.id);
flag = 0;
for (i = 0; i < 5000; i++)
{
if (strcmp(search_people.id, people[i].id) == 0)
{
system("cls");
flag = 1;
printf("%-21s", "姓名:");//个人简历姓名
printf("%-21s", people[i].xm);
printf("%-21s", "性别:");//个人简历性别
printf("%-21s", people[i].xb);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "籍贯:");//个人简历籍贯
printf("%-21s", people[i].jg);
printf("\n");
printf("%-21s", "民族:");//个人简历民族
printf("%-21s", people[i].mz);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "身份证号码:");//个人简历身份证号码
printf("%-21s", people[i].id);
printf("\n");
printf("%-21s", "出生年月日:");//个人出生日期
printf("%4d-%2d-%2d", people[i].birthday.year, people[i].birthday.month, people[i].birthday.day);
printf("\n");
printf("%-21s", "年龄:");//个人简历年龄
printf("%-21.0lf", people[i].nl);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "电话号码:");//个人简历电话号码
printf("%-21.0lf", people[i].dh);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "学校:");//个人简历学校
printf("%-21s", people[i].xx);
printf("\n");
printf("%-21s", "专业:");//个人简历专业
printf("%-21s", people[i].zy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "个人教育经历:");//个人教育经历
printf("\n");
printf("%-15s", "时间");
printf("%-20s", "地点(单位)");
printf("%-9s", "证明人");
printf("\n");
printf("%-15s", people[i].grjysj);
printf("%-20s", people[i].grjydw);
printf("%-9s", people[i].grjyzm);
printf("\n");
printf("%-15s", people[i].grjysj1);
printf("%-20s", people[i].grjydw1);
printf("%-9s", people[i].grjyzm1);
printf("\n");
printf("%-15s", people[i].grjysj2);
printf("%-20s", people[i].grjydw2);
printf("%-9s", people[i].grjyzm2);
printf("\n");
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "工作经验:");//个人工作经验
printf("%-500s", people[i].gzjy);
printf("\n");
printf("-------------------------------------------------------------------------");
printf("\n");
printf("%-21s", "自我认识:");//个人简历自我认识
printf("%-500s", people[i].zwrs);
printf("\n\n\n");
printf("*************************************************************************");
printf("\n");
system("pause");
system("cls");
printf("\n\n\n");
printf("\t\t\t*********************************************\n");
printf("\t\t\t| [1] 确定删除 |\n");
printf("\t\t\t| [2] 放弃删除 |\n");
printf("\t\t\t*********************************************\n");
printf("\t\t\t输入你的选择【1-2】:");
scanf_s("%d", &select2);
while (select2 < 1 || select1>2)
{
printf("\t\t\t输入错误,请你重新输入你的选择【1-2】:");
scanf_s("%d", &select2);
}
if (select2 == 1)
{
int j;
people[i] = space_data;
printf("\n\n\n");
printf("\t\t\t数据删除中");
for (j = 1; j <= 6; j++)
{
printf(".");
Sleep(200);
}
printf("\n\n\n");
printf("\t\t\t数据删除成功!\n");
}
else
{
printf("\n\n\n");
printf("\t\t\t你已经放弃删除,数据依然存在!\n");
}
break;//退出循环,因为学号是唯一的!
}
}
//3 如果上述查询过程中没有相同的,则判断再输出 查无此人!
if (flag == 0)
printf("\t\t\t不好意思,查无此人!\n");
system("pause");
autosave();
jinali_delete();//继续调用删除函数
break;
case 2:menu(); break;
}
}
保存和读取
信息的保存和读取,重要的是需要有一个文本来进行数据的统计和分析。我们应该创建一个空白文本(在代码同文件里面添加txt文本),在读取和保存中我们都需要先打开文本再写入或者提取信息,最后我们再关闭文本。
保存
void autosave()//自动保存功能
{
FILE* fp;
system("cls");
int i;
fp = fopen("个人简历数据.txt", "w");
if (fp == NULL)
{
printf("\t\t\t\t\t文件打开失败!");
exit(0);//程序退出
}
fwrite(people, sizeof(struct worker), 5000, fp);
printf("\n\n\n");
printf("\t\t\t\t\t数据保存中");
for (i = 1; i <= 6; i++)
{
printf(".");
Sleep(200);
}
printf("\n\n\n");
printf("\t\t\t\t\t数据保存成功!\n");
fclose(fp);
printf("\n\n\n");//输出3个换行
printf("\t\t\t");//输出24个空格
}
读取
void autoload()//自动读取功能
{
FILE* fp;
system("cls");
int i;
fp = fopen("个人简历数据.txt", "r");
if (fp == NULL)
{
printf("\t\t\t\t\t文件打开失败!");
exit(0);//程序退出
}
fread(people, sizeof(struct worker), 5000, fp);
fclose(fp);
printf("\n\n\n");
printf("\t\t\t\t\t数据读取中");
for (i = 1; i <= 6; i++)
{
printf(".");
Sleep(200);
}
printf("\n\n\n");
printf("\t\t\t\t\t数据读取成功!\n");
fclose(fp);
printf("\n\n\n");//输出3个换行
printf("\t\t\t");//输出24个空格
system("pause");//输出暂停效果
}
源文件
源文件里面应该注意声明的顺序(越基础的越靠前,通过前面扩展出来的功能声明在后面)
#define _CRT_SECURE_NO_WARNINGS 防止由于文件使用strcpy、scanf等不安全的函数导致报警告和错误从而造成编译无法通过。
#define _CRT_SECURE_NO_WARNINGS
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"math.h"
#include"windows.h"
void menu();
void Menu();
#include"个人简历.h"
#include"读取.h"
#include"保存.h"
#include"信息录入.h"
#include"信息显示.h"
#include"信息查询.h"
#include"信息修改.h"
#include"信息删除.h"
#include"子菜单.h"
#include"主菜单.h"
#include"大菜单.h"
#include"临时菜单.h"
int main() {
autoload();
Menu();
return 0;
}
程序总结
程序到这里算是圆满完成,共有五个主要功能的实现。在这个程序设计过程中,我们需要考虑的是怎么让功能完整运行下来并且协调整个程序以达到预期的效果。在编写程序的过程中,我们应该留意所编写的格式和类型并且让代码能够前后呼应。