当前位置:首页 » 考试成绩 » 学生成绩管理系统

学生成绩管理系统

发布时间: 2020-11-29 10:43:58

『壹』 一个学生成绩管理系统

#include<stdio.h>
#include<string.h>
#include<math.h>

struct student_type
{
char name[8];
int num;
int Class; /*把class第一个字母大写了,因为在VC中class为类关键字*/
float score[3];
double ave;
}stud[4];

int main()
{
void Write (); /*把write第一个字母大写了,因为C语言中有write函数 */
void save ();
void display ();
int n=0;
while (1)
{
printf ("\n\t\t\t\t学生成绩管理\n\n");
printf ("\t1:请输入学生的成绩记录\n");
printf ("\t2:显示成绩记录\n");
printf ("\t3:退出系统\n");
printf ("\t输入操作选项序号:");
scanf ("%d",&n);
switch (n)
{
case 1 : Write (); break;
case 2 : display (); break;
case 3 : printf("\n\t\t\t**************谢谢使用!**************\n");break;
default : printf("\n请输入1、2或3!!!");
}
if (n==3) break;
}
system("pause");
return 0;
}

/* *********输入学生成绩**********/
void Write()
{
int i=0, j=0;
for(i=0; i<4 ;i++)
{
printf("\n请输入学号 姓名 班级 :");
scanf("%d%s%d",&stud[i].num, &stud[i].name, &stud[i].Class);
printf("\n请依次输入课程成绩 :"); /*这句话从循环中移了出来 */
for(j=0; j<3; j++)
{
scanf("%f", &stud[i].score[j]);
}
stud[i].ave = (stud[i].score[0] + stud[i].score[1]
+ stud[i].score[2]) / 3;
}
printf ("\n\t\t是否保存?\n\t\t\t是:1;\n\t\t\t否:2.\n");
scanf ("%d", &i); /* i前面加& */
if (i==1)
save();
else
main();
}

/**********读出文件资料***********/
void display ()
{
int i=0;
FILE *fp;
fp = fopen ("score.txt","r");
if ((fp=fopen("score.txt","r")) == NULL)
{
printf("cannot open this score");
exit (0);
}
for (i=0; i<4; i++)
{
fscanf (fp, "%11d%s%2d%5.2f%5.2f%5.2f%5.2f\n", &stud[i].num, &stud[i].name[i],
&stud[i].Class, &stud[i].score[0], &stud[i].score[1], &stud[i].score[2],
&stud[i].ave);
printf ("%11d%s%2d%5.2f%5.2f%5.2f%5.2f\n", stud[i].num, stud[i].name[i],
stud[i].Class, stud[i].score[0], stud[i].score[1], stud[i].score[2],
stud[i].ave);
}
fclose (fp);
}

/**********资料写入文件**********/
void save()
{
FILE *fp ; /* fp无需赋NULL */
int i=0; /* i定义在开始会好些 * /

fp = fopen ("score.txt","w");
fprintf (fp,"学号 姓名 班级 课程1 课程2 课程3 平均成绩\n");

for (i=0; i<4; i++)
{
//fwrite(&stud[i], sizeof(struct student_type), 1, fp);
fprintf (fp, "%11d%s%2d%5.2f%5.2f%5.2f%5.2lf\n", stud[i].num, stud[i].name,
stud[i].Class, stud[i].score[0], stud[i].score[1], stud[i].score[2],
stud[i].ave); /*把stud[i].name[i] 改成了stud[i].name */
}
fclose (fp);
printf ("\n\n*******************恭喜,保存完成!*******************\n\n");
}

『贰』 学生成绩管理系统c

#include "stdio.h"
#include<conio.h>
#include<string.h>
#include<stdlib.h>
struct book{
char number[21];
char shuming[30];
int shuliang;
int jiage;
char zhuanye[20];
char zuozhe[26];
char chubanshe[20];
char beizhu[100];
struct book *next;
};

struct book *creat() /*创建链表*/
{
struct book *p,*head,*end;
head=end=p=(struct book *)malloc(sizeof(struct book));
printf("输入教材编号为0结束输入,每项信息都必须输入内容。\n");
do
{
printf("\n教材编号:");
gets(p->number);
if(strcmp(p->number,"0")==0){ end->next=NULL; return head;}
end=p;
printf("\n教材名称:");
gets(p->shuming);
printf("\n教材数量:");
scanf("%d",&p->shuliang);
printf("\n教材价格:");
scanf("%d",&p->jiage);
getchar();
printf("\n教材专业:");
gets(p->zhuanye);
printf("\n教材作者:");
gets(p->zuozhe);
printf("\n教材出版社:");
gets(p->chubanshe);
printf("\n备注:");
gets(p->beizhu);
p=(struct book *)malloc(sizeof(struct book));
end->next=p;
}while(1);

}

void save(struct book *head) /*保存链表*/
{FILE *fp;
struct book *p;
char filename[30];
int ch;
printf("请输入“文件名.后缀”:");
scanf("%s",filename);
if((fp=fopen(filename,"r"))!=NULL)
{
printf("\n该文件已存在,是否覆盖?1,是 2,否");
scanf("%d",&ch);
if(ch!=1)
return;
}
if((fp=fopen(filename,"w"))==NULL) { printf("\n文件保存失败");getchar();return;}
p=head;
do{
fprintf(fp,"\n%s",p->number);
fprintf(fp,"\n%s",p->shuming);;
fprintf(fp,"\n%d",p->shuliang);
fprintf(fp,"\n%d",p->jiage);
fprintf(fp,"\n%s",p->zhuanye);
fprintf(fp,"\n%s",p->zuozhe);
fprintf(fp,"\n%s",p->chubanshe);
fprintf(fp,"\n%s",p->beizhu);
p=p->next;
}while(p!=NULL);
fprintf(fp," over");
printf("\n成功保存");
getchar();
getchar();
fclose(fp);
}

void print(struct book *head) /*输出链表*/
{
struct book *p;
p=head;
if(p==NULL) { printf("未打开任何文件,无法显示"); getch();return;}
do{
printf("\n\n教材编号:%s",p->number);
printf("\n教材名称:%s",p->shuming);;
printf("\n数量:%d",p->shuliang);
printf("\n价格:%d",p->jiage);
printf("\n专业:%s",p->zhuanye);
printf("\n作者:%s",p->zuozhe);
printf("\n出版社:%s",p->chubanshe);
printf("\n备注:%s",p->beizhu);
p=p->next;
}while(p!=NULL);
}

struct book *openfile() /*打开文件*/
{struct book *p,*f,*head;
FILE *fp;
char filename[20];
printf("\n请输入路径,文件名,和后缀):");
scanf("%s",filename);
if((fp=fopen(filename,"r"))==NULL){ printf("\n文件找不到,请检查是否有该文件和路径是否正确");getchar();return NULL;}
head=f=p=(struct book *)malloc(sizeof(struct book));
fscanf(fp,"%s%s%d%d%s%s%s%s",p->number,p->shuming,&p->shuliang,&p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
while(!feof(fp))
{ p=(struct book *)malloc(sizeof(struct book));
f->next=p;

fscanf(fp,"%s%s%d%d%s%s%s%s",p->number,p->shuming,&p->shuliang,&p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
if(strcmp(p->number,"over")==0){ f->next=NULL; printf("\n文件打开成功,可以显示此信息");getchar(); return head; }
f=p;
}

return head;
}

void namesort(struct book *head) /*按教材名称排序*/
{ struct book *p,*t,*f,*h;
char ch[20];
int i;
h=t=f=p=head;
if(head==NULL) {printf("未打开任何文件");getchar();return; };
f=p->next;

for(p=head;p->next!=NULL;p=p->next)
{
for(t=head,f=t->next;t->next!=NULL;f=f->next,t=t->next)
{

if(strcmp(t->shuming,f->shuming)>0)
{
strcpy(ch,t->number );
strcpy(t->number,f->number);
strcpy(f->number,ch);

strcpy(ch,t->shuming );
strcpy(t->shuming,f->shuming);
strcpy(f->shuming,ch);

i=t->shuliang ;
t->shuliang=f->shuliang;
f->shuliang=i;

i=t->jiage ;
t->jiage=f->jiage;
f->jiage=i;

strcpy(ch,t->zhuanye);
strcpy(t->zhuanye,f->zhuanye);
strcpy(f->zhuanye,ch);

strcpy(ch,t->zuozhe);
strcpy(t->zuozhe,f->zuozhe);
strcpy(f->zuozhe,ch);

strcpy(ch,t->chubanshe);
strcpy(t->chubanshe,f->chubanshe);
strcpy(f->chubanshe,ch);

strcpy(ch,t->beizhu);
strcpy(t->beizhu,f->beizhu);
strcpy(f->beizhu,ch);

}

}
}
print(h);
}

void chubanshesort(struct book *head) /*按出版社排序*/
{ struct book *p,*t,*f,*h;
char ch[20];
int i;
h=t=f=p=head;
if(head==NULL) {printf("未打开任何文件");getchar();return; }
f=p->next;

for(p=head;p->next!=NULL;p=p->next)
{
for(t=head,f=t->next;t->next!=NULL;f=f->next,t=t->next)
{

if(strcmp(t->chubanshe,f->chubanshe)>0)
{
strcpy(ch,t->number );
strcpy(t->number,f->number);
strcpy(f->number,ch);

strcpy(ch,t->shuming );
strcpy(t->shuming,f->shuming);
strcpy(f->shuming,ch);

i=t->shuliang ;
t->shuliang=f->shuliang;
f->shuliang=i;

i=t->jiage ;
t->jiage=f->jiage;
f->jiage=i;

strcpy(ch,t->zhuanye);
strcpy(t->zhuanye,f->zhuanye);
strcpy(f->zhuanye,ch);

strcpy(ch,t->zuozhe);
strcpy(t->zuozhe,f->zuozhe);
strcpy(f->zuozhe,ch);

strcpy(ch,t->chubanshe);
strcpy(t->chubanshe,f->chubanshe);
strcpy(f->chubanshe,ch);

strcpy(ch,t->beizhu);
strcpy(t->beizhu,f->beizhu);
strcpy(f->beizhu,ch);

}

}
}
print(h);
}

void shumingsearch(struct book *head) /*按教材名称查找*/
{ struct book *p;
char name[20];
int c;
if(head==NULL) {printf("未打开任何文件");getchar();return;}
printf("1,查找专业 2,查找教材名称:");
scanf("%d",&c);
getchar();
if(c==2)
printf("请输入要查找的教材名称:");

else printf("请输入要查找的专业:");
gets(name);
p=head;
do{ if(c==2)
if(strcmp(p->shuming,name)==0)
{
printf("教材编号:%s\n教材名称:%s\n数量:%d\n价格:%d\n专业:%s\n作者:%s\n出版社:%s\n备注:%s\n",p->number,p->shuming,p->shuliang,p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);

}
if(c==1)
if(strcmp(p->zhuanye,name)==0)
{
printf("教材编号:%s\n教材名称:%s\n数量:%d\n价格:%d\n专业:%s\n作者:%s\n出版社:%s\n备注:%s\n",p->number,p->shuming,p->shuliang,p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);

}
p=p->next;
}while(p!=NULL);
printf("查找完成");
return;
}

struct book *add(struct book *head) /*增加记录*/
{ struct book *p,*e,*f,*h;
if(head==NULL) {printf("未打开任何文件");getchar(); return NULL;}
h=f=e=head;

p=(struct book *)malloc(sizeof(struct book));
printf("\n教材编号:");
gets(p->number);
printf("\n教材名称:");
gets(p->shuming);
printf("\n数量:");
scanf("%d",&p->shuliang);
printf("\n价格:");
scanf("%d",&p->jiage);
getchar();
printf("\n专业:");
gets(p->zhuanye);
printf("\n作者:");
gets(p->zuozhe);
printf("\n出版社:");
gets(p->chubanshe);
printf("\n备注:");
gets(p->beizhu);

if(strcmp(f->number,p->number)>0) { p->next=f;h=p;printf("\n添加成功");return h;}
if(f->next==NULL) { f->next=p;p->next=NULL;printf("\n添加成功");return h;}
do{
if(f->next!=NULL)
if(strcmp(f->number,p->number)>0)
{
e->next=p;p->next=f;printf("\n添加成功");return h;
}

if(f->next==NULL)
{
f->next=p;
p->next=NULL;
printf("\n添加成功");
return h;
}

f=f->next;
e=e->next;
}while(1);
}

struct book *delet(struct book *head) /*删除记录*/
{ struct book *p,*e;
char num[20];
if(head==NULL) {printf("未打开任何文件");getchar();return NULL;}
printf("请输入要删除的教材编号:");
scanf("%s",num);
p=e=head;
if(strcmp(p->number,num)==0) { head=head->next; print(head);return head;}
else p=p->next;
do{

if(strcmp(p->number,num)==0)
{
if(p->next!=NULL)
e->next=p->next;
if(p->next==NULL) e->next=NULL;
print(head);
return head;
}
p=p->next;
e=e->next;
}while(p!=NULL);
printf("搜索完毕,未找到该记录");
return head;
}

struct book *change(struct book *head) /*修改记录*/
{ struct book *p;
char num[20];
if(head==NULL) {printf("未打开任何文件");getchar();return NULL;}
printf("请输入要修改的教材编号:");
scanf("%s",num);
getchar();
p=head;
do{
if(strcmp(p->number,num)==0)
{
printf("教材编号:%s\n教材名称:%s\n数量:%d\n价格:%d\n专业:%s\n作者:%s\n出版社:%s\n备注:%s\n",p->number,p->shuming,p->shuliang,p->jiage,p->zhuanye,p->zuozhe,p->chubanshe,p->beizhu);
printf("\n教材编号:");
gets(p->number);
printf("\n教材名称:");
gets(p->shuming);
printf("\n数量:");
scanf("%d",&p->shuliang);
printf("\n价格:");
scanf("%d",&p->jiage);
getchar();
printf("\n专业:");
gets(p->zhuanye);
printf("\n作者:");
gets(p->zuozhe);
printf("\n出版社:");
gets(p->chubanshe);
printf("\n备注:");
gets(p->beizhu);
printf("修改成功");
return head;
}
p=p->next;
}while(p!=NULL);
printf("未找到要修改的记录");
return head;
}

int mima()
{ FILE *fp;
char mima1[20],mima2[20];

if((fp=fopen("mima","r"))==NULL)

{ printf("尚未设置密码请输入:");
scanf("%s",mima1);
printf("请再次输入密码:");
scanf("%s",mima2);
if(strcmp(mima1,mima2)!=0) { printf("两次密码不一样");return 0;}
else {
fp=fopen("mima","w");
fprintf(fp,"%s",mima1);
printf("密码设置成功");
return 1;
}
}

printf("请输入初始化密码:");
scanf("%s",mima1);
fscanf(fp,"%s",mima2);
if(strcmp(mima1,mima2)==0)
{
printf("密码正确");
printf("请输入要删除的文件名:");
scanf("%s",mima1);
if(remove(mima1)==0)
{
printf("删除成功");
getchar();
return 1;
}
else {
printf("删除失败,请检查是否存在该文件或路径是否正确");
getchar();
return 0;
}
}
else {
printf("密码错误");
getchar();
return 0;
}

}

void main()
{
struct book *head=NULL;
char i;

printf(" 88888888888 \n");
printf(" d88888888888b \n");
printf(" d88888 88888b \n");
printf(" d88P 88b \n");
printf(" 888' `88b \n");
printf(" 88P Y88 \n");
printf(" 88 88\n");
printf(" 88 88\n");
printf(" 88 88\n");
printf(" 88 88\n");
printf(" 88 88\n");
printf(" 88 ,aa. ,aa. 88 \n");
printf(" 88 d88b d88b 88 \n");
printf(" ,=88 Y88P Y88P 88=, \n");
printf(" ,d88P' `' _aa_ `' `Y88b, \n");
printf(" 88P' (8888) `Y88 ad88888b \n");
printf(" 88 ~^^~ 88 d88Y Y8b\n");
printf(" Yb._ _.d8 d8Y 88\n");
printf(" d88888888ba888=,. .,=8888 d88 88 \n");
printf(" ★☆88P Y88~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~★☆\n");
printf(" ★☆ 88 88 ★☆\n");
printf(" ★☆88 88 欢迎使用本教材系统,按任意键进入系统 ★☆\n");
printf(" ★☆ 8b,___,d8 ★☆\n");
printf(" ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n");

getch();

system("cls");
do{
printf(" ☆★☆★☆★ 教材管理系统 ☆★☆★☆★\n");
printf("m--菜单 h--帮助");
printf("\n请输入命令:");
i=getch();
if(i=='h')
{ printf("\n1,录入教材信息的时候,每一个项目都必须输入相应的内容。\n2,修改,增加,删除,查找记录前必须先打开一个文件,修改完后必须记得保存教材信息。\n3,必须使用正确的路径打开文件,建议保存文件时候不用输入路径(此时是默认路径,即保存在程序目录下。)");
getch();
break;
}
if(i=='m')
break;
system("cls");
}while(i!='m'||i!='h');

system("cls");
do{
printf(" ☆★☆★☆★ 教材管理系统 ☆★☆★☆★\n");

printf("┌————-———┐\n");
printf("│1,录入教材信息│\n│2,显示教材信息│\n│3,打开一个记录│\n│4,编辑一个记录│\n│5,保存教材信息│\n│6,查找记录 │\n│s,初始化系统 │\n│e,退出系统 │\n");
printf("└———————-┘\n");
printf("\n请输入功能编号:");
i=getch();
system("cls");
switch(i)
{
case '1': head=creat();save(head);break;
case '2': print(head);break;
case '3': head=openfile();break;
case '4': system("cls");
printf("┌————-———┐\n");
printf("│1,增加一个记录│\n");
printf("│2,删除一个记录│\n");
printf("│3,修改一个记录│\n");
printf("└———————-┘\n");
i=getch();
switch(i)
{
case '1':
head=add(head);break;
case '2':
head=delet(head);break;
case '3': head=change(head);break;
default: break;
}
break;
case '5': save(head);break;
case '6': shumingsearch(head);break;
case 's': mima();break;
case 'e': exit(0);
default :break;
}
system("cls");
}while(1);
}

我想这个程序包含了你那个成绩管理系统的全部要求,但我这个是教材管理系统我想改一下就可以了,具体如何改就要看楼主的天赋咯,呵呵。参考一下吧

『叁』 c++ 学生成绩管理系统

如果你是计算机系的学生真的希望你不要完全复制,做下参考自己编写出来才能有所收获,这是对你的将来负责;如果你只是应付一下作业,那就随便了。

# include <iostream>
# include <fstream>
# include <string.h>
#include <conio.h>//用getch();
using namespace std;

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Student
{
public:
char name[20];
char Id[20];
int Cnum; //C课程得分
int Mnum; //数学课程得分
int Enum; //英语课程得分
int sum; //总分
Student * Next;
void Input()
{
cout<<"\t\t请输入学生的姓名:"; cin>>name;
cout<<"\t\t请输入学生的学号:"; cin>>Id;
cout<<"\t\t请输入C课程的成绩:"; cin>>Cnum;
cout<<"\t\t请输入数学课程的成绩:"; cin>>Mnum;
cout<<"\t\t请输入英语课程的成绩:"; cin>>Enum;
sum=Cnum+Mnum+Enum;
}
void ReadFile(istream & in)
{
in>>name>>Id>>Cnum>>Mnum>>Enum>>sum;
}
void Show()
{
cout<<"姓名:"<<name<<endl<<"学号:"<<Id<<endl<<"C++:"<<Cnum<<endl
<<"数学:"<<Mnum<<endl<<"外语:"<<Enum<<endl<<"总成绩:"<<sum<<endl<<endl<<endl;
}
};

//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Studentmassage
{
public:
Studentmassage();
~Studentmassage();
void ShowMenu();
void Find();
void Save();
void ModifyItem();
void RemoveItem();
void Swap(Student *,Student *);
void Sort();
//void Unpass();
int ListCount();
//void Average();
void Display()
{
for(Student * p=Head->Next;p!=End;p=p->Next)
p->Show();
cout<<"输入任意字符!继续……";
getch();
}
void AddItem()
{
End->Input();
End->Next=new Student;
End=End->Next;
cout<<"添加成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
private:
Student * Head,* End;
ifstream in;
ofstream out;
Student *FindItem(char * name)
{
for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!strcmp(p->Next->name,name))return p;
return NULL;
}
Student *FindID(char * Id)
{
for(Student * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!strcmp(p->Next->Id,Id))return p;
return NULL;
}
};

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::Studentmassage()
{
Head=new Student;
Head->Next=new Student;
End=Head->Next;
in.open("sort.txt");
if(!in)
cout<<"这是一个新系统,无学生信息。请先输入。"<<endl;
else
{
while(!in.eof())
{
End->ReadFile(in);
if(End->name[0]=='\0')break;
End->Next=new Student;
End=End->Next;
}
in.close();
cout<<"\t\t读取学生信息成功!"<<endl;
}
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::~Studentmassage()
{
Save();
for(Student * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ShowMenu()
{
cout<<"〓〓〓〓〓〓〓〓〓〓 ☆ 学 生 成 绩 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.显示学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.排序统计成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.查找学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 5.删除学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 6.修改学生信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系统 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;

cout<<"\n\t\t\n\t\t请选择:";
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Find()
{
char name[20] ,Id[10];
int x;
Student * p=NULL;
cout<<"\n\t\t*********************************\n";
cout<<"\t\t※ 1.按学生的姓名查找\n\t\t※ 2.按学生学号查找";
cout<<"\n\t\t*********************************\n请选择:";
cin>>x;
switch(x)
{
case 1:{cout<<"\t\t请输入要查找的学生的姓名:";cin>>name;
if(p=FindItem(name))
{
p->Next->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该姓名的学生!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
case 2:
{
cout<<"\t\t请输入要查找的学生的学号:";cin>>Id;
if(p=FindID(Id))
{
p->Next->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该学好的学生!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
}

}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ModifyItem() //修改信息
{
char name[20];
Student * p=NULL;
cout<<"\t\t请输入要修改的人的姓名:";cin>>name;
if(p=FindItem(name))
{
cout<<"\t\t已找到学生的信息,请输入新的信息!"<<endl;
p->Next->Input();
cout<<"修改成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::RemoveItem() // 删除信息
{
char name[20];
Student * p=NULL,*temp=NULL;
cout<<"\t\t请输入要删除的学生的姓名:"<<endl;cin>>name;
if(p=FindItem(name))
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<<"\t\t删除成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Swap(Student *p1, Student *p2)//交换两个combox变量的数据域
{
Student *temp=new Student;
strcpy(temp->name,p1->name);
strcpy(temp->Id,p1->Id);
temp->Cnum=p1->Cnum;
temp->Mnum=p1->Mnum;
temp->Enum=p1->Enum;
temp->sum=p1->sum;

strcpy(p1->name,p2->name);
strcpy(p1->Id,p2->Id);
p1->Cnum=p2->Cnum;
p1->Mnum=p2->Mnum;
p1->Enum=p2->Enum;
p1->sum=p2->sum;

strcpy(p2->name,temp->name);
strcpy(p2->Id,temp->Id);
p2->Cnum=temp->Cnum;
p2->Mnum=temp->Mnum;
p2->Enum=temp->Enum;
p2->sum=temp->sum;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int Studentmassage::ListCount()//统计当前链表的记录总数,返回一个整数
{
if(! Head)
return 0;
int n=0;
for(Student * p=Head->Next;p!=End;p=p->Next)
{
n++;
}
return n;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Sort()//对当前链表进行排序
{
cout <<"Sorting..."<<endl;
Student *p=NULL,*p1=NULL,*k=NULL;
int n=Studentmassage::ListCount();
if(n<2)
return;
for(p=Head->Next;p!=End;p=p->Next)
for(k=p->Next;k!=End;k=k->Next)
{
if(p->sum>k->sum)
{
Studentmassage::Swap(p,k);
}
}
cout <<"排序完成!"<<endl;
getch();
return;
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Save()
{
out.open("sort.txt");
for(Student *p=Head->Next;p!=End;p=p->Next)
out<<p->name<<"\t"<<p->Id<<"\t"<<p->Cnum<<"\t"
<<p->Mnum<<"\t"<<p->Enum<<"\t"<<p->sum<<'\n';
out.close();
}

//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int main()
{
int x,i=0;
bool quit=false;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t◎★★★★【 欢迎进入学生成绩管理系统 】★★★★◎"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<<endl;;
Studentmassage Grade;
cout<<"按任意键开始……";
getch();
while(!quit)
{
system("cls");
Grade.ShowMenu();
cin>>x;
switch(x)
{
case 0:quit=true;break;
case 1:Grade.AddItem();break;
case 2:Grade.Display();break;
case 3:Grade.Sort();break;
case 4:Grade.Find();break;
case 5:Grade.RemoveItem();break;
case 6:Grade.ModifyItem();break;
}
}
return 0;
}
打字不易,如满意,望采纳。

『肆』 学生成绩管理系统

学生成绩管理系统C代码
/ *头文件* /
#包括
包括
#包括 / *其他指令* /
包括中/ *字符串函数* /
/ *内存操作函数* /
/ *字符处理函数* /
包括 / *动态地址分配函数* /
定义:LEN大小(学生)
typedef结构中,学??生/ *定义结构数组,用于缓存数据* /
{字符数[6];
字符名称[5];
得分[3];
int总和;
>浮动平均水平;
诠释订单
结构STU *下;
}的学生;

/ *函数原型* /
学生的init( );/ /初始化函数* /
诠释MENU_SELECT的(); / *菜单函数* /
学生的create(); / *创建的链表* /
无效打印(学生*头); / *显示所有记录* /
无效搜索(学生*头); / *找到记录* /
学生删除(STUDENT *头); / *删除记录* / />学生排序(学生头); / *排序* /
学生(学生*头,新的学生*); *插入/ *插入记录* /
无效保存(的学生头); / *保存文件* /
学生的load(); / *读取文件* /

/ *主函数接口* /
主()
{的学生*头,新的;
头的init(); / *初始化链表头的值是NULL * /
(;) / *循环无限* /
{开关(menu??_select())
{
案例1:头= create()方法的突破;
案例2:打印(头);休息;
案例3:搜索(头);突破;
情况下,4头=删除(头);突破;
情况下5头排序(头);突破;
案例6:头插入(头,与新的);打破; / *新的返回地址* /
案例7:保存(头);
案例8:头=负载(
案例9:退出);突破;(0)/ *如果菜单,返回值是年底的9个项目* /
}
}
}

/ *初始化函数* /
学生的init()
{
返回NULL; / *返回一个空指针* /
}
a>
/ *菜单选择功能* /
menu_select

{N;
结构日期d / *定义的时间结构* / /> GETDATE(&D)/ *读取系统日期,并把它在结构上D * /
printf的(“按任意键进入菜单......”); / *按任意键进入主菜单* /
的getch(); / *读取从键盘输入一个字符,但不显示在屏幕上* /
clrscr(); / *清屏* / /> printf(“请********************************************* *********************************** \ n“);
printf(”请\ T \吨的\ n“);
printf(”请\ n \ t \ t学生成绩管理系统\ n“);
printf(”请************ ************************* MENU ************************ *************** \ n“);
printf的(”\ t \ t \ T1输入记录\ n“); / *输入学生记录* / BR /> printf的(“\ t \ t \ T2打印记录\ n”); / *显示* /
printf的(“\ t \ t \ T3的搜索记录名称\ n”); / * * /
printf的(“\ t \ t \ T4。删除记录\ n”); / *删除* /
printf的(“\ t \ t \ T5。排序,使新的文件\ n“); / *排序* / <br /输出(”\ t \ t \ T6插入记录到列表\ n“); / *插入* /
printf的(”\ t \ t \ T7保存的文件\ n“); / *保存* /
printf的(”\ t \ t \ T8负载的文件\ n“); / *读* /
printf的(”\ t \ T \ T9退出\ n“); / *退出* /
printf的(”\ n \ t \ t胡嘿黉\ n“);
printf的(”****** ************************************************** ************************ \ n“);
printf的(”\ t \ t \ t \ t%d \ \%d的\ \%e\“,d.da_year,d.da_mon,d.da_day); / *显示当前系统日期* /
做{
printf的(”\ n \ t \ t \拉幅机的选择(1?9):“);
scanf的(”%d“,&N);
}(N 9)/ *如果该选项是不减肥9 * /
回报率(N); / *返回选项的数量,主要功能调用相应的函数* /

}
/ *输入函数* /
学生创??建()
{I,S
学生头= NULL,* P / *定义函数这个函数返回一个指针表头指针* /
Clrscr();
(;)
{P =(学生)的malloc(LEN); / *打开了一个新的单元* / BR />(P)/ *如果指针p是空* /
{printf的(“\ Nout的记忆。”); / *输出内存溢出* /
回报(头); / *返回头指针,下同* /
}
printf的(“请输入NUM(0:列表结束):”);
scanf的(“%s”,P-> NUM);
(P->数[0] == '0')打破; / *如果第一个字符的学生数0输入* /
printf(“请结束输入姓名:“);
scanf的(”%s“,P->名称);
printf(”请输入%D分数\ n“); / *迅速启动分型结果* /

= 0; / *计算每个学生的总成绩,初始值为0 * /
(i = 0; I <3; i + +)/ * 3个疗程周期的3倍* /
{
做{
printf的(“得分%D:”,i +1);
scanf的(“%d”的,普 - >得分[I]);
(P->得分[I] 得分[I]> 100)/ *确保得分在0至100之间* /
printf的(“数据错误,请重新输入\ n”);
}而(P>得分[I] [I]> 100分);
= S + P->得分[I] / *堆积门的成绩* /
}
P->总和= S / *节省的总成绩* /
对平均= (浮)/ 3; / *首先转换类型转换s转换为float类型,然后寻求的平均* /
P->订单= 0; / *在此之前的值排序为0 * / BR /> P> =头; / *头节点作为一个新的输入节点的后继节点* /
头= P / *新的输入节点作为新的头节点* /
}
a>回报(头);
}

/ *显示所有记录函数* / >无效打印(学生头)
{i = 0; / *统计记录数* /
学生* P / *移动指针* /

Clrscr();
P =头; / *初始的头指针* / /> printf(“请\ n ************************************学生****** ****************************** \ n“);
printf(”请---- -------------------------------------------------- --------------------- \ n“); <br /输出(”|记录|编号|名称| SC1 SC2 SC3 |森|大道|订单| \ n“);
printf的(”------------------------------------ ------------------------------------------- \ n“); ...... />而(p! = NULL)
{
+ +;
printf的(“|%3D |%4 |%|%-4S 3D | 3D | 3D | %的3d |%4.2f |%-5d的| \“,
,对 - >数,对 - >名称,对 - >分数[0],对 - >分数[1],对 - > [2分],P->总之,对平均,P->订单);
P = P->下;
}
printf的(“------ -------------------------------------------------- ----------------------- \ n“);
printf的(”*************** *********************** END ************************** ************ \ n“);
}

/ *查找录音功能* /
无效搜索(学生*头) BR /> {STUDENT * p; / *移动指针* /
个char [5]; / *商店的名称的字符数组* /
Clrscr();
scanf函数
printf的(“请输入您的名字进行搜索。\ n”);(%S“,S);
P =头; / *分配的头指针P * /
而(STRCMP(P->名称,s)&& P = NULL)/ *的名称的记录时不看,或指针的时空* /
P = P-> / *移动指针指向下一个节点* /
(p! = NULL)/ *如果指针不为空* /
{printf(“请\ n ******** ***************************** FOUND ******************** **************** \ n“);
printf(”请---------------------- -------------------------------------------------- ------- \ n“);
printf的(”|编号|名称| SC1 SC2 | SC3 |森|大道|订购| \ n“);
printf的(” - -------------------------------------------------- --------------------------- \ n“);
printf的(”| 4 |%4S |%3D |%三维|%的3d |%的3d |%4.2f |%-5d的| \ N“,
对 - >数,对 - >名称,对 - >分数[0],对 - >分数[1],对 - >分数[2],对 - >总和,对 - >平均,对 - >顺序);
printf(“请------------------- -------------------------------------------------- --------- \ n“);
printf的(”***************************** ********** END ************************************** \ N“);
}
其他
printf的(”\ n该网页的没有NUM%的学生在名单上。\ n“); / *学生* /
}

/ *删除记录的函数* /
学生*头*删除(学生)

学生{N; * P1 * P2 / * P1是找到要删除一个节点的指针,P2及其前体的指针* /
字符c的s [6] / [6]用来存储学生数,c是用于输入字母* / </ clrscr();
printf的(“请输入删除的民:”);
scanf的(“%s”);
P1 = P2 =头; / * P1和P2富最初的头指针* /
(STRCMP(P1-NUM)&& P1 = NULL)/ *当记录数的学校不看,或指针不为空* / /> {P2 = P1 / * P1指针的值分配给P2 P1前体指针* /
P1 = P1->; / *点p1指针到下一条记录* /
} BR />(STRCMP(P1->民)== 0)/ *学生ID * /
{printf的(“***************** ********************* FOUND **************************** ******** \ n“);
printf(”请------------------------------ ------------------------------------------------- \ N“);
printf的(”|编号|名称| SC1 SC2 | SC3 |森|大道|在线订单| \ n“);
printf的(”--------- -------------------------------------------------- -------------------- \ n“);
printf的(”| 4 |%4S |%3D | 3D | 3D | 3D |%4.2f%5D | \ n“,
P1->民,P1->名称,P1->得分[0],P1 - > [1分],P1->得分[2] ,P1->总之,P1->平均,P1->订单);
printf的(“-------------------------- -------------------------------------------------- --- \ n“);
printf(”请*********************************** **** END ************************************** \ n“); ...... /> printf的(“你确定要删除的学生Y / N?”); / *提示你是否要删除,输入y删除n退出* /
(;)
/> {scanf函数(“%C”,&C);
(C =='N'| | C =='N'); / *如果你不删除,然后跳出循环* /
(C =='Y'| | C =='Y')
{
(P1 ==头)/ * P1 ==头,被删除节点是第一个节点* /
头= P1->下; / *第二个节点的地址给头* /
其他
P2->下一个= P1-> /否则,请单击节点地址被分配到前一个节点的地址* /
N = N-1; <br /输出(“\ nNum%的学生已被删除。\ n”,S); /> printf的(“不要忘记保存。\ n”); / *循环后已被删除* /
}
}
} 其他
printf的(“\ n该网页的没有NUM%的学生在名单上。\ n”); /,找不到节点* /
回报(头);
}

/ *排序函数* /
学生排序(学生头)
{INT I = 0; / *保存排名* /
学生* P1, * P2 * T,*温度; / *定义一个临时指针* /
温度=头下; / *原来的下一个节点的指针表头的头指针* /
头> = NULL; / *头节点的新表的第一个节点* /
(temp! = NULL)/ *当原表不为空,进行排??序* /
{
T =温度; / *取前表节点* /
TEMP =温度 - >; / *原来的头节点的指针向后* /
P1 =头/头*移动指针P1指针从头开始* /
P2 =头; / *移动指针P2为的P1前驱体的头指针的初始值* /
而(平均平均&& P1 = NULL)/ *成绩平均比??较* /
{
P2 = P1 / *点值小进行排序,新表指针落后* /
P1 = P1->下;
}
(P1 == P2)/ * P1 == P2,点值进行排序,应该排在第一个* / BR /> {
T-> = P1;进行排序的继任者的p * /
头= T / * / *新的头节点进行排序点* /
}
的else / *进行排序点应插入在中间的位置p2和p1的,例如为p的空尾之间* /
{
叔 - >下一个= p1的; / * t的后继是p1 * /
P2-> = T / * P2的继任吨* /
}
}
P1 =头; / *排序头指针被分配到P1准备填写的排名* /
(p1! = NULL)/ * p1是不是空的,下面的操作* /
{
+ +; / *节点数量* /
P1->订单; / *分配的节点数量的排名* /
P1 = P1->; / *指针后移* /
}
printf的(“的排序是SUCESSFUL。\ n”排序;} / *成功* /
回报(头);
}

/ *插入记录功能* /
学生插入(学生头STUDENT *新)
{STUDENT * P0,P1,P2;
整数N,SUM1;
P1 =头/ * P1点的第一个节点* /
P0 =新/ * P0点要插入节点* /
printf的(“\ n请输入一个新的记录。\ n”) / *提示信息记录* /
printf的(“请输入数量:”);
scanf函数(“%s”的新数);
printf(“输入的名称:“);
scanf的(”%s“的新名);
printf的(”请输入%d的分数。\ n“);
SUM1 = 0; / *保存新的得分纪录,初始值为0 * /
为(i = 0; I <3; i + +)
{
做{
printf的(“得分%D:“,i +1);
scanf的(”%d“的,与新>得分[]);
(新 - >得分[I]> 100 | |新 - >得分[I] <0)
printf(“请数据错误,请重新输入。\ n”);
}而(新 - >评分[我]> 100 | |新 - >评分[I] <0);
SUM1 = SUM1 +新 - >得分[I] / *累计门成绩* /
}
新 - >金额= SUM1; /存款总额新的记录* /
新的平均=()SUM1 / 3;
新订单= 0;
(头== NULL)/ *原链表为空表* /
{头= P0,P0-> = NULL;} / *节点指出P0口作为头节点* /
其他
{((P0->平均平均)&&(P1->!= NULL))
{P2 = P1 / P2点只是P1结点* /
P1 = P1->; / * P1落后节点* /
}
(P0->平均> = P1->平均)
{如果(头== P1)头= P0 / *插入到原来的第一个节点* / />其他P2-> = P0 / *在插入节点* /
P0-> = P1;}
其他
{P1->下一个= P0到P2点P0-> = NULL;} / *上的最后一个节点* /
}
N = N +1; / *节点数目加1 * /
头排序(头); / *调用sort函数的学生的成绩重新排序* /
printf的(“,已插入\ nStudent%s的。\ n”,新名);
printf的(“不要忘记保存新的文件。\ n“);
回报(头);
}

/ *将数据保存到文件函数* /
无效保存(学生*头)
{FILE * FP; / *定义点文件指针* /
STUDENT * p; / *定义移动指针* /
字符,OUTFILE [10];
输出(“请输入OUTFILE名称,例如C:\ \成绩\ n”);
scanf的(“%s”,OUTFILE);
((FP =打开(OUTFILE,“WB”) )== NULL)/ *为输出打开一个二进制文件,只写* /
{
printf的(“无法打开文件\ n”);
回报; / *如果您无法打开返回菜单* /
}
printf的(“\ nSaving的文件... \ n”);
P =头; / *移动指针从头开始* /
而(p! = NULL)/ * p不为空* /
{
FWRITE(P,LEN,1,FP); / *写的指针记录* /
P = P->下; / *指针后移* /
}
FCLOSE(FP); / *关闭文件* /
printf的(“将文件保存成功!\ n“);
}

/ *从文件功能* /
学生中读取数据负载()
{STUDENT * P1 * P2 *头= NULL; / *定义记录指针变量* /
FILE * FP / *定义指向文件的指针* /
字符的infile [10];
printf的(“输入INFILE名称,例如c:\ \成绩\ n“);
scanf的(”%s“,infile中);
((FP =的FOPEN(INFILE,”包“))= = NULL)/ *打开一个二进制文件只读* /
{
printf的(“无法打开文件\ n”);
回报(头);
}
printf的(“\ n载入的文件!\ n”);
P1 =(学生)的malloc(LEN); / *开辟了一条新的单位* /
(P1 )
{
printf的(“内存不足!\ n”);
回报(头);
}
头= P1 / *适用于空间,作为头指针* /

同时(!的feof(FP))/ *循环读取数据,直到年底结束的文件* / {

(FREAD(P1,LEN,1,FP)= 1)打破; / *如果你不读出的数据的循环* /
P1-> =(学生)的malloc(LEN); / *下一个结点打开空间* /
(P1->)
{
printf的(“内存不足!\ n”);
回报(头); BR />}
P2 = P1 / P2点只是P1结点* /
P1 = P1->; / *指针回新读入数据链当前的表* /
}
P2-> = NULL; / *最后一个节点的继任指针为空* /
FCLOSE(FP);
输出( “你已经成功从文件中读取数据!\ n”);
回报(头);
}

『伍』 学生成绩管理系统的代码是什么

代码如下:

for(i=0;i<66;i++)

printf("*");

printf(" ");

printf("1.Input record ");

printf("2.Caculate totel and average score of every course ");

printf("3.Caculate totel and average score of every student ");

printf("4.Sort in descending order by total score of every student ");

printf("5.Sort in ascending order by total score of every student ");

printf("6.Sort in ascending order by number ");

printf("7.Sort in ascending order by name ");

printf("8.Search by number ");

printf("9.Search by name ");

printf("10.Statistic analysis for every course ");

printf("11.List record ");

printf("12.Write to a file ");

printf("13.Read from a file ");

printf("0.Exit ");

for(i=0;i<66;i++)

printf("*");

printf(" ");

printf("Please enter your choice:");

printf(" ");

『陆』 什么是学生成绩管理系统

管理学生成绩的系统,里面需要定义一个class student,其中要有学生的编号,姓名各项成绩,总分,平局分等等。会要定义可以显示学生成绩的函数,排列成绩的函数,添加和删除学生的函数,修该成绩的函数,查询学生的函数,文件保存与读写的函数,主页面显示选择的函数。其他的你也可以再多加些功能。

『柒』 C语言程序设计学生成绩管理系统

#include
"stdio.h"
/*定义学生结构体*/
struct
Student
{
char
ID[20];
char
Name[20];
float
Mark1;
float
Mark2;
float
Mark3;
float
Average;
};
/*声明学生数组及学生数量*/
struct
Student
students[1000];
int
num=0;
/*求平均值*/
float
Avg(struct
Student
stu)
{
return
(stu.Mark1+stu.Mark2+stu.Mark3)/3;
}
/*通过学号返回数组下标*/
int
Student_SearchByIndex(char
id[])
{
int
i;
for
(i=0;i<num;i++)
{
if
(strcmp(students[i].ID,id)==0)
{
return
i;
}
}
return
-1;
}
/*通过姓名返回数组下标*/
int
Student_SearchByName(char
name[])
{
int
i;
for
(i=0;i<num;i++)
{
if
(strcmp(students[i].Name,name)==0)
{
return
i;
}
}
return
-1;
}
/*显示单条学生记录*/
void
Student_DisplaySingle(int
index)
{
printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("-------------------------------------------------------------\n");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[index].ID,students[index].Name,
students[index].Mark1,students[index].Mark2,students[index].Mark3,students[index].Average);
}
/*插入学生信息*/
void
Student_Insert()
{
while(1)
{
printf("请输入学号:");
scanf("%s",&students[num].ID);
getchar();
printf("请输入姓名:");
scanf("%s",&students[num].Name);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].Mark3);
getchar();
students[num].Average=Avg(students[num]);
num++;
printf("是否继续?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*修改学生信息*/
void
Student_Modify()
{
float
mark1,mark2,mark3;
while(1)
{
char
id[20];
int
index;
printf("请输入要修改的学生的学号:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if
(index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要修改的学生信息为:\n");
Student_DisplaySingle(index);
printf("--
请输入新值--\n");
printf("请输入学号:");
scanf("%s",&students[index].ID);
getchar();
printf("请输入姓名:");
scanf("%s",&students[index].Name);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark1);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark2);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].Mark3);
getchar();
students[index].Average=Avg(students[index]);
}
printf("是否继续?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*删除学生信息*/
void
Student_Delete()
{
int
i;
while(1)
{
char
id[20];
int
index;
printf("请输入要删除的学生的学号:");
scanf("%s",&id);
getchar();
index=Student_SearchByIndex(id);
if
(index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要删除的学生信息为:\n");
Student_DisplaySingle(index);
printf("是否真的要删除?(y/n)");
if
(getchar()=='y')
{
for
(i=index;i<num-1;i++)
{
students[i]=students[i+1];
}
num--;
}
getchar();
}
printf("是否继续?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*按姓名查询*/
void
Student_Select()
{
while(1)
{
char
name[20];
int
index;
printf("请输入要查询的学生的姓名:");
scanf("%s",&name);
getchar();
index=Student_SearchByName(name);
if
(index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要查询的学生信息为:\n");
Student_DisplaySingle(index);
}
printf("是否继续?(y/n)");
if
(getchar()=='n')
{
break;
}
}
}
/*按平均值排序*/
void
Student_SortByAverage()
{
int
i,j;
struct
Student
tmp;
for
(i=0;i<num;i++)
{
for
(j=1;j<num-i;j++)
{
if
(students[j-1].Average<students[j].Average)
{
tmp=students[j-1];
students[j-1]=students[j];
students[j]=tmp;
}
}
}
}
/*显示学生信息*/
void
Student_Display()
{
int
i;
printf("%10s%10s%8s%8s%8s%10s\n","学号","姓名","成绩","成绩","成绩","平均成绩");
printf("-------------------------------------------------------------\n");
for
(i=0;i<num;i++)
{
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",students[i].ID,students[i].Name,
students[i].Mark1,students[i].Mark2,students[i].Mark3,students[i].Average);
}
}
/*将学生信息从文件读出*/
void
IO_ReadInfo()
{
FILE
*fp;
int
i;
if
((fp=fopen("Database.txt","rb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if
(fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i<num;i++)
{
fread(&students[i],sizeof(struct
Student),1,fp);
}
}
fclose(fp);
}
/*将学生信息写入文件*/
void
IO_WriteInfo()
{
FILE
*fp;
int
i;
if
((fp=fopen("Database.txt","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if
(fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("写入文件错误!\n");
}
for
(i=0;i<num;i++)
{
if
(fwrite(&students[i],sizeof(struct
Student),1,fp)!=1)
{
printf("写入文件错误!\n");
}
}
fclose(fp);
}
/*主程序*/
main()
{
int
choice;
IO_ReadInfo();
while(1)
{
/*主菜单*/
printf("\n------
学生成绩管理系统------\n");
printf("1.
增加学生记录\n");
printf("2.
修改学生记录\n");
printf("3.
删除学生记录\n");
printf("4.
按姓名查询学生记录\n");
printf("5.
按平均成绩排序\n");
printf("6.
退出\n");
printf("请选择(1-6):");
scanf("%d",&choice);
getchar();
switch(choice)
{
case
1:
Student_Insert();
break;
case
2:
Student_Modify();
break;
case
3:
Student_Delete();
break;
case
4:
Student_Select();
break;
case
5:
Student_SortByAverage();
Student_Display();
break;
case
6:
exit();
break;
}
IO_WriteInfo();
}
}
你的串号我已经记下,采纳后我会帮你制作

『捌』 简单学生成绩管理系统

//基本的都有了,c 的,文字说明自己加。有问题再找。
#include<iostream>
#include<string>
#include<fstream>
using namespace std;

struct Student
{
string num;
double gra1;
double gra2;
double gra3;
double ave;
int t;//标志是不是被删除的。
};
Student stu[100];
int n;// 表示总人数
Student temp;
//输入成绩
void Input()
{
int t,i;
t=n;
for(i=0;i<n;i )
{
(stu[i].t==0) {t=i;break;}
}
cin>>temp.num>>temp.gra1 >>temp.gra2 >>temp.gra3 ;

stu[t]=temp;
stu[t].t=1;
if(t==n) n ;

}

void Sort()
{
int i,j;

for(i=0;i<n;i )
{
for(j=i 1;j<n;j )
{
if(stu[j].ave>stu[j-1].ave)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void Ave()
{
int i;
for(i=0;i<n;i ) stu[i].ave=(stu[i].gra1 stu[i].gra2 stu[i].gra3 )/3;
}

void Dis ()
{
int i;
for(i=0;i<n;i )
{
if(stu[i].t==1)
{
cout<<stu[i].num<<" "<<stu[i].gra1<<" "<<stu[i].gra2
<<" "<<stu[i].gra3<<" "<<stu[i].ave<<endl;
}
}
}
void Del(int t)
{
int i;
string name;
cin>>name;
int p=-1;
for(i=0;i<n;i )
{
if(stu[i].t==1

『玖』 求学生成绩管理系统的源代码

#include<stdio.h>
#include<stdlib.h>
#defineFILENAME"student.dat"
typedefenum{MAN,WOMAN}SEX;
typedefstructtagStudent
{
intnum; //学生的编号
charname[20]; //学生的姓名
SEX sex; //学生的性别
intage; //学生的年龄
charmajor[20]; //学生的专业
structtagStudent*next;//下一个节点的指针
}STUDENT,*PSTUDENT;
STUDENTg_head; //头节点
//1.显示菜单
voidShowMenu();
//2.获取用户选择的菜单的编号
intGetMenuChoose();
//3.创建一个节点,它会返回一个新创建的学生信息节点的指针
PSTUDENTCreateStudent();
//4.把学生信息节点加入到链表中
intAddStudent(PSTUDENTpstu);
//5.返回指定编号学生节点的上一个节点的指针
PSTUDENTGetPrevAddr(intnum);
//6.显示所有学生信息
voidShowAll();
//7.显示信息数量
intShowStudentCount();
//8.修改学生信息,参数为要修改的学生的编号
voidModityStudent(intnum);
//9.获取用户的选择
intQuestion(constchar*pstr);
//10.获取用户输入的学生的编号
intGetInputNum();
//11.删除编号为num的学生信息
voidDelStudent(intnum);
//12.删除所有的学生信息
voidDelAll();
//13.把学生信息保存到文件当中
voidSaveToFile();
//14.从文件中读取学生信息
voidLoadFromFile();
intmain()
{
intrunning=1;
while(running)
{
switch(GetMenuChoose())
{
case0:
running=0;
break;
case1:
// printf("你选择了菜单1 ");
AddStudent(CreateStudent());
break;
case2:
// printf("你选择了菜单2 ");
DelStudent(GetInputNum());
break;
case3:
printf("你选择了菜单3 ");
break;
case4:
// printf("你选择了菜单4 ");
ModityStudent(GetInputNum());
break;
case5:
// printf("你选择了菜单5 ");
DelAll();
break;
case6:
// printf("你选择了菜单6 ");
ShowAll();
break;
case7:
// printf("你选择了菜单7 ");
ShowStudentCount();
break;
case8:
// printf("你选择了菜单8 ");
LoadFromFile();
break;
case9:
// printf("你选择了菜单9 ");
SaveToFile();
break;
}
system("pause");
}

return0;
}
//1.显示菜单
voidShowMenu()
{
system("cls");
printf("-----------------------------学生管理系统-------------------------------- ");
printf(" 1.添加学生信息2.删除某个学生信息3.显示某个学生信息 ");
printf(" 4.修改学生信息5.删除所有学生信息6.显示所有学生信息 ");
printf(" 7.显示信息数量8.读取文件学生信息9.保存学生信息至文件 ");
printf(" 0.退出系统 ");
printf(" ------------------------------------------------------------------------- ");
}
//2.获取用户选择的菜单的编号
intGetMenuChoose()
{
intnum;//保存用户选择的菜单编号
ShowMenu();
printf("请选择菜单(0~9):");
while(1!=scanf("%d",&num)||num<0||num>9)
{
ShowMenu();
printf("选择菜单错误,请重新选择(0~9):");
fflush(stdin);//清空输入缓冲区
}
returnnum;
}
//3.创建一个节点,它会返回一个新创建的学生信息节点的指针
PSTUDENTCreateStudent()
{
intsex;
PSTUDENTpstu=(PSTUDENT)malloc(sizeof(STUDENT));//在堆内存申请空间,存储学生信息
if(!pstu)
{
printf("申请内存空间失败! ");
returnNULL;
}
printf("请输入学生的编号(整型):");
while(1!=scanf("%d",&pstu->num)||GetPrevAddr(pstu->num))
{
printf("学生编号输入错误或已经存在,请重新输入学生的编号(整型):");
fflush(stdin);
}
printf("请输入学生的姓名(小于20字符):");
scanf("%20s",pstu->name);//(*pstu).name
printf("请选择学生的性别(1.男2.女):");
while(1!=scanf("%d",&sex)||sex<1||sex>2)
{
printf("性别选择错误,请重新选择学生的性别(1.男2.女):");
fflush(stdin);
}
if(1==sex)
pstu->sex=MAN;
else
pstu->sex=WOMAN;
printf("请输入学生的年龄(10~40):");
while(1!=scanf("%d",&pstu->age)||pstu->age<10||pstu->age>40)
{
printf("年龄输入错误!请重新输入学生的年龄(10~40):");
fflush(stdin);
}
printf("请输入学生的专业(小于20字符):");
scanf("%20s",pstu->major);
pstu->next=NULL;
returnpstu;
}
//4.把学生信息节点加入到链表中
intAddStudent(PSTUDENTpstu)
{
PSTUDENTps=&g_head;
if(!pstu)
{
return0;
}
//判断一下该学生信息是不是已经存在
if(GetPrevAddr(pstu->num))
{
printf("编号为%d的学生信息已经存在! ",pstu->num);
free(pstu);//释放该节点内存空间
return0;
}
//while循环的作用是找到当前链表的最后一个节点
while(ps->next)
ps=ps->next;
//把新节点加入到最后那个节点的后面
ps->next=pstu;
pstu->next=NULL;
return1;
}
//5.返回指定编号学生节点的上一个节点的指针
PSTUDENTGetPrevAddr(intnum)
{
PSTUDENTpstu=&g_head;
while(pstu->next)
{
if(pstu->next->num==num)
returnpstu;
pstu=pstu->next;
}
returnNULL;
}
//6.显示所有学生信息
voidShowAll()
{
PSTUDENTpstu=&g_head;
printf("-------------------------------------------------------------------- ");
printf("编号姓名性别年龄专业 ");
printf("-------------------------------------------------------------------- ");
while(pstu->next)
{
printf("%-8d",pstu->next->num);
printf("%-20s",pstu->next->name);
printf("%-6s",pstu->next->sex==MAN?"男":"女");
printf("%4d",pstu->next->age);
printf("%20s ",pstu->next->major);
pstu=pstu->next;//让指针指向下一个节点
}
printf("-------------------------------------------------------------------- ");
}
//7.显示信息数量
intShowStudentCount()
{
intcount=0;
PSTUDENTpstu=&g_head;
while(pstu->next)
{
++count;
pstu=pstu->next;
}
printf(" 当前共有%d位学生信息。 ",count);
returncount;
}
//8.修改学生信息,参数为要修改的学生的编号
voidModityStudent(intnum)
{
PSTUDENTpstu=GetPrevAddr(num);//获取要修改的学生节点的上一个节点
intchoose;
if(!pstu)
{
printf("没有编号为%d的学生信息。 ",num);
return;
}
pstu=pstu->next;//将要修改的学员节点的指针改为指向自己的
printf("当前学生的姓名为%s,",pstu->name);
if(Question("确定要修改吗?"))
{
printf("请输入学生的姓名(小于20字符):");
scanf("%20s",pstu->name);
}
printf("当前学生的性别为%s,",pstu->sex==MAN?"男":"女");
if(Question("确定要修改吗?"))
{
printf("请输入学生的性别(1.男2.女):");
while(1!=scanf("%d",&choose)||choose<1||choose>2)
{
printf("输入错误,请重新输入学生的性别(1.男2.女):");
fflush(stdin);
}
if(1==choose)
pstu->sex=MAN;
else
pstu->sex=WOMAN;
}
printf("当前学生的年龄为%d,",pstu->age);
if(Question("确定要修改吗?"))
{
printf("请输入学生的年龄(10~40):");
while(1!=scanf("%d",&pstu->age)||pstu->age<10||pstu->age>40)
{
printf("年龄输入错误!请重新输入学生的年龄(10~40):");
fflush(stdin);
}
}
printf("当前学生的专业为%s,",pstu->major);
if(Question("确定要修改吗?"))
{
printf("请输入学生的专业(小于20字符):");
scanf("%20s",pstu->major);
}
printf("修改完毕! ");
}
//9.获取用户的选择
intQuestion(constchar*pstr)
{
charanswer;
printf("%s请选择(yorn):",pstr);
while(1!=scanf("%c",&answer)||(answer!='y'&&answer!='n'))
{
printf("输入错误!%s请重新选择(yorn):",pstr);
fflush(stdin);//清空输入缓冲区,C库函数
}
if('y'==answer)
return1;
else
return0;
}
//10.获取用户输入的学生的编号
intGetInputNum()
{
intnum;
printf("请输入学生的编号(整型):");
while(1!=scanf("%d",&num))
{
printf("编号输入错误!请重新输入学生的编号(整型):");
fflush(stdin);
}
returnnum;
}
//11.删除编号为num的学生信息
voidDelStudent(intnum)
{
PSTUDENTpstu,ptmp;
if(pstu=GetPrevAddr(num))
{
if(!Question("确定要删除该学生信息吗?"))
{
return;
}
ptmp=pstu->next;
pstu->next=ptmp->next;
free(ptmp);
printf("删除了编号为%d的学生信息。 ",num);
}
else
{
printf("没有找到编号为%d的学生信息。 ",num);
}
}
//12.删除所有的学生信息
voidDelAll()
{
PSTUDENTpstu=g_head.next,ptmp;
intcount=0;
if(!Question("确定要删除当前所有的学生信息吗?"))
{
return;
}
while(pstu)
{
ptmp=pstu;
pstu=pstu->next;
free(ptmp);
++count;
}
printf("共删除了%d位学生信息。 ",count);
g_head.next=NULL;
}
//13.把学生信息保存到文件当中
voidSaveToFile()
{
FILE*pf=fopen(FILENAME,"wb");
PSTUDENTpstu=&g_head;
inti=0,count=ShowStudentCount();
if(!pf)
{
printf("打开待写入的文件失败! ");
return;
}
if(!Question("确定要将当前学生信息保存到文件中吗?"))
{
fclose(pf);
return;
}
fwrite(&count,1,sizeof(count),pf);//把学生信息的数量先写入到文件头
while(pstu->next)
{
fwrite(pstu->next,1,sizeof(STUDENT),pf);//把每位学生信息写入文件
++i;
pstu=pstu->next;
}
fclose(pf);
if(i==count)
{
printf("成功的写入了%d条学生信息。 ",count);
}
else
{
printf("应写入%d条学生信息,实际写入%d条学生信息。 ",count,i);
}
}
//14.从文件中读取学生信息
voidLoadFromFile()
{
inti,count=0,repeat=0;
FILE*pf;
PSTUDENTpstu;
printf("提示:从文件中读取学生信息会询问是否清空当前学生信息(不清空表示合并所有信息)。 ");
if((pf=fopen(FILENAME,"rb"))==NULL)
{
printf("文件还没有创建,请手工输入学生信息并保存吧! ");
return;
}
DelAll();//删除之前的所有学生信息,然后从文件中读取
fread(&count,1,sizeofcount,pf);//获取学生信息的数量
for(i=0;i<count;++i)
{
pstu=(PSTUDENT)malloc(sizeof(STUDENT));
fread(pstu,1,sizeof(STUDENT),pf);
if(!AddStudent(pstu))
{
++repeat;//保持有多少个和当前链表中相重复的学生信息
}
}
fclose(pf);
printf("文件读取完毕!新增学生信息%d条。 ",count-repeat);
}

这个累死我了,我要财富值。。。为了这个不容易啊

『拾』 学生成绩管理系统

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
structtime
{
intyear;
intmouth;
intday;
};
typedefstructstudent
{
intid;
charname[20];
intage;
structtimebsday;
structstudent*next;
}stu_t,*stu2;
#defineLENsizeof(structstudent)
stu2creat_list(intlen);
voidxianshi(stu2head,intlen);
stu2shanchu(stu2head,intlen);
voidchazhao(stu2head,intlen);
voidxiugai(stu2head,intlen);
voidtianjia(stu2head,intlen);
voidpaixu(stu2head,intlen);

intmain()
{
system("clear");
stu2head=NULL;
intlen;
charch;
while(1)
{
system("clear");
printf("********************************* ");
printf("欢迎来到学生系统 ");
printf("********************************* ");
printf("1.学生的录入 ");
printf("2.学生的查询 ");
printf("3.学生的添加 ");
printf("4.学生的修改 ");
printf("5.学生的删除 ");
printf("6.学生的显示 ");
printf("7.学生的排序 ");
printf("8.退出 ");
printf("请输入要进入的编号:");
scanf("%c",&ch);
switch(ch)
{
case'1':system("clear");head=creat_list(len);break;
case'2':system("clear");chazhao(head,len);break;
case'3':system("clear");tianjia(head,len);break;
case'4':system("clear");xiugai(head,len);break;
case'5':system("clear");head=shanchu(head,len);break;
case'6':system("clear");xianshi(head,len);break;
case'7':system("clear");paixu(head,len);break;
case'8':exit(0);
default:printf("输入错误按回车继续.... ");getchar();break;
}
}
return0;
}
stu2creat_list(intlen)
{
stu2p1=NULL;
stu2p2=NULL;
stu2head=NULL;
inti=0;
printf("请输入要添加学生的个数:");
scanf("%d",&len);
for(i=1;i<=len;i++)
{
p1=(stu2)malloc(LEN);
printf("添加的第%d个学生信息为 ",i);
printf("请输入考生的id号:");
scanf("%d",&p1->id);
printf("请输入学生的名字:");
scanf("%s",p1->name);
printf("请输入该学生的年龄:");
scanf("%d",&p1->age);
printf("请输入该学生的生日:");
scanf("%d%d%d",&p1->bsday.year,&p1->bsday.mouth,&p1->bsday.day);
p1->next=NULL;
if(i==1)head=p1;
elsep2->next=p1;
p2=p1;
}
getchar();
returnhead;
}
voidxianshi(stu2head,intlen)
{
stu2p1=NULL;
if(head==NULL)return;
if(len<=0)return;
printf("----------------以下为显示的结果--------- ");
printf(" ID号 名字 年龄 生日 ");
while(1)
{
p1=head;
printf(" %d %s %d %d-%d-%d ",p1->id,p1->name,p1->age,p1->bsday.year,p1->bsday.mouth,p1->bsday.day);
head=head->next;
if(head==NULL)break;
}
getchar();
printf("按回车键继续........");
getchar();
}
stu2shanchu(stu2head,intlen)
{
charch;
stu2p1=NULL;
stu2p2=NULL;
p1=(stu2)malloc(LEN);
printf("请输入要删除学生的id号:");
scanf("%d",&len);
getchar();
p1=head;
if(head==NULL)
{
printf("在内存中不存在id号为%d的学生按回车返回",len);
getchar();
return;
}
while(1)
{
//p1=head;
if(p1->id==len)
{
printf("该学生已找到是否要删除(X/Y):");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
if(p1==head){head=head->next;}
else{p2->next=p1->next;}
break;
}
elsebreak;
}
if(p1->id!=len)
{
p2=p1;
//p1=head;
p1=p1->next;
}
if(p1==NULL)
{
printf("不存在该学生按回车返回:");
getchar();
break;
}
}
getchar();
returnhead;
}
voidchazhao(stu2head,intlen)
{
stu2p1=NULL;
p1=(stu2)malloc(LEN);
printf("请输入要茶找的id号:");
scanf("%d",&len);getchar();
p1=head;
if(head==NULL)
{
printf("内存中不存在id为%d的学生按回车键返回.....",len);
getchar();
return;
}
while(1)
{
//p1=head;
if(len==p1->id)
{
printf("该同学的名字:%s ",p1->name);
printf("该同学的年龄:%d ",p1->age);
printf("该同学的生日:%d-%d-%d ",p1->bsday.year,p1->bsday.mouth,p1->bsday.day);
break;
}
if(len!=p1->id)
{
p1=p1->next;
}
if(p1==NULL)
{
printf("meiyougaitongxue,按回车返回...");
getchar();
break;
}
}
getchar();
}
voidxiugai(stu2head,intlen)
{
stu2p1=NULL;
if(head==NULL)return;
printf("请输入要修改的id号:");
scanf("%d",&len);
p1=head;
while(1)
{
if(len==p1->id)
{
printf("同学名字为:");
scanf("%s",p1->name);
printf("同学的年龄为:");
scanf("%d",&p1->age);
printf("该同学的生日为:");
scanf("%d%d%d",&p1->bsday.year,&p1->bsday.mouth,&p1->bsday.day);
break;
}
if(p1->id!=len)
{
p1=p1->next;
}
if(p1==NULL)
{
printf("没有要修改的同学按回车返回.....");
getchar();
return;
}
}
getchar();
}
voidtianjia(stu2head,intlen)
{
stu2p2=NULL;
stu2p1=NULL;
p1=head;
if((p2=(stu2)malloc(LEN))==NULL)return;
if(head==NULL)return;
printf("请输入要在拿个id号后插入学生:");
scanf("%d",&len);
printf("要插入学生的id号:");
scanf("%d",&p2->id);
printf("请输入要插入学生的姓名:");
scanf("%s",p2->name);
printf("请输入插入学生的年龄:");
scanf("%d",&p2->age);
printf("请输入要插入学生的生日:");
scanf("%d%d%d",&p2->bsday.year,&p2->bsday.mouth,&p2->bsday.day);
while(1)
{
if(p1->id==len)
{
p2->next=p1->next;
p1->next=p2;
break;
}
if(p1->next==NULL)
{
p1->next=p2;
p2->next=NULL;
break;
}
if(p1->id!=len)p1=p1->next;
if(p1==NULL)
{
printf("不存在这样的学生按回车返回....");
getchar();
return;
}
}
getchar();
}

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919