首页技术c语言程序设计代码,用c语言编写的程序被称为

c语言程序设计代码,用c语言编写的程序被称为

编程之家2026-07-02869次浏览

大家好,今天来为大家分享c语言程序设计代码的一些知识点,和用c语言编写的程序被称为的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

c语言程序设计代码,用c语言编写的程序被称为

高分求C语言课程设计源代码(分不多了,全部给你们)

#include<string>

#include<iostream>

#include<time.h>

#include<vector>

using namespace std;

class Employee//定义雇员类

c语言程序设计代码,用c语言编写的程序被称为

{

public:

Employee();//构造函数

virtual VEmployee();

virtual void Display()=0;

int GetAge();//获取年龄

c语言程序设计代码,用c语言编写的程序被称为

string GetName();//获取姓名

protected:

int Id;//职工ID号

string Name;//职工姓名

char Sex[5];//性别

int Wage;//工资

string BirthDay;//出身年月

string WorkTime;//参加工作时间

int Age;//年龄

};

class Worker: public Employee//定义工人类

{

public:

Worker();

virtual VWorker();

void Display();

};

class Teacher: public Employee//定义教师类

{

public:

Teacher();

virtual VTeacher();

void Display();

string GetAcademy();

private:

string Academy;

};

Employee::Employee()

{

}

Employee::VEmployee()

{

}

int Employee::GetAge()

{

return Age;

}

string Employee::GetName()

{

return Name;

}

Teacher::Teacher()//添加教师信息

{

cout<<"请输入该教师的信息:"<<endl;

cout<<"职工编号:"<<endl;

cin>>Id;

cout<<"姓名:"<<endl;

cin>>Name;

cout<<"性别:"<<endl;

cin>>Sex;

cout<<"工资:"<<endl;

cin>>Wage;

cout<<"出生时间:(格式xxxx/xx/xx)"<<endl;

cin>>BirthDay;

cout<<"参加工作时间:(格式xxxx/xx/xx)"<<endl;

cin>>WorkTime;

cout<<"所属院系:"<<endl;

cin>>Academy;

//从生日里提取出生的年份

int Pos= BirthDay.find_first_of('/');

string BirthYear;

BirthYear.assign(BirthDay,0,Pos);

char chBirthYear[6];

strcpy(chBirthYear,BirthDay.c_str());

//获取当前系统的年份

char NowYear[5];

time_t tnow= time(0);

strftime(NowYear, 5,"%Y", localtime(&tnow));

Age= atoi(NowYear)-atoi(chBirthYear);//计算年龄

}

Teacher::VTeacher()

{

}

void Teacher::Display(){//display()同名函数,输出教师信息

cout<<"职工编号:"<<Id<<endl;

cout<<"姓名:"<<Name<<endl;

cout<<"性别:"<<Sex<<endl;

cout<<"工资:"<<Wage<<endl;

cout<<"出生时间:"<<BirthDay<<endl;

cout<<"参加工作时间:"<<WorkTime<<endl;

cout<<"年龄:"<<Age<<endl;

}

string Teacher::GetAcademy(){

return Academy;

}

Worker::Worker()//添加工人信息

{

cout<<"请输入该工人的信息:"<<endl;

cout<<"职工编号:"<<endl;

cin>>Id;

cout<<"姓名:"<<endl;

cin>>Name;

cout<<"性别:"<<endl;

cin>>Sex;

cout<<"工资:"<<endl;

cin>>Wage;

cout<<"出生时间:(格式xxxx/xx/xx)"<<endl;

cin>>BirthDay;

cout<<"参加工作时间:(格式xxxx/xx/xx)"<<endl;

cin>>WorkTime;

//从生日里提取出生的年份

int Pos= BirthDay.find_first_of('/');

string BirthYear;

BirthYear.assign(BirthDay,0,Pos);

char chBirthYear[6];

strcpy(chBirthYear,BirthDay.c_str());

//获取当前系统的年份

char NowYear[5];

time_t tnow= time(0);

strftime(NowYear, 5,"%Y", localtime(&tnow));

Age= atoi(NowYear)-atoi(chBirthYear);//计算年龄

}

Worker::VWorker()

{

}

void Worker::Display(){//display()同名函数,输出工人信息

cout<<"职工编号:"<<Id<<endl;

cout<<"姓名:"<<Name<<endl;

cout<<"性别:"<<Sex<<endl;

cout<<"工资:"<<Wage<<endl;

cout<<"出生时间:"<<BirthDay<<endl;

cout<<"参加工作时间:"<<WorkTime<<endl;

cout<<"年龄:"<<Age<<endl;

}

void AddTeacher(vector<Teacher>*TeaInfo)//新增老师对象

{

system("color 05A");//设置当前窗口的背景色和前景色

Teacher TeaTemp;

(*TeaInfo).push_back(TeaTemp);

}

void AddWoker(vector<Worker>*WorkerInfo)//新增工人对象

{

system("color 05A");

Worker Wokertmp;

(*WorkerInfo).push_back(Wokertmp);

}

void DisplayAll(vector<Teacher>*TeaInfo,vector<Worker>*WokerInfo){//显示全部职工记录

system("color 05A");

cout<<"所有教师的信息:"<<endl;

vector<Teacher>::iterator pTeaInfo;

for(pTeaInfo=(*TeaInfo).begin();(*TeaInfo).empty()!=1&&pTeaInfo!=(*TeaInfo).end();pTeaInfo++)//如果到达vector末尾,则退出

{

(*pTeaInfo).Display();

cout<<endl;

}

cout<<"所有工人的信息:"<<endl;

vector<Worker>::iterator pWorkerInfo;

for(pWorkerInfo=(*WokerInfo).begin();(*WokerInfo).empty()!=1&&pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++)//如果到达vector末尾,则退出

{

(*pWorkerInfo).Display();

cout<<endl;

}

cout<<"按Enter返回"<<endl;

getchar(); getchar();

}

void DisAvgTeacherAge(vector<Teacher>*TeaInfo){//查询老师平均年龄

system("color 05A");

int SumAge= 0;

vector<Teacher>::iterator pTeaInfo;

for(pTeaInfo=(*TeaInfo).begin();(*TeaInfo).empty()!=1&&pTeaInfo!=(*TeaInfo).end();pTeaInfo++)//遍历老师容器

{//如果到达vector末尾,则退出

SumAge+=(*pTeaInfo).GetAge();

cout<<endl;

}

if((*TeaInfo).size()!=0)

cout<<"教师的平均年龄为"<<SumAge/((*TeaInfo).size())<<endl;

else cout<<"没有记录"<<endl;

cout<<"按Enter返回"<<endl;

getchar(); getchar();

}

void DisAvgWorkerAge(vector<Worker>*WokerInfo){

system("color 05A");

int SumAge= 0;

vector<Worker>::iterator pWorkerInfo;

for(pWorkerInfo=(*WokerInfo).begin();(*WokerInfo).empty()!=1&&pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++)//如果到达vector末尾,则退出

{

SumAge+=(*pWorkerInfo).GetAge();

cout<<endl;

}

if((*WokerInfo).size()!=0)

cout<<"职工的平均年龄为"<<SumAge/((*WokerInfo).size())<<endl;

else cout<<"没有记录"<<endl;

cout<<"按Enter键返回"<<endl;

getchar(); getchar();

}

void DelTeacher(vector<Teacher>*TeaInfo){//用于删除老师信息

system("color 05A");

bool Hflag=false;

string SearchName;

vector<Teacher>::iterator pTeaInfo;

cout<<"请输入您要删除的老师的姓名:"<<endl;

cout<<"姓名:";

cin>>SearchName;

for(pTeaInfo=(*TeaInfo).begin();(*TeaInfo).empty()!= 1&&pTeaInfo!=(*TeaInfo).end();pTeaInfo++)//如果到达vector末尾,则退出

{

if(0==SearchName.compare((*pTeaInfo).GetName()))//如果找到要删除老师的姓名,则执行

{

Hflag=true;//找到老师

(*TeaInfo).erase(pTeaInfo);//删除vector中指定的老师

continue;

}

}

if(false==Hflag)//如果没有该老师,则执行

{

cout<<"没有该老师!"<<endl;

}

cout<<"按Enter返回"<<endl;

getchar(); getchar();

}

void DelWorker(vector<Worker>*WokerInfo)//用于删除工人信息

{

system("color 05A");

bool Hflag=false;

string SearchName;

vector<Worker>::iterator pWorkerInfo;

cout<<"请输入您要删除的工人的姓名:"<<endl;

cout<<"姓名:";

cin>>SearchName;

for(pWorkerInfo=(*WokerInfo).begin();(*WokerInfo).empty()!= 1&&pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++)//如果到达vector末尾,则退出

{

if(0==SearchName.compare((*pWorkerInfo).GetName()))//如果找到要删除工人的姓名,则执行

{

Hflag=true;//找到工人

(*WokerInfo).erase(pWorkerInfo);//删除vector中指定的工人

continue;

}

}

if(false==Hflag)//如果没有该工人,则执行

{

cout<<"没有该老师!"<<endl;

}

cout<<"按Enter返回"<<endl;

getchar();getchar();

}

void SearchByName(vector<Teacher>*TeaInfo,vector<Worker>*WokerInfo){//按名字查找职工信息

system("color 05A");

bool Hflag=false;

string SearchName;

vector<Teacher>::iterator pTeaInfo;

cout<<"请输入您要查找的职工的姓名:"<<endl;

cout<<"姓名:";

cin>>SearchName;

for(pTeaInfo=(*TeaInfo).begin();pTeaInfo!=(*TeaInfo).end();pTeaInfo++)

{

if(0==SearchName.compare((*pTeaInfo).GetName()))//如果找到输入的职工,则执行

{

Hflag=true;//找到职工

cout<<"这个人是老师,他的信息为:"<<endl;

(*pTeaInfo).Display();//显示职工信息

continue;

}

}

vector<Worker>::iterator pWorkerInfo;

for(pWorkerInfo=(*WokerInfo).begin();pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++)

{

if(0==SearchName.compare((*pWorkerInfo).GetName()))//如果找到输入的职工,则执行

{

Hflag=true;//找到职工

cout<<"这个人是老师,个人信息为:"<<endl;

(*pWorkerInfo).Display();//显示职工信息

continue;

}

}

if(false==Hflag)

{

cout<<"没有这个职工!"<<endl;//没有找到信息

}

cout<<"按Enter返回"<<endl;//返回

getchar(); getchar();

}

void DisTeacherByAcademy(vector<Teacher> TeaInfo){//按系输出教师信息

system("color 05A");

bool Hflag=false;

string SearchName;

vector<Teacher>::iterator pTeaInfo;

while((TeaInfo).empty()!=1){//输出所有指定系的老师

pTeaInfo=(TeaInfo).begin();

string Academy=(*pTeaInfo).GetAcademy();

cout<<"系:"<<Academy<<","<<"该系的老师有:"<<endl;

for(pTeaInfo=(TeaInfo).begin();(TeaInfo).empty()!=1&&pTeaInfo!=(TeaInfo).end();){

if(0==Academy.compare((*pTeaInfo).GetAcademy()))

{

(*pTeaInfo).Display();

cout<<endl;

(TeaInfo).erase(pTeaInfo);

pTeaInfo=(TeaInfo).begin();

}

else pTeaInfo++;

}

cout<<endl;

}

cout<<"按Enter返回"<<endl;

getchar(); getchar();

}

void WriteFile(vector<Teacher>*TeaInfo,vector<Worker>*WokerInfo)//生成新文件

{

FILE*fp;

if(NULL==(fp=fopen("Employee.txt","w+")))

{

cout<<"打开文件错误"<<endl;

exit(-1);

}

vector<Worker>::iterator pWorkerInfo;

vector<Teacher>::iterator pTeaInfo;

for(pTeaInfo=(*TeaInfo).begin();pTeaInfo!=(*TeaInfo).end();pTeaInfo++)//写入vector中所有老师的信息

{

fputs("教师信息:\n",fp);

fprintf(fp,"姓名:%s\n",(*pTeaInfo).GetName().c_str());

fprintf(fp,"年龄:%d\n",(*pTeaInfo).GetAge());

fputs("\n",fp);

}

fputs("教师信息结束\n",fp);

for(pWorkerInfo=(*WokerInfo).begin();pWorkerInfo!=(*WokerInfo).end();pWorkerInfo++)//写入vector中所有老师的信息

{

fputs("职工信息:\n",fp);

fprintf(fp,"姓名:%s\n",(*pWorkerInfo).GetName().c_str());

fprintf(fp,"年龄:%d\n",(*pWorkerInfo).GetAge());

fputs("\n",fp);

}

fputs("职工信息结束\n",fp);

fclose(fp);

}

void Mainmenu(){//菜单界面

system("color 05A");//设置当前窗口的背景色和前景色

cout<<"╭――――――――――《教职工管理系统》―――――――――╮"<<endl;

cout<<"∣请选择功能∣"<<endl;

cout<<"├――――――――――――――――――――――――――――┤"<<endl;

cout<<"∣ 1.新建并输入职工数据∣"<<endl;

cout<<"∣ 2.按条件输出职工数据∣"<<endl;

cout<<"∣ 3.删除职工数据∣"<<endl;

cout<<"∣ 0.退出∣"<<endl;

cout<<"╰――――――――――――――――――――――――――――╯"<<endl;

cout<<"――――――――――――――――――――――――――――――"<<endl;

cout<<"请选择您要服务的类别:";

}

void Insert(vector<Teacher>*TeaInfo,vector<Worker>*WorkerInfo)//增加职工数据菜单界面

{

system("color 05A");//设置当前窗口的背景色和前景色

int select=-1;

while(select!=0)

{

cout<<"╭――――――――――《增加职工数据》――――――――――╮"<<endl;

cout<<"∣请选择操作:∣"<<endl;

cout<<"├――――――――――――――――――――――――――――┤"<<endl;

cout<<"∣ 1增加一位教师记录∣"<<endl;

cout<<"∣ 2增加一位工人记录∣"<<endl;

cout<<"∣ 0返回主菜单∣"<<endl;

cout<<"╰――――――――――――――――――――――――――――╯"<<endl;

cin>>select;

switch(select){

case 1:AddTeacher(TeaInfo);break;

case 2:AddWoker(WorkerInfo);break;

case 3:Mainmenu();break;

default:

cout<<"回到主菜单!"<<endl;

}

}

}

void Search(vector<Teacher>*TeaInfo,vector<Worker>*WorkerInfo)//查询职工数据菜单界面

{

system("color 05A");//设置当前窗口的背景色和前景色

int select=-1;

while(select!=0)

{

cout<<"╭――――――――――《查询职工数据》――――――――――╮"<<endl;

cout<<"∣请选择操作:∣"<<endl;

cout<<"├――――――――――――――――――――――――――――┤"<<endl;

cout<<"∣ 1显示全部职工记录∣"<<endl;

cout<<"∣ 2按系输出教师信息∣"<<endl;

cout<<"∣ 3按姓名检索所有信息∣"<<endl;

cout<<"∣ 4计算教师平均年龄∣"<<endl;

cout<<"∣ 5计算工人平均年龄∣"<<endl;

cout<<"∣ 0返回主菜单∣"<<endl;

cout<<"╰――――――――――――――――――――――――――――╯"<<endl;

cin>>select;

switch(select){

case 1:DisplayAll(TeaInfo,WorkerInfo);break;

case 2:DisTeacherByAcademy(*TeaInfo);break;

case 3:SearchByName(TeaInfo,WorkerInfo);break;

case 4:DisAvgTeacherAge(TeaInfo);break;

case 5:DisAvgWorkerAge(WorkerInfo);break;

case 6:Mainmenu();break;

default:

cout<<"回到主菜单!"<<endl;

}

}

}

void Delete(vector<Teacher>*TeaInfo,vector<Worker>*WorkerInfo)//删除职工数据

{

system("color 05A");//设置当前窗口的背景色和前景色

int select=-1;

while(select!=0)

{

cout<<"╭――――――――――《删除职工数据》――――――――――╮"<<endl;

cout<<"∣请选择操作:∣"<<endl;

cout<<"├――――――――――――――――――――――――――――┤"<<endl;

cout<<"∣ 1删除一位教师记录∣"<<endl;

cout<<"∣ 2删除一位工人记录∣"<<endl;

cout<<"∣ 0返回主菜单∣"<<endl;

cout<<"╰――――――――――――――――――――――――――――╯"<<endl;

cin>>select;

switch(select){

case 1:DelTeacher(TeaInfo);break;

case 2:DelWorker(WorkerInfo);break;

case 3:Mainmenu();break;

default:

cout<<"回到主菜单!"<<endl;

}

}

}

void MainCho(vector<Teacher>*TeaInfo,vector<Worker>*WorkerInfo)

{//主菜单操作

int choice=-1;

while(choice!=0){

Mainmenu();

cin>>choice;

switch(choice){

case 1:Insert(TeaInfo,WorkerInfo);break;

case 2:Search(TeaInfo,WorkerInfo);break;

case 3:Delete(TeaInfo,WorkerInfo);break;

case 0:break;

default:

cout<<"操作错误!"<<endl;

}

}

}

void main()//主函数

{

vector<Teacher> TeaInfo;//

vector<Worker> WorkerInfo;//

vector<Teacher>::iterator pTeacher;//

vector<Worker>::iterator pWoker;//

pTeacher= TeaInfo.begin();//

pWoker= WorkerInfo.begin();//

MainCho(&TeaInfo,&WorkerInfo);//调用主要处理程序

WriteFile(&TeaInfo,&WorkerInfo);//存入文件操作

}

C语言编程小代码!一些C语言程序设计例题(二)

以下是针对用户提出的C语言程序设计例题的代码实现及简要说明:

1.字符串a下标值为偶数的元素由小到大排序,其他元素不变#include<stdio.h>#include<string.h>void sortEvenIndices(char*str){ int len= strlen(str); for(int i= 0; i< len; i+= 2){ for(int j= i+ 2; j< len; j+= 2){ if(str[i]> str[j]){ char temp= str[i]; str[i]= str[j]; str[j]= temp;}}}}int main(){ char a[]="abcdefgh"; printf("Original string:%sn", a); sortEvenIndices(a); printf("Sorted string:%sn", a); return 0;}说明:该程序通过双重循环对字符串中偶数下标的字符进行排序,保持奇数下标的字符不变。

2.十进制正整数转换为二进制#include<stdio.h>void decimalToBinary(int n){ if(n== 0){ printf("0"); return;} int binary[32]; int i= 0; while(n> 0){ binary[i++]= n% 2; n/= 2;} for(int j= i- 1; j>= 0; j--){ printf("%d", binary[j]);} printf("n");}int main(){ int num; printf("Enter a decimal number:"); scanf("%d",&num); printf("Binary representation:"); decimalToBinary(num); return 0;}说明:该程序通过不断除以2并取余数的方式将十进制数转换为二进制,然后逆序输出余数。

3.从低位开始取出整型变量n偶数位上的数依次放在整型变量s中#include<stdio.h>int extractEvenDigits(int n){ int s= 0; int position= 1; while(n> 0){ int digit= n% 10; if(digit% 2== 0){ s= s+ digit* position; position*= 10;} n/= 10;} return s;}int main(){ int n; printf("Enter an integer:"); scanf("%d",&n); int s= extractEvenDigits(n); printf("Result:%dn", s); return 0;}说明:该程序从低位开始检查每一位数字,如果是偶数则将其添加到结果变量s中,保持原有顺序。

4.输入并保存5名职工的信息,计算并输出平均工资,再按照工资从高到低的顺序输出#include<stdio.h>#include<string.h>typedef struct{ char id[10]; char name[9]; double salary;} Employee;void sortEmployees(Employee emp[], int n){ for(int i= 0; i< n- 1; i++){ for(int j= 0; j< n- i- 1; j++){ if(emp[j].salary< emp[j+ 1].salary){ Employee temp= emp[j]; emp[j]= emp[j+ 1]; emp[j+ 1]= temp;}}}}int main(){ Employee employees[5]; double total= 0; for(int i= 0; i< 5; i++){ printf("Enter details for employee%d:n", i+ 1); printf("ID:"); scanf("%s", employees[i].id); printf("Name:"); scanf("%s", employees[i].name); printf("Salary:"); scanf("%lf",&employees[i].salary); total+= employees[i].salary;} double average= total/ 5; printf("Average salary:%.1fn", average); sortEmployees(employees, 5); printf("Employees sorted by salary(descending):n"); for(int i= 0; i< 5; i++){ printf("ID:%s, Name:%s, Salary:%.1fn", employees[i].id, employees[i].name, employees[i].salary);} return 0;}说明:该程序使用结构体存储职工信息,计算平均工资后使用冒泡排序按工资降序排列职工信息。

5.求x的n次方(递归实现)#include<stdio.h>double power(double x, int n){ if(n== 0) return 1; if(n> 0) return x* power(x, n- 1); return 1/ power(x,-n);}int main(){ double x; int n; printf("Enter base and exponent:"); scanf("%lf%d",&x,&n); printf("Result:%.2fn", power(x, n)); return 0;}说明:该程序使用递归方式计算x的n次方,处理了正负指数的情况。

6.任意整数转换为千分位分隔的字符形式#include<stdio.h>#include<string.h>void formatWithCommas(int num){ char str[20]; sprintf(str,"%d", num); int len= strlen(str); int commaPos= len% 3; if(commaPos== 0&& len> 2) commaPos= 3; for(int i= 0; i< len; i++){ printf("%c", str[i]); if(--commaPos== 0&& i!= len- 1){ printf(","); commaPos= 3;}} printf("n");}int main(){ int number; printf("Enter an integer:"); scanf("%d",&number); printf("Formatted number:"); formatWithCommas(number); return 0;}说明:该程序将整数转换为字符串后,从右向左每三位插入一个逗号作为千分位分隔符。

以上代码均经过基本测试,可直接编译运行。如需进一步优化或有任何问题,请随时提出。

c语言程序大神帮忙设计一下

按照题目要求:

1、实现文件写入功能,一次写入一个职工信息。

2、实现查询功能(包含4种条件查询)。

3、实现信息删除和修改并写入文件。

根据题意,数据用结构数组存储,且职工编号唯一性,因此单独两个函数计算信息长度和编号。

除条件查询函数和读取文件的函数,不会自行free释放内存。如你写代码调用,注意自行写free语句释放。

下面是代码:

#include<stdio.h>

#include<malloc.h>

#include<string.h>

#include<windows.h>

#include<conio.h>

#define PATH"C:\\worker.data"

typedef struct worker//职员

{

int id;

char name[20];

int sex;//0:女。1:男

int byy;

int bmm;

int bdd;

}WR;

int write2File(char path[]);//写入文件,成功返回1,失败返回-1

int getLen(char path[]);//重新计算信息长度,成功返回1,失败返回-1

int getMaxId(char path[]);//获取最大的id,避免ID重复,成功返回1,失败返回-1

WR*readFormFile(char path[]);//读取文件内容到结构体数组,成功返回数组,失败返回NULL

void showWRS();//打印输出文件所有内容

WR*selectBy(WR*wrs,int n);//根据条件查询,查询成功返回查到的第一个节点(对于唯一的编号而言是精准查询),失败返回NULL。

//注意:该函数不会自动释放wrs内存,单独调用后需单独释放。单独调用n传0,在修改模块中调用n传1

int init();//初始化参数

int updateWr();//更新,成功返回1,失败返回-1

int showMenu();//菜单

int len=0;

int id=0;

int main()

{

init();

if(showMenu()==-1) return 1;

return 0;

}

int showMenu()

{

int n;

WR*wrs=NULL;;

while(1)

{

n=0;

printf("【职工档案管理系统】

1、输入一个职工信息

2、查询所有职工信息

3、条件查询职工信息

4、修改删除职工信息

");

while(n<1|| n>4) scanf("%d",&n);

switch(n)

{

case 1:if(write2File(PATH)==-1) return-1; break;

case 2:showWRS(); break;

case 3:

wrs=readFormFile(PATH);

selectBy(wrs,0);

free(wrs);

break;

case 4:if(updateWr()==-1) return-1;break;

}

fflush(stdin);

printf("按任意键继续。。。。。"),getch();

system("cls");

}

}

int init()

{

if(getLen(PATH)!=-1&& getMaxId(PATH)!=-1) return 1;

return-1;

}

int updateWr()

{

int i,del=-1;

WR*wr=NULL,*wrs=NULL;

FILE*fp=NULL;

wrs=readFormFile(PATH);

if(!wrs) return-1;

wr=selectBy(wrs,1);

printf("请输入操作(1、删除,2、修改):");

while(del!=2&& del!=1)scanf("%d",&del);

if(del==2)

{

printf("请输入修改后职工信息:

");

printf("请输入职工姓名:"),scanf("%s",wr->name);

printf("请选择职工性别(0:女。1:男):"),scanf("%d",&wr->sex);

printf("请输入职工生日(年月日用空格分隔):"),scanf("%d%d%d",&wr->byy,&wr->bmm,&wr->bdd);

}

if(remove(PATH)==-1) return-1;

if(!(fp=fopen(PATH,"w"))) return-1;

for(i=0;i<len;i++)

if(del==2||(del==1&& wr!=&wrs[i]))

fprintf(fp,"%d%s%d%d%d%d%s",wrs[i].id,wrs[i].name,wrs[i].sex,wrs[i].byy,wrs[i].bmm,wrs[i].bdd,"

");

printf("更新成功!

");

fclose(fp);

free(wrs);

return 1;

}

WR*selectBy(WR*wrs,int n)

{

int i;

WR swr,*sp=NULL;

if(!wrs) return NULL;

while(n<1|| n>4)printf("请输入筛选条件(1、编号,2、姓名,3、性别,4、出生日期):"),scanf("%d",&n);

switch(n)

{

case 1:printf("请输入要查找的编号:"),scanf("%d",&swr.id);break;

case 2:printf("请输入要查找的姓名:"),scanf("%s",swr.name);break;

case 3:printf("请输入要查找的性别(1、男,0、女):"),scanf("%d",&swr.sex);break;

case 4:printf("请输入职工出生日期(年月日用空格分隔):"),scanf("%d%d%d",&swr.byy,&swr.bmm,&swr.bdd);break;

}

printf("%8s%8s%8s%10s

","职工编号","职工姓名","职工性别","职工年龄");

for(i=0;i<len;i++)

if((n==1&& wrs[i].id==swr.id)||(n==2&& strcmp(wrs[i].name,swr.name)==0)||(n==3&& wrs[i].sex==swr.sex)||(n==4&& wrs[i].byy==swr.byy&& wrs[i].bmm==swr.bmm&& wrs[i].bdd==swr.bdd))

{

if(sp==NULL) sp=&wrs[i];

printf("%8d%8s%8s%04d-%02d-%02d

",wrs[i].id,wrs[i].name,wrs[i].sex?"男":"女",wrs[i].byy,wrs[i].bmm,wrs[i].bdd);

}

return sp;

}

void showWRS()

{

int i;

WR*wrs=NULL;

wrs=readFormFile(PATH);

if(wrs)

{

printf("%8s%8s%8s%10s

","职工编号","职工姓名","职工性别","职工年龄");

for(i=0;i<len;i++)

printf("%8d%8s%8s%04d-%02d-%02d

",wrs[i].id,wrs[i].name,wrs[i].sex?"男":"女",wrs[i].byy,wrs[i].bmm,wrs[i].bdd);

}

free(wrs);

}

int getLen(char path[])

{

FILE*fp=NULL;

WR wr;

if(!(fp=fopen(path,"r"))) return-1;

len=0;

while((fscanf(fp,"%d%s%d%d%d%d",&wr.id,wr.name,&wr.sex,&wr.byy,&wr.bmm,&wr.bdd))!=-1)

len++;

fclose(fp);

return 1;

}

int getMaxId(char path[])

{

FILE*fp=NULL;

WR wr;

if(!(fp=fopen(path,"r"))) return-1;

len=0;

while((fscanf(fp,"%d%s%d%d%d%d",&wr.id,wr.name,&wr.sex,&wr.byy,&wr.bmm,&wr.bdd))!=-1)

if(id<wr.id) id=wr.id;

fclose(fp);

return 1;

}

WR*readFormFile(char path[])

{

int i;

FILE*fp=NULL;

WR*wrs=NULL;

getLen(path);

if(!(fp=fopen(path,"r"))) return NULL;

if(len==0) return NULL;

wrs=(WR*)malloc(sizeof(WR)*len);

if(!wrs) return NULL;

i=0;

while((fscanf(fp,"%d%s%d%d%d%d",&wrs[i].id,wrs[i].name,&wrs[i].sex,&wrs[i].byy,&wrs[i].bmm,&wrs[i].bdd))!=-1)i++;

fclose(fp);

return wrs;

}

int write2File(char path[])

{

FILE*fp=NULL;

WR wr;

if(!(fp=fopen(path,"a"))) return-1;

wr.id=id++;

printf("-----------------------------

");

printf("请输入职工姓名:"),scanf("%s",wr.name);

printf("请选择职工性别(0:女。1:男):"),scanf("%d",&wr.sex);

printf("请输入职工生日(年月日用空格分隔):"),scanf("%d%d%d",&wr.byy,&wr.bmm,&wr.bdd);

printf("-----------------------------

");

fprintf(fp,"%d%s%d%d%d%d%s",wr.id,wr.name,wr.sex,wr.byy,wr.bmm,wr.bdd,"

");

fclose(fp);

len++;

return len;

}

关于c语言程序设计代码,用c语言编写的程序被称为的介绍到此结束,希望对大家有所帮助。

es6新特性?ES6新增特性sql学多久可以工作 自学SQL要多久