Le système réalise l'opération de liste chaînée via le modèle de conception. Les fonctions comprennent la recherche d'informations sur les étudiants, l'ajout et la suppression d'informations sur les étudiants, ainsi que le tri et la sortie des étudiants en fonction du nombre et des notes des étudiants. Au début du programme, les informations sur l'élève sont lues dans le fichier et stockées dans la liste chaînée. Après cela, diverses opérations sont effectuées sur la liste chaînée. Lorsque le programme est quitté, les données de la liste chaînée peuvent être automatiquement enregistrées dans le fichier.
L'ensemble du système comprend quatre parties:
1. Classe de nœud
2. Liste liée
3. Étudiants
4. fonction principale
La fonction principale comprend principalement 3 parties:
1. Lecture et écriture de fichiers
2. Opérations sur les listes chaînées
3. Sélection des fonctions
Regardez d'abord la classe de nœuds:
template<class T>
class StuNode
{
public:
StuNode();//初始化
StuNode<T> *pre;//前一结点
StuNode<T> *next;//后一结点
T data;//数据
};
Liste liée:
template<class T>
class StuList
{
private:
StuNode<T> *head;//链表的头结点
StuNode<T> *tail;//链表的尾结点
int length;//链表的长度
public:
StuList();//默认构造函数
StuList(StuList &list1);//拷贝构造函数
~StuList();//析构函数
int size();//返回长度
void add(T e);//添加结点
StuNode<T> *get_head();
StuNode<T> *get_tail();
void show();//按序输出
void remove(T index);//移除
void find(T index);//查找
};
Les attributs des élèves peuvent être définis dans la classe des élèves. De plus, certains opérateurs doivent être surchargés. Vous pouvez vous référer à
Implémentation des fonctions membres CString (surcharge de symboles, mémoire dynamique)
Le fichier lu et écrit dans la fonction principale peut faire référence à
C ++ STL et résumé des opérations de traitement de fichiers
Les fonctions qui opèrent sur la liste chaînée sont
save_file(list);//保存
add_info(list);//添加
search_info(list);//查询
delete_info(list);//删除
stu_num_out(list);//学号排序
score_out(list);//分数排序
La sélection des opérations fonctionnelles peut utiliser cette structure:
while(1)
{
cin>>choice;
switch(choice)
{
case : break;
case : break;
case : break;
}
}
Je pense qu'il y a trois autres points importants
1. Le contenu d'une classe spécifique ne peut pas apparaître dans la classe modèle, le modèle est le modèle
2. Lorsque vous travaillez sur des listes chaînées, vous devez faire attention à distinguer les opérations sur les données réelles des opérations sur les copies de données, sinon g
3. Notez que la classe de nom et d'autres informations peuvent être répétées, mais le numéro d'étudiant doit être unique