先想一下程序的大体功能。
1.fread用于从储存信息的txt中读取学生数据。
2.menu用于打印系统的主菜单
3.save用于保存学生信息
4.In用于录入新学生的信息
5.Modify用于更改学生信息
6.Del用于删除学生信息
7.print_all用于打印所有学生信息
8.print_stu用于查找和打印单个学生信息
9.sortList用于根据学号将学生信息进行排序
然后,我们再思考一下如何储存学生的信息:学生是个对象,有许多成员属性,系统中又有许多学生信息需要储存,所以容易想到使用链表储存。得到主程序代码:
#include "STUDENT.h"
using namespace std;
int main() {
stu* head =fread();
stu* p = head;
for (p = head; p->next != NULL; p = p->next);
int choice=0;
again:
menu();
cin >> choice;
switch (choice)
{
case 0:
save(head);
exit(0);
cout << "Quit" << endl;
break;
case 1:
p=In(p);
save(head);
goto again;
break;
case 2:
Modify(head);
goto again;
break;
case 3:
head=Del(head);
goto again;
break;
case 4:
print_all(head);
goto again;
break;
case 5:
head=sortList(head);
save(head);
goto again;
break;
case 6:
print_stu(head);
goto again;
break;
default:
cout << "Invalid! " << endl;
goto again;
break;
}
return 0;
}
然后我们将本次使用的函数声明写在 “STUDENT.h"中:
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string>
#include <cstdio>
#define MAXN 50
using namespace std;
struct stu {
char name[20];
int num;
int math;
int computer;
stu* next=NULL;
};
void menu();
stu* In(stu*);
void Modify(stu*);
stu* Del(stu*);
void print_all(stu*);
void print_stu(stu*);
bool check(int);
void save(stu*);
stu* fread();
stu* sortList(stu*);
具体实现放到STUDENT.cpp中:
首先考虑menu函数:
void menu() {
cout << "Select: " << endl;
cout << "1. Insert info" <<