**怎样把下面代码改成满足下列要求形式**
(只学了单链表,对于文件不会使用)
> 有新生来报到,要逐个录入其信息,如:学生姓名,性别,专业,出生日期,家庭地址,英语入学成绩。要求设计链表类来实现,并统计学生人数。文本界面为:
1. 新增学生信息
2. 删除学生信息
3. 导入学生信息(已经保存于的文件信息)
4. 学生信息搜索(按姓名)
5. 学生信息统计(按专业或性别或年龄---年龄要自动计算)
6. 按英语成绩排序
7. 学生信息保存
8. 退出
******请选择:1
``````c++
**或者是这种形式**
> 每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。
A、学生信息处理
(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序排序
(2) 插入(修改)同学信息
(3) 删除同学信息
(4) 浏览学生信息
B、学生数据处理:
(1) 按考试科目录入学生成绩并且按公式:考试成绩=(语文+数学+外语)/3 计算考试成绩,并计算考试名次。
(2) 学生测评数据输入并计算综合测评总分及名次。
提示:综合测评总分=(考试成绩)*0.6+(同学互评分)*0.1+品德成绩*0.1+任课老师评分*0.2。
(3) 学生数据查询:
提示:输入学号或其他信息,即读出所有数据信息,并显示出来。
(4) 显示功能:完成全部学生信息的显示(一屏最多显示10条,超过十条应能够自动分屏显示)
(5)学生初始信息从文件调入、更新后最后信息存入一新文件
#include<iostream>
#include<stdlib.h>
using namespace std;
int k = 1;
struct student { //修改
int num;
char name[30];
struct student* next;
};
class stu {
private:
struct student* head, * tail;
public:
stu() {
head = new struct student; //修改
head->num = 0;
head->name[0] = '\0';
head->next = NULL; //修改
};
void create(int n);
void print();
int Insert();
void del();
void destroy();
};
void stu::create(int n) {
struct student* p;
//head->next = NULL; 修改
tail = head;
for (int i = 0; i < n; i++) {
p = new struct student; //修改
cout << "input num,name" << endl;
cin >> p->num >> p->name;
cout << endl;
p->next = NULL;
tail->next = p;
tail = p;
}
}
void stu::print()
{
if (head->next == NULL) { //修改
cout << "kongbiao" << endl;
return;
}
struct student* p;
p = head->next;
while (p != NULL) {
cout << p->num << '\t' << p->name << endl;
p = p->next;
}
}
int stu::Insert() {
system("cls");
if (head->next == NULL) { //修改
cout << "kongbiao" << endl;
return -1;
}
cout << "请输入要在哪个学号后面插入信息" << endl;
int sno;
cin >> sno;
struct student* p = head->next;
while (p != NULL){
if (p->num == sno) {
struct student* newp = new struct student; //修改
newp->next = NULL;
cout << "请输入要插入的信息:num,name" << endl;
cin >> newp->num >> newp->name;
newp->next = p->next;
p->next = newp;
break;
}
p = p->next;
}
if (p == NULL) //修改
printf("学号:%d 记录未找到,插入未成功!\n", sno);
return 0;
}
void stu::del() {
system("cls");
if (head->next == NULL) { //修改
cout << "kongbiao" << endl;
return;
}
struct student* p, * pre;
p = head->next;
pre = head;
cout << "请输入要删除的学号" << endl;
int sno;
cin >> sno;
while (p != NULL) {
if (p->num == sno) {
pre->next = p->next;
delete p;
printf("学号:%d 记录删除成功!\n", sno);//修改
return; //break; //修改
}
pre = p;
p = p->next;
}
if (p == NULL) //修改
printf("学号:%d 记录未找到,删除未成功!\n", sno);
}
void stu::destroy() {
struct student* p, * ptr;
//p = head; //修改
while (head->next != NULL) {
ptr = head->next;
head->next = ptr->next;
delete ptr;
}
}
void menu(stu STU)/* 界面*/ //修改
{
cout << "1.添加" << endl;
cout << "2.打印" << endl;
cout << "3.插入" << endl;
cout << "4.删除" << endl;
cout << "5.销毁" << endl;
cout << "6.退出" << endl;
int num;
//stu STU; //修改
cout << "请输入你的选择" << endl;
cin >> num;
switch (num) {
case 1:
int n;
cout << "请输入个数" << endl;
cin >> n;
STU.create(n);
STU.print();
break;
case 2:
STU.print();
break;
case 3:
STU.Insert();
STU.print();
break;
case 4:
STU.del();
STU.print();
break;
case 5:
STU.destroy();
STU.print();
break;
case 6:
k = 0;
cout << "即将退出程序!" << endl;
break;
default:
cout << "请在1~6之间选择" << endl;
break;
}
}void save(){
int i;
FILE *fp;
char filename[LEN + 1];
printf("请输入要保存的文件名:\n");
scanf("%s", filename);
fp = fopen(filename, "w");
for (i = 0; i < n; i++){
fprintf(fp, );
}
printf("保存成功!!!\n");
fclose(fp);
system("pause");
}
void save(){
int i;
FILE *fp;
char filename[LEN + 1];
printf("请输入要保存的文件名:\n");
scanf("%s", filename);
fp = fopen(filename, "w");
for (i = 0; i < n; i++){
fprintf(fp, "%s%s%d%c%.lf%.lf%.lf\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex,
stu[i].score[0], stu[i].score[1], stu[i].score[2]);
}
printf("保存成功!!!\n");
fclose(fp);
system("pause");
}
int main()
{
stu STU; //修改
while (k) {
menu(STU);
}
system("pause");
return 0;
}
https://blog.csdn.net/qq_43678290/article/details/85630971
这里查到一个,看评论说有点问题,你看能不能用。
这个就是比较繁琐,实现起来不难的,而且站内还有好多参考的
空手套白狼,合着就是5块钱找人代写呗