1.基于数组的学生信息管理系统

实验内容

编写并调试程序,实现学校各专业班级学生信息的管理。定义学生信息的结构体类型,包括:学号、姓名、专业、班级、3门成绩。

实验要求:

(1) main函数:以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数。

(2) 定义函数Input:从键盘输入一个学生信息。

(3) 定义函数Output:将某个学生信息格式化输出。

(4) 定义函数Save:将某个学生信息存入文件。

(5) 定义函数Fetch:从文件中随机读取某个学生的信息。

(6) 定义函数Max:求所有学生某门课程的最高分和分数最高的学生的姓名。

(7) 定义函数Sort_select:对某个专业的学生,按总平均成绩由低到高进行简单选择排序。

(8) 定义函数Sort_buble:对某个班级的学生,按总平均成绩由高到低进行冒泡排序。

(9) 定义函数Sort_insert:对某个班级的学生,按某门课程成绩由低到高进行直接插入排序。

(10) 定义函数Search:实现班级和成绩的综合查找(如1班,总分240分以上同学)。

程序如下:

#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<iomanip>
#include<fstream>
#include<time.h>
#include<typeinfo>
int length;
char a[10],b[10],c[10],d[10],e[10],f[10],g[10];//标题
struct student
{
char grad[10];//学号
char name[10];//姓名
char spec[10];//专业
char stu_class[10];//班级
int score1;
int score2;
int score3;
}stu[30]; int Init()//初始化
{
int i = 0;
FILE *p = fopen("1.txt", "r"); //打开文件
if(p==NULL)
return 0;
fscanf(p,"%s%s%s%s%s%s%s",&a,&b,&c,&d,&e,&f,&g);//读取标题
while (!feof(p)) //检测流上的文件结束符,如果文件结束,则返回非0值
{ //将文件中数据读取到结构体数组
fscanf(p,"%s%s%s%s%d%d%d",&stu[i].grad,&stu[i].name,&stu[i].spec,&stu[i].stu_class,&stu[i].score1,&stu[i].score2,&stu[i].score3);
i++;
}
length = i;
fclose(p);
return 1;
} void Input()//从键盘输入一个学生信息存入文件和结构体数组。
{
printf("请输入学生信息:\n");
printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n");
int i = length;
scanf("%s%s%s%s%d%d%d",&stu[i].grad,&stu[i].name,&stu[i].spec,&stu[i].stu_class,&stu[i].score1,&stu[i].score2,&stu[i].score3);
FILE *p = fopen("1.txt", "a"); //打开文件
fprintf(p,"\n%s %s %s %s %d %d %d",stu[i].grad,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3);
fclose(p);
printf("写入文件成功!\n");
length++;
} void Output()//输入学号,将对应的学生信息格式化输出。
{
char *grad;
printf("请输入查询的学号:");
scanf("%s",grad);
printf("学号 姓名 专业 班级 成绩1 成绩2 成绩3\n");
for(int i=0;i<length;i++)
if(strcmp(stu[i].grad,grad)==0)
printf("%s %s %s %s %d %d %d \n",stu[i].grad,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3);
} void Save()//将某个学生信息存入一个新的文件。
{
printf("请输入学生信息:\n");
printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n");
int i = length;
scanf("%s%s%s%s%d%d%d",&stu[i].grad,&stu[i].name,&stu[i].spec,&stu[i].stu_class,&stu[i].score1,&stu[i].score2,&stu[i].score3);
FILE *p = fopen("other.txt", "w"); //打开文件
fprintf(p,"%s %s %s %s %s %s %s\n",a,b,c,d,e,f,g);
fprintf(p,"%s %s %s %s %d %d %d",stu[i].grad,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3);
fclose(p);
printf("写入文件成功!\n");
} void Max()//求所有学生某门课程的最高分及对应的学生的姓名。
{
int i;
int max[3]={0,0,0};
for(i=0;i<length;i++)
if(max[0]<stu[i].score1)
max[0]=stu[i].score1; printf("课程1最高分:%d分----",max[0]);
for(i=0;i<length;i++)
if(stu[i].score1 == max[0])
printf("%s ",stu[i].name);
printf("\n"); for(i=0;i<length;i++)
if(max[1]<stu[i].score2)
max[1]=stu[i].score2;
printf("课程2最高分:%d分----",max[1]);
for(i=0;i<length;i++)
if(stu[i].score2 == max[1])
printf("%s ",stu[i].name);
printf("\n"); for(i=0;i<length;i++)
if(max[2]<stu[i].score3)
max[2]=stu[i].score3;
printf("课程3最高分:%d分----",max[2],stu[i].name);
for(i=0;i<length;i++)
if(stu[i].score3 == max[2])
printf("%s ",stu[i].name);
printf("\n");
} void Fetch()//从文件中随机读取某个学生的信息。
{
int i = time(NULL) % length;
printf("第%d名学生\n",i+1);
printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n");
printf("%s %s %s %s %d %d %d \n",stu[i].grad,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3);
} void Sort_select()//按总平均成绩由低到高进行简单选择排序。
{
struct student tmp;
char str[6];
int i,j,t,n,k;
float avg[length],avg_temp;
printf("请输入专业:\n");
scanf("%s",str);
for(i=0;i<length;i++)
avg[i] = float(stu[i].score1 + stu[i].score2 + stu[i].score3) / 3;
//简单选择排序
for(i=0; i<length; i++) //做n-1趟选取
{
k = i;
for(j=i+1;j<=length;j++)
if(avg[j] < avg[k] && strcmp(stu[i].spec,str)==0 && strcmp(stu[j].spec,str)==0)
k = j; //k为最小值
if(i!=k)//交换
{
tmp=stu[k]; avg_temp = avg[k];
stu[k]=stu[i]; avg[k] = avg[i];
stu[i]=tmp; avg[i] = avg_temp;
}
}
printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3 平均分\n");
for(i=0;i<length;i++)
if(strcmp(stu[i].spec,str)==0)
printf("%5s %-6s %3s %s %3d %3d %3d %-6.2f\n",stu[i].grad,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3,avg[i]);
} void Sort_buble()//按总平均成绩由高到低进行冒泡排序。
{
struct student tmp;
char str[6];
float avg[length],avg_temp;
int i,j;
printf("请输入班级:\n");
scanf("%s",str);
for(i=0;i<length;i++)
avg[i] = float(stu[i].score1 + stu[i].score2 + stu[i].score3) / 3;
//冒泡排序
for(i=0;i<length;i++)
for(j=0;j<length;j++)
if(avg[i]>avg[j] && strcmp(stu[i].stu_class,str)==0 && strcmp(stu[j].stu_class,str)==0)
{
tmp = stu[i]; avg_temp = avg[i];
stu[i] = stu[j]; avg[i] = avg[j];
stu[j] = tmp; avg[j] = avg_temp;
}
printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3 平均分\n");
for(i=0;i<length;i++)
if(strcmp(stu[i].stu_class,str)==0)
printf("%5s %-6s %3s %s %3d %3d %3d %-6.2f\n",stu[i].grad,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3,avg[i]);
} void Sort_insert()//按课程1成绩由低到高进行直接插入排序。
{
int i,j,len=0;
char str[6];
struct student tmp;
struct student insert[100];
printf("请输入班级:\n");
scanf("%s",str);
for(i=0;i<length;i++)
if(strcmp(stu[i].stu_class,str)==0) //筛选出某个班上的学生进行插入排序
{
insert[len] = stu[i];
len++;
}
for(i=1;i<len;i++)//循环从第2个元素开始
{
if(insert[i].score1 < insert[i-1].score1)
{
tmp = insert[i];
for(j = i-1; j >= 0 && insert[j].score1 > tmp.score1; j--)
insert[j+1] = insert[j];
insert[j+1] = tmp;
}
}
printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n");
for(i=0;i<len;i++)
printf("%5s %-6s %3s %s %3d %3d %3d\n",insert[i].grad,insert[i].name,insert[i].spec,insert[i].stu_class,insert[i].score1,insert[i].score2,insert[i].score3);
} void my_Sort_insert()//按课程1成绩由低到高进行直接插入排序。
{
int i,j=0,len=0,location[50];
char str[6];
struct student tmp;
struct student insert[100];
printf("请输入班级:\n");
scanf("%s",str);
for(i=0;i<length;i++)
if(strcmp(stu[i].stu_class,str)==0) //筛选出某个班上的学生进行插入排序
{
insert[len] = stu[i];
location[j++] = i;//存储位置
len++;
}
for(i=1;i<len;i++)//循环从第2个元素开始
{
if(insert[i].score1 < insert[i-1].score1)
{
tmp = insert[i];
for(j = i-1; j >= 0 && insert[j].score1 > tmp.score1; j--)
insert[j+1] = insert[j];
insert[j+1] = tmp;
}
}
for(i=0;i<len;i++)
stu[location[i]] = insert[i];
printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n");
for(i=0;i<length;i++)
printf("%5s %-6s %3s %s %3d %3d %3d\n",stu[i].grad,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3);
} void Search()//查找某班总分在某分数段以上的学生
{
int i,k=0,score;
char str[6];
printf("请输入班级和分数:\n");
scanf("%s%d",str,&score);
printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3 总分\n");
for(i=0;i<length;i++)
if(strcmp(stu[i].stu_class,str)==0 && stu[i].score1+stu[i].score2+stu[i].score3 > score)
{
printf("%5s %-6s %3s %s %3d %3d %3d %d\n",stu[i].grad,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score1+stu[i].score2+stu[i].score3);
k++;
}
printf("%s班总分%d以上的一共有%d人。\n",str,score,k);
} void Sort_total_score()//Self:全体总分排序
{
struct student tmp;
int i,j;
//根据总分进行从大到小冒泡排序
for(i=0;i<length;i++)
for(j=0;j<length;j++)
if(stu[i].score1+stu[i].score2+stu[i].score3 > stu[j].score1+stu[j].score2+stu[j].score3)
{
tmp = stu[i];
stu[i] = stu[j];
stu[j] = tmp;
}
for(i=0;i<length;i++)
printf("%5s %-6s %3s %s %3d %3d %3d %d\n",stu[i].grad,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].score1+stu[i].score2+stu[i].score3);
} void Sort_grad()//Self:全体学号排序
{
struct student tmp;
int i,j;
//根据学号进行从大到小冒泡排序
for(i=0;i<length;i++)
for(j=0;j<length;j++)
if(strcmp(stu[i].grad,stu[j].grad) > 0 )
{
tmp=stu[i];
stu[i]=stu[j];
stu[j]=tmp;
}
for(i=0;i<length;i++)
printf("%5s %-6s %3s %s %3d %3d %3d\n",stu[i].grad,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3);
} int main()
{
int i,j,k;
if(Init()==0)
{
printf("文件不存在!");
return 0;
}
printf("菜单\n1.输入学生信息\n2.输出学生信息\n3.写入文件\n4.查找课程最高分\n5.随机读取学生信息\n6.同专业平均分简单选择排序\n7.同班级平均分冒泡排序\n");
printf("8.同班级按课程1分数直接插入排序\n9.综合查找\n10.全体总分排序\n11.全体学号排序\n12.重现菜单\n0.退出\n");
printf("请输入选项:");
scanf("%d",&k);
while(k)
{
switch(k)
{
case 0:
break;
case 1:
Input();
break;
case 2:
Output();
break;
case 3:
Save();
break;
case 4:
Max();
break;
case 5:
Fetch();
break;
case 6:
Sort_select();
break;
case 7:
Sort_buble();
break;
case 8:
Sort_insert();
//my_Sort_insert();
break;
case 9:
Search();
break;
case 10:
Sort_total_score();
break;
case 11:
Sort_grad();
break;
case 12:
printf("菜单\n1.写入文件\n2.输出学生信息\n3.写入新文件\n4.查找课程最高分\n5.随机读取学生信息\n6.同专业平均分简单选择排序\n7.同班级平均分冒泡排序\n");
printf("8.同班级按课程1分数直接插入排序\n9.综合查找\n10.全体总分排序\n11.全体学号排序\n12.重现菜单\n0.退出\n");
break;
default:
printf("输入有误,请重新输入!\n");
}
printf("请输入选项:");
scanf("%d",&k);
}
return 0;
} void write()
{
int i = length;
FILE *p = fopen("1.txt", "w"); //打开文件
fprintf(p,"%s %s %s %s %s %s %s\n",a,b,c,d,e,f,g);
for(i=0;i<length;i++)
fprintf(p,"%s %s %s %s %d %d %d",stu[i].grad,stu[i].name,stu[i].spec,stu[i].stu_class,stu[i].score1,stu[i].score2,stu[i].score3);
fclose(p);
}

1.txt文本文件内容:

grad name spec     class     score1 score2 score3
2201 Amy cs 2018-1 98 95 98
2202 Bob cs 2018-2 91 74 59
2203 Cindy cs 2018-2 98 84 79
2204 Dell law 2018-1 86 94 99
2205 Emy law 2018-1 98 86 89

2.基于链表的学生信息管理系统

实验内容:

编写并调试程序,实现学校各专业班级学生信息的管理。定义学生信息的链表结点类型,包括:学号、姓名、班级、专业、3门成绩。

实验要求:

(1) main函数:以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数。

(2) 定义函数CreateList:按学号由小到大,建立有序的链表。逆序输入 n 个学生信息(调用n次input),学号大的先输入,建立带头结点的单链表。

(3) 定义函数Output:以指向某个学生结点的指针为参数,将学生信息格式化输出。

(4) 定义函数Save:将某个学生信息存入文件。

(5) 定义函数Fetch:从文件中随机读取某个学生的信息。

(6) 定义函数Search_num:查找指定学号的学生,返回指向该学生结点的指针。

(7) 定义函数InsertList:在函数中输入一个学生的信息,将该学生信息插入到链表中的相应位置,并保持此链表按学号的有序性。

(8) 定义函数Delete_num:从链表中删除指定学号的学生。

(9) 定义函数Search_major_subject_score:查找某个专业的、某门课程的成绩小于某个分数的学生,返回指向该学生结点的指针。

(10) 定义函数Delete_major_subject:从链表中删除某个专业的、某门课程的成绩小于某个分数的学生。

程序如下:

#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<iomanip>
#include<fstream>
#include<time.h>
int length=0;
using namespace std;
char a[10],b[10],c[10],d[10],e[10],f[10],g[10];
//定义学生信息的结构体类型,包括:学号、姓名、专业、班级、3门成绩
typedef struct StuNode
{
char grad[10];//学号
char name[10];//姓名
char spec[10];//专业
char stu_class[10];//班级
int score1;//C
int score2;//Java
int score3;//Python
struct StuNode *next;
}student, *StuLink; void Sort(StuLink &head)//从小到大进行冒泡排序
{
StuLink tmp,pre,p,q;
if (head->next)
{
p = head->next->next;
head->next->next = NULL;
while (p)
{
pre = head; //pre是q的前驱
q = pre->next;
while (q && strcmp(q->grad,p->grad)<0)//从链表第二个结点开始找比当前插入值大的结点
{
pre = pre->next;
q = q->next;
}
tmp = p->next;//将p插入到结点pre和q之间
p->next = q;
pre->next = p;
p = tmp;
}
}
} student *CreateList()//初始化:创建链表
{
void Output(StuLink &p);
StuLink head = (student*)malloc(sizeof(student));
StuLink p,q;
p = head;
q = head;
char grad[10];//学号
char name[10];//姓名
char spec[10];//专业
char stu_class[10];//班级
int score1;
int score2;
int score3;
FILE *r= fopen("2.txt","r");
if(r==NULL)
{
printf("打开文件失败!");
return NULL;
}
fscanf(r,"%s%s%s%s%s%s%s",&a,&b,&c,&d,&e,&f,&g);//读取标题
while(fscanf(r,"%s%s%s%s%d%d%d",grad,name,spec,stu_class,&score1,&score2,&score3)!=EOF)
{
q = (student*)malloc(sizeof(student));
strcpy(q->grad,grad);
strcpy(q->name,name);
strcpy(q->spec,spec);
strcpy(q->stu_class,stu_class);
q->score1 = score1;
q->score2 = score2;
q->score3 = score3;
p->next = q;
p = q;
length++;
}
p->next = NULL;
Sort(head); //倒序输出
StuLink k = head,t;
while(k->next)
k = k->next;
printf("倒序输出:\n 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n");
while(k!=head)
{ //倒序输出
t = head;
while(t->next!=k)
t = t->next;//t为k前驱
Output(k);
k = t;
}
return head;
} void Output(StuLink &p)//输出信息
{
printf("%5s %-5s %-3s %s %3d %3d %3d\n",p->grad,p->name,p->spec,p->stu_class,p->score1,p->score2,p->score3);
} void Print_List(StuLink &head)//打印整个链表
{
StuLink p = head->next;
while(p)
{
Output(p);
p = p->next;
}
} void Save(StuLink &head)//写入文件。
{
StuLink p = (student*)malloc(sizeof(student)),q = head->next;
char grad[10],name[10],spec[10],stu_class[10];
int score1,score2,score3;
printf("请输入学生信息:\n");
scanf("%s%s%s%s%d%d%d",p->grad,p->name,p->spec,p->stu_class,&p->score1,&p->score2,&p->score3);
FILE *w =fopen("2.txt","a");
if(w==NULL)
{
printf("打开文件失败!\n");
return;
}
else printf("写入成功!\n");
fprintf(w,"\n%s %s %s %s %d %d %d",p->grad,p->name,p->spec,p->stu_class,p->score1,p->score2,p->score3);
fclose(w);
//存入链表
p->next = q;
head->next = p;
Sort(head);
} void Fetch(StuLink &H)//随机读取某个学生的信息。
{
StuLink p = H->next;
int i = time(NULL) % length;
int j = i;
while(j)
{
p = p->next;
j--;
}
printf("第%d名学生\n",i+1);
printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n");
Output(p);
} student *Search_num(StuLink &H)
{ //查找指定学号的学生,返回指向该学生结点的指针。
char grad[10];
printf("请输入查询信息的学号:");
scanf("%s",grad);
StuLink p = H->next;
while(p)
{
if(strcmp(p->grad,grad)==0)
return p;
p = p->next;
}
return NULL;
} void InsertList(StuLink &H)
{ //在函数中输入一个学生的信息,将该学生信息插入到链表中的相应位置,并保持此链表按学号的有序性。
StuLink p = H->next, q = H;
StuLink insert = (student*)malloc(sizeof(student));
printf("请输入学生信息:\n");
scanf("%s%s%s%s%d%d%d",insert->grad,insert->name,insert->spec,insert->stu_class,&insert->score1,&insert->score2,&insert->score3); while(p)
{
if(strcmp(p->grad,insert->grad) > 0 )
{
q->next = insert;//应插入q和p之间
insert->next = p;
break;
}
q = q->next;//q是p的前驱
p = p->next;
}
if(!p)//insert的学号大于所有已知值
{
q->next = insert;
insert->next = NULL;
}
p = H->next;
printf("\n");
Print_List(H);
} void Delete_num(StuLink &H)//从链表中删除指定学号的学生。
{
StuLink p = H->next, q = H;
char grad[10];
printf("请输入想删除的学生的学号:\n");
scanf("%s",grad);
while(p)
{
if(strcmp(p->grad,grad)==0)
{
q->next = p->next;
free(p);
break;
}
q = q->next;
p = p->next;
}
Print_List(H);
} student *Search_major_subject_score(StuLink &H)
{ //查找某个专业的、某门课程的成绩小于某个分数的学生,返回指向该学生结点的指针。
char spec[10];
float score;
StuLink p = H->next;
int lesson;
printf("请输入专业、课程序号和门限分数:\n");
scanf("%s%d%f",spec,&lesson,&score);
while(p)
{
if(strcmp(p->spec,spec)==0)
if(lesson==1 && p->score1<score || lesson==2 && p->score2<score || lesson==3 && p->score3<score)
return p;
p = p->next;
}
return NULL;
} void Delete_major_subject(StuLink &H)
{ //从链表中删除某个专业的、某门课程的成绩小于某个分数的学生。
char spec[10];
float score;
StuLink p = H->next, q = H;
int lesson,flag = 0;
printf("请输入专业、课程序号和门限分数:\n");
scanf("%s%d%f",spec,&lesson,&score);
while(p)
{
if(strcmp(p->spec,spec)==0 && lesson == 1 && p->score1 < score) // cs 1 94
{
Output(p);
q->next = p->next;
free(p);
p = q->next;
flag = 1;
}
else if(strcmp(p->spec,spec)==0 && lesson == 2 && p->score2 < score) // cs 1 94
{
Output(p);
q->next = p->next;
free(p);
p = q->next;
flag = 1;
}
else if(strcmp(p->spec,spec)==0 && lesson == 3 && p->score3 < score) // cs 1 94
{
Output(p);
q->next = p->next;
free(p);
p = q->next;
flag = 1;
}
else
{
q = p;
p = p->next;
}
}
if(flag==0) printf("不存在此学生!\n");
else
{
printf("剩余学生:\n");
p = H->next;
while(p)
{
Output(p);
p = p->next;
}
}
} void write(StuLink &H)//写入其他文件
{
StuLink p = H->next;
FILE *w = fopen("other.txt","w");
fprintf(w,"%s %s %s %s %s %s %s",a,b,c,d,e,f,g);
while(p)
{
fprintf(w,"\n%s %s %s %s %d %d %d",p->grad,p->name,p->spec,p->stu_class,p->score1,p->score2,p->score3);
p = p->next;
}
fclose(w);
printf("写入成功!");
} int main()
{
StuLink H = CreateList(),temp;
int k;
printf("菜单\n1.写入文件\n2.随机读取学生信息\n3.查找指定学号的学生\n4.按学号顺序插入节点\n");
printf("5.从链表中删除指定学号的学生\n6.查找某个专业的、某门课程的成绩小于某个分数的学生,返回其指针\n");
printf("7.从链表中删除某个专业的、某门课程的成绩小于某个分数的学生\n8.重现菜单\n9.打印链表\n10.覆盖式写入\n0.退出\n");
printf("请输入选项:");
scanf("%d",&k);
k = int(k);
while(k)
{
k = int(k);
switch(k)
{
case 0:
break;
case 1:
Save(H);
break;
case 2:
Fetch(H);
break;
case 3:
temp = Search_num(H);
if(temp)
{
printf("指针为:%d\n",temp);
printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n");
Output(temp);
}
else
printf("不存在此学生!\n");
break;
case 4:
InsertList(H);
break;
case 5:
Delete_num(H);
break;
case 6:
temp = Search_major_subject_score(H);
if(temp)
{
printf("指针为:%d\n",temp);
printf(" 学号 姓名 专业 班级 成绩1 成绩2 成绩3\n");
Output(temp);
}
else
printf("不存在此学生!\n");
break;
case 7:
Delete_major_subject(H);
break;
case 8:
printf("菜单\n1.写入文件\n2.随机读取学生信息\n3.查找指定学号的学生\n4.按学号顺序插入节点\n");
printf("5.从链表中删除指定学号的学生\n6.查找某个专业的、某门课程的成绩小于某个分数的学生,返回其指针\n");
printf("7.从链表中删除某个专业的、某门课程的成绩小于某个分数的学生\n8.重现菜单\n9.打印链表\n10.覆盖式写入\n0.退出\n");
break;
case 9:
Print_List(H);
break;
case 10:
write(H);
break;
default:
printf("输入有误,请重新输入!\n");
}
printf("请输入选项:");
scanf("%d",&k);
}
return 0;
}

2.txt文本文件内容:

grad name spec     class     score1 score2 score3
2201 Amy cs 2018-1 98 95 98
2202 Bob cs 2018-2 91 74 59
2203 Cindy cs 2018-2 98 84 79
2204 Dell law 2018-1 86 94 99
2205 Emy law 2018-1 98 86 89

基于数组或链表的学生信息管理系统(小学期C语言程序实训)的更多相关文章

  1. 基于数据库MySQL的简易学生信息管理系统

    通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生 ...

  2. 基于JSP+Servlet的学生信息管理系统

    JavaWeb期末项目,一个基于JSP和Servlet的学生信息管理系统实现,前端用了bootstrap和一些自定义的css样式,数据库用了mysql 传送门: GitHub 实现功能 登录(教师, ...

  3. [项目分享]JSP+Servlet+JDBC实现的学生信息管理系统

    本文存在视频版本,请知悉 项目简介 项目来源于:https://gitee.com/liu_xu111/JavaWeb01 这次分享一个学生管理系统,我感觉这是程序员在大学时期的毕设和课程设计选择最多 ...

  4. 基于Spring MVC + Spring + MyBatis的【学生信息管理系统】

    资源下载:https://download.csdn.net/download/weixin_44893902/45603211 练习点设计: 模糊查询.删除.新增 一.语言和环境 实现语言:JAVA ...

  5. C++ 简单的学生信息管理系统

    // // main.cpp // 2013-7-17作业1 // // Created by 丁小未 on 13-7-17. // Copyright (c) 2013年 dingxiaowei. ...

  6. PHP实现简单的学生信息管理系统(web版)

    (∩_∩) 1.概述 学了php的一些基础,包括HTML,php,pdo,mysql操作等,一直都没有将它们有机结合.最近写了一个简单的网页版学生信息管理系统,前台用HTML,脚本用到了JavaScr ...

  7. 大一C语言结课设计之《学生信息管理系统》

    第一次写这么长的程序,代码仅供參考,有问题请留言. /* ** 学生信息管理系统 ** IDE:Dev-Cpp 4.9.9.2 ** 2014-6-15 */ #include <stdio.h ...

  8. 学生信息管理系统(c语言)

    ①注意: 程序中使用了sleep()函数.system()函数 关于 sleep() 函数 sleep() 函数的头文件和用法会因环境的不同而有所不同. 具体见-sleep()函数功能及用法 关于sy ...

  9. 学生信息管理系统(C语言)

    #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct student ...

随机推荐

  1. 处理化学SDF文件出现乱码的解决经验

    近期,在VS2019中用WTL编写一个处理化学SDF文件的程序,遇到多处数据出现乱码的问题,典型一处情况如下:在原始SDF文件的一个字段中,有个形如下面的文字信息: https://product.p ...

  2. 记一次 .NET 某金融企业 WPF 程序卡死分析

    一:背景 1. 讲故事 前段时间遇到了一个难度比较高的 dump,经过几个小时的探索,终于给找出来了,在这里做一下整理,希望对大家有所帮助,对自己也是一个总结,好了,老规矩,上 WinDBG 说话. ...

  3. SpringMVC 01: SpringMVC + 第一个SpringMVC项目

    SpringMVC SpringMVC概述: 是基于MVC开发模式的框架,用来优化控制器 是Spring家族的一员,也具备IOC和AOP 什么是MVC: 它是一种开发模式,是模型视图控制器的简称,所有 ...

  4. RabbitMQ 入门系列:10、扩展内容:延时队列:延时队列插件及其有限的适用场景(系列大结局)。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  5. VS Code中Markdown常用插件

    目录 目录 1.Markdown All in One 2.Markdown Preview Enhanced 3.markdownlint 1.Markdown All in One 自动生成目录 ...

  6. mysql选择列建立索引选择

    1. 选择Where子句中筛选性好的列,即列中数据大量不重复 2. 索引名最好 idx_ 开头 3. 包含在 Order by ; Group By; Distinct 中的字段可以添加索引,可以提高 ...

  7. 【Android 逆向】switch 的smail特征

    JAVA 源码 ... String str1 = packedSwitch(1); ... private String packedSwitch(int i) { String str = nul ...

  8. 【项目实战】自备相机+IMU跑通Vins-Mono记录

    前言 初次接触SLAM,公司要求用自己的设备来跑通vinsmono这个程序,虽然已经跑通了别人的数据包,但是真正自己上手来运行这个程序,发现真的是困难重重,特意在此记载下来整个过程,以供大家参考. 我 ...

  9. Kubernetes 多租户:资源配额

    资源配额用于管理命名空间中对象使用的资源量,我们可以按 CPU 和内存用量或对象数量来设置配额.通过资源配额,可以确保租户不会使用超过其分配份额的集群资源. 资源配额是通过 ResourceQuota ...

  10. 8.X 的安装配置简化体现

    文章转载自:https://mp.weixin.qq.com/s/CEYYKUub81mk59B3lqAcBA 节点无需任何安全配置,即可实现 TLS 加密通信.Https 加密通信. TLS 应用于 ...