C实现简单的学生信息管理系统控制台程序_第1页
C实现简单的学生信息管理系统控制台程序_第2页
C实现简单的学生信息管理系统控制台程序_第3页
C实现简单的学生信息管理系统控制台程序_第4页
C实现简单的学生信息管理系统控制台程序_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/ StudentInformationSystem.cpp : Defines the entry point for the console application./#include "stdafx.h"#include <cstring>#include <iostream>#include <conio.h>#include<vector>#include<algorithm>class Studentprivate:char idNumber13; / 学号char name30; /姓名char ad

2、dress50; /地址char telephone14; / 电话号码int gradeMath; / 数学成绩int gradePhysics; /物理成绩int gradeEnglish; /英语成绩double gradeMaPhEgAverage; / 物数外平均int rankGrade; / 成绩排名int gradeClassmate; / 同学评分int gradeTeacher; / 老师评分int gradeEthic; / 道德评分double gradeAll; / 综合成绩int rankAll; / 综合排名public:Student(); / 默认构造函数vo

3、id Student_WritePersonalInformation(char *iD, char *nam, char *add, char *tel); /更改学生信息void Student_WriteMaPhEgGrade(int graMa, int graPh, int graEg); / 更改学生考试成绩void Student_WriteOtherGrade(int graCl, int graTe, int graEth); / 更改学生其他成绩void Student_DisplayInformation(); / 显示学生信息char *Student_ReadID()

4、;double Student_ReadGrade();double Student_ReadTotalGrade();int Student_ReadGradeRank();int Student_ReadTotalGradeRank();void Student_WriteGradeRank(int ranGr); / 更改学生成绩排名char *Student_ReadName();void Student_WriteTotalGradeRank(int ranAl); / 更改学生综合排名Student:Student() /默认构造函数strncpy_s(idNumber, &quo

5、t;000000000000",12); strncpy_s(name," 空 ",30);strncpy_s(address, "空 ", 50);strncpy_s(telephone, " 空 ", 14); / 电话号码gradeMath=0; / 数学成绩gradePhysics=0; / 物理成绩gradeEnglish=0; / 英语成绩gradeMaPhEgAverage=0; / 物数外平均rankGrade=0; / 成绩排名gradeClassmate=0; / 同学评分gradeTeacher=0;

6、/ 老师评分gradeEthic=0; / 道德评分gradeAll=0; / 综合成绩rankAll=0; / 综合排名void Student:Student_WritePersonalInformation(char *iD, char *nam, char *add, char *tel)strncpy_s(idNumber,iD,12);strncpy_s(name, nam, 30);strncpy_s(address, add,50);strncpy_s(telephone, tel, 14);void Student:Student_WriteMaPhEgGrade(int g

7、raMa, int graPh, int graEg)gradeMath = graMa;gradePhysics = graPh;gradeEnglish = graEg;gradeMaPhEgAverage = (gradeMath + gradePhysics + gradeEnglish) / 3;void Student:Student_WriteOtherGrade(int graCl, int graTe, int graEth)gradeClassmate = graCl;gradeTeacher = graTe;gradeEthic = graEth;gradeAll = g

8、radeMaPhEgAverage*0.6 + gradeClassmate*0.1 gradeEthic*0.1 + gradeTeacher*0.2; rankGrade = ranGr;void Student:Student_WriteGradeRank(int ranGr)void Student:Student_WriteTotalGradeRank(int ranAl) rankAll = ranAl;void Student:Student_DisplayInformation() using namespace std;cout << "" &

9、lt;< endl;cout << " 学生信息 " << endl;cout << " 姓名 :" << name << endl<< " 学号:" << idNumber << endl<< " 地址 :" << address << endl<< " 电话 :" << telephone << endl<<

10、 " 数学成绩 :" << gradeMath << endl<< " 物理成绩 :" << gradePhysics << endl<< " 英语成绩 :" << gradeEnglish << endl<< " 三科平均成绩 :" << gradeMaPhEgAverage << endl<< " 学习成绩排名 :" << rankGra

11、de << endl<< " 同学评价得分 :" << gradeClassmate << endl<< " 教师评价得分 :" << gradeTeacher << endl<< " 道德修养评分 :" << gradeEthic << endl<< " 综合成绩 :" << gradeAll << endl<< " 综合成绩排名 :&q

12、uot; << rankAll << endl; cout << "" << endl; char *Student:Student_ReadID() return idNumber;double Student:Student_ReadGrade()return gradeMaPhEgAverage;double Student:Student_ReadTotalGrade()return gradeAll;int Student:Student_ReadGradeRank()return rankGrade;return

13、rankAll;namespace studentInformationstd:vector<Student> studentVector;int flagStudentChoose=0;int flagStudentFound=1;char *Student:Student_ReadName()return name;同时定义了对数据的基/ 以上是基本数据结构的定义,本操作。定义完毕了,接下来是功能函数 void MainMenu();void EditMenu();void AddStudentPersonalInformation(int mode);void ModifyS

14、tudentInformation();void SearchStudent();void DeleteStudentInformation();void DisplayStudentInformation();void RankByGrade();void RankByTotalGrade();void RankByID();bool CmpGrade(Student student1,Student student2); / 这个函数的参数是两 个 Student 类的对象bool CmpTotalGrade(Student student1, Student student2);bool

15、 CmpID(Student student1, Student student2);void DisplayAllStudentInformation();/ 以 下 是 主 菜 单 界 面 函 数void MainMenu()int flagOperateInformation = 1;while (flagOperateInformation)using namespace std;cout << ""<< endl;cout << " 欢迎进入学生信息管理系统 V1.0." << endl <

16、< endl;cout << " 按下 1: 进入学生信息管理系统 ." << endl;cout << " 按下 0: 退出 ." << endl;cin >> flagOperateInformation;cin.clear();cout << endl;if (flagOperateInformation)EditMenu();义完毕/ 主 菜 单 界 面 函 数 定 cout << "" << endl;cout <&l

17、t; " 按下 1: 添加学生信息 ." << endl;/ 以 下 是 编 辑 界面函数void EditMenu()int flagContinueOperation = 1;while (flagContinueOperation)flagContinueOperation = 0;using namespace std;cout <<主菜单" << endl;cout << " 按下 2: 修改学生信息 ." << endl;cout << " 按下 3:

18、 删除学生信息 ." << endl;cout << " 按下 4: 显示学生信息 ." << endl;cout << " 按下 5: 按学号升序排序 " << endl;cout << " 按下 6: 读入已有信息(暂时没实现) " << endl;cout << " 按下 7: 将信息输出(暂时没实现) " << endl;cout << " 按下 8: 显示系统内所有学

19、生的信息 " << endl; cout << " 按下 0: 返回上一级 ." << endl;endl;cout << "" << endl <<cin >> flagContinueOperation;cin.clear();cout << endl;switch (flagContinueOperation)case 1:AddStudentPersonalInformation(1); break;case 2:ModifyStudentI

20、nformation(); break;case 3:DeleteStudentInformation(); break;case 4:DisplayStudentInformation(); break;case 5:RankByID(); break;case 6:cout <<功能暂未实现 " << endl; break;case 7:cout << " 功能暂未实现 " << endl; break;case 8:DisplayAllStudentInformation(); break;case 0:br

21、eak;/ 以 下 是 添 加 信 息 的 界void AddStudentPersonalInformation(int mode)using namespace std;int flagAddPersonalInformation;int flagAddGrade;int falgAddOtherGrade;Student student1;studentInformation:studentVector.push_back(student1);int currentObjectPosition;if (mode = 1)currentObjectPosition = studentInf

22、ormation:studentVector.size()- 1;elsecurrentObjectPosition = studentInformation:flagStudentChoose;/cout << " 请依次添加基本信息、学习成绩和其他成绩,且不要使用空格" << endl;cout << "" << endl;cout << " 基本信息 " << endl;cout << " 按下 1:录入学生基本信息 ;" &

23、lt;< endl << " 按下 0:跳过基本信息。 "<<endl <<""<<endl;cin >> flagAddPersonalInformation; cin.clear();if (flagAddPersonalInformation)char name30;char iD13;char address50;char phone14;cout << " 请输入学生姓名: "cin >> name;cin.clear();cout &

24、lt;< " 请输入学生学号: "cin >> iD;cin.clear();cout << " 请输入学生地址: "cin >> address;cin.clear();cout << " 请输入学生电话: "cin >> phone;cin.clear();studentInformation:studentVectorcurrentObjectPosition.Student_Wr itePersonalInformation(iD,name,address,ph

25、one);cout << " 基本信息输入成功! " << endl<< "" << endl;/cout << "" << endl;cout << " 学习成绩 " << endl;cout << " 按下 1:录入学生学习成绩 ;" << endl<< " 按下 0:跳过学习成绩信息。 " << endl<<II&q

26、uot; << endl;cin >> flagAddGrade;cin.clear();if (flagAddGrade)int mathGrade;int physicsGrade;int englishGrade;cout << " 请输入数学成绩:cin >> mathGrade;cin.clear();cout << " 请输入物理成绩:cin >> physicsGrade; cin.clear();cout << " 请输入英语成绩: cin >> eng

27、lishGrade;cin.clear();studentInformation:studentVectorcurrentObjectPosition.Student_Wr iteMaPhEgGrade(mathGrade, physicsGrade, englishGrade);cout << " 学习成绩输入成功! " << endl<<II" << endl;/cout << "" << endl;cout << " 其他成绩 " &l

28、t;< endl;cout << " 按下 1:录入学生其他成绩 ;" << endl << " 按下 0:跳过其他成绩信息。 " << endl << "" << endl;cin >> flagAddGrade; cin.clear();if (flagAddGrade)int peerGrade;int teacherGrade;int ethicGrade;cout << " 请输入同学评议成绩: "cin

29、 >> peerGrade;cin.clear();cout << " 请输入教师评议成绩: "cin >> teacherGrade;cin.clear();cout << " 请输入道德测评成绩成绩: " cin >> ethicGrade;cin.clear();studentInformation:studentVectorcurrentObjectPosition.Student_WriteOtherGrade(peerGrade, teacherGrade, ethicGrade);

30、cout << " 其他成绩输入成功! " << endl<< "" << endl;RankByGrade();RankByTotalGrade();cout << " 学生成绩录入成功! " << endl;cout << "" << endl<<endl;void SearchStudent()using namespace std;using namespace studentInformation;

31、char ID13;cout << " 请输入学生的学号: "<<endl;cin >> ID;cin.clear();cout << ""<<endl;int vectorSize = studentVector.size();int i = 0;while (i<vectorSize) & (flagStudentFound!=0)flagStudentFound = strcmp(ID, studentVectori.Student_ReadID();i = i + 1;if

32、 (flagStudentFound = 0)flagStudentChoose = i - 1;flagStudentFound = 1;cout << " 您所查找的学生信息如下: "<<endl; studentVectorflagStudentChoose.Student_DisplayInformation();elsecout << " 未找到该学生 " << endl;void ModifyStudentInformation()using namespace std;using namesp

33、ace studentInformation;int searchVectorSize = studentVector.size();if (searchVectorSize = 0)cout << "" << endl;" << endl;cout << " 当前系统中没有学生信息 , 请先添加学生信息!cout << "" << endl;elseSearchStudent();cout << " 您想对该学生的信息进行修改吗? &quo

34、t; << endl;cout << " 按下 1:是的。 " << endl;cout << " 按下 0:放弃修改。 " << endl;cout << "" << endl;int flagModify;cin >> flagModify;cin.clear();if (flagModify = 1)&(flagStudentFound = 0)AddStudentPersonalInformation(2);void Del

35、eteStudentInformation()using namespace std;using namespace studentInformation;int deleteVectorSize = studentVector.size();if (deleteVectorSize = 0)cout << "" << endl;" << endl;cout << " 当前系统中没有学生信息 , 请先添加学生信息!cout << "" << endl;elseSe

36、archStudent();cout << " 您想删除该学生的信息吗? " << endl;cout << " 按下 1:删除。 " << endl;cout << " 按下 0:取消。 " << endl;cout << "" << endl;int flagModify;cin >> flagModify;cin.clear();if (flagModify = 1)&(flagStudentF

37、ound = 0)std:vector<Student>:iterator iter = studentVector.begin() +flagStudentChoose; / 这样就选中了一个查到的元素studentVector.erase(iter);cout << " 学生信息删除成功 !" << endl<< "" << endl;void DisplayStudentInformation()using namespace std;using namespace studentInfo

38、rmation;int displayVectorSize = studentVector.size();if (displayVectorSize = 0)cout << "" << endl;" << endl;cout << " 当前系统中没有学生信息 , 请先添加学生信息!cout << "" << endl;elseSearchStudent();if (flagStudentFound = 0)studentVectorflagStudentChoos

39、e.Student_DisplayInformation();bool CmpGrade(Student student1, Student student2)return student1.Student_ReadGrade() > student2.Student_ReadGrade();/ 如果 student1 成绩大于 student2 ,则返回 1. 这样能实现成绩的降序排列 void RankByGrade()using namespace studentInformation;using namespace std;int rankVectorSize = student

40、Vector.size();if (rankVectorSize = 1) studentVector0.Student_WriteGradeRank(1);elsesort(studentVector.begin(), studentVector.end(), CmpGrade); /使用 sort 必须加上 #include algorithm和 std 。 sort 的前两个参数是指针int i = 0;for (i = 0; i <= rankVectorSize-1; i+)if (i>=1)&&(studentVectori.Student_ReadGr

41、ade() = studentVectori - 1.Student_ReadGrade()studentVectori.Student_WriteGradeRank(studentVectori -1.Student_ReadGradeRank();elsestudentVectori.Student_WriteGradeRank(i + 1);bool CmpTotalGrade(Student student1, Student student2)return student1.Student_ReadTotalGrade() > student2.Student_ReadTota

42、lGrade(); / 如果 student1 成绩大于 student2 , 则返回 1. 这样能实现成绩的降序排列void RankByTotalGrade()using namespace studentInformation;using namespace std;int rankVectorSize = studentVector.size();if (rankVectorSize = 1)studentVector0.Student_WriteTotalGradeRank(1);elsesort(studentVector.begin(), studentVector.end(),

43、 CmpGrade); / 使用 sort 必须加上 #include algorithm 和 std 。 sort 的前两个参数是指针int i = 0;for (i = 0; i <= rankVectorSize - 1; i+)if (i >= 1) && (studentVectori.Student_ReadTotalGrade() = studentVectori - 1.Student_ReadTotalGrade()studentVectori.Student_WriteTotalGradeRank(studentVectori 1.Student

44、_ReadTotalGradeRank();elsestudentVectori.Student_WriteTotalGradeRank(i + 1);bool CmpID(Student student1, Student student2)int result;result = strcmp(student1.Student_ReadID(), student2.Student_ReadID();if (result<0)return true;elsereturn false;void RankByID()using namespace studentInformation;usi

45、ng namespace std;int rankVectorSize = studentVector.size();sort(studentVector.begin(), studentVector.end(), CmpID);cout << "" << endl;cout << " 排序成功! " << endl;cout << "" << endl;void DisplayAllStudentInformation()using namespace std;

46、using namespace studentInformation;int displayVectorSize = studentVector.size();int i;if (displayVectorSize = 0)cout << "" << endl;cout << " 当前系统中没有学生信息 !" << endl;cout << "" << endl;else<<<<cout"" << endl;

47、cout << " 姓名 学号 综合成绩 综合排名 endl;for (i = 0; i < displayVectorSize; i+)cout << studentVectori.Student_ReadName() << " "<< studentVectori.Student_ReadID() <<IIII<<studentVectori.Student_ReadTotalGrade()<<IIII<< studentVectori.Student_Rea

48、dTotalGradeRank() << endl;cout <<"" << endl;/ 以 下 是 主 函 数void main()MainMenu();/*下面的这是一个排序函数,用到了冒泡排序法,但是程序没用到。上面的排序用了 sort ()函数来实现,功能是一样的。 */*void RankByGrade()using namespace studentInformation;using namespace std;int flagCompareOut=0;int flagCompareIn=0;int rankVectorSi

49、ze;rankVectorSize = studentVector.size();if (rankVectorSize = 0)cout << "" << endl<< " 系统当前没有学生信息! " << endl<< "" << endl;else if (rankVectorSize = 1)studentVectorflagCompareOut.Student_WriteGradeRank(flagCompareOut 1);elseint flagCom

50、pareOut = 0;int flagCompareIn = 0;for (flagCompareOut = 0; flagCompareOut < rankVectorSize flagCompareOut+)1;for (flagCompareIn = 0; flagCompareIn < rankVectorSize - flagCompareOut- 1; flagCompareIn+)if (studentVectorflagCompareIn.Student_ReadGrade() < studentVectorflagCompareIn + 1.Student_ReadGrade()Student studentTemp;stude

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论