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 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<
正在阅读:
C++课设高校信息管理系统03-10
2019搞笑句子大全笑死人 - 经典语句03-09
从希腊神话中看中希民族精神的差异05-01
建筑三级安全教育材料06-11
从我做起,为建设社会主义法治国家添砖加瓦09-21
复摆振动研究实验论文周久龙(0102)06-17
江苏省沭阳高级中学学案 2-2 第二章 推理与证明 2.1.1 合情推理-------类比推理教师版08-27
运动会的五年级日记3篇10-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- C++
- 管理系统
- 高校
- 信息
- 尔雅网络 - 形象管理课程参考答案
- 旅游地理学 - - 保继刚 - 楚义芳
- 苏教版2017-2018年小学语文三年级上册练习2精品教学设计
- 塞罕坝防沙治沙的成功之路
- 新疆和田“举、查、改、曝”四措并举全面推进“清剿火患”战役纵深开展
- 水泥企业安全生产标准化(四)法律法规与安全制度 - 图文
- 心肺复苏试题
- 2019届高考地理重要考点练习卷:经纬网和地图 Word版含答案
- 小学语文朗读教学课题研究
- SQLState=08001错误解决对策
- 角谷猜想的解决思路
- 《将相和》教学反思
- 《印刷色彩学基础》实训报告
- 2014安徽中考数学试题及答案(word版) - 图文
- 团史选择题及参考答案(陈潜)
- 八年级数学下学期期中考试试卷(模拟)2014(4)
- 小学三年级书法写字课精品教案及计划(全册)
- 员工异常行为管理办法
- 中国网络广告发展中存在的问题毕业论文 - 图文
- 展开式二级斜齿圆柱齿轮减速器毕业设计