您好,欢迎来到抵帆知识网。
搜索
您的当前位置:首页c++实现学籍信息管理系统实训报告

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()函数,整合前面的功能模块,完成整个系

代码通过 代码通过 代码通过 代码通过 代码通过 同上 成功运行系统 统 第10天 答辩 按照要求完成任务,阐述清楚。 格式满足相关文档要求 第11天 撰写实训报告 五、考核指标及成绩评定

实训成绩由下面构成:

平时成绩(10%)+作品(70%)+实训报告(20%)=总评成绩 作品成绩评定标准: 1、全部完成90-100 2、主要功能完成70-90 3、部分功能完成60-70 4、少部分完成40-60 5、几乎没做0-40

完 成 期 限: 年 月 日 指导教师签章: 专业负责人签章: 教学院长签章

年 月 日

目 录

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 附录(源代码)

正 文

1 实训简介 1.1实训任务

对程序设计的基本知识与基本技能有进一步的掌握,能用基本的语言以自己的逻辑实现自定义的功能来进行小型应用程序开发。通过本次实训培养学生适应岗位需要,分析问题、解决问题的基本能力,以及团队合作精神。

1.2题目介绍

设计一个基于线性顺序排列的vector动态数组的学生学籍管理系统,能实现对学生信息进行录入,增加,修改,删除,查询,插入,排序和输出等基本操作。

1.3主要内容

管理系统应该实现以下功能:

1、 能录入学生的基本信息,包括学号,姓名,性别,年龄,院系,高数成绩,大英成绩,专业课成绩。

2、 能在屏幕上以列表的方式输出所有学生的信息 3、 能以文件形式保存学生信息。

4、 能批量增加学生信息与插入任意位置学生信息 5、 能根据输入的学号从动态数组中删除学生的记录。

6、 能根据输入的学号查询学生,并进行任意各项信息或者整体信息的修改。 7、能实现排序功能,根据计算得出的平均成绩以降序排序。

1.4 基本要求

1.素质要求

以积极认真的态度对待本次实训,遵章守纪,团队协作。善于发现问题,分析问题,解决问题,努力培养自己的工作能力。 2.知识要求

熟悉C语言的集成开发环境的使用,以及C语言的数据类型、语法、基本结构等。熟练掌握C语句的功能、用法以及函数的调用使用和头文件的使用等。

1

3.能力要求

学生应具有一定的项目分析能力、任务分解能力、组织实施能力以及理论练习实际应用的能力。

学生应具有一定的查阅教材、各类相关资料及工具书的能力,进而养成自我学习的习惯。通过本次实训使学生基本能够把握C语言的精髓,并能够熟练使用C语言编写简单的程序和通过实际的分析、理论练习实际能够编制出现实生活或模拟现实生活中简单的、常见的系统。

2 整体设计流程

2.1 整体设计思路

2

2.2 设计流程 2.2.1需求分析阶段:

1、能录入学生的基本信息,包括学号,姓名,性别,年龄,院系,高数成绩,大英成绩,专业课成绩。

2、 能在屏幕上以列表的方式输出所有学生的信息 3、 能以文件形式保存学生信息。

4、 能批量增加学生信息与插入任意位置学生信息 5、 能根据输入的学号从动态数组中删除学生的记录。

6、 能根据输入的学号查询学生,并进行任意各项信息或者整体信息的修改。 7、 能实现排序功能,根据计算得出的平均成绩以降序排序

2.2.2逻辑设计阶段

1、创建学生个体类class student(),以vector动态数组存储学生对象信息, 2、定义能对学生信息数据操作的增删改查等方法。 3、在main()中调用定义的各种方法进行功能的实现。

2.3 包含的模块

根据项目的开发要求,本系统划分成六个主要功能模块:录入学生信息模块、修改

学生信息模块、输出学生信息模块、删除学生信息模块、查询学生信息模块、插入学生信息模块。系统功能机构图如下:

3

学籍管理系统 录输删 入出除 学学学 生生生 信信信 息 息 息 屏存 幕到

列文 表本

打文 印 件

查排询序学学生生信信息 息 4

插修入改学学生生信信息 息 任直选接一修项改修全改 部

2 详细设计以及设计的实现 主函数设计:

开始 显示主菜单 接收用户选择 choose 创建学生信 息 浏览学生信息 保存学生信息 增加学生信息 删除学生信息 修改学生信息 查询学生信息 排序平均成绩 插入学生信息 1 2 3 4 5 6 7 8 9 Y Choose!=1-9 N

结束 5

3.1.录入学生信息模块的设计

基本逻辑:

1.通过stringinput()中的cin>>实现从键盘读入数据赋值操作以及如何计算平均成绩。 2. 通过create()中的count<<实现屏幕上的\"请以以下顺序输入信息(共9个),以空格或回车隔开\" \"学号, 姓名, 性别, 年龄, 院系, 高数,大英,专业课\",并调用stringinput()方法实现学生信息的录入。

效果展示:

3.2.输出学生信息模块的设计

1.从屏幕上展示学生信息 基本逻辑:

通过printheader()与printdata()定义在屏幕上分别打印出学生信息列表的表头以及表中各项数据。

然后通过disp()调用以上两个函数实现输出。 效果展示:

2.保存到文件中输出学生信息

6

基本逻辑:

在save()方法中利用c++中的ofstream文件输出流来实现将学生信息写入到指定路径的文本数据中。 效果展示:

3.3.修改学生信息模块的设计

基本逻辑图:

7

效果展示:

3.4.添加学生信息模块的设计

1.指定位置插入学生信息 逻辑图:

效果展示:

8

2.直接增加一条学生数据

逻辑图:

效果图:

9

3.5.查询学生信息模块的设计逻辑图:

return;

}

} }

cout << \"未找到该学号,查询失败!\" << endl;

效果展示:

10

3.6.排序学生信息模块的设计

基本逻辑:

在selectSort()函数中遍历vector对象student,并比较其average字段,使成绩按照升序排列。 效果展示:

3.7.删除学生信息模块的设计

效果展示:

11

4 总结

本系统在Visual Studio2010下编译调试通过,可顺利运行,各项功能达到设计要求。本系统程序由一个.h头文件和一个.cpp源文件构成。采用分模块的方法进行编译,即完成一个函数功能模块就编译一个功能模块,最后再进行整体编译并产生可执行文件de.exe。

5 参考文献

[1] 杨路明,C语言程序设计教程.北京:北京邮电大学出版社,2005(2009.7重印) [2] 谭浩强,C++程序设计. 北京:清华大学出版社,2004.6

[3] 杨路明,C语言程序设计上机指导与习题选解.北京:北京邮电大学出版社,2005

6 附录(源代码) Student.h

#ifndef VECTOR #define VECTOR #include using namespace std; #endif

class student {

char stu_id[20]; char name[10];

char department[20]; char sex[3]; short age;

float point_math; float point_english; float point_program; double average; public:

static void printheader(); void stringinput();

12

void printdata();

friend bool operator==(const student &,const student &); friend class students; };

class students {

vector mark; public:

void create(); void disp(); void save(); void insert(); void add(); void del(); void modify(); void quran(); void selectSort(); };

void init(students &);

Student.cpp

#include\"student.h\" #ifndef VECTOR #include using namespace std; #endif

#include #include #include #include #include

void student::printheader() {

cout<13

<void student::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; }

void student::printdata() {

cout<stu_id <name <sex <age <department <point_math <point_english <point_program <average <bool operator==(const student &s1,const student &s2) {

if(s1.stu_id == s2.stu_id) { return true; } else { return false; } }

void students::create() {

14

int num = 0; int i = 0; student s;

cout << \"请输入学生数量: \"; cin >> num;

cout << \"请以以下顺序输入信息(共9个),以空格或回车隔开\" << endl;

cout << \"学号, 姓名, 性别, 年龄, 院系, 高数,大英,专业课\" <cout << \"输入完毕,成功创建 \" << num <<\"个学生信息记录!\" << endl; }

void students::disp() {

student::printheader();

for(auto it = mark.begin(); it != mark.end(); it++) { it->printdata(); } }

void students::save() {

string filename;

cout<<\"请输入需要有效的文件名(可指定路径,必须包含后缀名)\"<> filename; ofstream ous;

ous.open(filename); ous<for(auto it = mark.begin(); it!=mark.end(); ++it)

15

{ it->average = (it->point_math + it->point_english + it->point_program)/3; ous<stu_id <name <sex <age <department <point_math <point_english <point_program <average <ous.close();

cout<<\"保存成功!\"<void students::add() {

int num = 0; int i = 0; student s;

cout << \"请输入增加的学生数量: \"; cin >> num;

cout << \"请以以下顺序输入信息(共9个),以空格或回车隔开\" << endl;

cout << \"学号, 姓名, 性别, 年龄, 院系, 高数,大英,专业课\" <cout << \"输入完毕,成功增加 \" << num <<\"个学生信息记录!\" << endl; }

void students::del() {

char key[20];

cout << \"请输入要删除的学生学号!\" << endl; cin >> key;

for(auto it = mark.begin(); it != mark.end(); it++) {

16

if(!strcmp(key,it->stu_id)) { mark.erase(it); cout << \"成功删除!\" << endl; return; } }

cout << \"未找到该学号,删除失败!\" << endl; }

void students::modify() {

char key[20];

cout << \"请输入要更新的学生学号: \"; cin >> key;

for(auto it = mark.begin(); it != mark.end(); it++) { if(!strcmp(key,it->stu_id)) { char str[20]; char c; cout << \"请输入需更新的项,多选以逗号隔开\" << endl; cout << \"1,学号,2,姓名,3,性别,4,年龄,5,院系,6,高数,7,大英,8,专业课,0,全部\" <> str; for(int i = 0; i < strlen(str); 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;

17

case '8': cout << \"请输入程式成绩: \"; cin>>it->point_program; break; case '0': cout << \"请以以下顺序输入更新信息(共8个),以空格或回车隔开\" << endl;

cout << \"学号, 姓名, 性别, 年龄, 院系, 高数,大英,专业课\" <stringinput(); break; } cout << \"更新成功!\" << endl; } return; } }

cout << \"未找到该学号,更新失败!\" << endl; }

void students::quran() {

char key[20];

cout << \"请输入要查询的学生学号: \"; cin >> key;

for(auto it = mark.begin(); it != mark.end(); it++) { if(!strcmp(key,it->stu_id)) { student::printheader(); it->printdata(); cout << \"查询成功!\"; return; } }

cout << \"未找到该学号,查询失败!\" << endl; }

void students::selectSort() {

student temp;

for(auto it = mark.begin(); it < mark.end(); it++) { for(auto is = it+1; is != mark.end(); is++) { if(it->average > is->average) {

18

temp = (*it); (*it) = (*is); (*is) = temp; } } }

cout << \"根据平均成绩排序完成!\" << endl; }

void students::insert() {

int i = 0; student s;

cout << \"请输入要插入的位置: \"; cin >> i;

while(i>(mark.size()+1)||i <= 0) { cout << \"输入位置不合法,请重新输入!\" << endl; cin >> i; }

auto it = mark.begin() + (i-1);

cout << \"请以以下顺序输入信息(共9个),以空格或回车隔开\" << endl;

cout << \"学号, 姓名, 性别, 年龄,院系, 高数,大英,专业课\" <cout << \"插入成功!\" <void init(students &s) {

char key;

cout<<\"----------------------------------------------\"<cout<<\" 欢迎进入学籍信息管理系统 \"<>key; switch(key)

19

{ case '1': s.create();break; case '2': s.disp();break; case '3': s.save();break; case '4': s.add();break; case '5': s.del();break; case '6': s.modify();break; case '7': s.quran();break; case '8': s.selectSort();break; case '9': s.insert(); break; default: cout<<\"无效输入,请重新输入!\"<int main() {

students s; init(s); }

20

实训成绩评定表

评定项目 内 容 满分 评分 总分 10 40 计情况 定的深度,分析解决问题的能力较强。 设计方案正确、表达清楚;设计思路、实验说明书质(论证)方法科学合理;达到课程设计任务40 量 书规定的要求;图、表、文字表达准确规范,上交及时。 回答问题回答问题准确,基本概念清楚,有理有据,10 情况 总成绩 有一定深度。 采用五级分制:优、良、中、及格、不及格 学习态度 学习认真,态度端正,遵守纪律。 答疑和设认真查阅资料,勤学好问,提出的问题有一指导教师评语: 签名: 年 月 日 21

22

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务