学生课程成绩管理系统
A. 学生及成绩管理系统
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
#include"string.h"
#define N 1000
struct student /*学生信息*/
{
char num[20]; /*学号*/
char name[20]; /*姓名*/
char sex; /* 性别,'1'->男, '0'->女*/
short age; /*年龄*/
short score[3]; /*三门课程的成绩*/
short sum; /*总成绩*/
short deptid; /*所在系的系号*/
struct student *next1;
struct student *next2;
}*head;
struct student std[N];
struct department /*系信息,假设总共有3个系*/
{
short id; /*系号*/
char name[20]; /*系名*/
char dean[20]; /*系主任*/
char location[30]; /*系的办公地点*/
}depa[3]={{1,"计算机系","张三","电教楼505"},{2,"法政系","李四","电教楼404"},{3,"外语系","王五","实验楼401"}};
void menu()
{
printf("\n=========学生信息管理系统========\n");
printf("1. 录入学生信息\n");
printf("2. 显示所有学生信息\n");
printf("3. 按学号查询学生信息\n");
printf("4. 按姓名查询学生信息(支持模糊查询)\n");
printf("5. 按年龄查询学生信息\n");
printf("6. 查询指定学生的所在系的信息(包括系名、系主任、系的办公地点)\n");
printf("7. 修改学生信息\n");
printf("8. 删除学生信息\n");
printf("9. 追加学生信息\n");
printf("10. 保存学生信息到文件\n");
printf("11. 从文件载入学生信息\n");
printf("12. 按成绩从高到低显示所有学生信息[选作题目]\n");
printf("0. 退出系统\n");
}
//录入学生信息
void create()
{
int i,j;
char tmp[30];
struct student *p;
head=NULL;
for(i=1;;i++)
{
if(i!=1)
{
printf("是否继续录入(y/n):");
gets(tmp);
if(strcmp(tmp,"n")==0)
break;
}
p=(struct student *)malloc(sizeof(struct student));
printf("\n====请输入第%d个学生信息====\n",i);
printf("学号:");
gets(p->num);
printf("姓名:");
gets(p->name);
printf("性别,('1'->男, '0'->女):");
p->sex=getchar();
getchar();
printf("年龄:");
gets(tmp);
p->age=atoi(tmp);
printf("三门课程的成绩:\n");
p->sum=0;
for(j=0;j<3;j++)
{
printf("第%d个成绩:",j+1);
gets(tmp);
p->score[j]=atoi(tmp);
p->sum+=p->score[j];
}
printf("总成绩:%d\n",p->sum);
printf("所在系的系号[1->计算机系;2->法政系;3->外语系]:");
gets(tmp);
p->deptid=atoi(tmp);
p->next1=head;
head=p;
}
printf("信息录入完毕,按任意键继续……");
getch();
}
//显示所有学生信息
void displayAll()
{
struct student *p;
printf("学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\t所在系的系号\n");
p=head;
while(p!=NULL)
{
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p->num,p->name,p->sex=='1'?"男":"女",p->age,*(p->score),*(p->score+1),*(p->score+2),p->sum,p->deptid);
p=p->next1;
}
printf("信息显示完毕,按任意键继续……");
getch();
}
//按学号查询学生信息
void searchOnNum()
{
int flag;
char tmp[30];
struct student *p;
p=head;
printf("请输入学号:");
gets(tmp);
flag=0;
printf("学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\t所在系的系号\n");
while(p!=NULL)
{
if(strcmp(tmp,p->num)==0)
{
flag=1;
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p->num,p->name,p->sex=='1'?"男":"女",p->age,*(p->score),*(p->score+1),*(p->score+2),p->sum,p->deptid);
}p=p->next1;
}
if(flag==0)
printf("\n未找到学号是%s的学生,按任意键继续……",tmp);
else
printf("\n显示完毕,按任意键继续……");
getch();
}
//按姓名查询学生信息
void searchOnName()
{
int flag;
char tmp[30];
struct student *p;
p=head;
printf("请输入姓名:");
gets(tmp);
flag=0;
printf("学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\t所在系的系号\n");
while(p!=NULL)
{
if(strstr(p->name,tmp))
{
flag=1;
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p->num,p->name,p->sex=='1'?"男":"女",p->age,*(p->score),*(p->score+1),*(p->score+2),p->sum,p->deptid);
}p=p->next1;
}
if(flag==0)
printf("\n未找到%s,按任意键继续……",tmp);
else
printf("\n显示完毕,按任意键继续……");
getch();
}
//按年龄查询学生信息
void searchOnAge()
{
int flag;
char tmp[30];
struct student *p;
p=head;
printf("请输入年龄:");
gets(tmp);
flag=0;
printf("学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\t所在系的系号\n");
while(p!=NULL)
{
if(atoi(tmp)==p->age)
{
flag=1;
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p->num,p->name,p->sex=='1'?"男":"女",p->age,*(p->score),*(p->score+1),*(p->score+2),p->sum,p->deptid);
}p=p->next1;
}
if(flag==0)
printf("\n未找到年龄是%s的学生,按任意键继续……",tmp);
else
printf("\n显示完毕,按任意键继续……");
getch();
}
//查询指定学生的所在系的信息
void searchDepa()
{
int i,flag;
char tmp[30];
struct student *p;
p=head;
printf("请输入姓名:");
gets(tmp);
flag=0;
while(p!=NULL)
{
if(strcmp(tmp,p->name)==0)
{
for(i=0;i<3;i++)
{
if(p->deptid==depa[i].id)
{
flag=1;
printf("系名\t\t系主任\t\t系的办公地点\n");
printf("%s\t\t%s\t\t%s\n",depa[i].name,depa[i].dean,depa[i].location);
}
}
}p=p->next1;
}
if(flag==0)
printf("\n未找到%s,或许%s系号输入时有误,按任意键继续……",tmp);
else
printf("\n显示完毕,按任意键继续……");
getch();
}
//修改学生信息
void update()
{
int flag,j;
char tmp[30];
char a;
struct student *p;
p=head;
printf("请输入姓名:");
gets(tmp);
flag=0;
while(p!=NULL)
{
if(strcmp(tmp,p->name)==0)
{
flag=1;
printf("学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\t所在系的系号\n");
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p->num,p->name,p->sex=='1'?"男":"女",p->age,*(p->score),*(p->score+1),*(p->score+2),p->sum,p->deptid);
printf("\n====请输入新信息====\n");
printf("学号:");
gets(tmp);
if(strcmp(tmp,"")!=0)
strcpy(p->num,tmp);
printf("姓名:");
gets(tmp);
if(strcmp(tmp,"")!=0)
strcpy(p->name,tmp);
printf("性别,'1'->男, '0'->女:");
a=getchar();
if(a!='\n')
p->sex=a;
printf("年龄:");
gets(tmp);
if(strcmp(tmp,"")!=0)
p->age=atoi(tmp);
printf("三门课程的成绩:\n");
p->sum=0;
for(j=0;j<3;j++)
{
printf("第%d个成绩:",j+1);
gets(tmp);
if(strcmp(tmp,"")!=0)
p->score[j]=atoi(tmp);
p->sum+=p->score[j];
}
printf("总成绩:%d\n",p->sum);
printf("所在系的系号[1->计算机系;2->法政系;3->外语系]:");
gets(tmp);
if(strcmp(tmp,"")!=0)
p->deptid=atoi(tmp);
}p=p->next1;
}
if(flag==0)
printf("\n未找到%s!按任意键继续……",tmp);
else
printf("\n修改完毕,按任意键继续……");
getch();
}
//删除学生信息
void delate()
{
int flag;
char tmp[30];
struct student *p,*q;
printf("请输入姓名:");
gets(tmp);
p=head;
flag=0;
while(p!=NULL)
{
if(strcmp(tmp,p->name)==0)
{
flag=1;
if(p==head)
head=p->next1;
else
q->next1=p->next1;
free(p);break;
}
q=p;
p=p->next1;
}
if(flag==0)
printf("\n未找到%s,按任意键继续……",tmp);
else
printf("删除完毕,按任意键继续……");
getch();
}
//追加学生信息
void add()
{
int i,j;
char tmp[30];
struct student *p;
for(i=1;;i++)
{
if(i!=1)
{
printf("是否继续追加(y/n):");
gets(tmp);
if(strcmp(tmp,"n")==0)
break;
}
p=(struct student *)malloc(sizeof(struct student));
printf("\n====请输入第%d个追加信息====\n",i);
printf("学号:");
gets(p->num);
printf("姓名:");
gets(p->name);
printf("性别,'1'->男, '0'->女:");
p->sex=getchar();
getchar();
printf("年龄:");
gets(tmp);
p->age=atoi(tmp);
p->sum=0;
for(j=0;j<3;j++)
{
printf("第%d个成绩:",j+1);
gets(tmp);
if(strcmp(tmp,"")!=0)
p->score[j]=atoi(tmp);
p->sum+=p->score[j];
}
printf("总成绩:%d\n",p->sum);
printf("所在系的系号[1->计算机系;2->法政系;3->外语系]:");
gets(tmp);
p->deptid=atoi(tmp);
p->next1=head;
head=p;
}
printf("追加成功,按任意键继续……");
getch();
}
//保存学生信息到文件
void save()
{
FILE *fp;
char filename[20]={"d://qq.dat"};
printf("请输入文件名如%s:",filename);
gets(filename);
while(strcmp(filename,"")==0)
{
printf("文件名不能为空,请重新输入:");
gets(filename);
}
if((fp=fopen(filename,"wb"))==NULL)
{
printf("write file open error!\n按任意键继续……");getch();
return;
}
struct student *p;
p=head;
printf("正在保存信息,请耐心等待……\n");
while(p!=NULL)
{
fwrite(p,sizeof(struct student),1,fp);
p=p->next1;
}
fclose(fp);
printf("信息保存成功,按任意键继续……");getch();
}
//从文件载入学生信息
void load()
{
char filename[20];
FILE *fp;
printf("请输入文件名:");
gets(filename);
while(strcmp(filename,"")==0)
{
printf("文件名不能为空,请重新输入:");
gets(filename);
}
if((fp=fopen(filename,"rb"))==NULL)
{
printf("read file open error!\n按任意键继续……");getch();
return;
}
struct student *p,*q;
p=(struct student *)malloc(sizeof(struct student));
head=p;
printf("正在从磁盘载入信息,请耐心等待……\n");
while(!feof(fp))
{
if(1!=fread(p,sizeof(struct student),1,fp))
break;
p->next1=(struct student *)malloc(sizeof(struct student));
q=p;
p=p->next1;
}
q->next1=NULL;
fclose(fp);
printf("载入成功,按任意键继续……");getch();
}
//按成绩从高到低显示所有学生信息[选作题目]
void displayInOrder()
{
struct student *head1,*p,*q,*r;
p=(struct student *)malloc(sizeof(struct student));
p=head;
while(p!=NULL)
{
if(p==head)
{
head1=p;
p->next2=NULL;
}
else
{
q=head1;
while(1)
{
if(p->sum>q->sum)
{
if(q==head1)
{
p->next2=head1;
head1=p;break;
}
else
{
r->next2=p;
p->next2=q;break;
}
}
else if(q->next2==NULL)
{
q->next2=p;
p->next2=NULL;break;
}
r=q;
q=q->next2;
}
}
p=p->next1;
}
printf("学号\t姓名\t性别\t年龄\t三门课程的成绩\t\t总成绩\t所在系的系号\n");
p=head1;
while(p!=NULL)
{
printf("%s\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p->num,p->name,p->sex=='1'?"男":"女",p->age,*(p->score),*(p->score+1),*(p->score+2),p->sum,p->deptid);
p=p->next2;
}
printf("信息显示完毕,按任意键继续……");getch();
}
//退出系统,判断是否真的退出
void exitSystem()
{
char x;
printf("你真的要退出系统吗?(Y/N)");
while(1)
{
x=getche();
if(x=='y' || x=='Y' || x=='n' || x=='N' )
break;
printf("\b");
}
if(x=='y' || x=='Y')
{
printf("\n");
exit(0);
}
return;
}
void main()
{
int c;
char choice[3];
while(1)
{
system("cls");
menu();
do
{
printf("请输入功能键:");
gets(choice);
c=atoi(choice);
}while(c>12||c<0);
switch(c)
{
case 1: create();break;
case 2: displayAll();break;
case 3: searchOnNum();break;
case 4: searchOnName();break;
case 5: searchOnAge();break;
case 6: searchDepa();break;
case 7: update();break;
case 8: delate();break;
case 9: add();break;
case 10: save();break;
case 11: load();break;
case 12: displayInOrder();break;
case 0: exitSystem();
}
}
}
B. 学生课程及成绩管理系统 英文翻译 学生课程及成绩管理系统 英文翻译
The system is a student curriculum and performance management system, it is Ecational Management System of a subsystem. Main users are the students, teachers and administrators. System to the students and Investigation Course. Facilitate the management of teaching and student achievement in the time of admission. More importantly, the system facilitates the management of the academic schools. The system uses a three-tier structure of the MVC model, in the process of developing the use of Struts and Hibernate to handle pages logic and object persistence work. The development of the system and did not simply use JSP+Servlet, but with the Struts and Hibernate. This is to make the structure more clearly while simplifying the development work. Curriculum and student performance management systems have greatly reced the human inconvenience for the whole data management more scientific and rational. Of the system are unique background is in the area of database programs and achievements of students in the unified management. The system interface is used Dreamware software, Mysql database background probably divided into the following table : Table administrator, student information tables, the class information table, Information Table curriculum, teachers information table, curriculum and student performance information table.
C. 学生成绩管理系统设计
你把有的课程名字改一下,或者添加一些东西,在结构体定义那里
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct stu
{
int num;
int wuli;
int huaxue;
int math;
};
FILE *fp;
//添加学生信息,可以排除与已存的冲突;
void add()
{
int a,b,c,d,n=0;
struct stu student;
fp=fopen("score.txt","r+");
printf("请输入要添加学生的学号、物理成绩、化学成绩及数学成绩\n");
scanf("%d%d%d%d",&student.num,&student.wuli,&student.huaxue,&student.math);
while(!feof(fp))
{
fscanf(fp,"%d%d%d%d",&a,&b,&c,&d);
if(student.num==a)
{
printf("该学生信息已存在,不需要添加\n");
fclose(fp);
n=1;
break;
}
}
if(n==0)
{
printf("信息库中没有该学生信息,可以添加\n");
fseek(fp,0,2);//文件末尾添加;
fprintf(fp,"%d\t%d\t%d\t%d\n",student.num,student.wuli,student.huaxue,student.math);
fclose(fp);
}
}
//修改学生信息;
void modify()
{
int n=0,number,a,b,c,d,offset;
struct stu student;
fp=fopen("score.txt","r+");
if(fp==NULL)
{
printf("信息库为空\n");
exit(0);
}
printf("请输入要修改学生的学号\n");
scanf("%d",&number);
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%d%d%d%d",&a,&b,&c,&d);
if(number==a)
{
printf("该学生信息为:\n");
printf("%d\t%d\t%d\t%d\n",a,b,c,d);
printf("请输入要修改的信息\n");
scanf("%d%d%d%d",&student.num,&student.wuli,&student.huaxue,&student.math);
fseek(fp,offset,0);
fprintf(fp,"%d\t%d\t%d\t%d\n",student.num,student.wuli,student.huaxue,student.math);
n=1;
break;
}
}
if(n==0)
{
printf("该学生信息不存在\n");
}
fclose(fp);
}
//删除学生信息;
void del()
{
int n=0,number,a,b,c,d,m,offset;
fp=fopen("score.txt","r+");
if(fp==NULL)
{
printf("信息库为空\n");
exit(0);
}
printf("请输入删除学生的学号\n");
scanf("%d",&number);
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%d%d%d%d",&a,&b,&c,&d);
if(number==a)
{
printf("该学生信息为:\n");
printf("%d\t%d\t%d\t%d\n",a,b,c,d);
printf("是否要删除该学生信息,是:1 ;否:0\n");
scanf("%d",&m);
if(m)
{
fseek(fp,offset,0);
fprintf(fp,"%s\t%s\t%s\t%s"," "," "," "," ");
printf("\n");
printf("该学生信息已删除\n");
}
else printf("您已放弃删除该学生信息\n");
n=1;
break;
}
}
if(n==0)
{
printf("该学生信息不存在\n");
}
fclose(fp);
}
//查找学生信息;
void search()
{
int n=0,number,a,b,c,d,m;
char s[10];
fp=fopen("score.txt","r+");
if(fp==NULL)
{
printf("信息库为空\n");
exit(0);
}
printf("请选择查找方式:1--按学号查找;0--按学科查找\n");
scanf("%d",&m);
if(m)
{
printf("请输入要查找学生的学号\n");
scanf("%d",&number);
while(fscanf(fp,"%d%d%d%d",&a,&b,&c,&d)!=-1)
{
if(number==a)
{
printf("已找到,该学生信息为:\n");
printf("%s %s %s %s\n","学号","物理成绩","化学成绩","数学成绩");
printf("%d\t %d\t %d\t %d\n",a,b,c,d);
n=1;
break;
}
}
if(n==0)
{
printf("该学生信息不存在\n");
}
fclose(fp);
}
else
{
printf("请输入要查找的学科\n");
scanf("%s",s);
if(strcmp(s,"wuli")==0)
{
printf("学号\t物理成绩\n");
while(fscanf(fp,"%d%d%d%d",&a,&b,&c,&d)!=-1)
printf("%d\t%d\n",a,b);
fclose(fp);
}
if(strcmp(s,"huaxue")==0)
{
printf("学号\t化学成绩\n");
while(fscanf(fp,"%d%d%d%d",&a,&b,&c,&d)!=-1)
printf("%d\t%d\n",a,c);
fclose(fp);
}
if(strcmp(s,"math")==0)
{
printf("学号\t数学成绩\n");
while(fscanf(fp,"%d%d%d%d",&a,&b,&c,&d)!=-1)
printf("%d\t%d\n",a,d);
fclose(fp);
}
if(strcmp(s,"wuli")&&strcmp(s,"huaxue")&&strcmp(s,"math") )
{
printf("错误,要查找的学科不存在\n");
fclose(fp);
}
}
}
//统计学生信息;
void tongji()
{
int n=0,a,b,c,d,m,k,x[100],i,j,l=1;
float sum=0,h[100],k1;
fp=fopen("score.txt","r+");
if(fp==NULL)
{
printf("信息库为空\n");
exit(0);
}
printf("0--统计单科平均成绩\n");
printf("1--统计单个学生的平均成绩和总成绩,对学生排名\n");
printf("请选择统计类型\n");
scanf("%d",&m);
if(!m)
{
printf("1--统计物理的平均成绩\n");
printf("2--统计化学的平均成绩\n");
printf("3--统计数学的平均成绩\n");
printf("请选择要统计的学科\n");
scanf("%d",&m);
if(m==1)
{
while(fscanf(fp,"%d%d%d%d",&a,&b,&c,&d)!=-1)
{
sum=sum+b;
n++;
}
printf("物理的平均成绩为 %2.2f\n",sum/n);
fclose(fp);
}
if(m==2)
{
while(fscanf(fp,"%d%d%d%d",&a,&b,&c,&d)!=-1)
{
sum=sum+c;
n++;
}
printf("化学的平均成绩为 %.2f\n",sum/n);
fclose(fp);
}
if(m==3)
{
while(fscanf(fp,"%d%d%d%d",&a,&b,&c,&d)!=-1)
{
sum=sum+d;
n++;
}
printf("数学的平均成绩为 %.2f\n",sum/n);
fclose(fp);
}
}
else
{
while(fscanf(fp,"%d%d%d%d",&a,&b,&c,&d)!=-1)
{
h[n]=(float)(b+c+d);
x[n]=a;
n++;
}
for(i=0;l==1&&i<n-1;i++)
{
l=0;
for(j=0;j<n-1-i;j++)
{
if(h[j]>h[j+1])
{
k1=h[j];
h[j]=h[j+1];
h[j+1]=k1;
k=x[j];
x[j]=x[j+1];
x[j+1]=k;
l=1;
}
}
}
printf("排序后\n");
printf("学号\t总成绩\t平均成绩\n");
for(i=0;i<n;i++)
printf("%d\t%3.0f\t%.2f\n",x[i],h[i],h[i]/3.0);
}
fclose(fp);
}
void main()
{
int m;
/*fp=fopen("score.txt","w");
fprintf(fp,"%s\t%s\t%s\t%s\n","学号","物理成绩","化学成绩","数学成绩");
fclose(fp);*/
while(1)
{
printf("\n\t\t*********欢迎使用学生信息管理系统*********\n\n");
printf("\n\t\t添加,请按1");
printf("\n\t\t修改,请按2");
printf("\n\t\t删除,请按3");
printf("\n\t\t查询,请按4");
printf("\n\t\t统计,请按5");
printf("\n\t\t退出,请按0\n");
printf("\n\t\t********************************************\n\n");
printf("Please select(0--5):");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case 1: add();
break;
case 2: modify();
break;
case 3: del();
break;
case 4: search();
break;
case 5: tongji();
break;
case 0: exit(0);
}
printf("\n\n操作完毕,请再次选择!");
}
else
printf("\n\n选择错误,请再次选择!");
}
}
D. 学生成绩管理系统
#include "stdafx.h"
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
// 循环列表结构 head->[,->next]...[data0,->next][data1,->next]...[datan,->head]
struct SCORE
{
int courseId;
int score;
SCORE *pnext;
};
struct STU_SCORE
{
char name[16];
int stuId;
SCORE *scoreHead;//学生课程成绩列表
struct STU_SCORE *pnext;
STU_SCORE(int ID,char names[])
{
int len=strlen(names);
for(int i=0;i<len;++i)
name[i]=names[i];
name[len]='\0';
stuId=ID;
}
};
int mainMenu();
int stuReg(STU_SCORE *pHead);
int selCourse(STU_SCORE *pHead);
int inputData(STU_SCORE *pHead);
int scoreSort(STU_SCORE *pHead);
int scoreQuery(STU_SCORE *pHead);
int modify(STU_SCORE *pHead);
enum MAIN_CMD{REG,SEL=1,INPUT,QUERY,MODI,EXIT};
int main(int argc, char* argv[])
{
STU_SCORE *head=( STU_SCORE *)malloc(sizeof(STU_SCORE));
head->stuId=-1;
head->pnext=head;
while(1)
{
int cmd=mainMenu();
switch(cmd)
{
case REG:
stuReg(head);
break;
case SEL:
selCourse(head);
break;
case INPUT:
inputData(head);
break;
case QUERY:
scoreQuery(head);
break;
case MODI:
modify(head);
break;
case EXIT:
return 0;
}
}
return 0;
}
int mainMenu()
{
system("cls");
cout<<"\t\t《学生成绩管理系统》\n";
cout<<" \t\t[0]新生注册\n";
cout<<" \t\t[1]选课登记\n";
cout<<" \t\t[2]学生成绩输入\n";
cout<<" \t\t[3]成绩查询\n";
cout<<" \t\t[4]修改成绩\n";
cout<<" \t\t[5]退出\n";
cout<<"命令? ";
int cmd;
cin>>cmd;
return cmd;
}
//新生注册:建立学生信息链表,从键盘输入学生姓名学号,插入到链表中。
int stuReg(STU_SCORE *pHead)
{
cout<<"注意:新生注册学号不能重复!\n";
start:
cout<<"学号\t\t姓名\n";
int ID;
char StudentName[20];
cin>>ID;
while(ID>0)
{
cin>>StudentName;
STU_SCORE *newStu=new STU_SCORE(ID,StudentName);
newStu->scoreHead=new SCORE();
newStu->scoreHead->pnext=newStu->scoreHead;
STU_SCORE*q=pHead->pnext,*p=pHead;
while(q!=pHead)
{
p=q;
if(q->stuId<newStu->stuId)
q=q->pnext;
else
break;
}
p->pnext=newStu;
newStu->pnext=q;
cin>>ID;
}
int cnt=0;
STU_SCORE*q=pHead->pnext;
while(q!=pHead)
{
q=q->pnext;
cnt++;
}
cout<<"学生数据库共有"<<cnt<<"个记录"<<endl;
cout<<"继续新的注册?";
char c;
cin>>c;
if(c=='y'||c=='Y')goto start;
return 0;
}
//学生选课
int selCourse(STU_SCORE *pHead)
{
start:
int cid;
cout<<"课程号:";
cin>>cid;
cout<<"输入选择该课程的学生学号:\n";
int stuId;
cin>>stuId;
while(stuId>0)
{
STU_SCORE *pStu=pHead->pnext;
while(pStu!=pHead)//链表已有记录
{
if(pStu->stuId==stuId)//有该学号
{
bool be=false;
SCORE *pcourse=pStu->scoreHead->pnext;
while(pcourse!=pStu->scoreHead)//已有选课
{
if(pcourse->courseId==cid)
{
be=true;////已有该选课
break;
}
pcourse=pcourse->pnext;
}
if(!be)
{ //还没有选此课程
SCORE *pNewcourse=(SCORE *)malloc(sizeof(SCORE));
pNewcourse->courseId=cid;
SCORE*q=pStu->scoreHead->pnext;
pStu->scoreHead->pnext=pNewcourse;
pNewcourse->pnext=q;
}
}
pStu=pStu->pnext;
}
cin>>stuId;
}
int count=0;
STU_SCORE *pStu=pHead->pnext;
while(pStu!=pHead)//链表已有记录
{
SCORE *pcourse=pStu->scoreHead->pnext;
while(pcourse!=pStu->scoreHead)
{
if(pcourse->courseId==cid)
{
count++;
}
pcourse=pcourse->pnext;
}
pStu=pStu->pnext;
}
cout<<"共有"<<count<<"个学生选此课程\n";
cout<<"继续新的选课输入?";
char c;
cin>>c;
if(c=='y'||c=='Y')goto start;
return 0;
}
//学生成绩输入
int inputData(STU_SCORE *pStuHead)
{
int count;
start:
count=0;
cout<<"课程号:";
int cid;
cin>>cid;
STU_SCORE *pStu=pStuHead->pnext;
while(pStu!=pStuHead)//if链表已有学生记录
{
SCORE *pcourse=pStu->scoreHead->pnext;
while(pcourse!=pStu->scoreHead)
{
if(pcourse->courseId==cid)
{
cout<<"学号:"<<pStu->stuId<<" 姓名:"<<pStu->name;
cout<<" 成绩:";
if(pcourse->score>=0)
cout<<"已输入";
else
{
cin>>pcourse->score;
count++;
}
break;
}
pcourse=pcourse->pnext;
}
pStu=pStu->pnext;
}
if(count==0)
cout<<"该课程无学生选!\n";
else
cout<<cid<<"课程成绩已输入完成!"<<"\n";
cout<<"继续其他课程成绩输入?";
char c;
cin>>c;
if(c=='y'||c=='Y')goto start;
return 0;
}
//课程成绩查询
int scoreQuery(STU_SCORE *pStuHead)
{
start:
int ID;
cout<<"学号:"<<endl;
cin>>ID;
STU_SCORE*pStu=pStuHead->pnext;
while(pStu!=pStuHead)
{
if(pStu->stuId==ID)
{
cout<<"姓名:"<<pStu->name<<"\t"<<"成绩:"<<endl;
SCORE*pcourse=pStu->scoreHead->pnext;
while(pcourse!=pStu->scoreHead)
{
cout<<"课程号:"<<pcourse->courseId<<"\t"<<"成绩:"<<pcourse->score<<endl;
pcourse=pcourse->pnext;
}
break;
}
pStu=pStu->pnext;
}
if(pStu==pStuHead)
{
cout<<"查无此人"<<endl;
}
cout<<"继续查询?";
char c;
cin>>c;
if(c=='y'||c=='Y')
goto start;
return 0;
}
//课程成绩修改
int modify(STU_SCORE *pStuHead)
{
start:
int ID;
cout<<"学号:";
cin>>ID;
STU_SCORE*pStu=pStuHead->pnext;
while(pStu!=pStuHead)
{
if(pStu->stuId==ID)
{
int cid;
cout<<"课程号:";
cin>>cid;
SCORE*pcourse=pStu->scoreHead->pnext;
while(pcourse!=pStu->scoreHead)
{
if(pcourse->courseId==cid)
{
int rescore;
cout<<"原成绩:"<<pcourse->score<<"\t"<<"成绩修改为:";
cin>>rescore;
pcourse->score=rescore;
goto ask;
}
pcourse=pcourse->pnext;
}
if(pcourse==pStu->scoreHead)
{
cout<<"此人没有选择该课程。"<<endl;
goto ask;
}
}
pStu=pStu->pnext;
}
if(pStu==pStuHead)
{
cout<<"查无此人"<<endl;
}
ask:
cout<<"继续修改?";
char c;
cin>>c;
if(c=='y'||c=='Y')
goto start;
return 0;
}
E. 设计一个学生成绩管理系统,学生成绩信息包括:学号,姓名,四门课成绩,实现功能如下:
//我简单写,请借鉴:
#include"stdafx.h"
#include"stdio.h"
#include"string.h"
#include"math.h"
#include"time.h"
#include"string.h"#include<iostream>
usingnamespacestd;
structStudent//定义学生结构
{
charid[20];//id
charname[11];//姓名
charres[4];//成绩
intend;//存储时显示换行,可去掉
Student(){end=0x0a0d;}//回车,换行
}list[100];//100个账号,测试
voidmain()
{
srand((unsigned)time(0));//种子
charbuf[256];//缓存
//初始化学生100名
inti;
for(i=0;i<100;++i)
{
strcpy(list[i].id,itoa(i,buf,10));
strcpy(list[i].name,"某人");
strcpy(list[i].res,itoa(rand()%100,buf,10));
}
//保存数据
FILE*pf=fopen("data.txt","wb");
for(i=0;i<100;++i)
{
fwrite(&list[i],sizeof(Student),1,pf);
}
fclose(pf);
//读出数据
Studentlist_1[100];//新数组
pf=fopen("data.txt","rb");
for(i=0;i<100;++i)
{
fread(&list_1[i],sizeof(Student),1,pf);
}
//显示list_1测试
for(i=0;i<100;++i)
{
cout<<list_1[i].id<<""<<list_1[i].name<<""<<list_1[i].res<<endl;
}}
F. c语言实现设计一个学生成绩管理系统课程
参考代码如下,不过还是建议自己写一写比较好:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct student //结构体
{
char name[20]; //姓名
char number[20]; //学号
double math; //数学
double english; //英语
double chinese; //语文
double program; //程序
}s[50];
void head() //界面
{
printf(
"**********************************************************************\n"
"** **\n"
"** **\n"
"** 学生成绩管理系统 **\n"
"** **\n"
"** 1.信息录入 **\n"
"** 2.信息统计 **\n"
"** 3.信息浏览 **\n"
"** 4.信息查询 **\n"
"** 5.信息排序 **\n"
"** 6.信息删除 **\n"
"** 0.退出系统 **\n"
"** **\n"
"**********************************************************************\n"
);
}
void ru(struct student s[], int* n) //文件导入函数
{
FILE *p;
int i=*n;
if((p=fopen("数据.txt", "r"))==NULL)
{
n=n;
}
else
{
while(!feof(p))
{
fscanf(p, "%s%s%lf%lf%lf%lf\n", s[i].name, s[i].number, &s[i].math, &s[i].english, &s[i].chinese, &s[i].program);
i++;
*n=*n+1;
}
}
fclose(p);
}
void chu(struct student s[], int n)
{
FILE *p;
int i=0;
if((p=fopen("数据.txt", "w"))==NULL)
{
printf("无法打开此文件!");
}
else
{
while(i<n-1)
{
fprintf(p, "%s %s %lf %lf %lf %lf\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
i++;
}
fprintf(p, "%s %s %lf %lf %lf %lf", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
}
fclose(p);
}
void dayin(struct student s[], int n) //显示所有信息
{
int i;
double all=0.0;
printf("\n姓名\t\t学号\t\t数学\t英语\t语文\t程序\t总分\n");
for (i=0; i<n; i++)
{
all=s[i].math+s[i].english+s[i].chinese+s[i].program;
printf("%s\t\t%s\t\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program, all);
}
}
void shuru(struct student s[], int* n) //信息输入函数
{
int i=*n, j, k, m;
printf("请输入学生姓名:");
scanf("%s", s[i].name);
printf("请输入学生学号:");
for (j=0; ; j++)
{
m=0;
scanf("%s", s[i].number);
for (k=0; k<i; k++)
{
if (strcmp(s[i].number, s[k].number)==0)
{
m=m+1;
printf("学号重复,请重新输入学号:");
break;
}
}
if (m==0)
{
break;
}
}
printf("请输入数学成绩:");
scanf("%lf", &s[i].math);
printf("请输入英语成绩:");
scanf("%lf", &s[i].english);
printf("请输入语文成绩:");
scanf("%lf", &s[i].chinese);
printf("请输入程序成绩:") ;
scanf("%lf", &s[i].program);
printf("添加信息成功!\n");
*n=*n+1;
chu(s, *n);
}
void paixu(struct student s[], int n) //排序函数
{
int i, j;
double all1, all2;
struct student stu;
for (i=0; i<n-1; i++)
{
for (j=i+1; j<n; j++)
{
all1=s[i].math+s[i].english+s[i].chinese+s[i].program;
all2=s[j].math+s[j].english+s[j].chinese+s[j].program;
if (all1<all2)
{
stu=s[i];
s[i]=s[j];
s[j]=stu;
}
}
}
printf("排序后的数据:\n");
dayin(s, n);
}
void chazhao(struct student s[], int n) //查找函数
{
char name[20], num[20];
int m1, m2=0, i, j;
printf("1.按姓名查找\n2.按学号查找\n选择查询方式(1或2):");
scanf("%d", &m1);
if (m1==1)
{
printf("请输入您要查找的学生姓名:");
scanf("%s", name);
for (i=0; i<n; i++)
{
if (strcmp(s[i].name, name)==0)
{
m2=m2+1;
if (m2==1)
{
printf("\n姓名\t\t学号\t数学\t英语\t语文\t程序\n");
}
printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
}
}
if (m2==0)
{
printf("没有此学生信息!\n");
}
}
else if (m1==2)
{
printf("请输入您要查找的学生学号:");
scanf("%s", num);
j=0;
for (i=0; i<n; i++)
{
if (strcmp(s[i].number, num)==0)
{
m2=m2+1;
if (m2==1)
{
printf("\n姓名\t\t学号\t数学\t英语\t语文\t程序\n");
}
printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
}
}
if (m2==0)
{
printf("没有此学生信息!\n");
}
}
}
void shanchu(struct student s[], int* n) //删除函数
{
char num[20];
int m=0, i, j;
printf("请输入您要删除的学生学号:");
scanf("%s", num);
for (i=0; i<=*n; i++)
{
if (strcmp(s[i].number, num)==0)
{
m=m+1;
for (j=i; j<*n; j++)
{
s[j]=s[j+1];
}
*n=*n-1;
}
}
if (m==0)
{
printf("没有此学生信息!\n");
}
else
{
chu(s, *n);
printf("删除完毕!\n");
}
}
void allAndAver(struct student s[], int n)
{
int i ;
double all=0.0, aver=0.0;
for (i=0; i<n; i++)
{
all=s[i].math+s[i].english+s[i].chinese+s[i].program;
aver=all/4;
printf("%s\t\t%s\t\t%.1lf\t%.1lf\n", s[i].name, s[i].number, all, aver);
}
}
void Fail(struct student s[], int n) //统计单科不及格人数
{
int i, fail[4]={0};
for (i=0; i<n; i++)
{
if (s[i].math<60)
{
fail[0]++;
}
if (s[i].english<60)
{
fail[1]++;
}
if (s[i].chinese<60)
{
fail[2]++;
}
if (s[i].program<60)
{
fail[3]++;
}
}
printf("\n不及格信息:\n");
printf("数学不及格的人数为:%d人\n", fail[0]);
printf("英语不及格的人数为:%d人\n", fail[1]);
printf("语文不及格的人数为:%d人\n", fail[2]);
printf("程序不及格的人数为:%d人\n", fail[3]);
}
void Max(struct student s[], int n) //统计单科最高分人数
{
int i, counter[4]={0};
double max[4]={s[0].math, s[0].english, s[0].chinese, s[0].program};
for (i=0; i<n; i++)
{
if (s[i].math>max[0])
{
max[0]=s[i].math;
}
if (s[i].math>max[1])
{
max[1]=s[i].math;
}
if (s[i].math>max[2])
{
max[2]=s[i].math;
}
if (s[i].math>max[3])
{
max[3]=s[i].math;
}
}
for (i=0; i<n; i++)
{
if (s[i].math==max[0])
{
counter[0]++;
}
if (s[i].math==max[1])
{
counter[1]++;
}
if (s[i].math==max[2])
{
counter[2]++;
}
if (s[i].math==max[3])
{
counter[3]++;
}
}
printf("\n最高分信息:\n");
printf("数学最高分为:%.1lf, 人数为:%d人\n", max[0], counter[0]);
printf("英语最高分为:%.1lf, 人数为:%d人\n", max[1], counter[1]);
printf("语文最高分为:%.1lf, 人数为:%d人\n", max[2], counter[2]);
printf("程序最高分为:%.1lf, 人数为:%d人\n", max[3], counter[3]);
}
void Min(struct student s[], int n) //统计单科最低分人数
{
int i, counter[4]={0};
double min[4]={s[0].math, s[0].english, s[0].chinese, s[0].program};
for (i=0; i<n; i++)
{
if (s[i].math<min[0])
{
min[0]=s[i].math;
}
if (s[i].math<min[1])
{
min[1]=s[i].math;
}
if (s[i].math<min[2])
{
min[2]=s[i].math;
}
if (s[i].math<min[3])
{
min[3]=s[i].math;
}
}
for (i=0; i<n; i++)
{
if (s[i].math==min[0])
{
counter[0]++;
}
if (s[i].math==min[1])
{
counter[1]++;
}
if (s[i].math==min[2])
{
counter[2]++;
}
if (s[i].math==min[3])
{
counter[3]++;
}
}
printf("\n最低分信息:\n");
printf("数学最低分为:%.1lf, 人数为:%d人\n", min[0], counter[0]);
printf("英语最低分为:%.1lf, 人数为:%d人\n", min[1], counter[1]);
printf("语文最低分为:%.1lf, 人数为:%d人\n", min[2], counter[2]);
printf("程序最低分为:%.1lf, 人数为:%d人\n", min[3], counter[3]);
}
void tongji(struct student s[], int n) //统计函数
{
printf("统计信息如下:\n");
printf("\n姓名\t\t学号\t\t总分\t平均分\n");
allAndAver(s, n);
Max(s, n);
Min(s, n) ;
Fail(s, n);
}
int main() //主函数
{
int k, n=0;
ru(s, &n);
chu(s, n);
while (1)
{
head();
printf("\n请按对应的键选择相应的功能:");
scanf("%d",&k);
switch (k)
{
case 1:
shuru(s, &n);
break;
case 2:
tongji(s, n);
break;
case 3:
dayin(s, n);
break;
case 4:
chazhao(s, n);
break;
case 5:
paixu(s, n);
break;
case 6:
shanchu(s, &n);
break;
case 0:
exit(1);
break;
default : printf("请输入正确的命令!\n");
}
system("pause");
system("cls");
}
return 0;
}
G. 编写学生成绩管理系统。已知有50个学生的C语言课程成绩;
测试,我只输入5个学生,你把常量改成50就行。
#include<stdio.h>
#definemaxSize5//学生人数,需要改这里!!
voidinput(int*score);
voidoutput(int*score);
intmax(int*score);
intmin(int*score);
intaverage(int*score);
intmain()
{
intscore[maxSize];
input(score);
output(score);
printf("最大值:%d
",max(score));
printf("最小值:%d
",min(score));
printf("平均值:%d
",average(score));
}
voidinput(int*score)
{
inti;
printf("输入%d个学生的成绩:
",maxSize);
for(i=0;i<maxSize;i++)
scanf("%d",&score[i]);
}
voidoutput(int*score)
{
inti;
printf("
输入的学生的成绩:
");
for(i=0;i<maxSize;i++)
printf("%d",score[i]);
printf("
");
}
intmax(int*score)
{
inti,max=score[0];
for(i=1;i<maxSize;i++)
if(max<score[i])
max=score[i];
returnmax;
}
intmin(int*score)
{
inti,min=score[0];
for(i=1;i<maxSize;i++)
if(min>score[i])
min=score[i];
returnmin;
}
intaverage(int*score)
{
inti,sum=0;
for(i=0;i<maxSize;i++)
sum=sum+score[i];
returnsum/maxSize;
}
H. C语言的小型学生成绩管理系统
建议自己去改改
仅作为参考
#include<stdio.h>
#include<string.h>
typedef struct{
char name[20];
int number;
int grade;
int class;
float mark[10];
float average;
}T;
void show(T *student,int *tp,int n) /* 把成绩显示在屏幕上 */
{
int i,j;
char a[3]=" ";
printf("***********************************************************\n");
printf(" name number grade class average order\n");
for(i=0;i<n;i++)
{
printf("-----------------------------------------------------------\n");
printf("%d:\n",i+1);
printf(" %s %d %d %d %f %d\n",student[tp[i]].name,student[tp[i]].number,student[tp[i]].grade,student[tp[i]].class,student[tp[i]].average,tp[i]+1);
printf("mark:");
for(j=0;j<2;j++)
printf("%s%d:%f",a,j+1,student[tp[i]].mark[j]);
printf("\n");
}
printf("***********************************************************\n");
printf("\n\n\n");
}
void writefile(T *student,int n) /* 把成绩存在磁盘上 */
{
FILE *fp;
int i,j;
if((fp=fopen("d:\\kanwei.txt","w+"))==NULL)
{
printf("can't open file");
exit(0);
}
for(i=0;i<=n;i++)
{
fprintf(fp,"%s %d %d %d ",student[i].name,student[i].number,student[i].grade,student[i].class);
for(j=0;j<2;j++)
fprintf(fp,"%f ",student[i].mark[j]);
fprintf(fp,"%f\n",student[i].average);
}
fclose(fp);
}
void students(T *student,T *temp,int m,int n,int k) /* 实现两个结构体的拷贝 */
{
int i;
if(k==0)
{
strcpy(student[n].name,temp[m].name);
student[n].number=temp[m].number;
student[n].grade=temp[m].grade;
student[n].class=temp[m].class;
for(i=0;i<2;i++)
student[n].mark[i]=temp[m].mark[i];
student[n].average=temp[m].average;
}
else if(k==1)
{
strcpy(temp[m].name,student[n].name);
temp[m].number=student[n].number;
temp[m].grade=student[n].grade;
temp[m].class=student[n].class;
for(i=0;i<2;i++)
temp[m].mark[i]=student[n].mark[i];
temp[m].average=student[n].average;
}
}
void addfile(T *student,int n) /* 加入新学生到文件 */
{
T temp[2];
int i,j=1;
float ave=0.0;
printf("Please input the student:\n");
printf(" name number grade class mark1 mark2\n");
printf("****************************************************\n");
scanf("%s",temp[0].name);
scanf("%d",&temp[0].number);
scanf("%d",&temp[0].grade);
scanf("%d",&temp[0].class);
for(i=0;i<2;i++)
{
scanf("%f",&temp[0].mark[i]);
ave=ave+temp[0].mark[i];
}
temp[0].average=ave=ave/2;
i=0;
while(ave<=student[i].average&&i<n)
i++;
students(student,temp,j%2,i,1); /* temp[j/2]=student[i]; */
students(student,temp,(j+1)%2,i,0); /* student[i]=stu; */
for(;i<n;i++)
{
j++;
students(student,temp,j%2,i+1,1); /* temp[(i+2)/2]=student[i+1]; */
students(student,temp,(j+1)%2,i+1,0); /* student[i+1]=temp[(i+1)/2]; */
}
writefile(student,i);
}
void showall(T *student,int n) /* 显示文件中所有的学生 */
{
int i;
int a[30];
for(i=0;i<n;i++)
a[i]=i;
show(student,a,n);
}
int find(T *student,int n,int *tp) /* 在文件中查询学生可以多行查询 */
{
int k,im=0,i,m,num,gra,clas;
char na[20];
float ord;
printf("*******************************\n");
printf(" name n&g&c ave order\n");
printf(" 1 2 3 4 \n");
printf("*******************************\n");
scanf("%d",&k);
switch(k)
{
case 1:
scanf("%s",&na);
for(i=0;i<n;i++)
{
if(strcmp(student[i].name,na)==0)
{
tp[im++]=i;
}
}
break;
case 2:
scanf("%d%d%d",&num,&gra,&clas);
for(i=0;i<n;i++)
{
if(student[i].number==num&&student[i].grade==gra&&student[i].class==clas)
{
tp[im++]=i;
}
}
break;
case 3:
scanf("%f",&ord);
for(i=0;i<n;i++)
{
if(ord==student[i].average)
{
tp[im++]=i;
}
}
break;
case 4:
scanf("%d",&m);
if(m<=n)
{
tp[im++]=m-1;
}
break;
case 5:
break;
default:
printf("error operate!\n");
exit(0);
}
if(im>=1)
show(student,tp,im);
if(im==0&&k<5&&k>=1)
printf("cant find!\n");
return(im);
}
dele(T *student,int n,int *tp) /* 对某个学生进行删除 */
{
int j;
printf("choose the student:\n");
j=find(student,n,tp);
if(j>=1)
{
if(j>1)
{
printf("Which one do you want to choose?\n");
scanf("%d",&j);
j=tp[j-1];
}
else
j=tp[0];
for(;j<n-1;j++)
students(student,student,j+1,j,0);
writefile(student,j-1);
}
}
void modify(T *student,int n,int *tp) /* 对某个学生进行修改 */
{
dele(student,n,tp);
addfile(student,n-1);
}
void readfile(int m) /* 读取文件中的数据,程序的基础 */
{
FILE *fp;
T student[30];
float mark[10],ave;
int i=0,j,tp[20];
if((fp=fopen("d:\\kanwei.txt","a+t"))==NULL)
{
printf("can't open file");
exit(0);
}
while(fscanf(fp,"%s%d%d%d",student[i].name,&student[i].number,&student[i].grade,&student[i].class)!=EOF)
{
for(j=0;j<2;j++)
{
fscanf(fp,"%f",&mark[j]);
student[i].mark[j]=mark[j];
}
fscanf(fp,"%f",&ave);
student[i].average=ave;
i++;
}
fclose(fp);
switch(m)
{
case 1:
find(student,i,tp);
break;
case 2:
addfile(student,i);
break;
case 3:
dele(student,i,tp);
break;
case 4:
modify(student,i,tp);
break;
case 5:
showall(student,i);
break;
default:
exit(0);
}
}
main() /* 主程序 */
{
int i=1;
while(i)
{
printf(" Choose the operate:\n");
printf("******************************************************\n");
printf(" find add delete modify showall exit\n");
printf(" 1 2 3 4 5 0\n");
printf("******************************************************\n");
scanf("%d",&i);
readfile(i);
}
}