teacher.cpp

合集下载

继承与派生

继承与派生

实验四继承与派生实验名称:继承与派生学时安排:4实验类别:设计性实验实验要求:1人1组一、实验目的和任务1.理解继承的含义;2.学习从现有类派生出新类的方式;3.了解在派生类中如何使用基类的成员。

二、实验设备介绍软件需求: Visual C++ 6.0或VS2008硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU处理器,64MB 以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。

三、实验内容和步骤1.新建一个雇员类,它的数据成员有雇员代号,年龄,工资,性别,姓名,输入雇员资料方法,打印雇员资料方法。

2.以此雇员类为基类,从中派生出教师类,其中要求在教师类中加入一个计算教师工资的方法,教师工资=基本工资(1000)+课时(月工作量)×30。

3.以此雇员类为基类,从中派生出实验员类,其中要求在实验员类中加入一个计算实验员工资的方法,实验员工资=基本工资(800)+实验室补助(150)+值班课时(月工作量)×5。

4. 以此雇员类为基类,从中派生出行政人员类,其中要求在行政人员类中加入一个计算行政人员工资的方法,行政人员工资=基本工资(2000)+行政补贴(200)。

5.编写一个完整的程序,要求用户从键盘输入雇员的信息,然后在屏幕显示这些信息。

【任务分解】【程序示例】文件Employee.hclass Employee{protected://补充完成数据成员定义public:……void inputEmployee(); // 用户从键盘输入雇员姓名和受聘日期void showEmployee(); // 显示雇员姓名和受聘日期};文件Teacher.h#include "Employee.h"class Teacher:补充完成代码{private:// 补充完成数据成员定义:如基本工资、课时量。

C++第六次作业

C++第六次作业

一、【3.14】1、题目:以下程序的运行结果是(B.7,8)#include<iostream>using namespace std;class B{public:B(){}B(int i,int j){x=i;y=j;}void printb(){cout<<x<<","<<y<<endl;}private:int x,y;};class A{public:A(){}A(int I,int j);void printa();private:B c;};A::A(int i,int j):c(i,j){}void A::printa(){c.printb();}int main(){A a(7,8);a.printa();return 0;}2、运行结果:【3.15】1、题目:以下程序的运行结果是(A.24)#include<iostream>using namespace std;class A{public:void set(int i,int j){x=i;y=j;}int get_y(){return y;}private:int x,y;};class box{public:void set(int l,int w,int s,int p){length=l;width=w;label.set(s,p);}int get_area(){return length*width;}private:int length,width;A label;};int main(){box b;b.set(4,6,1,20);cout<<b.get_area()<<endl;return 0;}2、运行结果:【3.16】1、题目:以下程序的运行结果是( B.disp2)#include<iostream>using namespace std;class Sample{public:Sample(int i,int j){x=i;y=j;}void disp(){cout<<"displ"<<endl;}void disp() const{cout<<"disp2"<<endl;}private:int x,y;};int main(){const Sample a(1,2);a.disp();return 0;}2、运行结果。

C语言教务管理系统[2000行代码]

C语言教务管理系统[2000行代码]

C语言教务管理系统一、程序结构图二、程序运行截图1. 个人信息简介2.修改颜色3.注册界面4. 信息保存至文件5.登录界面6.管理员录入信息7. 学生信息录入8.学生成绩录入9.学生课程表录入10.学生信息查询界面11学生信息查询12.学生成绩查询13.学生课表查询三、代码(一个cpp)#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>#include <conio.h>#include"windows.h"#define student_num 1000 /*定义1000个学生*/#define teacher_num 5 /*定义5个老师(管理员)*/int is_my_student(struct student *p,int *size); /*声明返回第i+1个学生的函数*/ int is_my_teacher(struct teacher *p,int *size); /*声明返回第i+1个老师的函数*/ int length_student_name(char *p); /*声明验证用户名函数*/int length_student_password(char *p); /*声明验证密码长度函数*/int length_teacher_name(char *p); /*声明验证用户名函数*/int length_teacher_password(char *p); /*声明验证密码长度函数*/int show_menu_login(); /*声明登录菜单函数*/int show_menu_register(); /*声明注册菜单函数*/int show_teacher_select(); /*声明教师录入菜单函数*/int show_student_select(); /*声明学生查询菜单函数*/int student_register(struct student *ptr_student,int *size); /*声明学生注册函数*/int teacher_register(struct teacher *ptr_teacher,int *size); /*声明老师注册函数*/int vaild_student_name(char *p); /*声明验证用户名函数*/int vaild_student_password(char *p); /*声明验证密码函数*/int vaild_teacher_name(char *p); /*声明验证用户名函数*/int vaild_teacher_password(char *p); /*声明验证密码函数*/int vaild_two_password(char *p1,char *p2); /*声明验证两次密码是否相同函数*/ int yes_no_return(); /*声明选择是否返回上一层函数*/ void load(); /*声明加载函数*/void register_(int *count1,int *count2); /*声明注册函数*/void display_student(struct student stu); /*声明显示学生信息函数*/void display_teacher(struct teacher tea); /*声明显示老师信息函数*/void student_file1(); /*将保存的学生的账号密码存入文件中*/void student_file2(); /*将保存的学生的个人信息存入文件中*/void student_file3(); /*将保存的学生的成绩存入文件中*/ void teacher_file(); /*将保存的老师的账号密码存入文件中*/void input_information(int count); /*声明输入学生信息函数*/void input_score_menu(int count); /*声明输入学生成绩函数*/void color(); /*声明选择窗体颜色函数*/void print_stu_information(int count_stu); /*声明输出账号为num的学生的信息函数*/void print_stu_score(int count_stu); /*声明输出账号为num的学生的成绩函数*/void show_menu(); /*声明初始化界面函数*/void input(); /*声明输入函数*/void menu1(); /*声明教师录入课程表主菜单函数*/void menu2(); /*声明学生查询课程表主菜单函数*/void rank(); /*声明显示时间顺序函数*/void querymenu3(); /*声明查询函数*/void looktime(); /*声明按照时间查询函数*/void looklessonname(); /*声明按照课程名查询函数*/void add(); /*声明保存函数*/void amend(); /*声明修改课程函数*/void amend1(); /*声明修改课程子函数*/void amendnews(int i); /*声明修改整个课程信息函数*/void amendtime(int i); /*声明修改课程时间函数*/void amendlessonname(int i); /*声明修改课程课程名函数*/void amendclassroom(int i); /*声明修改课程教室函数*/void deleted(); /*声明删除函数*/void add_score(int count); /*声明添加学生成绩函数*/void xiugai_score(int count); /*声明修改学生成绩函数*/void shanchu_score(int count); /*声明删除学生成绩函数*/void chaxun_score(int count); /*声明按要求查询学生成绩函数*/void paixu_score(int count); /*声明学生成绩排序函数*/void tongji_score(int count); /*声明学生成绩统计函数*/float chinese(int count); /*声明计算语文成绩最大值函数*/int chr(int count); /*声明计算语文成绩及格人数的函数*/float english(int count); /*声明计算英语成绩最大值函数*/int ehr(int count); /*声明计算英语成绩及格人数的函数*/float math(int count); /*声明计算数学成绩最大值函数*/int mhr(int count); /*声明计算数学成绩及格人数的函数*/ float computer(int count); /*声明计算计算机成绩最大值函数*/int thr(int count); /*声明计算计算机成绩及格人数的函数*/ float PE(int count); /*声明计算体育成绩最大值函数*/int phr(int count); /*声明计算体育成绩及格人数的函数*/ float sum_score(int count); /*声明计算总分成绩最大值函数*/void load_student(int a); /*声明启动学生函数*/void load_teacher(int a); /*声明启动老师函数*/struct student /*学生结构体*/{/*个人信息*/int student_id; /*账号*/char student_name[20]; /*姓名*/char password[16]; /*密码*/int age; /*年龄*/char qq[12]; /*QQ号*/char tel[12]; /*电话*/int grade; /*年级*//*各科成绩*/float chinese; /*语文分数*/float english; /*英语分数*/float math; /*数学分数*/float computer; /*计算机分数*/float PE; /*体育分数*/float sum; /*总分*//*课程表*/char time[10]; /*时间*/char lessonname[20]; /*课程名*/char teacher[20]; /*授课老师*/char classroom[10]; /*教室*/char hours[10]; /*第几节课*/int weeks; /*周时*/};struct teacher /*老师结构体*/{int teacher_id; /*账号*/char teacher_name[20]; /*姓名*/char password[16]; /*密码*/};struct student our_student[student_num];struct teacher our_teacher[teacher_num];void main() /*主函数*/{system("color f0"); /*初始化背景颜色*/show_menu(); /*制作人信息简介*/load();}void load() /*启动函数*/{int flag=1; /*控制循环结束的变量*/int a=0,b=0; /*记录已注册的学生的人数 a为学生个数 b为老师个数*/int *count1=&a,*count2=&b; /*指向学生人数和老师人数的指针*/int correct_student,correct_teacher;color();register_(count1,count2); /*注册学生和老师的帐号*/student_file1();teacher_file();while(flag){switch(show_menu_login()) /*显示登录菜单*/{case 1: /*选择1,进入学生登录*/if(correct_student=is_my_student(our_student,count1)){printf("\n ◆学生登录成功!\n");display_student(our_student[correct_student-1]);printf("\n");printf(" ");system("pause");load_student(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,进入老师登录,即管理员登录*/ if(correct_teacher=is_my_teacher(our_teacher,count2)){printf("\n ◆管理员登录成功!\n");display_teacher(our_teacher[correct_teacher-1]);printf("\n");printf(" ");system("pause");load_teacher(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,退出登录*/system("cls");flag=0;break;default:printf("请正确输入1-3:");system("cls");}}}void load_student(int a) /*启动学生函数*/{int flag=1;system("cls");while(flag){switch(show_student_select()){case 1: /*选择1,学生信息查询*/system("cls");print_stu_information(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩查询*/system("cls");print_stu_score(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表查询*/menu2();printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出查询界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}void load_teacher(int a) /*启动老师函数*/{int flag=1;system("cls");while(flag){switch(show_teacher_select()){case 1: /*选择1,学生信息录入*/input_information(a);system("cls");student_file2();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩录入*/input_score_menu(a);system("cls");student_file3();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表录入*/menu1();printf(" 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出管理界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}int length_student_name(char *p) /*验证用户名是否合法*/{int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_student_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&& p[i]<='9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_student_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_student_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int vaild_two_password(char *p1,char *p2) /*验证两次密码是否相同*/{if(strcmp(p1,p2)==0)return 1;elsereturn 0;}int student_register(struct student *ptr_student,int *size) /*完成注册功能*/ {char password[16];char repassword[16];if(*size==student_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册学生姓名:");fflush(stdin);gets(ptr_student[*size].student_name);if(!(length_student_name(ptr_student[*size].student_name)&&vaild_student_na me(ptr_student[*size].student_name))){printf(" ◆您输入的姓名无效,学生姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_student[*size].password,password);if(!(length_student_password(ptr_student[*size].password)&&vaild_student_pa ssword(ptr_student[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号!!!",ptr_student[*size].student_id=20150000+*size);return 1;}int is_my_student(struct student *p,int *size) /*如果登录成功则返回第i+1个学生的信息,否则返回0*/{int i;int zhanghao;char mima[18];system("cls");printf("\n\n");printf(" ★请输入您的账号:");scanf("%d",&zhanghao);fflush(stdin);printf("\n");printf(" ★请输入您的密码:");gets(mima);for(i=0;i<*size;i++){if((zhanghao==p[i].student_id)&&(strcmp(mima,p[i].password)==0)) return i+1;}return 0;}void display_student(struct student stu) /*显示学生信息*/{printf("\n ★您的账号是:%d\n",stu.student_id);}int length_teacher_name(char *p) /*验证用户名是否合法*/{int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_teacher_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&& p[i]<='9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_teacher_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_teacher_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int teacher_register(struct teacher *ptr_teacher,int *size) /*完成注册功能*/ {char password[16];char repassword[16];if(*size==teacher_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册教师姓名:");fflush(stdin);gets(ptr_teacher[*size].teacher_name);if(!(length_teacher_name(ptr_teacher[*size].teacher_name)&&vaild_teacher_name(ptr_teacher[*size].teacher_name))){printf(" ◆您输入的姓名无效,教师姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");printf("\n");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_teacher[*size].password,password);if(!(length_teacher_password(ptr_teacher[*size].password)&&vaild_teacher_pa ssword(ptr_teacher[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号。

Visual C++ 6.0实验五类和对象、继承和派生

Visual C++ 6.0实验五类和对象、继承和派生

上海电力学院实验报告课程名称Visual C++ 实验项目类和对象、继承和派生姓名储昊学号20132234 班级2013112 专业通信工程同组人姓名指导教师姓名实验日期实验内容程序Ex_Class:定义一个人员类CPerson,包括的数据成员有姓名、编号、性别和用于输入/输出的成员函数。

在此基础上派生出学生类Cstudent(增加成绩)和教师类Cteacher(增加教龄),并实现对学生和教师信息的输入/输出。

编写一个完整的测试程序,并将Ex_Class 所有的类定义保存在Ex_Class.h中,将类的成员函数实现代码保存在Ex_Class.cpp中。

实验准备和说明(1)在学习完第2章的“继承和派生”内容之后进行本次试验。

(2)编写本次上机所需要的程序。

实验步骤1.创建工作文件夹打开计算机,在“D:\Visual C++程序\LiMing\5”文件夹中创建一个新的子文件夹“5”。

2.输入程序Ex_Class.h(1)启动Visual C++6.0。

(2)单击标准工具栏上的“New Test File”按钮,在新打开的文档窗口中输入下列程序代码:#include<iostream.h>#include<string.h>class CPerson{public:CPerson(){strcpy(pName,"");strcpy(pID,"");}CPerson(char*name,char*id,bool isman=1){Input(name,id,isman);}void Input(char*name,char*id,bool isman) {setName(name);setID(id);setSex(isman);}void Output(){cout<<"姓名:"<<pName<<endl;cout<<"编号:"<<pID<<endl;char*str=bMan?"男":"女";cout<<"性别:"<<str<<endl;}public://姓名属性操作char*getName()const{return(char*)pName;}void setName(char*name){int n=strlen(name);strncpy(pName,name,n);pName[n]='\0';}//编号属性操作char*getID()const{return(char*)pID;}void setID(char*id){int n=strlen(id);strncpy(pID,id,n);pID[n]='\0';}//性别属性操作bool getSex(){return bMan;}void setSex(bool isman){bMan=isman;}private:char pName[20];char pID[20];bool bMan;};class CStudent:public CPerson{public:CStudent(char*name,char*id,bool isman=1);~CStudent(){}void InputScore(double score1,double score2,double score3);void Print();CPerson student;private:double dbScore[3];};class CTeacher:public CPerson{public:CTeacher(char*name,char*id,bool isman=1,int years=10);~CTeacher(){}void Print();private:int nTeachYears;};(3)单击标准工具栏上的“Save”按钮,弹出“保存为”文件对话框。

C++面向对象程序设计》实验报告

C++面向对象程序设计》实验报告

《C++面向对象程序设计》实验内容实验1 C++程序设计初步1.实验目的(1)了解在C++编译系统(Visual C++6.0)上如何编辑、编译、连接和运行一个C++程序。

(2)通过运行简单的C++程序, 初步了解C++源程序的结构和特点。

(3)掌握简单C++程序的编写和调试方法。

(4)掌握重载函数的定义方法。

(5)能正确使用引用型变量。

2.实验内容和步骤(1)在Visual C++环境下编译和运行C++程序①先进入Visual C++6.0环境。

②在自己指定的子目录中建立一个名为test.cpp的新文件。

③从键盘输入以下程序int main(){int a,b;c=a+b;cout>> “a+b=”>>a+b;}选择Build→Compile test.cpp命令, 对此源程序进行编译。

观察和分析编译信息。

⑤根据编译信息指出的错误, 修改程序。

再进行编译, 如果还有错, 再重复此过程, 直到编译不出错为止。

⑥选择Build→Build test.exe命令, 对程序进行连接, 如果不出错, 就会生成可执行程序test.exe。

⑦选择Build→Execute test.exe命令, 执行可执行程序test.exe。

观察屏幕的变化。

在输出窗口应显示程序运行结果。

⑧分析结果是否正确, 如果不正确或认为输出格式不理想, 可以修改程序, 然后重新执行以上④和⑧步骤。

改过后的程序:#include<iostream>using namespace std;int add(int x,int y){int z;z=x+y;return(z);}int main(){int a,b,c;cin>>a>>b;c=add(a,b);cout<<"a+b="<<c<<endl;return 0;}实验2 C++对C的扩充(2)编一个程序, 用来求2个或3个正整数中的最大数。

VC++实验指导书

VC++实验指导书

Visual C++程序设计实验指导书实验1 认识Visual C++6.05中文版开发环境实验内容(1)熟悉VisualC++6。

05的开发环境。

(2)操作工具栏和项目工作区窗口。

(3)用应用程序向导创建一个控制台应用项目Ex_Hello。

(4)输入并执行一个新的C++程序Ex_Simple.实验准备和说明(1)建议在本教材第一次上课时进行本次实验。

(2)熟悉Windows 2000或XP操作系统的环境和基本操作。

(3)熟悉实验报告的书写格式,这里给出一下建议:实验报告采用A4纸,封面一般包括实验目次.实验题目,班级,姓名,日前和机构名称.报告内容一般包括实验目的和要求。

实验步骤,实验思考和总结。

需要指出的是,实验步骤不是书本内容的重复,而是自己结合实验内容进行探索的过程,教师也可根据具体情况提出新的实验报告格式和新的要求.(4)阅读以下关于VisualC++的说明:Visual C++是Microsoft公司推出的目前使用极为广泛的基于WINDOUWS平台的可视化编程环境。

是在以往的版本不断更新的基础上形成的,其功能强大,灵活性好,完全可以扩展以及具有强有力的Internet支持,在各种c++语言开发工具中脱颖而出,成为目前最为流行的C++语言集成开发环境。

Visual C++6。

0分为标准版,企业版和专业版3种,但其基本功能是相同。

Visual C++6。

5中文版是在Visual C++6。

0基础上进行汉化的以一个版本,本书以此版本作为编程环境。

为统一起见,我们仍称之为Visual C++6.0。

实验步骤1。

打开计算机,启动windouws2000操作系统2。

建工作文件夹3。

启动Visual C++6.04。

创建一个控制台应用项目5。

认识开发环境界面6。

认识工具栏7。

工具栏的显示和隐藏8.工具栏的浮动与停泊9。

项目工作区窗口10。

修改代码,编译运行11。

输入一个新的C++程序12。

修正语法错误13.退出Visual C++6。

c++ 导出函数 非导出函数

c++ 导出函数 非导出函数

c++ 导出函数非导出函数C++是一种面向对象编程语言,同时也可以用作系统级编程语言。

在C++中,函数分为导出函数和非导出函数两种。

导出函数是可以在不同的编译单元之间进行调用的函数。

也就是说,在不同的.cpp文件中定义的函数,需要在链接时将这些函数进行链接,然后才能进行正常调用。

在C++中,导出函数需要在函数定义之前加上关键字“__declspec(dllexport)”进行声明。

下面是一个例子:```c++__declspec(dllexport) void MyExportFunction(){// 函数代码}```在使用导出函数的程序中,需要在头文件中进行声明,然后在需要进行调用的地方进行引用。

下面是一个例子:```c++// Header.h__declspec(dllimport) void MyExportFunction();#include "Header.h"{MyExportFunction();return 0;}```与导出函数相反,非导出函数是无法在不同的编译单元之间进行调用的函数。

也就是说,在不同的.cpp文件中定义的非导出函数,只能在本文件中进行调用。

在C++中,非导出函数不需要进行特殊的定义或声明。

下面是一个例子:```c++// MyFunction.cppvoid MyNonExportFunction(){// 函数代码}void MyAnotherFunction(){// 调用MyNonExportFunction函数MyNonExportFunction();}{MyAnotherFunction();return 0;}```需要注意的是,在非导出函数中使用全局变量或静态变量时,这些变量的作用域仍然是全局的,即这些变量可以被本文件中的其他函数使用。

在C++中,导出函数和非导出函数分别用于在不同的编译单元中进行调用和限制函数的作用域。

《面向对象程序设计》实验指导书 (1-6个实验,含参考代码)要点

《面向对象程序设计》实验指导书 (1-6个实验,含参考代码)要点

面向对象程序设计实验指导书(适用:电子信息11级)彭召意陶立新编写计算机与通信学院2014.9目录实验一 C++基础的应用 (1)实验二类和对象的应用 (3)实验三类的构造函数、析构函数的应用 (4)实验四友员和运算符重载 (5)实验五类的继承与派生 (6)实验六类的多态性与虚函数 (7)附录:各实验的程序代码 (8)实验一 C++基础的应用(实验课时:2 实验性质:设计)实验名称: C++基础的应用实验目的: (1)进一步学习VC++6.0开发环境及程序调试方法。

(2)练习C++函数的定义及使用;(3)练习C++数组的定义及使用;(4)练习C++指针的定义及使用;(5)练习C++结构体的定义及使用;(6)练习多文件的程序的编译和运行方法;实验设备:(1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual C++6.0。

实验内容: (1)熟悉Visual C++6.0编译系统的常用功能,特别是debug调试功能;(2)编程1:编写一个程序c1.cpp,用来求2个或3个整数的最大数。

要求:用重载函数的方法来求最大数;函数原型:int max( int a, int b) 和int max( int a, int b,int c)。

(3)编程2:编写一个程序c2.cpp,求:a!+ b! + c!的值。

要求:使用递归函数。

主程序和函数分开到两个源程序文件中,分别进行编译后,再运行;(4)编程3:有一个3*4的矩阵,要求编程求出其中值最大的那个元素的值,以及其所在的行号和列号;(5)编程4:建立一个动态链表并进行输出和删除管理。

链表的每个节点为学生信息,包括:学号,姓名,性别,下一学生信息的指针。

程序的工作:(a)建立三个学生信息的节点,然后顺序输出该三个学生信息;(b)删除中间的节点,再顺序输出学生信息。

上海交大程序代码抄袭检测系统(重要参考)

上海交大程序代码抄袭检测系统(重要参考)
相似度计算模块:对两个 Fingerprint 集合计算其相似度,负责这一模块的类是 FProcessor.CPP,在这一过程中分为两步,第一步是求出两个集合的交集,相关算法在 6.3 节中给出,第二步根据两个集合模和交集模的大小计算其相似度,相关算法在 6.4 节中给出。
5 / 19
程序代码抄袭检测系统
上海交通大学软件学院
程序代码抄袭检测系统
PRP 论文
董浩亮、张坤、杨文剑 2008-7-13
程序代码抄袭检测系统
目录
2008 年 7 月 13 日
1 摘要 .................................................................................................................................. 3
1) 增加或删除程序注释 2) 更改程序变量名、函数名、类名等 3) 更改变量类型 4) 更改函数位置 5) 将子过程展开,嵌入至调用子过程的函数中 6) 添加无效语句、变量 7) 以等效语句替代原语句 8) 以等价表达式替代原表达式 以上作弊方式,要被侦测出的难度依次增大。目前,基于现有的技术,较易检测出前 5 种作弊方式。对于第 7、8 种作弊方式,相对来说形式多样,比如将 for 循环改为 while 循环, 将 i++写作 i+=1 等,要检测出此类作弊方式,不仅技术难度大,且在某些情况下不能断定 这类相似程序就是经过抄袭得来的,因此本项目所解决的主要是前 5 种作弊方式。
3) 软件架构: 为了提升程序的运行效率,同时又为了保证程序清晰的架构,本项目采用 C++语
言编写,整个程序分为若干个模块,每个模块对应的类以及详细说明可以参见附录部分。 下面给出简要的说明:

ChernoC++视频总结

ChernoC++视频总结

ChernoC++视频总结P5:编译器会把每个cpp⽂件都编译成⼀个obj⽂件,⽽我们的项⽬则被编译成⼀个可执⾏⽂件(exe)。

⽽每个cpp⽂件或者每个定义和申明之间是因为编译器可以⾃动链接(linking)他们。

P6:头⽂件就是编译器在欲编译时把头⽂件的内容复制过来。

所以在我们的头⽂件中,尽量不要去定义函数,否则会导致错误。

P8:在window32程序下char型占⽤⼀个字节,short2个,int4个,long long8个,其中char型实际上存储也是数字,因为是根据ASCII表存储的。

float占⽤四个字节,double占⽤8个,⽽对于bool只⽤⼀个字节,其是存储的只是0或1,那为什么只给他1bit呢,因为我们的电脑在寻址的时候最⼩单位就是字节。

数据类型本质上都是⼀样的,他们的区别在于他们的所占内存的⼤⼩。

P10:为了头⽂件中的定义不被重复复制到编译单元(cpp)中,我们需要做保护机制,之前常⽤的⽅式是在我们的头⽂件中加⼊预处理指令,⽐如1 #ifndef _LOG_H2#define _LOG_H34void log(const char* message);5#endif但是现在我可以⽤#pragma once在头⽂件中就可以了#pragma onceP17:对于引⽤变量,其实只是⼀个我们引⽤变量的⼀个别名,他在内存中没有实际的存储,我们可以把他当成其变量⼀样使⽤。

P19:类和结构本质上没什么区别,唯⼀的区别就是类默认是私有的,不管是继承还是成员。

⽽结构是公开的。

所以结构之所以存在是因为和c兼容,因为c中没有类,只有结构。

习惯中我们使⽤结构来存储⼀些数据,⽽⾄于其他的尽量使⽤类。

对于为什么要⽤指针参数或者引⽤参数主要有两点:1、我们可以修改调⽤函数中的数据对象2、因为他们只是⼀个地址或者⼀个别名,⽽不需要拷贝副本,所以提⾼了程序的运⾏速度对于合适⽤值传递、指针传递、引⽤传递对于使⽤传递的值⽽不作修改的函数:1. 如果数据对象较⼩,如内置数据类型或者⼩型结构,则按值传递。

cpp基础测试 2

cpp基础测试 2

C++基础测试一:选择题(每题2分,其29题)1.关于类和对象不正确的是( )A:类是一种类型,它封装了数据和操作B:对象是类的实例C:一个类的对象只有一个D:一个对象必属于某个类2.在类定义的外部去访问类中的成员,类中的成员可以被访问的有( )(友元除外)A:所有类成员 B:private或protected成员C:public成员 D:public或private成员3.关于this指针的说法错误的是( )A:this必须显示说明 B:构造函数中可以使用thisC:成员函数可使用this D:静态成员函数不拥有this指针4.声明一个类的对象时,系统自动调用()函数A:成员函数 B:构造函数 C析构函数 D普通函数5.下面对构造函数的不正确描述是()A:系统可以提供默认的构造函数 B构造函数可以有参数,所以可以有返回值C:构造函数可以重载 D构造函数可以设置默认参数值6.下面对析构函数的正确描述是()A:系统不能提供析构函数 B析构函数必须由用户定义C析构函数没有参数 D析构函数可以设置默认参数值7.对静态成员<static修饰的成员>的不正确描述是()A:静态成员不属于对象,是类的其享成员B:静态数据成员要在类外定义和初始化C:调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针D:非静态成员函数也可以访问静态数据成员8.下面选项中,不是类的函数为()A:构造函数 B:析构函数 C:C函数 D缺省参数的构造函数9.下面对友元的错误描述是()A)关键字friend用于声明友元B)一个类的成员函数可以是另一个类的友元成员函数C)友元成员函数访问对象的成员不受访问权限修饰符影响D)C函数可以通过this指针访问对象成员10.在c++中,类与类之间的继承关系具有()A自反性 B)对称性 C传递性 D)反对称性]11.下列关于类的继承描述中,( )是错误的A)派生类一定可以访问基类的所有数据成员,也能调用基类的所有成员函数B基类全部属性和方法与派生类不一定相同C)继承描述类的层次关系,派生类可以具有与基类相同的属性和方法D)一个基类可以有多个派生类,一个派生类可以有多个基类12.当一个派生类公有继承一个基类时,基类中的所有公有成员成为派生类的()A)public成员 B)private成员C)protected成员D)友元13当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成成员成为派生类的()A)public成员 B)private成员 C)protected成员 D)友元14.下面描述中,错误的是( )A)在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问B) 在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问C)在基类定义的public和protected成员在保护继承的派生类中可见D) private成员在类外函数中被访问,类外函数需要进行友元访问声明15.在C++中,一定不能被派生类继承的成员是()A)成员函数 B)构造函数与析构函数 C)成员变量 D)虚函数16.在创建派生类对象时,构造函数的执行顺序是( )A)对象成员构造函数、基类构造函数、派生类本身的构造函数B)派生类本身的构造函数、基类构造函数、对象成员构造函数C)基类构造函数、派生类本身的构造函数、对象成员构造函数D)基类构造函数、对象成员构造函数、派生类本身的构造函数17关于常成员函数说明正确的是A)常成员函数的函数体中能修改对象B)常成员函数可以访问非常成员函数C)非常成员函数不可以访问常成员函数D)常成员函数中能访问常成员函数18.在C++中,要实现动态联编,可以使用( )调用虚函数A)类名B)派生类指针C)对象名D)基类指针或基类的引用19.下列函数中,可以作为虚函数的是()A)C函数 B)构造函数 C)成员函数、析构函数 D)C风格的友元函数20.下面函数原形声明中,()声明了fun为虚函数A)void fun()=0; B)virtual void fun()=0;C)virtual void fun(); D)virtual void fun() { };21.假设A为抽象类,下列声明()是正确的A)A fun(int); B)A *p; C)int fun(A); D)A Obj;22.下面描述中,正确的是( )A)虚函数是没有实现的函数 B)纯虚函数可以被派生类实现C)抽象类是没有纯虚函数的类 D)抽象类不能创建指针或引用23)已知obj是一个对象,下面哪一个是不可能出现的?[A] obj.100 [B] !obj [C] obj++ [D] int r = obj,10024 下述程序中,类C的public各有哪些属性成员( )。

人员管理系统

人员管理系统

目录1.系统设计的目的和意义 (2)2.系统总框架图 (2)3.软件功能描述 (2)4.软件代码的设计 (3)4.1数据结构描述与定义 (3)4.2模块设计 (4)5.软件使用说明 (6)6.测试结果与分析 (6)7.比较有特色的函数 (11)8.存在的不足与对策 (13)9.课程设计总结 (13)附录:源程序清单(核心部分) (14)1.系统设计的目的和意义采用面向对象设计思想,管理2类人员。

教师信息(姓名,编号,年龄,职称,学历,籍贯,工作日期),学生信息(姓名,年龄,学号,籍贯,入学日期)。

完整输入/输出设计,写入ACCESS文件,分别建立两个表信息,一个存储教师信息,一个存储学生信息。

采用工程文件方式组织程序。

能进行增、删、查、改等操作。

初始完成密码认证框的编写。

外观设计风格各异2.系统总框架图3.软件功能描述管理2类人员:教师信息(姓名,编号,年龄,职称,学历,籍贯,工作日期),学生信息(姓名,年龄,学号,籍贯,入学日期)。

完整输入/输出设计,写入ACCESS文件。

能进行增、删、查、改等操作。

采用友好的用户界面。

管理用户:添加、删除、修改密码等操作。

4.软件代码的设计4.1数据结构描述与定义①ACCESS表表password:表student:表teacher:②MFC类class CUserSet : public CRecordset //用户数据定义{CString m_Puser;CString m_Ppassword;BOOL m_Pisadmin;}class CStudentSet : public CRecordset //学生数据定义{CString m_Sname;CString m_Sno;CString m_Sage;CString m_Snative;CString m_Setime;}class CTeacherSet : public CRecordset //教师数据定义{CString m_Tname;CString m_Tno;CString m_Tage;CString m_Ttitle;CString m_Tdegree;CString m_Tnative;CString m_Twtime;}4.2模块设计系统共分成七个模块,分别是:用户登录模块,用户管理模块,学生信息查询模块,学生信息编辑模块,教师信息查询模块,教师信息编辑模块,帮助模块。

面向对象程序C++设计实验报告

面向对象程序C++设计实验报告

面向对象程序C++设计实验报告计算机与信息工程系C++面向对象程序设计实验报告专业:计算机班级:学号:姓名:指导老师:刘文涛实验1:Visual C++6.0开发环境应用入门一、实验目的1、了解Visual C++6.0的特点。

2、熟悉Visual C++6.0的开发环境。

3、学习用Visual C++6.0编写标准的C++控制台程序。

二、实验任务使用Visual C++来建立一个非图形化的标准C++程序,编译、运行三、实验步骤#include <iostream.h>struct time{int year;int month;int day;int hour;int minue;int second;};void main(){time a;cout<<"please input year:";cin>>a.year;cout<<"please input month:";cin>>a.month;cout<<"please input day:";cin>>a.day;cout<<"please input hour:";cin>>a.hour;cout<<"please input minue:";cin>>a.minue;cout<<"please input second:";cin>>a.second;cout<<a.year<<"年"<<a.month<<"月"<<a.day<<"日"<<a.hour<<"时"<<a.minue<<"分"<<a.second<<"秒";}四:个人小结这是第一次开始学习C++,以前也没有接触过类似的东西。

面向对象程序设计考前复习题及答案

面向对象程序设计考前复习题及答案

简答题1、传统的结构化程序设计的优点和缺点是什么?优点:(1)这种程序设计方法力求算法描述精确。

(2)对每一子过程模块简单进行程序正确性证明。

缺点:(1)这种程序设计方法本质上是面对“过程”的,而“过程”和“操作”又是不稳定和多变的,因此不能干脆反映人类求解问题的思路。

(2)程序代码可重用性差。

程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。

即使重用代码,通常也是通过拷贝或编辑重新生成一份。

(3)维护程序的一样性困难。

该种方法将数据与对数据进行处理的程序代码分别。

2、什么是对象?每个对象都具有属性(Attribute)和方法(Method)这两方面的特征。

对象的属性描述了对象的状态和特征,对象的方法说明白对象的行为和功能,并且对象的属性值只应由这个对象的方法来读取和修改,两者结合在一起就构成了对象的完整描述。

3、什么是消息?在面对对象的程序设计中,由于对象描述了客观实体,它们之间的联系通过对象间的联系来反映。

当一个对象须要另外一个对象供应服务时,它向对方发出一个服务恳求,而收到恳求的对象会响应这个恳求并完成指定的服务。

这种向对象发出的服务恳求就称为消息。

4、什么是多态性?所谓多态性是指当程序中的其他部分发出同样的消息时,根据接收消息对象的不同能够自动执行类中相应的方法。

其好处是,用户不必知道某个对象所属的类就可以执行多态行为,从而为程序设计带来更大便利。

5、什么是面对对象的程序设计方法?这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。

在OOP中,将“对象”作为系统中最基本的运行实体,整个程序即由各种不同类型的对象组成,各对象既是一个独立的实体,又可通过消息相互作用,对象中的方法确定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。

6、面对对象方法的特点是什么?(1)OOP以“对象”或“数据”为中心。

由于对象自然地反映了应用领域的模块性,因此具有相对稳定性,可以被用作一个组件去构成更困难的应用,又由于对象一般封装的是某一实际需求的各种成分,因此,某一对象的变更对整个系统几乎没有影响。

c++习题

c++习题

上机题14设有教师若干名,每个教师有姓名信息,—个教师可以指导多名研究生,每名研究生有学号、姓名和研究方向信息,编写一个程序,要求输出每名教师所指导的所有研究生的学号、姓名和研究方向信息。

假设每个导师最多可指导20名研究生:分析:由于学生和老师都有编号和姓名属性,可以定义一个能对编号和姓名进行管理的类person,然后在person类的基础上派生出学生类和教师类。

为了使学生与导师建立指导关系,需要在教师类中添加一个学生类student的对象数组,用于表明某个导师所指导的所有研究生信息。

导师指导学生可以通过在教师类中增加一个成员函数,将学生对象加入到导师所指导的研究生对象数组中,把指导关系做成动态的。

#include <iostream>#include <string>using namespace std;class person{public:void setvalue();void display();protected:int num;string nam;};class student: public person{public:void setvalue();void display();protected:string major;};class teacher: public person{public:void setvalue();void display();protected:student stud[20];};……………………上机题15编写一个程序实现小型公司的工资管理。

该公司主要有三类人员:经理、兼职技术人员、销售员。

要求存储这些人员的编号,姓名和月工资,计算月工资并显示全部信息。

月工资计算办法是:经理拿固定月薪8000,兼职技术人员按每小时100元取月薪;销售员按该当月销售额的4%提成;要求有如下文件:employee.h,technicial.h,salesman.h,manager.h,employee.cpp,technicial.cpp,salesman.cpp,manager.cpp,main.cpp//employee.hclass employee{protected:char * name;int individualEmpNo;int grade;float accumPay;static int employeeNo;public:employee();~employee();void pay();void promote(int);void displayStatus();};class technician:public employee{private:float hourlyRate;int workHours;public:technician();void pay();void displayStatus();};class salesman:virtual public employee{protected:float CommRate;float sales;public:salesman();void pay();void displayStatus();};class manager:virtual public employee{protected:float monthlyPay;public:manager();void pay();void displayStatus();};class salesmanager:public manager,public salesman{public:salesmanager();void pay();void displayStatus();};//empfunc.cpp#include <iostream.h>#include <string.h>#include "employee.h"int employee::employeeNo = 1000;employee::employee(){ char namestr[50];cout<<"请输入下一个雇员的姓名:";cin>>namestr;name = new char[strlen(namestr)+1];strcpy(name,namestr);individualEmpNo = employeeNo++;grade = 1;accumPay = 0.0;}employee::~employee(){ delete name;}void employee::pay(){}void employee::promote(int increment){ grade += increment;}technician::technician(){ h ourlyRate = 100;}void technician::pay(){ cout<<"请输入"<<name<<"本月的工作时数:";cin>>workHours;accumPay = hourlyRate * workHours;cout<<"兼职技术人员"<<name<<"编号"<<individualEmpNo<<"本月工资"<<accumPay<<endl;}void technician::displayStatus(){ cout<<"兼职技术人员"<<name<<"编号"<<individualEmpNo<<"级别为"<<grade<<"级,已付本月工资"<<accumPay<<endl;}salesman::salesman(){ CommRate = 0.004;}void salesman::pay(){ cout<<"请输入"<<name<<"本月的销售额:";cin>>sales;accumPay = sales * CommRate;cout<<"推销员"<<name<<"编号"<<individualEmpNo<<"本月工资"<<accumPay<<endl;}void salesman::displayStatus(){ cout<<"推销员"<<name<<"编号"<<individualEmpNo<<"级别为"<<grade<<"级,已付本月工资"<<accumPay<<endl;}manager::manager(){ monthlyPay = 8000;}void manager::pay(){ accumPay = monthlyPay;cout<<"经理"<<name<<"编号"<<individualEmpNo<<"本月工资"<<accumPay<<endl;}void manager::displayStatus(){ cout<<"经理"<<name<<"编号"<<individualEmpNo<<"级别为"<<grade<<"级,已付本月工资"<<accumPay<<endl;}salesmanager::salesmanager(){ monthlyPay = 5000; CommRate = 0.005;}void salesmanager::pay(){ accumPay = monthlyPay;cout<<"请输入"<<employee::name<<"所管辖部门本月销售总额:";cin>>sales;accumPay = monthlyPay + sales * CommRate;cout<<"销售经理"<<name<<"编号"<<individualEmpNo<<"本月工资"<<accumPay<<endl;}void salesmanager::displayStatus(){ cout<<"推销经理"<<name<<"编号"<<individualEmpNo<<"级别为"<<grade<<"级,已付本月工资"<<accumPay<<endl;}//main.cpp#include <iostream.h>#include "employee.h"int main(){ manager m1;technician t1;salesmanager sm1;salesman s1;m1.promote(3);m1.pay();m1.displayStatus();cout<<endl;t1.promote(2);t1.pay();t1.displayStatus();cout<<endl;sm1.promote(2);sm1.pay();sm1.displayStatus();cout<<endl;s1.pay();s1.displayStatus();return 0;}。

Cpp报告(全集)

Cpp报告(全集)

C++课程四次实验报告(综合版)第一次实验:第一题:代码如下:#include<iostream.h>#include<math.h>class Rectangle{private:int left;int bottom;int right;int top;public:void SetPoint(int l,int b,int r,int t){left=l;bottom=b;right=r;top=t;}void cal(int left,int bottom,int right,int top){int s;s=abs(left-right)*abs(bottom-top);cout<<"该长方形的面积为:"<<s<<endl;}void Getp1(int left,int bottom){cout<<"长方形的左下角坐标是:"<<left<<","<<bottom<<endl;}void Getp2(int right,int top){cout<<"长方形的右上角坐标是:"<<right<<","<<top<<endl;}};void main(){Rectangle r1;int l,b,r,t;cout<<"请输入长方形的左下角的坐标:";cin>>l>>b;cout<<"请输入长方形的右上角的坐标:";cin>>r>>t;r1.Getp1(l,b);r1.Getp2(r,t);r1.cal(l,b,r,t);}图1.1运行结果展示第二题:代码如下:#include<iostream>#include<string>using namespace std;class Date //日期类{private:int year,month,day;public:void SetDate(int Y=0,int M=0,int D=0); //带默认形参值的成员函数void ShowDate();};inline void Date::SetDate(int Y,int M,int D) //录入日期(内联成员函数){cin>>Y>>M>>D;year=Y;month=M;day=D;}inline void Date::ShowDate() //显示日期(内联成员函数){cout<<year<<"-"<<month<<"-"<<day<<endl;}class Personnel //人员类{private:int num;char sex;Date birthday; //“日期”类内嵌子对象,类的组合string ID;public:Personnel(){} //默认构造函数Personnel(int n,char s,Date b,string id) //带参构造函数{num=n;sex=s;birthday=b;ID=id;}Personnel (Personnel &p); //声明拷贝构造函数~Personnel() //析构函数{cout<<num<<"号人员信息已删除。

c++数组嵌套数组

c++数组嵌套数组

c++数组嵌套数组在C++中,数组可以嵌套数组,这种数据结构在某些情况下非常有用。

下面是一个示例代码,演示了如何使用嵌套数组来表示教师和学生的关系:```cpp#include<iostream>#include<string>#include<ctime>using namespace std;// 学生结构体struct student {string name;int score = 0;};// 教师结构体struct teacher {student stu[5];string name;};int main() {// 给老师和学生赋值,其中学生的分数用到了随机数。

teacher tea[] = {{"Alice", {10, 20, 30, 40, 50}}, {"Bob", {60, 70, 80, 90, 100}}, {"Charlie", {110, 120, 130, 140, 150}}};for (int i = 0; i < 3; i++) {cout << tea[i].name << ": ";for (int j = 0; j < 5; j++) {cout << tea[i].stu[j].score << " ";}cout << endl;}return 0;}```在这个示例中,`teacher`结构体包含一个名为`stu`的数组,它包含五个`student`对象。

这意味着每个教师都有五个学生。

你可以根据需要扩展嵌套数组的深度,以满足不同的需求。

c++作业 编写一个学生和教师数据输入和显示程序

c++作业 编写一个学生和教师数据输入和显示程序
teac1.show();
cout<<endl;
cout<<"请根据提示输入老师二信息"<<endl;
teac2.print();
cout<<"老师二信息如下"<<endl;
teac2.show();
return ቤተ መጻሕፍቲ ባይዱ;
}
cout<<"输入成绩:";
cin>>score;
}
void show()
{person::show();
cout<<"班号:"<<NO<<endl;
cout<<"成绩:"<<score<<endl;
}
protected:
int NO;
float score;
};
class teacher:virtual public person{
public:
void print()
{person::print();
cout<<"输入职称:";
cin>>title;
cout<<"输入部门:";
cin>>dept;
}
void show()
{person::show();
cout<<"职称:"<<title<<endl;
cout<<"部门:"<<dept<<endl;

C++语言基础

C++语言基础

C++语⾔基础C++ 基础语⾔:/* 多⾏注释 */ //单⾏注释1.程序开始 #include <iostream> using namespace std; int main() cout << "Hello, world!" << endl; return 0; }2.C++ 完全⽀持⾯向对象的程序设计,包括⾯向对象开发的四⼤特性:封装抽象继承多态标准的 C++ 由三个重要部分组成:核⼼语⾔,提供了所有构件块,包括变量、数据类型和常量,等等。

C++ 标准库,提供了⼤量的函数,⽤于操作⽂件、字符串等。

标准模板库(STL),提供了⼤量的⽅法,⽤于操作数据结构等。

3.g++ 常⽤命令选: -ansi 只⽀持 ANSI 标准的 C 语法。

这⼀选项将禁⽌ GNU C 的某些特⾊,例如 asm 或 typeof 关键词。

-c 只编译并⽣成⽬标⽂件。

-DMACRO 以字符串"1"定义 MACRO 宏。

-DMACRO=DEFN 以字符串"DEFN"定义 MACRO 宏。

-E 只运⾏ C 预编译器。

-g ⽣成调试信息。

GNU 调试器可利⽤该信息。

-IDIRECTORY 指定额外的头⽂件搜索路径DIRECTORY。

-LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。

-lLIBRARY 连接时搜索指定的函数库LIBRARY。

-m486 针对 486 进⾏代码优化。

-o FILE ⽣成指定的输出⽂件。

⽤在⽣成可执⾏⽂件时。

-O0 不进⾏优化处理。

-O 或 -O1 优化⽣成代码。

-O2 进⼀步优化。

-O3 ⽐ -O2 更进⼀步优化,包括 inline 函数。

-shared ⽣成共享⽬标⽂件。

通常⽤在建⽴共享库时。

-static 禁⽌使⽤共享连接。

-UMACRO 取消对 MACRO 宏的定义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
in.clear();
in.close();
return false;
}
bool addnewscm(SCM *p)
{
string getsID,getcID,getmark;
int mark;
cout<<"输入学号:";
cin>>getsID;
if(getsID.length()!=9)//check sID
if (out.fail())
{
cout<<"\n open file error!\n";
return false;
}
out<<getsID<<"\t"<<getcID<<"\t"<<mark<<"\n";
out.close();
return true;
string number;
buffer>>number;
if(number==oldone)
out<<newone<<"\t";
else
out<<number<<"\t";
buffer>>number;out<<number<<"\t";
ifstream in("F:/数据库/课程设计/教师授课表.txt");
string aline;
if(in) // 有该文件
{
//cout<<"已找到教师授课表,正在加载数据\n";
getline (in, aline); //去头
}
cout<<"输入课程号:";
cin>>getcID;
if(! illegalcID(getcID))//check cID
{
cout<<"\n此课程号无效!\n";
return false;
}
cout<<"输入成绩:";
cin>>getmark;
stringstream buffer(getmark); //check mark
#include<iostream>
#include<sstream>
#include<fstream>
#include <stdio.h>
#include"teacher.h"
using namespace std;
bool teacher_searchByID(string getID)
{
cout<<"\n此学号无效!\n";
return false;
}
if(getsID<p[0].sID||getsID>p[SCM::total_scm-1].sID)//check sID,too
{
cout<<"\n此学号无效!\n";
return false;
buffer>>mark;
if(mark>100||mark<0)
{
cout<<"\n无效成绩!\n";
return false;
}
//更改txt,SCM的重新初始化交给主函数
ofstream out;
out.open("F:/数据库/课程设计/学生选课表.txt",ios::app);
{
stringstream buffer(aline);
string number;
buffer>>number>>aline;
if(get==aline)
{
in.clear();in.close();
return number;
string checknew()// using in changedepartment(),too
{
ifstream in("F:/数据库/课程设计/系表.txt");
string aline;
if(!in)
{
cout<<"error,can not open !\n";
{
int i=0;
ifstream in("F:/数据库/课程设计/教师表.txt");
string aline;
if(in) // 有该文件
{
//cout<<"已找到教师表,正在加载数据\n";
getline (in, aline); //去头
string aline;
if(in) // 有该文件
{
//cout<<"已找到表,正在统计数据条目\n";
getline (in, aline); //去头
while(getline (in, aline))//确定科目数
{
stringstream buffer(aline);
}
}
in.clear();in.close();
return getnum;
}
bool changedepartment(string oldone,string newone)
{
string aline;
ifstream in("F:/数据库/课程设计/系表.txt");
buffer>>number;out<<number<<"\t";
buffer>>number;out<<number<<"\n";
}
in.clear();in.close();out.clear();out.close();
remove("F:/数据库/课程设计/系表.txt");//辞旧迎新
return false;
}
else
{ in.clear();
in.close();
return false;
}
}
bool illegalcID(string cID)//using in addnewscm to check cID
{
ifstream in("F:/数据库/课程设计/课程信息表.txt");
/*1、给定某个学生的学号,查询这个学生的相关信息(姓名,性别,所在系名,所在寝室名称)
2、给定某个学生的学号,查询选修了这位学生全部课程的学生信息。
3、给定某个教师的工号,查询其所上的每门课的平均成绩。
4、统计每门课程的成绩信息(平均成绩,最高成绩,最低成绩,不及格人数)。
5、查询每个寝室里住的同学的成绩信息,并按平均成绩从高到低排列。
buffer>>aline;
cout<<"("<<aline<<")\n";
in.clear();
in.close();
return true;
}
}
cout<<"查无此教师\n";
in.clear();
in.close();
cout<<course_average(p,aline)<<endl;//该课程平均成绩
unfind=fals
cout<<"没有该教师的授课信息"<<endl;
in.clear();
in.close();
}
string checkold()// using in changedepartment()
{
ifstream in("F:/数据库/课程设计/系表.txt");
string aline;
if(!in)
{
cout<<"error,can not open !\n";
stringstream buffer(aline);
buffer>>aline;
if(getnum==aline)
{
in.clear();in.close();
cout<<"已存在的编号!\n";
return "error";
}
if(getnum==number)
{
in.clear();in.close();
return number;
}
}
in.clear();in.close();
cout<<"查无此系\n";
return "error";
}
buffer>>aline;
if(cID==aline)
{
in.clear();
相关文档
最新文档