c语言程序设计代码,用c语言编写的程序被称为
大家好,今天来为大家分享c语言程序设计代码的一些知识点,和用c语言编写的程序被称为的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
高分求C语言课程设计源代码(分不多了,全部给你们)
#include<string>
#include<iostream>
#include<time.h>
#include<vector>
using namespace std;
class Employee//定义雇员类
{
public:
Employee();//构造函数
virtual VEmployee();
virtual void Display()=0;
int GetAge();//获取年龄
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语言编写的程序被称为的介绍到此结束,希望对大家有所帮助。