基於C 鍊錶以及泛型程式設計的學生成績管理系統

2021-07-16 13:04:16 字數 4585 閱讀 2409

在網上可以查詢到不少學生成績管理系統的實現方法,但本文是基於c++,應用鍊錶和類的方法來實現,並且用泛型程式設計的思路使得鍊錶的實現比c語言實現起來簡單很多,下面是實驗的簡單介紹。

一、學生成績管理系統具有如下功能

1、能錄入學生的基本資訊,包括id,姓名,專業、班級、**、email等。

2、能錄入課程資訊:包含學期、課程名、學分、成績。

3、能根據輸入的學號查詢學生資訊,並可以進行資訊的修改。

4、可以根據學號查詢學生成績,包括可以檢視各門課程成績,平均成績,學分績點。

5、可以檢視各班每一課程不及格的學生名單。

6、可以統計課程成績不及格數超過30%的學生名單。

7、具有檔案操作功能,可以儲存學生資訊檔案,讀入學生資訊檔案等。

二、概要設計

將學生成績管理系統劃分為以下六個模組

1  主模組

功能概述:

(1)提供系統選單的顯示功能; 

(2)提供開啟檔案,並匯入檔案記錄的功能;

(3)提供儲存檔案資訊的功能。

2  新增學生資訊

功能:(1)  根據輸入的相關資訊,將學生資訊新增到單向鍊錶中。

3  顯示學生資訊

功能:(1)將鍊錶中的所有資訊完全顯示。

4  新增學生課程成績資訊

功能:(1)  根據輸入的相關資訊,將學生課程成績資訊新增到另一單向鍊錶中

5 查詢學生資訊

功能:(查詢學生資訊包含根據輸入學號進行查詢和根據輸入的姓名進行查詢兩種方式,並根據返回的學生資訊,進行以下三種操作)

(1)查詢學生資訊,直接返回找到的資訊; 

(2)修改學生資訊,根據找到的學生資訊,對其進行修改;

(3)刪除學生資訊,根據找到的相關學生資訊,從鍊錶中刪除這條記錄。

6  查詢學生課程成績資訊

(1)  根據輸入的學號查詢該學生各門課程的成績,可以查詢平均成績以及學分績點,並標記該生不及格課程成績是否超過30%;

(2)  根據輸入班級號查詢該班各門課程成績;

(3)  可以查詢各門課程所有不及格的學生名單。

三、程式實驗**(中間可能存在個別錯誤僅供參考)

1.student.h

/用類實現學生資訊:id,姓名,專業、班級、**、email等;

#ifndef student_h

#define student_h

#include

using namespace std;

class student

};2.student.cpp

#include"student.h"

#include

#include

student::student(string id1, string name1, string major1, int class1, string phone1, string email1)

void student::setid(string id1)

void student::setname(string name1)

void student::setmajor(string major1)

void student::setclass(int class1)

void student::setphone(string phone1)

void student::setemail(string email1)

string student::getid()

string student::getname()

string student::getmajor()

int student::getclass()

string student::getphone()

string student::getemail()

void student::setstd()

cout << "name:"; cin >> name;

cout << "major:"; cin >> major;

cout << "class:"; cin >> class;

cout << "phone:"; cin >> phone; while (phone.length()>11)

cout << "email:"; cin >> email;

}void student::prints()

/*void student::readfile()

infile >>id >>name >>major>>class>>phone >>email;

}*/3.courseinformation

.h/用類實現課程資訊:包含學期、課程名、學分、成績

#ifndef courseinformation_h

#define courseinformation_h

#include

#include

using namespace std;

class courseinformation

};#endif

4.courseinformation

.cpp

#include"courseinformation.h"

#include

courseinformation::courseinformation(string cid1, int term1,string course1, int credit1, int score1)

/*courseinformation::courseinformation(courseinformation &p)

*/void courseinformation::readcid(string cid1)

void courseinformation::readterm(int term1)

void courseinformation::readcourse(string course1)

void courseinformation::readcredit(int credit1)

void courseinformation::readscore( int score1)

void courseinformation::setcid()

void courseinformation::setterm()

void courseinformation::setcourse()

void courseinformation::setcredit()

}void courseinformation::setscore()

}string courseinformation::getcid()

int courseinformation::getterm()

string courseinformation::getcourse()

int courseinformation::getcredit()

int courseinformation::getscore()

void courseinformation::showc()

for(int i=0;i>a1 >>a2 >>a3>>a6>>a4 >>a5;

a.setid(a1);

a.setname(a2);

a.setmajor(a3);

a.setclass(a6);

a.setphone(a4);

a.setemail(a5);

lists.push_back(a);

}cout<<"學生資訊錄入完畢!"<>b1 >>b2 >>b3>>b4>>b5;

b.readcid(b1);

b.readterm(b2);

b.readcourse(b3);

b.readcredit(b4);

b.readscore(b5);

listc.push_back(b);

}cout<<"學生成績資訊錄入完畢!"<>findid;

for(list::iterator iter= lists.begin();iter!= lists.end(); ++iter) }

else if(iter==--lists.end()) cout<<"輸入的學生id不存在"<>removeid;

lists.remove_if(diyremove1);

listc.remove_if(diyremove2);

cout<<"成功刪除資訊!"<>findclass;

for(list::iterator iter= lists.begin();iter!= lists.end(); ++iter)

while((*iter).getcourse()=="數學"&&n==1)

while((*iter).getcourse()=="英語"&&n==1)

}else if(iter==listc.end())  cout<<"輸入的班級號沒有相關課程成績資訊!"<>choise;

switch (choise)

system("pause");

}

C 泛型程式設計之雙向鍊錶

ifndef listex h define listex h function 鍊錶模板 param include using namespace std template class clist snode m phead,m ptail public function 建構函式 param ...

C 中的泛型鍊錶的實現

using system using system.collections.generic using system.linq using system.text using system.collections namespace 泛型 console.readline 泛型類的定義與一般類相似,...

基於反射和泛型的程式設計

基於反射和泛型的程式設計,泛型是容器話的思路統過泛型物件或泛型方法,管理實際 要操作的物件,以實現對於實際物件管理的一種程式設計。比如匯出excel生成報表這種在平台開發中及其普遍的需求,有多個物件有生成報表 的需求如每個物件編寫生成excel邏輯,程式會變得異常複雜,重複邏輯眾多,通過將導 出ex...