C++课设高校信息管理系统

更新时间:2023-03-10 11:00:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南京航空航天大学金城学院

《C++语言程序设计》课程设计报告

高校人员信息管理系统

学号:2014023218,2014023215,2014023216 姓名:孙小俊,张光伟,张阳 日期:2015.9.6

目 录

一、需求分析:………………………………………………………3

二、程序的主要功能:……………………………………………….3

三、程序运行平台:………………………………………………….3

四、系统总框架图:………………………………………………….6

五、程序类的说明: ……………………………………………….6

六、模块分析:……………………………………………………….8

七、比较有特色的函数:…………………………………………….9

八、存在的不足与编程体会…………………………………………10

九、程序源代码:…………………………………………………….10

一、 需求分析

为方便对学校学生教师的管理和查询,特设计此系统。对全校师生的信息进行分类存储,全面展示高校学生教师信息,支持信息的查询修改,便于管理。采用c++进行设计。 程序的主要功能

(1)添加人员信息:

通过输入人员的基本信息,添加保存到人员信息文件中,并进行分类管理。包括人员的编号,姓名,性别,出生年月,年龄。

(2)显示功能:

按各个类别分类展示人员的基本信息。具体信息包括:(编号、姓名、性别、出生年月、年龄)。

(3)计算教师的平均年龄:

根据已输入的教师信息,计算当前已有的教师平均年龄。

(4)删除高校人员信息:

可以自行对人员进行删减。

(5)查询系部人员信息: 按系部进行人员信息输出。 (6)检索功能:

通过姓名对记录在案的人员进行检索,查询人员所有的基本信息。

(7) 保存:

可以对所有的输入信息实现分类保存。

三、程序运行平台

VC++ 6.0

运行程序“高校人员管理.exe”,进入登录界面如下

一、 选择1载入文件记录到内存

选择2增加一位人员记录:

选择3显示全部人员记录

选择4计算教师平均年龄:

选择4计算教师的平均年龄:

选择5删除指定人员的信息

选择6按系部输出所有人员的信息

选择7:按姓名检索信息

选择8保存数据到文件:

四、 系统总框架图

载入数据 增加数据 显示数据 主函数

五、程序类的说明

计算平均年龄 删除记录 按系部输出 按姓名检索 保存

class Person //定义人员基类 {

protected: /./定义基类的属性 char sex[4];

int year; int month; int day;

public :

int num; //定义num属性

char name[30]; //定义姓名属性

//定义构造方法

Person(int num=0,char name[30]=\ sex[4]=\ { this->name[30]=name[30]; this->num=num; this->sex[4]=sex[4]; this->year=year; this->month=month; this->day=day; }

//定义添加函数 void add_per() { cout<<\请输入编号:\ cin>>num; cout<<\请输入姓名:\ cin>>name; cin.sync(); cout<<\请输入性别:\ cin>>sex; cin.sync(); cout<<\请输入出生年份:\ cin>>year; cout<<\请输入出生月份:\ cin>>month; cout<<\请输入日期:\ cin>>day; }

//返回年龄 int age() { return 2015-year; } };

//定义教师类

class Teacher :public Person //定义教师类 继承 人员基类 {

protected: //教师类的 属性 : 工作时间 int time_work; public:

char information[100]; //所在系部信息

//定义构造函数

Teacher(int num=0,char name[30]=\\sex[4]=\\year=2015,int month=8,int day=31,int time_work=2015,char information[100]=\\num, name,sex, year, month, day)//Person::Person(int,char [],char,int,int,int)”: 不能将参数 2 从“char”转换为“char []”

{ this->time_work=time_work; this->information[100]=information[100]; }

//定义添加函数 void add_tea() { add_per(); cout<<\请输入参加工作时间:\ cout<<\请输入所在系部的信息:\ } };

//定义学生类

class Student :public Person //定义 学生类 继承 人员基类 finally {

private: //添加私有属性 char major[10]; //专业课 int banji; int score;

//定义构造函数

public :Student(int num=0,char name[30]=\\sex[4]=\\year=2015,int month=8,int day=31,char major[10]=\

{ this->major[10]=major[10]; this->banji=banji; this->score=score; }

//定义添加函数

void add_stu() { add_per(); cout<<\请输入主修课程:\ cout<<\请输入班级信息:\ cout<<\请输入考试成绩:\

cout<

//定义输出函数 void show() { cout<<\编号:\姓名:\性别:\出生年月日:\

cout<<\主修课程:\班级信息:\考试成绩:\

} };

class Fulltime_teacher :public Teacher//定义专任教师类 继承 教师类 finally {

private:

char zhicheng[10];//定义职称

public:

//定义构造函数

Fulltime_teacher(int num=0,char name[30]=\day=31,int time_work=2015,char information[100]=\year, month, day, time_work, information)

{ this->zhicheng[10]=zhicheng[10]; }

//定义添加函数 void add_full () { add_tea(); cout<<\请输入职称:\ cout<

//定义显示函数

void show() { cout<<\编号:\姓名:\性别:\出生年月日:\

cout<<\工作时间:\系部信息:\ cout<<\职称:\ }

//返回年龄 int getAge() { return age(); } };

class Clerical_staff :public Teacher //定义行政教师 继承教师类 finally {

private:

char zhiwu[10];//定义职务信息

public:

// 定义构造函数

Clerical_staff(int num=0,char name[30]=\\sex[4]=\\year=2015,int month=8,int day=31,int time_work=2015,char information[100]=\\zhiwu[10]=\\num, name,sex, year, month, day, time_work, information)

{ this->zhiwu[10]=zhiwu[10]; }

//定义添加函数 void add_cel () { add_tea(); cout<<\请输入职务:\ cout<

//定义显示函数 void show() { cout<<\编号:\姓名:\性别:\出生

年月日:\

cout<<\工作时间:\系部信息:\ cout<<\职务:\ }

//返回年龄 int getAge() { return age(); } };

六、模块分析

1. 将文件载入到内存

将D:/数据.txt中的数据载入到内存当中 2. 增加一位成员记录

按添加的种类 添加数据到 对象数组中 3. 显示全部人员记录

按照学生和老师的分类 输出所有人员的记录 4. 计算年龄

计算出所有老师的总和并求平均 5. 删除一个人员记录

根据删除的种类,将一个对象删除 ,并将后面的对象一次向前移动 6. 按系部输出人员信息

把所有老师按照所在系部全部输出 7. 按姓名检索所有的信息

根据输入的姓名,检索到对象,然后全部输出 8. 保存

将标志位和数据全部保存到D盘

七、组员分工

张光伟,张阳:类 的构造

孙小俊:main()函数及各模块的编写

八、存在的不足与对策、编程的体会

张光伟

开始的时候,题目看了好几遍,却不知如何下手。接着在模块细化的情况下,编译时会出现许多问题,例如:符号、字母、函数的编写问题,这些看的懂或者看不懂问题的出现或多或少影响程序编写的进度。

通过本程序设计掌握了类对象、继承、派生、重载、输入输出的定义和使用,对使用C++语言编码有了更深层次的理解,达到了实验的目的。其次要熟练掌握老师以前教授的相关知识,这样在编写程序的时候才能得心应手。再次要分步进行程序的编写,实现一个功能,再实现另一个功能,不可以全部编写好最后再检查,否则最终无从下手。

我现在才明白一个真正好的程序是需要很多的完成的,不是说一个人就能完成一个程序的编写,现在的程序还不是很大,但如果是一个巨型的系统,任何一个人是不可能完成的,例如各大网络公司他们生产的操作系统也是由很多的高手在一起编写的。这次的编写过程中,我、孙晓俊和张阳一起完成老师的任务,让我深刻认识到了团队的力量!

孙小俊

C++编程思想和和c语言的是两种不同的思想,尽管他们的语法几乎一模一样,在c++编程中,需要构建类,属性方法全部包含在里面,在类外 对类的对象进行操作 ,这个就是所谓的面向对象的编程,上学期的C语言课设其实和这个都差不多,唯一不同的是把结构体换成了类,方法另外定制,c++讲属性和方法封装在一起,我感觉对于课设这种小程序来说 有点不是特别的明显,在编程中我能感受到这种方法的好处就是在对象调用不属于他的方法的时候编译时不能通过的.这个就是所谓的安全吧.

张阳

C++的课设采用了分组合作的方式进行了,不同于c的独立,让我认识到了团队的魅力,小组的人各有所长,在组长的分配工作下很快的做好自己的所需要完成的任务,集体的力量是庞大的,团对的合作让工作能都更有效率的完成,也能让每个人各发挥所长,让我收益匪浅,而且在团队的工作方式中,我也从小组的其他成员身上学到许多的长处,收获很多,当然,也在团队的合作中找到了许多的不足之处,在今后的学习中会一一的弥补,c++的课设即给了我锻炼的机会,也让我认识到自身的不足,更好体会到团队的合作重要性,所以说,这次课设很有价值。

九、程序源代码

#include #include using namespace std;

void load(); void add(); void show(); void avg_age(); void save(); void show1();

void show_group(); void del();

class Person //定义人员基类 {

protected: char sex[4]; int year; int month; int day; public : int num; char name[30]; Person(int num=0,char name[30]=\ { this->name[30]=name[30]; this->num=num; this->sex[4]=sex[4]; this->year=year; this->month=month; this->day=day; } void change_per()

sex[4]=\ { cout<<\请输入编号:\ cin>>num; cout<<\请输入姓名:\ cin>>name; cin.sync(); cout<<\请输入性别:\ cin>>sex; cin.sync(); cout<<\请输入出生年份:\ cin>>year; cout<<\请输入出生月份:\ cin>>month; cout<<\请输入日期:\ cin>>day; } int age() { return 2015-year; } };

class Teacher :public Person//定义教师类 继承 人员基类 {

protected: int time_work; public: char information[100]; //所在系部信息 Teacher(int num=0,char name[30]=\\sex[4]=\\year=2015,int month=8,int day=31,int time_work=2015,char information[100]=\\num, name,sex, year, month, day)//Person::Person(int,char [],char,int,int,int)”: 不能将参数 2 从“char”转换为“char []” { this->time_work=time_work; this->information[100]=information[100]; } void change_tea() { change_per(); cout<<\请输入参加工作时间:\ cout<<\请输入所在系部的信息:\ } };

class Student :public Person //定义 学生类 继承 人员基类 {

private:

char major[10]; //专业课 int banji; int score;

public :Student(int num=0,char name[30]=\\sex[4]=\\year=2015,int month=8,int day=31,char major[10]=\ { this->major[10]=major[10]; this->banji=banji; this->score=score; } void change() { change_per(); cout<<\请输入主修课程:\ cout<<\请输入班级信息:\ cout<<\请输入考试成绩:\ cout<

// friend Student operator= };

class Fulltime_teacher :public Teacher//定义专任教师类 继承 教师类 { private: char zhicheng[10];//定义职称

public: Fulltime_teacher(int num=0,char name[30]=\\sex[4]=\\year=2015,int month=8,int day=31,int time_work=2015,char information[100]=\year, month, day, time_work, information) { this->zhicheng[10]=zhicheng[10]; } void change () { change_tea(); cout<<\请输入职称:\ cout<

class Clerical_staff :public Teacher //定义行政教师 继承教师类 {

private: char zhiwu[10];//定义职务信息

public: Clerical_staff(int num=0,char name[30]=\\sex[4]=\\year=2015,int month=8,int day=31,int time_work=2015,char information[100]=\\zhiwu[10]=\\num, name,sex, year, month, day, time_work, information) { this->zhiwu[10]=zhiwu[10]; }

void change () { change_tea(); cout<<\请输入职务:\ cout<

Clerical_staff cs[100]; Student s[100];

Fulltime_teacher ft[100];

int biaozhi_stu=0; int biaozhi_full=0; int biaozhi_cle=0; int main() { while(1) { printf(\ ****************菜单显示******************\\n \ printf(\ * 1.载入文件记录到内存 *\\n \ printf(\ * *\\n \ printf(\ * 2.增加一位人员记录 *\\n \ printf(\ * *\\n \ printf(\ * 3.显示全部人员记录 *\\n \ printf(\ * *\\n \ printf(\ * 4.计算教师平均年龄 *\\n \

printf(\ * *\\n \ printf(\ * 5.删除一个人员记录 *\\n \ printf(\ * *\\n \ printf(\ * 6.按系部输出人员信息 *\\n \ printf(\ * *\\n \ printf(\ * 7.按姓名检索所有信息 *\\n \ printf(\ * *\\n \ printf(\ * 8.保存 *\\n \ printf(\ ******************************************\\n \ printf(\请输入菜单代码:\ int x=1; cin>>x; switch(x) { case 1: load();break; case 2: add();break; case 3: show();break; case 4: avg_age();break; case 5: del();break; case 6: show_group();break; case 7:show1();break; case 8: save();break; default :printf(\您的输入有误,请重新输入\\n\ } } return 0; }

void load()//1

{//使用二进制的形式来 存储数据 int i; ifstream is; is.open(\数据.txt\ if(!is) { cout<<\文件打开错误,请检查!\\n\\n\ main(); } ifstream biaozhi; biaozhi.open(\标志.txt\ biaozhi>>biaozhi_stu>>biaozhi_cle>>biaozhi_full;

biaozhi.close(); for(i=0;i

void add()//2 { cout<<\请输入你要添加的人员总类:\\n\\n\学生\\n\专任教师\\n\行政教师\ int x; cin>>x; void add_stu(); void add_full(); void add_clerical(); switch(x) { case 1: add_stu();break; case 2: add_full();break; case 3: add_clerical();break; default: { cout<<\输入错误,请重新输入\ add(); getchar(); } }

}

void add_stu() { s[biaozhi_stu].change(); biaozhi_stu++; }

void add_full() { ft[biaozhi_full].change(); biaozhi_full++; }

void add_clerical() { cs[biaozhi_cle].change(); biaozhi_cle++; }

void show()//3 { int i; if(biaozhi_stu==0) { cout<<\没有登记的学生\\n\ }else{ cout<<\所有学生的信息:\\n\ for( i=0;i

{ cout<<\没有登记的专任教师\\n\ }else{ cout<<\所有专任教师的信息:\\n\ for( i=0; i

void avg_age()//4 { int i; float total=0; for(i=0;i

void del() //5 { cout<<\请输入你要删除的人员总类:\\n\\n\学生\\n\专任教师\\n\行政教师\ int x; cin>>x; void del_stu(); void del_full(); void del_clerical(); switch(x) { case 1: del_stu();break;

case 2: del_full();break; case 3: del_clerical();break; default: { cout<<\输入错误,请重新输入\ add(); getchar(); } } }

void del_stu() { cout<<\请输入你要删除的学生的编号:\ int x; int i; cin>>x; for(i=0;i

void del_full() { cout<<\请输入你要删除的专任教师的编号:\ int x; int i; cin>>x; for(i=0;i

void del_clerical() {

cout<<\请输入你要删除的行政教师的编号:\ int x; int i; cin>>x; for(i=0;i

void show_group()//6 { int i; char a[30]=\软件\ cout<<\信息工程系:\\n\ for(i=0;i

{ if(!strcmp(cs[i].information,\自动化\ cs[i].show(); } cout<

void show1()//7 { cout<<\请输入姓名:\\n\ char a[30]; int i; cin>>a; for(i=0;i

{ if(!strcmp(cs[i].name,a)) cs[i].show(); } cout<

void save()//8 { int i; ofstream out; out.open(\数据.txt\ ofstream biaozhi; biaozhi.open(\标志.txt\ biaozhi<

本文来源:https://www.bwwdw.com/article/5qxw.html

Top