《面向对象程序设计(C++)学生信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计(C++)学生信息管理系统设计.docx(18页珍藏版)》请在三一办公上搜索。
1、面向对象程序设计( C+ )期末设计报告题目:学生信息管理系统 学院: 信息科学与工程学院 专业: 数字媒体技术专业 班级: 2014 级职务姓名分工情况组长组员设计日期:目录一 项目需求及分析 2二 功能描述 2三 程序流程 4四 操作指南 4五 程序代码 11项目需求及分析学生信息是学校管理中一项繁琐的工作。 管理人员需要建立学生 的学籍, 汇总每学期没有拿到规定学分的学生, 及这些学生的详细情 况;学生完成一门课程的学习后,教师学要录入学生的考试成绩,计 算平均成绩, 汇总各分数段的人数; 学生需要查询已结业的各门课程 的成绩; 班主任需要查询本班学生的学习情况, 包括哥们课程的平均 成
2、绩和每个学生的考试通过情况。 为此,设计一套实用的学生信息管 理系统就可以大大简化管理人员、 班主任和任课教师的工作, 方便学 生查询自己的学习情况。功能描述它涵盖了现代校园中绝大部分的日常应用和管理功能, 并能有机 的集成学校内现有的各类应用系统。 与以往任何有关的学校管理信息 系统不同,本系统提供了更多的集成性和可管理性。 系统的成功实施, 可以形成校园内规范一致的数据集成和共享环境, 达成真正意义上的 资源共享,为学校管理提供有力的支持。学生信息管理 :学生档案管理是盛远学生综合管理系统的基础模 块,主要包括在校学生档案管理、 贫困生档案管理、 勤工助学管理等。 在校学生档案管理将帮助学
3、校完成日常在校学生的管理工作, 可直接 处理新生入学、 在校生编辑处理以及查看和统计, 同时具有引出标准 Excel 格式数据,学生学籍卡打印、学生证卡打印,树型结构查询等 功能。贫困生档案管理提供了高校关于贫困生的特殊管理。 贫困生可根 据在校学生档案提取生成;贫困生统计可以按照贫困程度、男女、地 域、类别进行统计;还提供了打印,并且可输出 Excel 格式数据。贫 困生记录可直接生成勤工助学申请表。勤工助学管理提供了在校学生利用日常业余时间或者节假日通 过校内或者校外提供的岗位进行工作, 并获得一定报酬这一功能。 勤 工助学也有利于提高学生的社会工作经验和个人素质发展。 而本功能 将帮助学
4、校完成勤工助学的日常监督、跟踪以及管理工作。三 程序流程程序流程描述二、程序流程图进入系统录入学生信息修改学生信息添加一个信息查询学生信息删除一个信息显示学生信息四 操作指南一、主菜单(运行结果截图)程序运行后进入主菜单,如下图所示1.2 初始化信息,第一次对信息的录入1.3 添加学生信息1.4 删除某学生信息1.5 修改某学生信息1.6 查询某学生信息1.7 显示全部学生信息五 程序代码/* 把 StudentData.cpp( 源代码 ) 和 student.txt( 数据存放处 ) 放在同 一个文件夹下 */#include #include #include #include #inc
5、lude using namespace std;/ 最多提供 50 个学生的数据,可根据需要进行更改 const int MAX = 50;int count = 0;/ 用来统计学生人数class Student/ 初始化信息,第一次对信息的录入/ 添加学生信息进行 数据的操作,方便再重写进磁盘Read(string no,string name,string/ 判断 num 是否在学生信息数据库中 int 型的返回值)/ 删除某学生信息/ 修改某学生信息/ 查询某学生信息/ 显示全部学生信息 public: void Set(); void Add();/ 从磁盘读取数据以便 frien
6、d voidsex,string special,string clas);int Judge(string num); (注意它有一个参数,并且有一个 void Delete(); void Change();void Search(); void Display();private:/m_指的是成员变量( membe)rstring m_no; string m_name; string m_sex; string m_special; string m_clas;void Student:Set()/ 打开文件string no, name, sex, special, clas;ofs
7、tream outfile(student.txt);if(!outfile)cerr open errorendl; exit(1); / 退出程序cout 当学号输入为 0 时, 停止输入 !endl;cout 请依次输入学生的学号 , 姓名, 性别, 专业, 班级:endl; for(int i=0; iMAX; i+)cout 第count+1 个学生 :no;if(no = 0) break; / 当输入的学号是 0 时,停止录 入cinnamesexspecialclas; count+;m_no = no; outfilem_not; / 每录入一个学号,写进磁盘保存, 以下同理
8、m_name = name; outfilem_namet;m_sex = sex; outfilem_sext;m_special = special; outfilem_specialt;m_clas = clas; outfilem_clasendl;outfile.close();/ 添加学生信息void Student:Add()string no, name, sex, special, clas;/ 以追加的方式录入信息,直接将信息追加到以前文件的末尾ofstream outfile(student.txt,ios:app);if(!outfile)cerr open error
9、endl; exit(1);count+; / 添加一个学生信息,当然 count 要 +1 cout 请依次输入要添加的学生学号, 姓名, 性别, 专业, 班 级:nonamesexspecialclas;m_no = no;outfilem_not;m_name = name;outfilem_namet;m_sex = sex; outfilem_sext;m_special = special; outfilem_specialt;m_clas = clas;outfilem_clasendl;outfile.close();cout 已添加成功 !endl;/ 从磁盘读取数据void
10、 Read(string no,string name,string sex,string special,string clas)ifstream infile(student.txt,ios:in);if(!infile)cerr open errorendl; exit(1);for(int i=0; inoinameisexispecialiclasi; infile.close();/ 判断某学号的学生是否在数据库中int Student:Judge(string num)string noMAX, nameMAX, sexMAX, specialMAX, clasMAX;Read(
11、no, name, sex, special, clas);/ 调 用 Read() 函数,获取数据,以便等下进行相关数据的判断for(int i=0; icount; i+)if(num = noi)return i; / 如果存在,返回其下标break;return -1; / 否则,返回 -1/ 删除某学生信息void Student:Delete()string num, noMAX, nameMAX, sexMAX, specialMAX, clasMAX;Read(no, name, sex, special, clas);/ 读取学生所有数据,coutnum;int k = Ju
12、dge(num); / 定义一个 k 来接收 Judge() 的返回 值,等下用来判断该 num是否存在if(k != -1)/ 如果k不等于-1, 表示要删除的学生存在ofstream outfile(student.txt);if(!outfile)cerr open errorendl; exit(1);for(int i=0; icount; i+) if(i != k)/ 把下标不等于 K(即除了要删的学生外)其余的数据重新写入磁盘保存outfilenoit;outfilenameit;outfilesexit;outfilespecialit; outfileclasiendl;o
13、utfile.close();count-;/ 删除一个学生,人数 -1cout 删除成功 !endl;elsecout 该数据库没有此学生 !endl;void Student:Change()string num, noMAX, nameMAX, sexMAX, specialMAX, clasMAX;coutnum;int k = Judge(num);if(k != -1)Read(no, name, sex, special, clas);/ 读 取 学生 所有数据,cout 请依次输入修改后的学生学号 , 姓名 , 性别 , 专业 , 班 级:noknameksexkspecial
14、kclask; / 把下标是 k 的学生进行修改ofstream outfile(student.txt,ios:out);if(!outfile)cerr open errorendl;exit(1);for(int i=0; icount; i+)/ 改完后,回写进磁盘保存outfilenoit; outfilenameit; outfilesexit;outfilespecialit; outfileclasiendl;outfile.close();cout 修改成功 !endl;elsecout 该数据库没有此学生 !endl;void Student:Search()string
15、num, noMAX, nameMAX, sexMAX, specialMAX, clasMAX;Read(no, name, sex, special, clas);coutnum;int k = Judge(num);if(k != -1) / 找到该学生就打印出其信息cout 学号t 姓名 t 性别t 专业t 班级endl; coutnokt;coutnamekt; coutsexkt; coutspecialkt; coutclaskendl;elsecout 该数据库没有此学生 !endl;/ 显示学生的所有信息void Student:Display()string noMAX,
16、nameMAX, sexMAX, specialMAX, clasMAX;Read(no, name, sex, special, clas);/ 先读取cout 学号t 姓名t 性别 t 专业 t 班级endl;for(int i=0; icount; i+) / 后打印 coutnoit; coutnameit; coutsexit;coutspecialit; coutclasiendl;int main()while(choice != 0)coutnttt- coutttt| 1. coutttt| 2. coutttt| 3. coutttt| 4. coutttt| 5. cou
17、tttt| 6. coutttt| 0./ 除非你选择退出,否则一直循环int choice = -1; Student s;学生信息管理系统 -nn; 录入学生信息 |n; 添加一个信息 |n; 删除一个信息 |n; 修改学生信息 |n; 查询学生信息 |n; 显示学生信息 |n; 退出 系统 |n;coutchoice;switch(choice) case 1:s.Set(); break;case 2: s.Add(); break;case 3: s.Delete(); break;case 4: s.Change(); break;case 5: s.Search(); break;case 6:s.Display();break; case 0:break;default:cout 你的选择有误 ! 请重新选择 !endl; break;return 0;