用c语言编写以下程序:输入十个职员的姓名和工号,并按工号大小进行排序,姓名顺序也随之排序

图片说明

//输入10个员工的工号和姓名,并将其以工号大小排序,姓名随之排序
#include<stdio.h>
#include<string.h>
#define N 3                //为了方便起见输入三个信息来测试代码 
struct WORKERS             //存放职员的信息 
{
    int num;                  //工号 
    char name[20];       //姓名   
}worker[N]; 
void input_();            //输入员工信息 
void sort();               //排序 
int main()
{
    input_();
    sort();
    return 0;
}
void input_()
{
    int i;
    printf("工号   姓名"); 
    for(i=0;i<N;i++)
    {
        scanf("%d %s",&worker[i].num,&worker[i].name);
    }
}
void sort()
{
    int i,j;
    int *ntemp;              //储存工号的中间变量 
    char *stemp;             //储存姓名的中间变量 
    for(i=0;i<N;i++)        //冒泡法排序 
    {
        for(j=0;j<N-i;j++)
        {
            if(worker[j].num>worker[j+1].num)
            {
                ntemp=worker[j+1].num;
                worker[j+1].num=worker[j].num;
                worker[j].num=ntemp;
                strcpy(stemp,worker[j+1].name);
                strcpy(worker[j+1].name,worker[j].name);
                strcpy(worker[j].name,stemp);
            }
        }
    }
    for(i=0;i<N;i++)
    {
        printf("%d %s\n",worker[i].num,worker[i].name);
    }
}
```这个程序中需要使用结构体,指针等内容,并使用两个函数实现,我的代码中出现了[Error] invalid conversion from 'int' to 'int*' [-fpermissive]这个错误
在测试时出现第三项无法正确输出的错误,如图片所示




已经解决了,以下是正确代码
//输入10个员工的工号和姓名,并将其以工号大小排序,姓名随之排序
#include<stdio.h>
#include<string.h>
#define N 3                //为了方便起见输入三个信息来测试代码 
struct WORKERS             //存放职员的信息
{
    int num;               //工号
    char name[20];         //姓名
} worker[N];
void input_();             //输入员工信息
void sort();               //排序
int main()
{
    input_();
    sort();
    return 0;
}
void input_()
{
    int i;
    printf("工号   姓名\n");
    for (i = 0; i < N; i++)
    {
        scanf("%d %s", &worker[i].num, &worker[i].name);
    }
}
void sort()
{
    int i, j;
    int ntemp;              //储存工号的中间变量
    char *stemp=&worker;             //储存姓名的中间变量
    printf("排序后员工信息列表\n");
    for (i = 0; i < N - 1; i++) //冒泡法排序
    {
        for (j = 0; j < N - i - 1; j++)
        {
            if (worker[j].num > worker[j + 1].num)
            {
                ntemp = worker[j + 1].num;
                worker[j + 1].num = worker[j].num;
                worker[j].num = ntemp;
                strcpy(stemp, worker[j + 1].name);
                strcpy(worker[j + 1].name, worker[j].name);
                strcpy(worker[j].name, stemp);
            }
        }
    }
    for (i = 0; i < N; i++)
    {
        printf("%d %s\n", worker[i].num, worker[i].name);
    }
}

1个回答

https://blog.csdn.net/jingzhewangzi/article/details/38931787?locationNum=5&fps=1

之前的回答尚未采纳,这次就不详细回答你了,参考上面的。

https://ask.csdn.net/questions/968747

weixin_45821714
weixin_45821714 已经解决了
2 个月之前 回复
weixin_45821714
weixin_45821714 回复: 你给的链接之前有写过,但是加入结构体之后我不知道该怎么处理。我更新了问题,麻烦您解答下谢谢
2 个月之前 回复
weixin_45821714
weixin_45821714 抱歉,因为之前那个我改出来了就没再去看,已经采纳了
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
有抽象类和类的关系如图,按要求完成程序:
有抽象类和类的关系如图,按要求完成程序: (1)根据关系图完成抽象类People和子类Student的定义。抽象类People中有抽象方法print;在子类中新增工号number,在构造方法中调用父类构造方法,并为新属性赋值;实现print方法用于按格式输出信息。 (2)定义Test类,在main方法中用户通过键盘输入数据,根据输入数据创建Student类的对象(自己的姓名,学号,年龄),调用print方法输出学生信息。
C语言 2道关于结构体的题 谢谢!悬赏放一起了
1.Description: 某企业有为员工祝贺生日的传统,但随着企业规模的扩大,员工人数的增多,该企业希望运用信息化技术,保存本企业所有员工的生日信息,查找指定日期过生日的员工,试编写一个程序,输入员工总数,员工的姓名、工号、出生日期以及待查询日期,根据员工的出生月、日,查找过生日的员工。若没找到,输出“Not Found”。 要求: 1、设该企业最多有员工100人,员工的信息包括姓名、工号、出生日期(年、月、日),要求使用结构体嵌套方式定义数据结构。 2、要求使用typedef对结构体进行重命名 3、要求划分合理函数完成。查找函数原型为: void Input(Employee *p,int n); //n为员工总数,p为指向结构体数组的指针。 输出格式: printf("%d月%d日过生日的有:\n",...... ); printf(" 姓名 工号 生日(年 月 日)\n"); printf("%8s%10d%14d%4d%4d\n",.......); 输入可以参考这样的代码。 scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s %d %d %d %d",info[i].name,&info[i].no,&info[i].birthday.y,&info[i].birthday.m,&info[i].birthday.d); } Sample Input: 4 zhang 1001 1987 5 7 wang 1002 1998 5 7 sun 1003 1990 4 5 wanghi 1004 2000 10 10 5 7 Sample Output: 5月7日过生日的有: 姓名 工号 生日(年 月 日) zhang 1001 1987 5 7 wang 1002 1998 5 7 Sample Input: 4 zhang 1001 1987 5 7 wang 1002 1998 5 7 sun 1003 1990 4 5 wanghi 1004 2000 10 10 5 8 Sample Output: Not Found 2.Description: 建立一结构体,其中包括学生的姓名、性别、年龄和一门课程的成绩。建立的结构体数组通过输入存放全班(最多45人)学生信息,输入班级人数,以及每个学生的姓名,性别,年龄,成绩(以回车分隔),输出考分最高的学生的姓名、年龄、性别和课程的成绩。 提示:请使用getchar()读出多余的回车,不要使用fflush函数。fflush并不是C标准支持的函数,在一些编译器上不起作用。 输出格式: printf("\nName\t\tSex\tAge\tScore\n"); printf("%s\t\t%c\t%d\t%5.1f\n",......); Sample Input: 3 zhang san m 18 89.9 li si m 17 90.8 wang wu f 18 99 Sample Output: Name Sex Age Score wang wu f 18 99.0
分析以下需求,并用代码实现
分析以下需求,并用代码实现 要求:完成代码(按照标准格式写),然后在测试类中测试。 1.项目经理类 属性:姓名 工号 工资 奖金 行为:工作work 2.程序员类 属性:姓名 工号 工资 行为:工作work 3.测试类 分别创建经理类对象和程序员对象,利用对象调用各自的方法
求教,用delphi 调用 c++ 编写的一卡能读卡函数,出现地址错误
用delphi,调用一卡通的读卡函数,总是出错,请大家帮我看看吧 C++定义: 原型:ReadUid_cst(int& szCardType ,unsigned char* szData) 输入参数:无 输出参数:szCardType:卡类型,1:13.56,2:2.4 szData:UID 返回值:成功返回1, typedef struct _USERDATA_MM1 { char szName[14]; //姓名 unsigned char nSex; //性别 unsigned char nCertType; //证件类型 char szCertCode[20]; //证件号 unsigned char bzMobile[6]; //手机号码 unsigned int nCardSn; //卡序号 char szUserID[10]; //工号 unsigned char nCardType; //卡类型 unsigned char nDayCountLimit; //日限次数 unsigned int nDayMoneyLimit; //日限金额 char szDept[12]; //部门 unsigned char bzUserPsw[3]; //用户密钥 unsigned char bzStartDate[4]; //开始时间 unsigned char bzExpiryDate[4]; //有效期限 unsigned short wLssj; //流水号 unsigned int nBalance; //预充余额(分),读取信息时为卡余额 }USERDATA_MM1, *LPUSERDATA_MM1; **delphi xe3 的程序代码:** Type PUCard = ^Ucard; Ucard = packed record szName : array[0..13] of Byte; //姓名 nSex : Byte; //性别 nCertType : Byte; //证件类型 szCertCode : array[0..19] of Byte; //证件号 bzMobile : array[0..5] of byte; //手机号码 nCardSn : Word; //卡序号 szUserID : array[0..9] of Byte; //工号 nCardType : Byte; //卡类别 nDayCountLimit : Byte; //日限次数 nDayMoneyLimit : Word; //日限金额 szDept : array[0..11] of Byte; //部门 bzUserPsw : array[0..2] of byte; //用户密钥 bzStartDate : array[0..3] of byte; //开始时间 bzExpriyDate : array[0..3] of byte; //有效期限 wLssj : Word; //流水号 nbalance : Word; //预充余额(分),读取信息时为卡余额 end; function ReadUid_cst(var szCardType:Word; szData:PUCard):Int16;stdcall; //cdecl external 'cstcard.dll' name 'ReadUid_cst'; procedure TForm1.btn1Click(Sender: TObject); var szCardType : Word; szData : Ucard; psz : PUCard; tmp : string; rcode : Int16; begin psz:= @szdata; rcode := ReadUid_cst(szCardType,psz); Self.Caption := IntToStr(rcode); //tmp := PAnsiChar(@szdata.szCertCode); //Self.lbl1.Caption := tmp; end;
这个程序还有一些不足,请帮我改善改善,另外还有个小问题,可否帮忙更改一下?
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct worker { char ID[20];//工号 char name[20];//姓名 char Wage_card_number[20];//工资卡号 char month[12];//月份 char wage[10];//应发工资 char fees[100];//水费 char bill[100];//电费 }work[1000]; int n ; //文件读写模块 void read()//读入数据 { FILE *fp; int i = 0; if( (fp = fopen("d:\\date.txt","r")) == NULL ) { printf("请在D盘根目录下新建一个文本文件,文件名为date\n\n\n"); system("pause"); system("cls"); return ; } fscanf(fp,"%d\n",&n); while(i < n) { fscanf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].Wage_card_number,work[i].month,work[i].wage,work[i].fees,work[i].bill); i ++; } fclose(fp); } void write()//写入数据 { FILE *fp; int i = 0; if( (fp = fopen("d:\\date.txt","w")) == NULL ) { printf("无法打开文件!\n"); return ; } fprintf(fp,"%d\n",n); while(i < n) { fprintf(fp,"%s\n%s\n%s%s\n\n%s\n%s\n%s\n%s\n",work[i].ID,work[i].name,work[i].Wage_card_number,work[i].month,work[i].wage,work[i].fees,work[i].bill); i ++; } fclose(fp); } //输入模块 void input()// 从键盘输入 { int i; int flag;//标记工号是否已存在 char c;//指令Y?N read();//输入数据前先将文件中原有的数据读入 do { flag = 0; printf("\t\t请输入职工的工号: \n\t\t"); scanf("%s",work[n].ID); for(i = 0 ; i < n ; i ++) { if(strcmp(work[i].ID,work[n].ID) == 0) { flag = 1; break; } } if(flag) { printf("该工号已存在!\n\n"); printf("\t\t是否继续输入?(Y/N): "); scanf("%*c%c",&c); if(c == 'N' || c == 'n') break; continue; } printf("\t\t请输入职工的姓名: \n\t\t"); scanf("%s",work[n].name); printf("\t\t请输入职工的月份: \n\t\t"); scanf("%s",work[n].month); printf("\t\t请输入职工的工资卡号: \n\t\t"); scanf("%s",work[n].Wage_card_number); printf("\t\t请输入职工的应发工资: \n\t\t"); scanf("%s",work[n].wage); printf("\t\t请输入职工的水费: \n\t\t"); scanf("%s",work[n].fees); printf("\t\t请输入职工的电费: \n\t\t"); scanf("%s",work[n].bill); printf("\t\t是否继续输入?(Y/N): "); scanf("%*c%c",&c); n ++; }while( c != 'N' && c != 'n'); write(); printf("\n\n数据已保存!\n\n"); } //显示模块 void output_inf(int id) { printf("\t\t 工号: %s\n",work[id].ID); printf("\t\t 姓名: %s\n",work[id].name); printf("\t\t 工资卡号: %s\n",work[id].Wage_card_number); printf("\t\t 月份: %s\n",work[id].month); printf("\t\t 应发工资: %s\n",work[id].wage); printf("\t\t 水费: %s\n",work[id].fees); printf("\t\t 电费: %s\n",work[id].bill); printf("\n\n\n"); } void show()//显示所有职工信息 { int i; read(); if(n == 0) printf("无记录!\n\n"); else for(i = 0 ; i < n ; i ++) { output_inf(i); } } //查询模块 void que()//查询信息 { char num; int flag,i; char q_id[20] ;//查询工号 char q_name[20] ;//查询姓名 char c;//指令Y?N read();//打开程序后,要查询以前的数据,要先读入 while(1) { system("cls"); printf("\t\t******************查询********************\n"); printf("\t\t* *\n"); printf("\t\t* 1.按工号查询 *\n"); printf("\t\t* *\n"); printf("\t\t* 2.按姓名查询 *\n"); printf("\t\t* *\n"); printf("\t\t* 输入其他任意键退出本模块 *\n"); printf("\t\t******************************************\n"); printf("\t\t请输入指令(1-2):"); scanf("%*c%c",&num); if(num < '1' || num > '2') { printf("错误指令!\n\n"); system("pause"); continue; } system("cls"); flag = 0;//用来标记职工信息是否存在 if(num == '1')//按工号查询 { printf("\t\t请输入您要查询职工的工号:"); scanf("%s",q_id); for(i = 0 ; i < n ;i ++) { if( strcmp(work[i].ID,q_id) == 0) { output_inf(i); flag = 1;//标记 break; } } } else if(num == '2')//按姓名查询 { printf("\t\t请输入您要查询职工的姓名:"); scanf("%s",q_name); for(i = 0 ; i < n ;i ++) { if( strcmp(work[i].name,q_name) == 0) { output_inf(i); flag = 1;//标记 } } } if(!flag)//判断是否有该职工信息 { printf("\n\n无该职工信息!\n\n"); } printf("\n\n是否继续查询(Y/N):"); scanf("%*c%c",&c); if(c == 'N' || c == 'n') break; } } void del()//删除职工信息 { char delete_ID[20];//删除职工工号 int i,j; int flag;//标记是否有该职工信息 char c; read(); while(1) { system("cls"); flag = 0; printf("请输入需删除职工信息的工号:"); scanf("%s",delete_ID); for(i = 0 ; i < n ; i ++) { if( strcmp(work[i].ID,delete_ID) == 0) { n --; flag = 1; for(j = i ; j < n ; j ++) { work[j] =work[j + 1]; } break; } } if(!flag) printf("\n\n无此员工信息!\n\n"); else printf("\n\n删除成功!\n"); printf("\n\n是否继续删除(Y/N):"); scanf("%*c%c",&c); if(c == 'N' || c == 'n') break; } write(); } //菜单模块 void menu()//菜单 { printf("\t\t************职工信息管理系统菜单**********\n"); printf("\t\t* *\n"); printf("\t\t* 1.添加职工信息 *\n"); printf("\t\t* *\n"); printf("\t\t* 2.浏览职工信息 *\n"); printf("\t\t* *\n"); printf("\t\t* 3.查询职工信息 *\n"); printf("\t\t* *\n"); printf("\t\t* 4.删除职工信息 *\n"); printf("\t\t* *\n"); printf("\t\t* 0.退出 *\n"); printf("\t\t* *\n"); printf("\t\t******************************************\n"); printf("\t\t请输入指令(0-4): "); } int main() { int num; n = 0; system("color 0B"); while(1) { menu(); scanf("%d",&num); system("cls"); switch(num) { case 1: input(); break; case 2: show(); break; case 3: que(); break; case 4: del(); break; case 0: printf("谢谢使用!\n\n"); return 0; default :printf("\n--->无效的指令!\n\n\n"); } system("pause"); system("cls"); } } ![图片说明](https://img-ask.csdn.net/upload/201909/18/1568773424_791221.png) 这个电费显示不出来是怎么回事,请予以修改。
(大一新生刚学的c语言,卑微提问,我好像没有C币啥的哎),为什么编译没问题但是程序好像执行不了,就像没运行就直接结束了
#include<stdio.h> int main() { void paixu(int a[10],char b[10][10]); void chazhao(int n,int a[10],char b[10][10]);//函数声明 int i,j,n,a[10]; char b[10][10];//定义函数 printf("请输入职工姓名和职工号\n"); for(i=0;i<10;i++) { printf("姓名:"); scanf("%s\n",b[i][10]); printf("NO:"); scanf("%d",&a[i]); } printf("请输入你要查找的工号\n"); scanf("%d",&n); paixu(a,b);//将数组实参数传递给形参 chazhao(n,a,b); return 0; } void paixu(int a[10],char b[10][10])//调用函数 { int i,j,t; char T; for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1]) { t=a[i],a[i]=a[i+1],a[i+1]=t; T=b[i][10],b[i][10]=b[i+1][10],b[i+1][10]=T; } for(i=0;i<10;i++) { printf("NO:%d",a[i]); printf("姓名:%c\n",b[i][10]); } } void chazhao(int n,int a[], char b[10][10]) { int top, bot, mid, x, y; top = 0; bot =8; x = 0; y = 1; if ((n < a[0]) || (n > a[8])) x = -1; while ((y == 1) && (top <= bot)) { mid = (bot + top) / 2; if (n == a[mid]) { x = mid; printf("NO.%d,his name is %c\n", n, b[x]); y == -1; } else if (n < a[mid]) bot = mid - 1; else top = mid + 1; } if (y == 1 || x == -1) printf("%d not been found.\n", n); }
单位工资计算软件问题
某公司财务需要开发一个计算雇员工资的程序。 该公司有3类员工。 工人 工资为每小时工资额乘当月工作时数再加上工龄工资; 销售人员 工资为每小时工资额乘当月工作时数加上销售额提成再加上工龄 工资,其中,销售额提成等于该销售人员当月售出商品金额的1%; 管理人员 工资为基本工资再加上工龄工资。 请用面向对象方法分析、设计这个程序,并用C++语言写出完整的程序。 举例: 员工工号:键盘输入 员工类型:键盘输入 参加工作时间:键盘输入 工人工资: 每小时工资额:宏定义80元/小时 月工作时数:键盘输入 工龄工资:第一年50元/月(宏定义),以后每年以20%递增,比如1978年参加工作,1979年为50+50*0.2=60元 月总工资 = 每小时工资额*月工作时数+工龄工资 输出:工号、月工作时数、总工资 要求: 可以同时输入输出多位员工信息
单位工资计算软件问题怎么解决
某公司财务需要开发一个计算雇员工资的程序。 该公司有3类员工。 工人 工资为每小时工资额乘当月工作时数再加上工龄工资; 销售人员 工资为每小时工资额乘当月工作时数加上销售额提成再加上工龄 工资,其中,销售额提成等于该销售人员当月售出商品金额的1%; 管理人员 工资为基本工资再加上工龄工资。 请用面向对象方法分析、设计这个程序,并用C++语言写出完整的程序。 举例: 员工工号:键盘输入 员工类型:键盘输入 参加工作时间:键盘输入 工人工资: 每小时工资额:宏定义80元/小时 月工作时数:键盘输入 工龄工资:第一年50元/月(宏定义),以后每年以20%递增,比如1978年参加工作,1979年为50+50*0.2=60元 月总工资 = 每小时工资额*月工作时数+工龄工资 输出:工号、月工作时数、总工资 要求: 可以同时输入输出多位员工信息
针对筛选结果的二次筛选
表1:table1 字段:日期 时间 工号 姓名 如下: 日期 时间 工号 姓名 20160505 093022 0002 张三 20160505 093025 0003 张四 20160505 093027 0002 张三 20160505 093030 0004 张五 20160505 093035 0002 张三 20160505 093040 0004 张五 20160505 093045 0002 张三 表2:他table2 字段: 工号 姓名 岗位 技能 部门 如下 工号 姓名 岗位 技能 部门 0002 张三 外拓 营销 一部 0003 张四 内勤 售后 三部 0004 张五 外拓 营销 二部 第一步:把表2中的岗位、技能、部门插入到表1中 第二步:针对插入新数据的表1进行数据筛选 筛选要求:在时间093000-093045 时段内 去掉重复人员后 外勤人员几个? 内勤人员几个? 营销技能几个?售后技能几个? 一部几人?二部几人?
急求 销售人员年终奖发放系统 很急 ,麻烦了
设计题目 销售人员年终奖发放系统 (1)程序设计功能 1. 总人数不定,开始先输入员工的人数及工号进行初始化,数据使用文件存放; 2. 根据员工的工号及季度提示输入对应的销售额,存入数据文件。 3. 年终奖计算功能,根据以下要求编写出年终奖的计算系统,计算员工的应得奖金并保存在文件 中。 1)企业总销售额 员工年终奖提成比例(占其自己销售额的比例) 100 万及以下 10% 100 万到 150 万 11% 150 万到 200 万 12% 200 万到 250 万 13% 250 万到 300 万 14% 300 万以上 15% 2)年度销售业绩最高者,额外获得 1 万元 4. 统计功能,统计全年企业的销售额和个人销售额及员工的奖金,并评选出销售总额最高的员工 为销售之星及每季度销售最高的为季度之星。 5. 修改功能,输入要修改的员工号及季度修改该季度的销售额,并且对应的统计数据也随之改变。 6. 在开始画面加入简单的菜单便于选择功能。 7. 文件格式自己根据要求选用恰当的排列格式。 (2)具体要求 1.在程序中需要实现销售人员信息(姓名、工号等)和销售量(按季度)录入、奖金、查询、修改、 统计等功能的操作; 2.程序主菜单如下: "**************MENU*************", /*菜单的标题行*/ 1. 系统初始化 /*输入数据,从文件中读入*/ 2. 员工销售额输入 /*按季度输入员工的销售量*/ 3. 数据更改 /*要求按工号对员工的销售信息进行更改 4. 统计 /*实现季度之星和年销售之星的评选*/ 5. 年终奖发放 /*按照提成比例及最高销售额奖励计算员工的奖金*/ 6. 退出
如下代码功能7不能正常实现保存功能,想把 case后面只保留简单的函数调用语句,其他的语句放到被调函数里,把功能3,4,5换一下方法
#include"stdio.h" #include"string.h" #include"stdlib.h" #define MAX 30 // 最多30人 typedef struct date // 定义日期类型 { int year; int month; int day; }DATE; typedef struct person // 定义教师类型 { int ID; // 工号 char Name[10]; // 姓名 char Sex; // 性别 DATE birthday; // 出生日期 float salary; // 基本工资 } Teacher; void mima(Teacher num[]);//密码 void displayMenu();//菜单 int Read(Teacher num[],int n);//录入 void Print(Teacher num[],int n);//输出 float SearchByID(Teacher num[],int n,int xID);//按工号查询工资 void Sort(Teacher num[],int n);//工资排序 float avg(Teacher num[],int n,float *max,float *min);//统计工资的最大值、最小值、平均值 void count(Teacher num[],int n,int *nan,int *nu);//按性别统计教师人数 void Save(Teacher num[],int n);//保存 void tuichu();//退出 int main() { Teacher num[MAX]; mima(num); return 0; } void mima(Teacher num[])//密码 { int i,m,t,n,xID,man,women; i=0; float aver,max,min,teachersalary; char mima[10]={0}; printf("请输入密码:\n"); for(i=1;i<2;i++) { scanf("%s",mima); if(strcmp(mima,"*a123a*")==0) { printf("登陆成功!\n"); break; } else { printf("密码输入错误,请重新输入(你还有两次机会):\n"); } } if(i==2) { for(i=2;i<3;i++) { scanf("%s",mima); if(strcmp(mima,"*a123a*")==0) { printf("登陆成功!\n"); break; } else { printf("密码输入错误,请重新输入(你还有一次机会):\n"); scanf("%s",mima); } } } if(i==3) { if(strcmp(mima,"*a123a*")==0) { printf("登陆成功!\n"); } else printf("登陆失败,程序退出。\n"); } int choice, flag = 0; while (flag == 0) { putchar('\n'); displayMenu(); printf("please input a digital(1-9)\n"); scanf("%d", &choice); if (choice >= 1 && choice <= 8) switch (choice) { case 1:printf("录入的老师人数:"); scanf("%d",&n); t=Read(num,n); if(t==1) { t=Read(num,n); } else { printf("输入结束!\n"); } break; case 2:Print(num,n); break; case 3:printf("按工号查询工资!\n"); printf("请输入教师工号:"); scanf("%d",&xID); t=SearchByID(num,n,xID); if(t!=-1) { printf("%10d%8s%6c%6d/%02d/%02d%10.2f\n",num[t].ID , num[t].Name , num[t].Sex , num[t].birthday.year , num[t].birthday.month , num[t].birthday.day , num[t].salary); } else { printf("没有该教师!\n"); } break; case 4:Sort(num,n); break; case 5:aver=avg(num,n,&max,&min); printf("aver=%f\n",aver); printf("max=%f\n",max); printf("min=%f\n",min); break; case 6:count(num,n,&man,&women); printf("男老师有%d人\n",man); printf("女老师有%d人\n",women); break; case 7:Save(num,n); break; case 8:tuichu(); break; default:printf("选项输入错误!\n"); } } } void displayMenu()//菜单 { printf("***********************\n"); printf("教师基本信息管理系统\n"); printf("***********************\n"); printf("请选择:\n"); printf("1: 录入 \n"); printf("2:输出 \n"); printf("3:按工号查询工资 \n"); printf("4:工资排序 \n"); printf("5:统计工资的最大值、最小值、平均值\n"); printf("6:按性别统计教师人数 \n"); printf("7:保存 \n"); printf("8:退出 \n"); } int Read(Teacher num[],int n) // 录入模块:输入教师的基本信息 { int i; for(i=0; i<=n; i++) { printf("输入教师的基本信息:(ID 姓名 性别 (出生日期)年 月 日 基本工资:)"); scanf("%ld", &num[i].ID); if(num[i].ID==-1) { return 0; exit(0); } scanf("%s", num[i].Name);//姓名 scanf(" %c", &num[i].Sex); //性别,注意%c前有空格 scanf("%d", &num[i].birthday.year);//出生年 scanf("%d", &num[i].birthday.month);//月 scanf("%d", &num[i].birthday.day);//日 scanf("%f", &num[i].salary);//基本薪资 } return 1; } void Print(Teacher num[],int n) // 输出模块:输出实际的教师基本信息 { int i; printf("输出教师的基本信息:\n"); for(i=0; i<n; i++) { printf("%10ld%8s%3c %ld/%02d/%02d%10.2f\n",num[i].ID , num[i].Name , num[i].Sex , num[i].birthday.year , num[i].birthday.month , num[i].birthday.day , num[i].salary); } } float SearchByID(Teacher num[],int n,int xID) // 按工号查询工资模块:查询与指定值xID相同的教师工资 { int i; for(i=0; i<n; i++) { if(num[i].ID ==xID) { return i; } } return -1; } void Sort(Teacher *p,int n) // 工资排序:按工资升序序排列 { int i,j; Teacher t; for(i=0; i < n - 1; i++){ for(j=0; j < n - i - 1; j++) { if(p[j].salary>p[j+1].salary) { t=p[j]; p[j]=p[j+1]; p[j+1]=t; } } } for(i=0; i<n; i++) { printf("%10d%8s%6c%6d/%02d/%02d%10.2f\n",p[i].ID ,p[i].Name ,p[i].Sex ,p[i].birthday.year ,p[i].birthday.month ,p[i].birthday.day ,p[i].salary); } } float avg(Teacher num[],int n,float *max,float *min) // 统计工资的最大值、最小值、平均值模块: { int i; float aver,sum=0; for(i=0;i<n;i++) { *max=num[0].salary; *min=num[0].salary; if(num[i].salary>*max) { *max=num[i].salary; } if(num[i].salary<*min) { *min=num[i].salary; } sum+=num[i].salary; } aver=sum/n; return aver; } void count(Teacher num[],int n,int *man,int *women) // 按性别统计教师人数模块:分别统计 { int i; for(i=0;i<n;i++) { if(num[i].Sex=='M') (*man)++; else (*women)++; } } void Save(Teacher num[],int n) // 保存模块:将教师信息写到数据文件中 { FILE *fp; int i,j; if((fp=fopen("teacherjibenxinxi.txt","a")) == NULL) //以添加方式打开文本文件 { printf("Failure to open teacher.txt!\n"); exit(0); } fprintf(fp,"教师工号 教师姓名 教师性别 出生日期 教师工资\n"); for(i=0; i<n; i++) { fprintf(fp,"%10d%8s%6c%6d/%02d/%02d%10.2f\n",num[i].ID , num[i].Name , num[i].Sex , num[i].birthday.year , num[i].birthday.month , num[i].birthday.day , num[i].salary); } fclose(fp); if((fp=fopen("teacherjibenxinxi.txt","r")) == NULL) //以读方式打开文本文件 { printf("Failure to open teacher.txt!\n"); exit(0); } for(i=0; i<n; i++) { fprintf(fp,"%10d%8s%6c%6d/%02d/%02d%10.2f\n",num[i].ID , num[i].Name , num[i].Sex , num[i].birthday.year , num[i].birthday.month , num[i].birthday.day , num[i].salary); } fclose(fp); printf("保存成功!\n"); } void tuichu() { printf("已退出"); exit(0); }
按要求调不出来了,求修改
![图片说明](https://img-ask.csdn.net/upload/201912/29/1577613729_915163.png),排序板块改成升序 #include"stdio.h" #include"string.h" #include"stdlib.h" #define MAX 30 // 最多30人 void mima();//密码 void displayMenu();//菜单 int Read(Teacher num[],int n);//录入 void Print(Teacher num[],int n);//输出 float SearchByID(Teacher num[],int n,int xID);//按工号查询工资 void Sort(Teacher num[],int n);//工资排序 float avg(Teacher num[],int n,float *max,float *min);//统计工资的最大值、最小值、平均值 void count(Teacher num[],int n,int *nan,int *nu);//按性别统计教师人数 void Save(Teacher num[],int n);//保存 typedef struct date // 定义日期类型 { int year; int month; int day; }DATE; typedef struct person // 定义教师类型 { int ID; // 工号 char Name[10]; // 姓名 char studentSex; // 性别 DATE birthday; // 出生日期 float salary; // 基本工资 } Teacher; int main() { mima(); displayMenu(); Teacher num[MAX]; // main()内定义结构体数组 return 0; } void mima()//密码 { int m,t,n,xID,male,female; float aver,max,min,teachersalary; char mima[10]={0}; int i=0; printf("请输入密码:\n"); for(i=1;i<2;i++) { scanf("%s",mima); if(strcmp(mima,"*a123a*")==0) { printf("登陆成功!\n"); break; } else { printf("密码输入错误,请重新输入(你还有两次机会):\n"); } } if(i==2) { for(i=2;i<3;i++) { scanf("%s",mima); if(strcmp(mima,"*a123a*")==0) { printf("登陆成功!\n"); break; } else { printf("密码输入错误,请重新输入(你还有一次机会):\n"); scanf("%s",mima); } } } if(i==3) { if(strcmp(mima,"*a123a*")==0) { printf("登陆成功!\n"); } else printf("登陆失败,程序退出。\n"); } int choice, flag = 0; while (flag == 0) { putchar('\n'); displaymain(); printf("please input a digital(1-9)\n"); scanf("%d", &choice); if (choice >= 1 && choice <= 8) switch (choice) { case 1:printf("录入的老师人数:"); scanf("%d",&n); t=Read(num,n); if(t==0) { printf("输入结束!\n"); } else { t=Read(num,n); } break; case 2:Print(num,n); break; case 3:printf("按工号查询工资!\n"); printf("Input the searching ID:"); scanf("%d",&xID); t=SearchByID(num,n,xID); if(t!=-1) { printf("%10d%8s%6c%6d/%02d/%02d%10.0f\n",num[t].ID , num[t].Name , num[t].Sex , num[t].birthday.year , num[t].birthday.month , num[t].birthday.day , num[t].salary); } else { printf("没有该教师!\n"); } break; case 4:Sort(num,n); break; case 5:aver=avg(num,n,&max,&min); printf("aver=%.2f\n",aver); printf("max=%.2f\n",max); printf("min=%.2f\n",min); break; case 6:count(num,n,&male,&female); break; case 7:Save(num,n); break; default:printf("选项输入错误!\n"); } } } void displayMenu()//菜单 { printf("***********************\n"); printf("教师基本信息管理系统\n"); printf("***********************\n"); printf("请选择:\n"); printf("1: 录入 \n"); printf("2:输出 \n"); printf("3:按工号查询工资 \n"); printf("4:工资排序 \n"); printf("5:统计工资的最大值、最小值、平均值\n"); printf("6:按性别统计教师人数 \n"); printf("7:保存 \n"); printf("8:退出 \n"); } int Read(Teacher num[],int n) // 录入模块:输入教师的基本信息 { int i; for(i=0; i<=n; i++) { printf("输入教师的基本信息:"); scanf("%ld", &num[i].ID); if(num[i].ID==-1) { return 0; break; } scanf("%s", num[i].Name); scanf(" %c", &num[i].Sex); //%c前有一个空格 scanf("%d", &num[i].birthday.year); scanf("%d", &num[i].birthday.month); scanf("%d", &num[i].birthday.day); scanf("%f", &num[i].salary); } return 1; } void Print(Teacher num[],int n) // 输出模块:输出实际的教师基本信息 { int i; printf("输出教师的基本信息:\n"); for(i=0; i<n; i++) { printf("%10d%8s%6c%6d/%02d/%02d%10.2f\n",num[i].ID , num[i].Name , num[i].Sex , num[i].birthday.year , num[i].birthday.month , num[i].birthday.day , num[i].salary); } } float SearchByID(Teacher num[],int n,int xID) // 按工号查询工资模块:查询与指定值xID相同的教师工资 { int i; for(i=0; i<n; i++) { if(num[i].ID ==xID) { return i; } } return -1; } void Sort(Teacher *p,int n) // 工资排序模块:按工资降序排列 { int i,j; Teacher temp; for(i=0; i<n-1; i++) { for(j=i+1; j<n; j++) { if(p[j].salary>p[i].salary) { temp=p[j]; p[j]=p[i]; p[i]=temp; } } } for(i=0; i<n; i++) { printf("%10d%8s%6c%6d/%02d/%02d%10.2f\n",p[i].ID ,p[i].Name ,p[i].Sex ,p[i].birthday.year ,p[i].birthday.month ,p[i].birthday.day ,p[i].salary); } } float avg(Teacher num[],int n,float *max,float *min) // 统计工资的最大值、最小值、平均值模块: { int i,sum=0; float t; for(i=0; i<n; i++) { *max=num[0].salary; *min=num[0].salary; if(*max<num[i].salary) { *max=num[i].salary; } if(*min>num[i].salary) { *min=num[i].salary; } sum=sum+num[i].salary; } t=(float)sum/n; return t; } void count(Teacher num[],int n,int *male,int *female) // 按性别统计教师人数模块:分别统计 { int a=0,b=0,i; for(i=0; i<n; i++) { if(num[i].Sex=='M') { a++; } else if(num[i].Sex=='F') { b++; } } printf("男老师有%d人\n",a); printf("女老师有%d人\n",b); } void Save(Teacher num[],int n) // 保存模块:将教师信息写到数据文件中 { FILE *fp; int i,j; if((fp=fopen("teacher.txt","a")) == NULL) //以添加方式打开文本文件 { printf("Failure to open teacher.txt!\n"); exit(0); } fprintf(fp,"教师工号 教师姓名 教师性别 出生日期 教师工资\n"); for(i=0; i<n; i++) { fprintf(fp,"%10d%8s%6c%6d/%02d/%02d%10.2f\n",num[i].ID , num[i].Name , num[i].Sex , num[i].birthday.year , num[i].birthday.month , num[i].birthday.day , num[i].salary); } fclose(fp); if((fp=fopen("teacher.txt","r")) == NULL) //以读方式打开文本文件 { printf("Failure to open teacher.txt!\n"); exit(0); } for(i=0; i<n; i++) { fprintf(fp,"%10d%8s%6c%6d/%02d/%02d%10.2f\n",num[i].ID , num[i].Name , num[i].Sex , num[i].birthday.year , num[i].birthday.month , num[i].birthday.day , num[i].salary); } fclose(fp); printf("保存成功!\n"); }
C++程序设计 请给出完整程序参考
1)建立一个教师类Teacher,其包含3个私有数据成员:num(工号)、name(姓名)、sex(性别),包含2个公有成员函数:带参构造函数(用于对三个数据成员进行初始化),display函数(输出数据成员)。 2)建立一个生日类BirthDate,其包含3个私有数据成员:year(年)、month(月)、day(日),包含3个公有成员函数:带参构造函数(用于对三个数据成员进行初始化),display函数(输出数据成员),change函数(修改生日数据,即将3个数据成员的值改为change函数参数指定的值)。 3)建立一个教授类Professor,它是Teacher类的公有派生类,在Teacher类的基础上增加了私有数据生日信息birthday(birthday是BirthDate类的对象),其新增成员函数包含:带参构造函数(对新增的和继承的数据成员初始化),display函数(输出所有数据成员),changebirth函数(将修改生日信息修改为函数参数指定日期)。 4)main函数中的操作步骤如下:  定义Professor类的对象prof1  输出对象prof1的所有数据信息  修改prof1的生日信息  输出对象prof1的所有数据信息
c++报错undefined reference to "析构函数" ,引号里的析构函数是一个基类的析构函数,是纯虚析构函数?
代码是c++ primer plus第六版P560页的程序清单14.10。 代码和书上的一样,编译器一直这样报错。![图片说明](https://img-ask.csdn.net/upload/201904/20/1555771672_997998.png) 自学的,实在不知道错误的原因是什么,没办法了,也不知道找谁问。 贼烦!!! ``` #ifndef WORKER_H_ #define WORKER_H_ #include <string> using std::string; class Worker{ private: string fullname; long id; protected: virtual void Data() const; virtual void Get(); public: Worker() : fullname("no one"), id(0L) {} Worker(const string & s, long n) : fullname(s), id(n) {} virtual ~Worker() = 0; virtual void Set() = 0; virtual void Show() const = 0; }; class Waiter : virtual public Worker { private: int panache; protected: virtual void Data() const; virtual void Get(); public: Waiter() : Worker(), panache(0) {} Waiter(const string & s, long n, int p = 0) : Worker(s, n), panache(p) {} Waiter(const Worker & wk, int p = 0) : Worker(wk), panache(p) {} void Set(); void Show() const; }; #endif ``` ``` #include <iostream> #include "worker.h" using namespace std; //Worker 方法 void Worker::Data() const { cout << "名字:" << fullname << endl; cout << "工号:" << id << endl; } void Worker::Get() { getline(cin,fullname); cout << "请输入工号:"; cin >> id; while (cin.get() != '\n') continue; } //Waiter 方法 void Waiter::Data() const { cout << "等级:" << panache << endl; } void Waiter::Get() { cout << "请输入等级:"; cin >> panache; while (cin.get() != '\n') continue; } void Waiter::Set() { cout << "请输入服务员的姓名:" << endl; Worker::Get(); Get(); } void Waiter::Show() const { Worker::Data(); Data(); } ```
SQL多台电脑根据登录不同工号调取不同信息
医院二级分诊的屏幕显示诊间医生工号对应的信息,现在有一个表中存储登录系统的医生工号和IP地址 、网卡地址登录时间等信息,根据这个IP地址对应的工号显示该医生所关联的信息,在外面的屏幕上显示。但是IP地址目前是写死的,要是多台电脑同时操作,另外一个医生登录系统,工号更换对应上个医生的信息就会改变,屏幕显示现在登录的医生的信息,有什么办法可以让登录后医生对应的屏幕显示固定与他工号对应的信息。 求大神帮帮忙
如何用python实现需要人输入自己工号才能启动打印机,并自动记录打印张数等信息的功能?
想实现对打印纸消耗的监控记录,但是采取打印者自己登记,就总有人不自觉,不能很好地执行。刚好最近开始在学python,就想着学习写个这样的程序,既能解决问题,也能实际练练手。只是不知道要实现以上功能都需要哪些知识,希望大神指出来,我好去学。
c++编译通过,调试却出现了错误,看了好多遍还是找不出错误~
小白这次的c++程序是要实现多重继承,虚函数等功能的一个学校人员管理系统。 系统要求由一个基类继承出学生类和老师类,再由学生类和老师类共同继承出在读教 师类和在职研究生类。学生类和老师类继承基类时,基类是虚基类。 小白先写了基类和教师类然后先试一番,生成解决方案没有出现错误,但是“执行(不调试)”之后,出现黑色的执行窗口,前面立马出现一个框框,上面写着”my6/*我滴文件名*/ .exe已经停止工作,由于出现问题,程序停止正常工作。windows将关闭程序,并会在有可用的解决方案时通知你“。![图片说明](https://img-ask.csdn.net/upload/201804/06/1523016866_15089.png) 小白上百度搜,度娘说,可能时堆栈溢出,或者内存使用不当等问题,可是小白不太懂这些,前前后后看了几遍代码,修来修去,还是不能,还有噢,vs我用了“开始调试”后出现了这样的情况![图片说明](https://img-ask.csdn.net/upload/201804/06/1523016889_182015.png) 求大佬大神们帮助!~~ 以下就是我哒程序~~ ``` #include<iostream> using namespace std; #include<string> #define N 20 int nt = 0; class person { protected: string name; char sex; int age; public: person(string n = '\0', char s = '\0', int a = 0) { name = n; sex = s; age = a; } virtual void set() = 0; virtual void input(int) = 0; virtual void display() = 0; virtual void add() = 0; virtual void search() = 0; virtual void find(string) = 0; virtual void find(int) = 0; virtual void find(string, int[]) = 0; virtual void find(int, int[]) = 0; virtual void choosehowmodify() = 0; virtual void modify(int[]) = 0; }; class teacher :virtual public person { private: string zhicheng; int gongzi; public: int gonghao; teacher(string n = "teacher", char s = '\0', int a = 0, int gh = 0, string z = '\0', int gz = 0) :person(n, s, a) { gonghao = gh; zhicheng = z; gongzi = gz; } void set(); void input(int); void display(); void add(); void search(); void find(string); void find(int); void find(string, int[]); void find(int, int[]); void choosehowmodify(); void modify(int[]); friend ostream & operator<<(ostream &output, const teacher &t); }tea[N]; void teacher::set() { cout << "创建教师人数:"; cin >> nt; if (nt <= N) { int i; for (i = 0; i < nt; i++) { tea[i].input(i); } } else cout << "超出容量!最多输入" << N << "人!" << endl << "请重新输入创建人数:"; } void teacher::input(int i) { cout << "请输入第" << i + 1 << "名教师的信息:" << endl; cout << "姓名:"; cin >> name; cout << "性别:"; cin >> sex; cout << "年龄:"; cin >> age; cout << "职称:"; cin >> zhicheng; cout << "工资:"; cin >> gongzi; cout << "工号:"; cin >> gonghao; } ostream & operator<<(ostream &output, const teacher &t) { output << "姓名:" << t.name << endl << "性别:" << t.age << endl << "年龄:" << t.sex << endl << "职称:" << t.zhicheng << endl << "工资:" << t.gongzi << endl << "工号:" << t.gonghao << endl; return output; } void teacher::display() { int i; cout << "显示教师信息:"; for (i = 0; i < nt; i++) { cout << tea[i]; } } void teacher::add() { cout << "添加教师人数:"; int temp; cin >> temp; if (nt + temp <= N) { int i; for (i = nt; i < nt + temp; i++) { tea[i].input(i); nt++; } } else cout << "超出容量!最多再输入" << N - nt << "人!" << endl << "请重新输入添加人数:"; } void teacher::search() { bool pan = true; while (pan) { pan = false; cout << "1.姓名:" << endl << "2.工号:" << endl; cout << "查询教师信息,请选择查询途径:"; int x; cin >> x; if (x == 1 || x == 2) { switch (x) { case 1: { cout << "输入姓名:"; string nam; cin >> nam; find(nam); break; } case 2: { cout << "输入工号:"; int gh; cin >> gh; find(gh); break; } } cout << "输入y继续查询,输入n则退回教师信息操作菜单,请选择:"; char y; cin >> y; if (y == 'y') pan = true; } else { cout << "输入的选择无效,请输入1或2!"; pan = true; } } } void teacher::find(string nam) { int i; for (i = 0; i < nt; i++) { if (nam == tea[i].name) { cout << tea[i]; } } } void teacher::find(int gh) { int i; for (i = 0; i < nt; i++) { if (gh == tea[i].gonghao) cout << tea[i]; } } void teacher::find(string nam, int list[]) { int i, j = 0; for (i = 0; i < nt; i++) { if (nam == tea[i].name) { list[j] = i; j++; } } } void teacher::find(int gh, int list[]) { int i, j = 0; for (i = 0; i < nt; i++) { if (gh == tea[i].gonghao) { list[j] = i; j++; } } } void teacher::choosehowmodify() { bool pan = true; while (pan) { pan = false; cout << "1.姓名:" << endl << "2.工号:" << endl; cout << "修改教师信息,请选择寻修改途径:"; int x; cin >> x; if (x == 1 || x == 2) { switch (x) { case 1: { cout << "输入姓名:"; string nam; cin >> nam; int list[N] = { 0 }; find(nam, list); modify(list); break; } case 2: { cout << "输入工号:"; int gh; cin >> gh; int list[N] = { 0 }; find(gh, list); modify(list); break; } } cout << "输入y继续修改,输入n则退回教师信息操作菜单,请选择:"; char y; cin >> y; if (y == 'y') pan = true; } else { cout << "输入的选择无效,请输入1或2!"; pan = true; } } } void teacher::modify(int list[]) { int i; for (i = 0; list[i] != 0; i++) { bool pan = true; while (pan) { pan = false; cout << tea[list[i]] << endl; cout << "1.姓名:" << endl << "2.性别:" << endl << "3.年龄:" << endl << "4.职称:" << endl << "5.工资:" << endl << "6.工号:" << endl; cout << "请输入欲修改的信息序号:"; int z; cin >> z; switch (z) { case 1: { cout << "请输入新姓名:"; cin >> tea[list[i]].name; break; } case 2: { cout << "请输入新性别:"; cin >> tea[list[i]].sex; break; } case 3: { cout << "请输入新年龄:"; cin >> tea[list[i]].age; break; } case 4: { cout << "请输入新职称:"; cin >> tea[list[i]].zhicheng; break; } case 5: { cout << "请输入新工资:"; cin >> tea[list[i]].gongzi; break; } case 6: {cout << "请输入新工号:"; cin >> tea[list[i]].gonghao; break; } } cout << "输入y继续修改该教师,输入n则进入下一步:"; char x; cin >> x; if (x == 'y') pan = true; } } } int main() { void choosefunction(person*); person *pt; bool pan = true; while (pan) { cout << "**类选择菜单**" << "1.教师" << endl << "2.学生" << endl << "3.在职研究生" << endl << "4.在读教师" << endl << endl << "请选择:"; char x; cin >> x; switch (x) { case 1:pt = tea; choosefunction(pt); break; case 2:cout << "敬请期待!"; break; } cout << "输入y则继续对“类选择菜单”进行操作,输入n则退出程序,请选择:"; char y; cin >> y; if (y == 'y') pan = true; else pan = false; } return 0; } void choosefunction(person *pt) { bool pan = true; while (pan) { cout << "a.创建" << endl << "b.显示" << endl << "c.添加" << endl << "d.查询" << endl << "e.修改" << endl << "请选择:" << endl; char x; cin >> x; switch (x) { case 'a':pt->set(); break; case 'b':pt->display(); break; case 'c':pt->add(); break; case 'd':pt->search(); break; case 'e':pt->choosehowmodify(); break; } cout << "输入y则继续对该类进行操作,输入n则退回“类选择菜单”,请选择:"; char y; cin >> y; if (y == 'y') pan = true; else pan = false; } } ```
c++报错undefined reference to "析构函数",引号里的析构函数是基类的析构函数,声明为了纯虚函数?
这是c++ primer plus第六版中的程序清单14.10,P560页。 一模一样,就是这样报错,也没办法继续写下去了。 自学的,没办法了,不知道找谁问,贼难受!!! ``` //类声明 #ifndef WORKER_H_ #define WORKER_H_ #include <string> using std::string; class Worker{ private: string fullname; long id; protected: virtual void Data() const; virtual void Get(); public: Worker() : fullname("no one"), id(0L) {} Worker(const string & s, long n) : fullname(s), id(n) {} virtual ~Worker() = 0; virtual void Set() = 0; virtual void Show() const = 0; }; class Waiter : virtual public Worker { private: int panache; protected: virtual void Data() const; virtual void Get(); public: Waiter() : Worker(), panache(0) {} Waiter(const string & s, long n, int p = 0) : Worker(s, n), panache(p) {} Waiter(const Worker & wk, int p = 0) : Worker(wk), panache(p) {} void Set(); void Show() const; }; #endif ``` ``` //实现文件 #include <iostream> #include "worker.h" using namespace std; //Worker 方法 void Worker::Data() const { cout << "名字:" << fullname << endl; cout << "工号:" << id << endl; } void Worker::Get() { getline(cin,fullname); cout << "请输入工号:"; cin >> id; while (cin.get() != '\n') continue; } //Waiter 方法 void Waiter::Data() const { cout << "等级:" << panache << endl; } void Waiter::Get() { cout << "请输入等级:"; cin >> panache; while (cin.get() != '\n') continue; } void Waiter::Set() { cout << "请输入服务员的姓名:" << endl; Worker::Get(); Get(); } void Waiter::Show() const { Worker::Data(); Data(); } ```
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
相关热词 c#如何定义数组列表 c#倒序读取txt文件 java代码生成c# c# tcp发送数据 c#解决时间格式带星期 c#类似hashmap c#设置istbox的值 c#获取多线程返回值 c# 包含数字 枚举 c# timespan
立即提问

相似问题

3
门禁系统进和出都是单向的,查询出一天内每次进出的最早刷卡时间,求各位大神给个SQL语句
2
C++这个错误怎么解决 fatal error C1001: INTERNAL COMPILER ERROR ,
1
简易工作打卡系统的设计及实现
5
sql server 的语句统计外包人员出勤时间
0
myeclipse加载报表配置xml文件失败,项目无法正常运行,怎么解决?
1
c++报错undefined reference to "析构函数",引号里的析构函数是基类的析构函数,声明为了纯虚函数?
1
c++报错undefined reference to "析构函数" ,引号里的析构函数是一个基类的析构函数,是纯虚析构函数?
3
如何用一条SQL统计出部门,单位,部门下的人数,统计出的人数包括没有人的部门
1
获取钉钉签到数据,后台导出有数据,接口取却是空,但是对照了文档好几遍都没发现哪有问题。。
1
求问大佬用第 4,5题哪里出错了?
1
单位工资计算软件问题
0
单位工资计算软件问题怎么解决
2
制作一个考勤表格如何实现鼠标拖动选择多个单元格然后右键菜单实现批量考勤
0
怎么才能得到程式里面的的程序的返回值
1
mysql 取最新日期的值
1
这个程序还有一些不足,请帮我改善改善,另外还有个小问题,可否帮忙更改一下?
4
c++string和char[],我有一段代码,和测试数据,但是我发现使用string时这段代码出错了,我把string换成对应的char []后代码正常运行
2
(大一新生刚学的c语言,卑微提问,我好像没有C币啥的哎),为什么编译没问题但是程序好像执行不了,就像没运行就直接结束了
2
json数组key的转换,思路出来了,就差一点,求大佬帮忙看一下