c++实现学籍信息管理系统实训报告.docx
《c++实现学籍信息管理系统实训报告.docx》由会员分享,可在线阅读,更多相关《c++实现学籍信息管理系统实训报告.docx(66页珍藏版)》请在冰豆网上搜索。
c++实现学籍信息管理系统实训报告
.
实训任务书
一、题目
1、电话簿管理系统
2、商品销售管理系统
3、基于内存的学籍管理系统(以windows系统实现为主,尝试Linux平台下的程序实现)
二、实训的性质和任务
1、巩固和强化学生的程序设计基本知识和基本技能,尤其是C语言的基本数据类型、构造类型、函
数、指针、文件等等方面的基本知识和技能。
2、培养和训练学生综合利用所学基本知识和基本技能进行小型应用程序开发的技能。
3、培养学生适应岗位需要,独立分析问题、解决问题的基本能力,以及团队合作精神。
三、实训的基本要求
通过本次实训,学生应达到以下几个方面的要求:
1、素质要求
以积极认真的态度对待本次实训,遵章守纪,团队协作。
善于发现问题,分析问题,解决问题,努力培养自己的独立工作能力。
2、知识要求
熟练账务C语言的集成开发环境的使用,以及C语言的数据类型、语法、基本结构等。
熟练掌握C语句的功能、用法以及函数的调用使用和头文件的使用等。
3、能力要求
学生应具有一定的项目分析能力、任务分解能力、组织实施能力以及理论练习实际应用的能力。
学生应具有一定的查阅教材、各类相关资料及工具书的能力,进而养成自我学习的习惯。
通过
本次实训使学生基本能够把握C语言的精髓,并能够熟练使用C语言编写简单的程序和通过实际的分析、理论练习实际能够编制出现实生活或模拟现实生活中简单的、常见的系统。
四、实训内容及要求
天/
日
任务描述
通过标准
期
第1天
说明系统功能,明确课题任务与涉及的要求、分配具体的任
学生理解题目
务。
分析实训内容,讲解相关知识,引导学生入门。
第2天
学生具体分析第一个实训题目,
明确思路和任务,并可以查
画出相关流程图
询相关书籍、资料,设计出每一个模块的流程图;
理解并设
计相关的数据类型定义。
第3
天
编写printheader()
、printdata()
两个函数
代码通过
第4
天
编写Disp()、stringinput()
两个函数
代码通过
第5
天
编写Locate()、Add()两个函数,完成定位和添加功能
代码通过
第6天
编写Quran()、Del()两个函数,完成查询和删除功能
代码通过
第7
天
编写Insert()、Modify()函数,实现插入和修改功能
代码通过
第8
天
编写Save()、SelectSort
()两个函数,实现存盘和排序
同上
功能
第9
天
编写函数main()
函数,整合前面的功能模块,完成整个系
成功运行系统
word范文
.
统
第10
天
答辩
按照要求完成任
务,阐述清楚。
第11
天
撰写实训报告
格式满足相关文档
要求
五、考核指标及成绩评定
实训成绩由下面构成:
平时成绩(10%)+作品(70%)+实训报告(20%)=总评成绩作品成绩评定标准:
1、全部完成90-100
2、主要功能完成70-90
3、部分功能完成60-70
4、少部分完成40-60
5、几乎没做0-40
完成期限:
年月日
指导教师签章:
专业负责人签章:
教学院长签章
年月日
word范文
.
1实训简介
1.1实训任务
1.2题目介绍
1.3主要内容
1.4基本要求
2整体设计流程
2.1整体设计思路
2.2设计流程
2.3包含的模块
3详细设计以及设计的实现
3.1.录入信息模块的设计与实现
3.2.输出信息的设计与实现
3.3.修改信息模块的设计与实现
3.4.插入信息的设计与实现
3.5查询信息的设计与实现
3.6排序信息的设计与实现
3.7删除信息的设计与实现
4总结
5参考文献
6附录(源代码)
word范文
.
正文
1实训简介
1.1实训任务
对程序设计的基本知识与基本技能有进一步的掌握,能用基本的语言以自己的逻辑
实现自定义的功能来进行小型应用程序开发。
通过本次实训培养学生适应岗位需要,独
立分析问题、解决问题的基本能力,以及团队合作精神。
1.2题目介绍
设计一个基于线性顺序排列的vector动态数组的学生学籍管理系统,能实现对学
生信息进行录入,增加,修改,删除,查询,插入,排序和输出等基本操作。
1.3主要内容
管理系统应该实现以下功能:
1、能录入学生的基本信息,包括学号,姓名,性别,年龄,院系,高数成绩,大英成
绩,专业课成绩。
2、能在屏幕上以列表的方式输出所有学生的信息
3、能以文件形式保存学生信息。
4、能批量增加学生信息与插入任意位置学生信息
5、能根据输入的学号从动态数组中删除学生的记录。
6、能根据输入的学号查询学生,并进行任意各项信息或者整体信息的修改。
7、能实现排序功能,根据计算得出的平均成绩以降序排序。
1.4基本要求
1.素质要求
以积极认真的态度对待本次实训,遵章守纪,团队协作。
善于发现问题,分析问题,
解决问题,努力培养自己的独立工作能力。
2.知识要求
熟悉C语言的集成开发环境的使用,以及C语言的数据类型、语法、基本结构等。
熟练掌握C语句的功能、用法以及函数的调用使用和头文件的使用等。
word范文
.
3.能力要求
学生应具有一定的项目分析能力、任务分解能力、组织实施能力以及理论练习实际
应用的能力。
学生应具有一定的查阅教材、各类相关资料及工具书的能力,进而养成自我学习的
习惯。
通过本次实训使学生基本能够把握C语言的精髓,并能够熟练使用C语言编写简
单的程序和通过实际的分析、理论练习实际能够编制出现实生活或模拟现实生活中简单
的、常见的系统。
2整体设计流程
2.1整体设计思路
word范文
.
2.2设计流程
2.2.1需求分析阶段:
1、能录入学生的基本信息,包括学号,姓名,性别,年龄,院系,高数成绩,大英
成绩,专业课成绩。
2、能在屏幕上以列表的方式输出所有学生的信息
3、能以文件形式保存学生信息。
4、能批量增加学生信息与插入任意位置学生信息
5、能根据输入的学号从动态数组中删除学生的记录。
6、能根据输入的学号查询学生,并进行任意各项信息或者整体信息的修改。
7、能实现排序功能,根据计算得出的平均成绩以降序排序
2.2.2逻辑设计阶段
1、创建学生个体类classstudent(),以vector动态数组存储学生对象信息,
2、定义能对学生信息数据操作的增删改查等方法。
3、在main()中调用定义的各种方法进行功能的实现。
2.3包含的模块
根据项目的开发要求,本系统划分成六个主要功能模块:
录入学生信息模块、修改
学生信息模块、输出学生信息模块、删除学生信息模块、查询学生信息模块、插入学生
信息模块。
系统功能机构图如下:
word范文
.
学籍管理系统
录
输
删
查
排
插
修
入
出
除
询
序
入
改
学
学
学
学
学
学
学
生
生
生
生
生
生
生
信
信
信
信
信
信
信
息
息
息
息
息
息
息
屏
存
任
直
幕
到
选
接
列
文
一
修
表
本
项
改
打
文
修
全
印
件
改
部
word范文
.
2详细设计以及设计的实现主函数设计:
开始
显示主菜单
接收用户选择
choose
创
浏
保
建
览
存
学
学
学
生
生
生
信
信
信
息
息
息
增
删
修
查
排
插
加
除
改
询
序
入
学
学
学
学
平
学
生
生
生
生
均
生
信
信
信
信
成
信
息
息
息
息
绩
息
123456789
Y
Choose!
=1-9
word范文
.
N
结束
3.1.录入学生信息模块的设计
基本逻辑:
1.通过stringinput()中的cin>>实现从键盘读入数据赋值操作以及如何计算平均成绩。
2.通过create()中的count<<实现屏幕上的"请以以下顺序输入信息(共9个),以空格或回车隔开""学号,姓名,性别,年龄,院系,高数,大英,专业课",并调用
stringinput()方法实现学生信息的录入。
效果展示:
3.2.输出学生信息模块的设计
1.从屏幕上展示学生信息基本逻辑:
通过printheader()与printdata()定义在屏幕上分别打印出学生信息列表的表头以及
表中各项数据。
然后通过disp()调用以上两个函数实现输出。
效果展示:
word范文
.
2.保存到文件中输出学生信息基本逻辑:
在save()方法中利用c++中的ofstream文件输出流来实现将学生信息写入到指定路径的文本数据中。
效果展示:
3.3.修改学生信息模块的设计
word范文
.
基本逻辑图:
效果展示:
3.4.添加学生信息模块的设计
1.指定位置插入学生信息逻辑图:
word范文
.
效果展示:
word范文
.
2.直接增加一条学生数据逻辑图:
效果图:
、
word范文
.
3.5.查询学生信息模块的设计逻辑图:
return;
}
}
cout<<"未找到该学号,查询失败!
"<}
效果展示:
3.6.排序学生信息模块的设计
基本逻辑:
在selectSort()函数中遍历vector对象student,并比较其average字段,使成绩按照升序排列。
效果展示:
word范文
.
3.7.删除学生信息模块的设计
效果展示:
word范文
.
4总结
本系统在VisualStudio2010下编译调试通过,可顺利运行,各项功能达到设计要求。
本系统程序由一个.h头文件和一个.cpp源文件构成。
采用分模块的方法进行编译,即完成一个函数功能模块就编译一个功能模块,最后再进行整体编译并产生可执行文件de.exe。
5参考文献
[1]杨路明,C语言程序设计教程.北京:
北京邮电大学出版社,2005(2009.7重印)
[2]谭浩强,C++程序设计.北京:
清华大学出版社,2004.6
[3]杨路明,C语言程序设计上机指导与习题选解.北京:
北京邮电大学出版社,2005
6附录(源代码)
Student.h
#ifndefVECTOR
#defineVECTOR
#include
usingnamespacestd;
#endif
classstudent
{
charstu_id[20];
charname[10];
chardepartment[20];
charsex[3];
shortage;
floatpoint_math;
floatpoint_english;
floatpoint_program;
doubleaverage;
public:
staticvoidprintheader();
voidstringinput();
voidprintdata();
friendbooloperator==(conststudent&,conststudent&);
friendclassstudents;
};
word范文
.
classstudents
{
vectormark;
public:
voidcreate();
voiddisp();
voidsave();
voidinsert();
voidadd();
voiddel();
voidmodify();
voidquran();
voidselectSort();
};
voidinit(students&);
Student.cpp
#include"student.h"
#ifndefVECTOR
#include
usingnamespacestd;
#endif
#include
#include
#include
#include
#include
voidstudent:
:
printheader()
{
cout<<<<<<<<<<}
word范文
.
voidstudent:
:
stringinput()
{
cin>>this->stu_id>>this->name
>>this->sex>>this->age
>>this->department
>>this->point_math>>this->point_english
>>this->point_program;
this->average=(this->point_math+this->point_english
+this->point_program)/3.0;
}
voidstudent:
:
printdata()
{
cout<stu_id
<name
<sex
<age
<department
<point_math
<point_english
<point_program
<average
<}
booloperator==(conststudent&s1,conststudent&s2)
{
if(s1.stu_id==s2.stu_id)
{
returntrue;
}
else
{
returnfalse;
}
}
voidstudents:
:
create()
{
intnum=0;
inti=0;
students;
cout<<"请输入学生数量:
";
word范文
.
cin>>num;
cout<<"请以以下顺序输入信息(共9个),以空格或回车隔开"<cout<<"学号,姓名,性别,年龄,院系,高数,大英,专业课"<{
cout<<"请输入第"<<(i+1)<<"个学生信息:
"<s.stringinput();
mark.push_back(s);
i++;
}
cout<<"输入完毕,成功创建"<"<}
voidstudents:
:
disp()
{
student:
:
printheader();
for(autoit=mark.begin();it!
=mark.end();it++)
{
it->printdata();
}
}
voidstudents:
:
save()
{
stringfilename;
cout<<"请输入需要有效的文件名(可指定路径,必须包含后缀名)"<>filename;
ofstreamous;
ous.open(filename);
ous<<<<<<<<<<for(autoit=mark.begin();it!
=mark.end();++it)
{
it->average=(it->point_math+it->point_english+it->point_program)/3;
ous<stu_id
word范文
.
<name
<sex
<age
<department
<point_math
<point_english
<point_program
<average
<}
ous.close();
cout<<"保存成功!
"<}
voidstudents:
:
add()
{
intnum=0;
inti=0;
students;
cout<<"请输入增加的学生数量:
";
cin>>num;
cout<<"请以以下顺序输入信息(共9个),以空格或回车隔开"<cout<<"学号,姓名,性别,年龄,院系,高数,大英,专业课"<{
cout<<"请输入第"<<(i+1)<<"个学生信息:
"<mark.push_back(s);
i++;
}
cout<<"输入完毕,成功增加"<"<}
voidstudents:
:
del()
{
charkey[20];
cout<<"请输入要删除的学生学号!
"<cin>>key;
for(autoit=mark.begin();it!
=mark.end();it++)
{
if(!
strcmp(key,it->stu_id))
{
mark.erase(it);
word范文
.
cout<<"成功删除!
"<return;
}
}
cout<<"未找到该学号,删除失败!
"<}
voidstudents:
:
modify()
{
charkey[20];
cout<<"请输入要更新的学生学号:
";
cin>>key;
for(autoit=mark.begin();it!
=mark.end();it++)
{
if(!
strcmp(key,it->stu_id))
{
charstr[20];
charc;
cout<<"请输入需更新的项,多选以逗号隔开"<cout<<"1,学号,2,姓名,3,性别,4,年龄,5,院系,6,高数,7,大英,8,专业课,0,全部"<cin>>str;
for(inti=0;i{
c=str[i];
switch(c)
{
case'1'
:
cout<<
"请输入学号:
";cin>>it->stu_id;
break;
case'2'
:
cout<<
"请输入姓名:
";cin>>it->name;
break;
case'3'
:
cout<<
"请输入性别:
";cin>>it->sex;
break;
case'4'
:
cout<<
"请输入年龄:
";cin>>it->age;
break;
case'5'
:
cout<<
"请输入院系:
";cin>>it->department;break;
case'6'
:
cout<<
"请输入数学成绩:
";cin>>it->point_math;
break;
case'7'
:
cout<<
"请输入英语成绩:
";cin>>it->point_english;
break;
case'8'
:
cout<<
"请输入程式成绩:
";cin>>it->point_program;
break;
case'0'
:
word范文
.
c