logo资料库

c++实验报告.docx

第1页 / 共51页
第2页 / 共51页
第3页 / 共51页
第4页 / 共51页
第5页 / 共51页
第6页 / 共51页
第7页 / 共51页
第8页 / 共51页
资料共51页,剩余部分请下载后查看
第一题
预习报告一
实验报告一
运行结果一
第二题
预习报告二
实验报告二
运行结果二
第三题
预习报告三
实验报告三
运行结果三
第四题
预习报告四
实验报告四
运行结果四
第五题
预习报告五
实验报告五
第六题
预习报告六
实验报告六
运行结果六
第一题 题目: 为某高校的学籍和成绩管理设计一系统。要求建立的数据有: (1)学生类,包含班级号、学号、姓名、专业等成员; (2)学生成绩类,包含班级号、学号,课程名,成绩等成员。 完成下列功能:首先输入学生数据及成绩数据,再根据提示分别实现查找功能。其中: 函数 Xslr 负责学生数据录入; 函数 Cjlr 负责成绩数据录入; 函数 Look1 负责根据姓名查找学生的基本信息和成绩信息; 函数 Look2 负责根据班级列出学生的基本信息; 函数 Dayin1 负责依据班级输出满足条件的学生的基本情况; 函数 Dayin2 负责输出某一同学的成绩单。
预习报告一 student 类 int Cnum int Snum string Sname string Smajor public: void Xslr1(int a, int b, string s1, string s2) void out() int getCnum() int getSnum() string getname() string getmajor() 班级号 学号 学生姓名 学生专业 学生信息录入 输出学生信息 输出班级号 输出学号 输出姓名 输出专业 grade 类:public student Node n public: void Cjlr(string s1, double a,int l) void GLook1(string s1,int l) void GLook2(int n) void GDayin1(int Cnum, int Snum) void Point() Node 是储存课程和分数的链表 沿链表录入同一个学生的不同成绩 根据姓名查找成绩 根据学号查找信息 在班级里根据学号寻找学生 输出所有成绩和课程 SeqList 类:public grade grade item[max] int length public: void Xslr(int a,int b,string name,string major) void Cjlr(string course, double point, int l) void Look1(string name,int l) void Look2(int Cnum) void Dayin2(int Snum) 总人数,默认 100 记录现在录入的人数 信息录入 成绩录入 根据姓名查找信息 根据学号查找信息 根据学号输出成绩 总结:student 类用来储存学生的个人信息,grade 类是 student 类的派生,其中有链表结构存储不同课程的 成绩,最后利用顺序表,存储多个学生多个课程成绩。在主函数中用到了 getchar(),用于读取 enter 附 带的换行。
实验报告一 student.h #pragma once #include using namespace std; class student { int Cnum; int Snum; string Sname; string Smajor; public: void Xslr1(int a, int b, string s1, string s2); void out(); int getCnum(); int getSnum(); string getname(); string getmajor(); }; student.cpp #include "student.h" void student::Xslr1(int a, int b, string s1, string s2) { Cnum = a; Snum = b; Sname = s1; Smajor = s2; } void student::out() { cout << "班级号是" << Cnum << endl; cout << "学号是" << Snum << endl; cout << "姓名是" << Sname << endl; cout << "专业是" << Smajor << endl; } int student::getCnum() { return Cnum; } int student::getSnum()
{ return Snum; } string student::getname() { return Sname; }string student::getmajor() { return Smajor; } grade.h #pragma once #include "student.h" #include using namespace std; class Node { public: string course; double point; Node* pNext=NULL; }; class grade : public student { Node n; public: void Cjlr(string s1, double a,int l); void GLook1(string s1,int l); void GLook2(int n); void GDayin1(int Cnum, int Snum); void Point(); }; grade.cpp #include "grade.h" void grade::Cjlr(string s1, double a,int l) { if (l == 1) ; else for (int i = 0; i < l-1; i++)
n.pNext = n.pNext->pNext; n.pNext = new Node[1]; Node* H = n.pNext->pNext; } void grade::GLook1(string s1,int l) { if (l != 2) { n.pNext = n.pNext->pNext; if (getname() == s1) { out(); for (; ;) { cout << n.course << " " << n.point << endl; } } } else cout << "查无此人" << endl; } void grade::GLook2(int n) { while (getCnum() == n) { out(); cout << endl; } } void grade::GDayin1(int Cnum, int Snum) { if (getCnum() == Cnum && getSnum() == Snum) out(); } void grade::Point() { while (n.pNext != NULL) { cout << n.course <
n.pNext = n.pNext->pNext; } } SeqList.h #pragma once #include "grade.h" const int Max = 100; class SeqList : public grade { grade item[Max]; int length=0; public: SeqList(); void Xslr(int a,int b,string name,string major); void Cjlr(string course, double point, int l); void Look1(string name,int l); void Look2(int Cnum); void Dayin2(int Snum); }; SeqList.cpp #include "SeqList.h" SeqList::SeqList() { } void SeqList::Xslr(int a, int b, string name, string major) { for (int i = 0; i < length; i++) if (item[i].getSnum() == b) cout << "学生信息已登记过" << endl; item[length].Xslr1(a, b, name, major); length++; } void SeqList::Cjlr(string course, double point,int l) { cout << "请输入要登记成绩学生的学号" << endl; int num = 0; cin >> num; for (int i = 0; i < length; i++) {
if (num == item[i].getSnum()) { item[i].Cjlr(course, point,l); break; } else if (i == length - 1 && item[i].getSnum() != num) { cout << "学生信息没有登记过,请先登记学生信息" << endl; cout << "输入班级,学号,姓名,专业" << endl; int a, b; string name, major; cin >> a >> b >> name >> major; Xslr(a, b, name, major); item[length].Cjlr(course, point,l); } } } void SeqList::Look1(string name,int l) { for (int i = 0; i < length; i++) item[i].GLook1(name,l); } void SeqList::Look2(int Cnum) { for (int i = 0; i < length; i++) item[i].GLook2(Cnum); } void SeqList::Dayin2(int Snum) { int i = 0; for (; i < length; i++) if (item[i].getSnum() == Snum) item[i].Point(); } Main.cpp #include #include"SeqList.h" int main() { for (int i = 0; i < 36; i++) cout << "*"; cout << "学生信息管理系统";
for (int i = 0; i < 36; i++) cout << "*"; cout << endl; SeqList a; int choice = 0; cout << "选择要进行的项目:" << endl; cout << "1.学生数据录入" << endl; cout << "2.学生成绩录入" << endl; cout << "3.按姓名查找学生的基本信息和成绩信息" << endl; cout << "4.按班级查找学生基本信息" << endl; cout << "5.按班级输出要求学号的学生" << endl; cout << "6.输出要求学号的学生信息" << endl; cin >> choice; int class1, stunum; string name, major; string course; string search_name; int search_cnum,search_snum,l; double point1; while (choice) { switch (choice) { case 1: cout << "依次输入学生班级 学号 姓名 专业(中间用空格分隔)"<> class1 >> stunum >> name >> major; a.Xslr(class1, stunum, name, major); cout << "重新进行选择" << endl; cin >> choice; cout << endl; break; case 2: cout << "输入课程和成绩以及这是此学生的第几门成绩" << endl; cin >> course >> point1>>l; a.Cjlr(course, point1,l); cout << "重新进行选择" << endl; cin >> choice; cout << endl; break; case 3: cout << "输入想搜索的学生姓名" << endl; cin >> search_name; a.Look1(search_name,l); cout << "重新进行选择" << endl;
分享到:
收藏