导航:首页 > 源码编译 > 成绩管理的源码

成绩管理的源码

发布时间:2023-05-20 16:30:41

㈠ 求简单一点的学生成绩管理系统源代码,谢谢

已经算是很简单的了

#include <time.h>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>
#define MAX 80
void input();
void sort();
void average();
void find();
void total();

int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float sum;
};
struct student stu[MAX],*p;

void main()/*主函数*/
{
int as;

/*一下为功能选择模块*/
do
{
printf("\n\t\t\t欢迎使用学生成绩管理系统\n");
printf("\n\t\t\t\t1.信息输入(INPUT)\n\t\t\t\t2.总分统计(COUNT)\n\t\t\t\t3.总分排序(SORT)\n\t\t\t\t4.查询(QUERY)\n");
printf("\t\t\t\t选择功能选项:");
fflush(stdin);
scanf("%d",&as);
switch(as)
{
case 1:system("cls");input();break;
case 2:system("cls");total();break;
case 3:system("cls");sort();break;
case 4:system("cls");find();break;
default:break;
}
}while(1);
/*至此功能选择结束*/
}

void input()/*原始数据录入模块*/
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1);
printf("\n输入学生学号:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("\n输入学员姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\n输入学员性别:");
fflush(stdin);
gets(stu[i].sex);
printf("\n输入学员成绩(FOX):");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n输入学员成绩(C):");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n输入学员成绩(ENGLISH):");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
i++;
now_no=i;
printf("是否继续输入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
system("cls");
}

void sort()/*排序数据函数*/
{
struct student temp;
int i,j;
char as;
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
}
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].sum<stu[j].sum)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}

do{
for(i=0;i<now_no;i++)
{
printf("\t\t\t班级学员信息列表\n");
printf("\t学号\t姓名\t性别\tFOX成绩\tC成绩\tENG成绩\t总分\n");
for(i=0;i<now_no&&stu[i].name[0];i++)
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum);
}
printf("\t\t按任意键返回主菜单.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}

void find()/*查询函数*/
{
int i,str;
char as;

do
{
printf("输入要查询的学生学号:");
fflush(stdin);
scanf("%d",&str);
for(i=0;i<now_no;i++)
if(stu[i].no==str)
{
printf("\t学号\t姓名\t性别\tFOX成绩\tC成绩\tENG成绩\n");
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3);
}
printf("\t\t按任意键返回主菜单.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}

void total()/*求总分*/
{
int i;
char as;
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
}

do{
for(i=0;i<now_no;i++)
{
printf("\t\t\t班级学员信息列表\n");
printf("\t学号\t姓名\t性别\tFOX成绩\tC成绩\tENG成绩\t总分\n");
for(i=0;i<now_no&&stu[i].name[0];i++)
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].sum);
}
printf("\t\t按任意键返回主菜单.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}

㈡ 求C语言源代码 题目 学生成绩管理系统

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{ #define UP 72

#define DOWN 80

#define INSERT 82

#define DEL 83

#define ENTER 28

#define KEY 12

#define KEY 23

#define KEY 34

#define KEY 45

#define KEY A 30

#define KEY B 48

#define KEY C 46

#define KEY D 32

#define KEY E 18

#define KEY F 33

#define KEY G 34

#define KEY H 35

#define KEY I 23

#define KEY K 37

#define KEY L 38

#define KEY M 50

#define KEY N 49

#define KEY O 24

#define KEY P 25

#define KEY Q 16

#define KEY R 19

#define KEY S 31

#define KEY T 20

#define KEY U 22

#define KEY V 47

#define KEY W 17

#define KEY X 45

#define KEY Y 21

#define KEY Z 44

#define ALT F2 105

#define ALT F6 109

#define CTRL 4

#define SHIFT 1

#define ESC 1

#define BACKSPACE 14

#define LEN sizeof(struct student)

/*菜单选项。下拉标志*/答神

int menu x yes=1;

int menu y yes=0;

int menu x=1;

int menu x old=0;

int menu y1=1, menu y3=1;

/*保存文件名*/

char filename[43]="NONAME.dat";

/*开纯银辟保存数据的空间*/
void *buf=0;

int left,top,right,bottom;

/*开辟保存数据的空间*/

struct student

{ long num;

char name[15];

float h maths;

float english;

float c;

float sum;

int s sum;

struct student*next;

};

struct student*head=0,*p1,*p2;

int record n;

char key buf[50];

long student number=0;

char student name[13];

float student score=0;

/*读键扫描码做举宴*/

char get key(void)

{ AH=0; int (0X16); return( AH); }

/*显示字符*/

void show char(char z)

{ AL=z; AH=0x0e; int (0x10);}

/*测试是否有键输入*/

int key pressed(void)

{ AH=0x0b; int (0x21); if( AL==0) return(0); else return(1);}

/*退出程序*/

voidquit(void)

{ void free data(void);void restore menu(void); free data();

restore menu(); window(1,1,80,25,0x0f);

cur show(); gotoxy(1,1); exit(1);

}

/*回到dos提示符*/

void os shell(void)

{void mainmenu show(void);

window(1,1,80,25,0x0f);

cur show(); gotoxy(1,1); system("");

mainmenu show();

}

/*主窗口文字*/

void main menu 1(void)

{ int i,j; char*p;

char*mainmenu word[]={"File ","Save ","Options ","About me"};

if(menu x!=menu x old||!menu y yes)

{p=mainmenu word[0];

putstr(4,1,0x70,p,35);

for(i=0;i<35;i++) if(*p++<='Z') putchar(i+4,1,*(p-1),0x74);

p=mianmenu word[0];

if(menu x yes)

for(i=0;j=0;i<35;i++)

{it('A'<=*p&&*(p+1)=='')break;

putchar(i+4,1,*p,0x0f); }

p++; }

}

}

void main menu 2(void)

{ int i; int len; char *p;

char*mainmenu word[6]={"F1-Help","F2-Save","F5-OS shell","F10-Menu","Message"};

void main box(void); main box();

p=mainmenu word[0]; putstr(2,25,0x70,p,42);

for(i=0;i<42;i++) {if(*p=='F'||('0'<=*p&&*p<='9'))putchar(i+2,*p,0x74); p++; }

p=mainmenu word[4]; putstr(36,22,0x17,p,9); len=strlen(filename);

putchar(40-len/2-1,2,'',0x17);

for(p=filename,i=0;*p!=0;p++;i++) putchar(40-len/2+i,2,*p,0x17);

putchar(40-len/2+len,2,'',0x17);

}
/*主窗口线框*/

void main box(void)

{ int i;

for(i=1;i<=80;I++) {putchar(i,2,205,0x17); putchar(i,22,196,0x17);putchar(i,24,196,0x17);}

for(i=1;i<=80;i++) {putchar(1,i,179,0x17); putchar(80,i,179,0x17); }

putchar(1,2,213,0x17); putchar(80,2,184,0x17); putchar(1,22,195,0x17);

putchar(80,22,180,0x17); putchar(1,24,192,0x17); putchar(80,24,217,0x17);

}

/*显示主窗口菜单*/

voidmianmenu show (void)

{ textmode set(); cur hide();

window(1,1,80,25,0x1e);

window(1,1,80,1,0x70);

window(1,25,80,25,0x70);

main menu 10; main menu 20;

}

/*显示下拉菜单*/

void menu show (void)

{ int i;

char*submenu word[][5]={{"New file F4","Open file F3","OS shell F5","Quit Alt-X"},

p"Input F6","Delete F8","Update F9","query F11","Sort F12"}};

switch(menu x)

{case 1:

if(menu x!=menu x old)

{menu x old=menu x; menu window(3,2,18,8); menu box(3,2,18,8,3,0);}

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

{putstr(4,3+i,0x70,submenu word[0][i],14);

putchar(5,3+i,*(submenu word[0][i]+1),0x74); }

for(i=3;i<5;i++) putstr(4,3+i,0x7-,submenu word[0][i-1],14);

putchar(6,6,*(submenu word[0][2]+2),0x74);

putchar(5,7,*(submenu word[0][3]+1),0x74);

window(4,2+menu y1,17,2+menu y1,0x0f);

if(menu y1<=2)

putstr(4,2+menu y1,0x0f,submenu word[0][menu y1-1],14);

else

putstr(4,2+menu y1,0x0f,submenu word[0][menu y1-2],14); break;

case 2:menu x old=menu x; menu window(19,2,44,8);}

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

{putstr(20,3+i,0x70,submenu word[1][i],24);

putchar(21,3+i,*(submenu word[1][i]+1,0x74); }

window(20,2+menu y3,43,2+menu y3,0x0f);

putstr(20,2+menu y3,0x0f,submenu word[1][menu y3-1],24); break;

case 4:menu x old=menu x; }

}

/*清空键盘缓冲*/

void clr buf(void){ key buf[1]=0;}

void free data(void)

{ struct student*pa,*pb;

if(head)

{pb=pa=head;

do{ pb=pa; pa=pb->next; free(pb);}while(pa!=0);head=0; }

}

/*姓名处理*/

int string name(void)

{ int i,j;

if(key buf[1]==0) return(0);

for(i=2,j=0;i<=key buf[1]+1;i++;j++)

student name[j]='\0'; return(1);}

/*输入数据*/

voidinput(int flag)

{ int i; char*s1="NO. Name H maths English C\\C++ ";

char*s2=" | | | | ";

char*title="INPUT"; menu window(15,10,64,14); window(17,12,62,12,0x17);

putstr(37,10,0x70,title,7); putstr(17,11,0x70,s1,46);

if(head==0)

{ head=p1=p2=(struct student*)malloc(LEN);if(!head)memory error();

p1->next=0;

else{

for(p1=head,record n=0;p1!=0;record n++)

{ p2=p1; p1=p2->next; }

p1=(struct student*)malloc(LEN);

if(!p1)memory error();

p2->next=p1; }

while(1)

{record n++; putstr(17,12,0x07,s2,46);

if(flag==1)

{gotoxy(52,13); printf("Record%d",record n); }

do{ window(17,12,26,12,0x07);

if(!getstring(17,12,10))goto out ;

}while(!getstring number());

p1->num=student number;

do{ if(!getstring(28,12,12)) goto out;

}while(!string name());

strcpy(pi->name,student name);

for(i=1;i<=3;i++)

{ do{ window(41+(i-1)*8,12,0x07);

if(!getstring(41+(i-1)*8,12,5)) gotoout;

}while(!string score());

if(i==1)p1->h maths=student score;

if(i==2)pi->english=student score;

if(i==3)p1->c=student score; }

p1->sum=0.0; p1->s num=0;

if(flag==2){record n--;goto out;}

p2=p1;

p1=(struct student*)malloc(LEN);

if(!p1)memory error();

p1->next=0; p2->next=p1; }

out: cur hide(); window(15,10,65,15,0x1e);

if(flag==1) {if(head==p1)head=0; free(p1); p2->next=0; info(1); record n--; }

menu x yes=1; main menu 1();

}
/*查看是否有该成绩*/

struct student* search(int flag)

{ struct student8pa,*pb; if(head==0)return(0); pb=pa=head;

if(flag==1)

{if(head->num==student number) return(head-1);

do{ if(pa->num==student number) return(pb);

pb=pa; pa=pb->next;} while(pa!=0); }

return (0);

}

/*查询,删除,修改对话框*/

struct student*msg box(int which)

{ int flag; int key; char*p="<-A B->"; menu window(22,10,60,14); gotoxy(29,11);

printf("Number OR Name"); window(24,12,58,12,0x07); gotoxy(24,12);

printf(" | "); gotoxy(37,10);

switch(which)

{ case 1:printf("Delete");break;

case 2:printf("Update");break;

case 3:printf("Query");break; }

do{ while(!key pressed())

now time();

key=get key(); if(key==KEY A) {flag=1;break;}

if(key==KEY B) {flag=2;break;} printf("\07");

}while(1);

putstr(37,13,0x64,p,7);

if(flag==1)

{ do{

gotoxy(24,12); printf(" | "):

if(!getstring(24,12,10)) goto out;

}while(!string number());

window(22,10,61,15,0x1e); return(search(1)); }

else

{do{ gotoxy(24,12); printf(" | ");

if(!getstring(41,12,12)) goto out;

}while(!string name());

window(22,10,61,15,0x1e); return(0);}

/*删除记录*/

void delete(void)

{ struct student*pa,*pb; pb=msg box(1); if(pb==0)info(3);

else

{ if(pb==(head-1))

{ pb=head; if(pb->next==0) head=0;

else head=pb->next; }

else

{ if(pb->next->next==0) {pb->next=pa; } }

record n--; info(2); }}

/*删除记录*/

void update(void)

{int i; struct student*p; i=record n; p=msg box(2;

if(p==0)info(3);

else

{ input(2);

if(i==record n)

{if(p==(head-1)){

head->num=p1->num; strcpy(head->name,p1->name);

head->h maths=p1->h maths; head->english=p1->english;

head->c=p1->c; free(p1); p2->next=0; }

else { p->next->num=p1->num; strcpy(p->next->name,p1->name);

p->next->h maths=p1->h maths; p->next->english=p1->english;

p->next->c=p1->c; free(p1); p2->next=0; }

info(4); }

else {record n--;p2->next=0;free(p1);info(5);} }}

/*查询成绩*/

void query(void)

{ struct student*p,*pa,*pb; int key ,flag,i,j;

char*str="NO. Name H matns English C\\C++ Sum S NO.";

char*sm="NO. Name h maths English C\\C++ (who fails)";

menu window(26,10,56,12); gotoxy(28,11); printf("Find Fail");

putchar(33,11,'A',0xe4); putchar(49,11,'B',0xe4);

do{if(!key pressed()) now time();

key=get key();

if(key==KEY A){flag=1;break;}

if(key==KEY B){flag=2;break;}

printf("\07"); }while(1);

window(26,10,57,13,0x1e); if(flag==1)

{ p=msg box(3); if(p==0) info(3);

else{window(6,5,76,21,0x0e); window(5,4,75,20,0x5e); window(6,5,74,19,0x0e);

putstr(13,4,0x5a,str,58); gotoxy(6,6);

if(p!=(head-1)){pa=p->next;p=pa;}

else p=head;

printf("%101d%13s%8.1f%9.1f%9.1f%9.1f%6d\n",\

p->num,p->name,p->h maths,p->english,p->c,p->sum,p->s sum);

}}

if(flag==2)

{ window(6,5,76,21,0x0e);window(5,4,75,20,0x5e); window(6,5,74,19,0x0e);

putchar(13,4,0x5a,sm,59); if(head)

{ pa=head; j=0;

do{ j++; i=0; window(6,5,74,19,0x0e); gotoxy(65,20);

printf("Page%d",j);

do

{ if(pa->c<60||pa->h maths<60||pa->english<60)

{gotoxy(6,6+i); i++;

printf("%101d%13s%8.1f%9.1f%9.1f%9.1f%6d\n",\

p->num,p->name,p->h maths,p->english,p->c,p->sum,p->s sum);}

pb=pa; pa=pb->next; }while(i!=13&&pa!=0);

while(!key pressed()) now time();

get key(); }while(pa!=0);

goto out;}}

while(!key pressed())

now time();get key();

out:window(5,4,76,21,0x1e);}

/*成绩排名*/

void sort(void)

{ int i,j,n,flag; struct student*pa=0,*pb=0;

struct student*p[500],*pmin;

char*str="NO. Name H maths English C\\C++ Sum S NO.";

window(6,5,76,21,0x0e); window(5,4,75,20,0x5e); window(6,5,74,19,0x0e);

putstr(13,4,0x5a,str,58); window(60,20,73,20,0x5b);

if(head!=0)

{ i=0; pb=pa=head;

do

{p[i]=pa; i++; pa->sum=pa->h maths+pa->english+pa->c;

pb=pa; pa=pb->next; }while(pa!=0);

for(n=record n-1,i=0;i<n;i++)

{ flag=0;

for(j=0;j<n-i;j++)

if(p[j]->sum<p[j+1]->sum)

{ pmin=p[j]; p[j]=p[j+1]; p[j+1]=pmin; flag=1; }

if(flag==0)break; }

head=pb=pa=p[0]; head->s sum=1;

if(record n>1)

for(i=1;i<record n;i++) { pa->s sum=i; pb=pa; pa=pb->next=p[i];}

p2=p1=p[record n-1]; p1->s sum=record n;

p1->next=0; pb=pa=head;

j=0;

do{

j++;i=0; window(6,5,74,19,0x0e); gotoxy(65,20); printf("Page%d",j);

do

{gotoxy(6,6+i); i++;

printf("%101d%13s%8.1f%9.1f%9.1f%9.1f%6d\n",\

p->num,p->name,p->h maths,p->english,p->c,p->sum,p->s sum);}

pb=pa; pa=pb->next; }while(i!=13&&pa!=0);

while(!key pressed()) now time();

get key(); }while(pa!=0);

goto out;}

while(!key pressed())

now time();get key();

out:window(5,4,76,21,0x1e);}

/*输入文件名*/

int input filename(int m)

{ char*p; int fp; menu window(19,10,64,12);

window(20,11,63,11,0x07);

gotoxy(35,10); printf("File name");

if(!getstring(20,11,40)) goto no;

if(key buf[1]==0) goto no;

p=key buf+2; key buf[key buf[1]+2]='\0';

if(fp=fopen(p,"rb+"))==0)

{if(m==2) goto no; if(fp=fopen(p,"wb+"))==0 goto no; }

fclose(fp); strcpy(filename,p);

yes: window(19,10,65,13,0x1e);

return(1);

no: window(19,10,65,13,0x1e);

return(0);

}

/*新建文件*/

void new file(void)

{ int fp;

if(input filename(1)==0) info(9;

else

{main menu 2(); free data(); fp=fopen(filename,"wb+"); fclose(fp); info(10); }

}

/*打开文件*/

void open file(void)

{ struct student*pa,*pb; int fp;

if(input filename(2)==0)info(6);

else

{free data(); head=pb=pa=(struct student*)malloc(LEN); fp=fopen(filename,"rb+";

fread(&pa->num,LEN,1,fp);}

info(8); fclose(fp); input(1); }}

/*保存文件*/

void save fiel(void)

{ struct student8pa,*pb; int fp;

if((fp=fopen(filename,"rb+"))==0) fp=fopen(filename,"wb+");

pb=pa=head;

if(fp!=0&&head!=0)

{do{fwrite(&pa->num,LEN,1,fp); pb=pa; pa=pb->next;}while(pa!=0);

fclose(fp); }

info(7);

}

void about me(void)

{ int i; char*title="About Me"; char*str[]={" I'M A BIG.BIG WORLD. "};

menu window(20,5,58,18); putstr(35,5,0x70,title,10);

for(i=0;i<12;i++)putstr(25,6+i,0x75,str[i],29);

while(!key pressed()) now time();

get key(); window(20,5,59,19,0x1e);

}

system("PAUSE");
return EXIT_SUCCESS;
}

㈢ 学生成绩管理系统,C++源代码

#include<iostream>
#include<string>
#include <fstream>
#include<sstream>
#include<iomanip>
using namespace std;

//结点类,用于存放学生的各种数据
class Node{
public:
int id; //学号
string name; //姓名
string grade; //等级
double english; //英语
double math; //数学
double c; //C++
double sum; //总分
double average;
Node *next; //指向下一结点的指针
Node(int nid=0,string nname="noname", //构造函数,初始化变量
double e=0,double m=0,double cl=0,
double s=0 ,double a=0,string g="ng");
};

Node::Node(int nid,string nname,double e,double m,double cl,double s,double a,string g){
id=nid;
name=nname;
next=NULL;
english=e;
math=m;
c=cl;
sum=s;
average=a;
grade=g;

}
//class NOde结束

//Link类,把数据以链表的形式存储,链表的每个结点为一个Node对象
class Link{
private:
Node *head; //链表的头指针,为Node对象类型的指

public :
Link();//构造函数,初始化变量
bool linkIsEmpty();//判断链表是否为空
void linkInsert(Node *newnode);//向链表中插入新的结点
bool linkDelete(int nid);//从链表中删除的结点
void linkClear();//清空链表中数据
void linkView();//查看链表中数据
void linkGrade(Node *p1);//计算等级
void linkAverageTotle();//按平均分统计
Node* linkFind(int nid);//在链表中查找id为nid结点,返回指向该结点的指针
Node* getHead();//获取头指针
};

Link::Link(){ //构造函数,初始化链表为空
head=NULL;
}

bool Link::linkIsEmpty(){ //判断链表是否为空,空则返回true
return(head==NULL);
}

void Link::linkInsert(Node *newnode){//按id值从小到大的顺序,插入新的结点
Node *p1;
if(!head)//链表为空的情况
head=newnode;
else if((head->id)>(newnode->id)){//插入到第一个结点的情况
newnode->next=head;
head=newnode;
}
else{//插入到第二个及以后情况
p1=head;
while(1){
if(!(p1->next)){
p1->next=newnode;
break;
}
else if((p1->next)->id>newnode->id){
newnode->next=p1->next;
p1->next=newnode;
break;
}
p1=p1->next;
}
}
}

bool Link::linkDelete(int nid){//删除结点,成功则返回true
Node *p;
if(head==NULL)//链表为空的情况
return false;
if(head->id==nid){//删除的为第一个结点的情况
head=head->next;
return true;
}
p=head;
while(p->next){//删除的为第二个及以后结点的情况
if((p->next)->id==nid){
p->next=(p->next)->next;
return true;
}
p=p->next;
}
return false;
}

void Link::linkClear(){//清空链表
head=NULL;
}

void Link::linkView(){//显示链表数据
Node *p=head;

cout<<setw(10)<<"学号"<<setw(8)<<"姓名"<<setw(8)<<"英语"<<setw(8)
<<"数学"<<setw(8)<<"C++"<<setw(8)<<"总分"<<setw(8)<<"平均分"<<setw(8)<<"等级"<<endl;
while(p){
(p->sum)=(p->english)+(p->math)+(p->c);//计算总分
(p->average)=((p->english)+(p->math)+(p->c))/3;//计算平均成绩
linkGrade(p);//计算等级
cout<<setw(10)<<p->id<<setw(8)<<p->name<<setw(8)<<p->english
<<setw(8)<<p->math<<setw(8)<<p->c<<setw(8)<<p->sum<<setw(8)
<<p->average<<setw(8)<<p->grade<<endl;
p=p->next;
}

}

void Link::linkGrade(Node *p1){ // 计算等级
while(p1){
if(p1->average>=90&&p1->average<=100)
p1->grade="优";
else if(p1->average>=80&&p1->average<90)
p1->grade="良好";
else if(p1->average>=70&&p1->average<80)
p1->grade="中等";
else if(p1->average>=60&&p1->average<=70)
p1->grade="合格";
else
p1->grade="不合格";

p1=p1->next;
}
}
void Link::linkAverageTotle(){//按学生平均分统计
int a=0,b=0,c=0,d=0,e=0,f=0;
double averagesum=0,asum=0,aaverage=0,paverage=0;
Node *p3=head;
while(p3){
if(p3->average>=90&&p3->average<=100)
a+=1;
else if(p3->average>=80&&p3->average<90)
b+=1;
else if(p3->average>=70&&p3->average<80)
c+=1;
else if(p3->average>=60&&p3->average<70)
d+=1;
else
e+=1;
asum+=p3->sum;
aaverage+=p3->average;
p3=p3->next;
}
f=a+b+c+d+e;
averagesum=asum/f;
paverage=aaverage/f;
cout<<"|-------------------------------------------------------|"<<endl;
cout<<"| 总 人 数:"<<f<<endl;
cout<<"|-------------------------------------------------------|"<<endl;
cout<<"| 优 人 数:"<<a<<" | "<<"优 秀 率: "<<a*100/f<<"%"<<endl;
cout<<"|-------------------------------------------------------|"<<endl;
cout<<"| 良 好 的人数:"<<b<<" | "<<"良 好 率: "<<b*100/f<<"%"<<endl;
cout<<"|-------------------------------------------------------|"<<endl;
cout<<"| 中 等 的人数:"<<c<<" | "<<"中 等 率: "<<c*100/f<<"%"<<endl;
cout<<"|-------------------------------------------------------|"<<endl;
cout<<"| 所有合格人数:"<<a+b+c+d<<" | "<<"合 格 率: "<<(a+b+c+d)*100/f<<"%"<<endl;
cout<<"|-------------------------------------------------------|"<<endl;
cout<<"| 不 合 格 数:"<<e<<" | "<<"不合格率: "<<e*100/f<<"%"<<endl;
cout<<"|-------------------------------------------------------|"<<endl;
cout<<"| 总分的平均分:"<<averagesum<<" | "<<"所有科目的平均分:"<<paverage<<endl;
cout<<"|-------------------------------------------------------|"<<endl;
}

Node* Link::linkFind(int nid){//查找id值为nid的结点,返回该结点的指针
Node *p=head; //没找到符合条件的结点的话,返回的指针值为NULL
while(p){
if(p->id==nid)
break;
else
p=p->next;
}
return p;
}
Node* Link::getHead(){
return head;
}
//class Link 结束

//类Student,用于包装Link类及菜单操作
class Student{
private:
Link slink;//Link对象成员
bool k;//记录数据是否被修改
public:
Student();
void studentClear();
void studentInsert();
void studentDelete();
void studentFind();
void studentView();
void studentLoad();
void studentSave();
void studentAverageTotle();//按平均分数统计等级
void Exit();//退出程序
void showMenu();//显示菜单
void showTip();//显示操作提示
void doMenu(char n);//执行相应菜单项功能
};
Student::Student(){
Link();//调用成员对象的构造函数
studentLoad();//从文件中读取数据,创建链表
k=false;//设置数据被修改
}

void Student::studentClear(){//清空学生记录
slink.linkClear();
cout<<"成功清空学生记录!"<<endl;
}

void Student::studentInsert(){//插入学生记录
Node *p=new Node();

cout<<"请输入学号:";
cin>>p->id;
cout<<"请输入姓名:";
cin>>p->name;
if(!slink.linkFind(p->id)){//判断学号是否存在

slink.linkInsert(p);
k=true;
}
else
cout<<"学号为"<<p->id<<"的学生已存在,插入失败!"<<endl;
cout<<"请输入成绩:"<<endl;
cout<<"英语:";
cin>>p->english;
cout<<endl;
cout<<"数学:";
cin>>p->math;
cout<<endl;
cout<<"C++:";
cin>>p->c;
cout<<endl;
(p->sum)=(p->english)+(p->math)+(p->c);//计算总分
(p->average)=((p->english)+(p->math)+(p->c))/3;//计算平均成绩

}

void Student::studentDelete(){//删除学生记录
int i;
if(slink.linkIsEmpty())//链表为空的情况
cout<<"没有学生记录!"<<endl;
else{
cout<<"请输入学号:";
cin>>i;
if(slink.linkDelete(i)){
cout<<"成功删除学号为"<<i<<"的学生记录!"<<endl;
k=true;
}
else
cout<<"没有找到学号为"<<i<<"的学生!"<<endl;
}
}

void Student::studentFind(){//查找某学号的学生记录
int n;
Node *p;
if(slink.linkIsEmpty())//链表为空的情况
cout<<"没有学生记录!"<<endl;
else{
cout<<"请输入要查找的学号:";
cin>>n;
p=slink.linkFind(n);//获得找到的结点的指针
if(p){//指针值不为NULL时
(p->sum)=(p->english)+(p->math)+(p->c);//计算总分
(p->average)=((p->english)+(p->math)+(p->c))/3;//计算平均成绩
slink.linkGrade(p);
cout<<setw(6)<<"学号"<<setw(8)<<"姓名"<<setw(8)<<"英语"
<<setw(8)<<"数学"<<setw(8)<<"C++"<<setw(8)<<"总分"<<setw(8)
<<"平均分"<<setw(8)<<"等级"<<endl;
cout<<setw(6)<<p->id<<setw(8)<<p->name<<setw(8)<<p->english
<<setw(8)<<p->math<<setw(8)<<p->c<<setw(8)<<p->sum<<setw(8)<<p->average
<<setw(8)<<p->grade<<endl;
}
else//指针值为NULL时
cout<<"没有找到学号为"<<n<<"的学生记录!"<<endl;
}
}

void Student::studentView(){//显示所有学生的记录
if(slink.linkIsEmpty())
cout<<"没有学生记录!"<<endl;
else
slink.linkView();
}

void Student::studentLoad(){//从文件中读入数据,创建链表
Node *p;
int nid;
ifstream infile("data.txt");
if(!infile)
cerr<<"错误:数据文件不能打开!\n";
else
while(infile>>nid){//读取学号,直到读空
p=new Node();
p->id=nid;
infile>>p->name>>p->english>>p->math>>p->c>>p->sum>>p->average>>p->grade;//读取姓名
slink.linkInsert(p);
}
infile.close(); //关闭文件
}

void Student::studentSave(){//将数据保存到文件
Node *p=slink.getHead();
ofstream outfile("data.txt");
if(!outfile)
cerr<<"错误:数据文件不能打开!\n";
else{
while(p){
outfile<<p->id<<' '<<p->name<<' '<<p->english<<' '<<p->math<<' '
<<p->c<<' '<<p->sum<<' '<<p->average<<' '<<p->grade<<endl;
p=p->next;
}
k=false;
cout<<"保存成功!"<<endl;
}
}

void Student::studentAverageTotle(){
if(slink.linkIsEmpty())
cout<<"没有学生记录!"<<endl;
else
slink.linkAverageTotle();
}
void Student::Exit(){
char s='Y';
if(k){//判断数据是否修改
cout<<"数据已经改变,是否保存?(y/n):";
cin>>s;
if(s=='y'||s=='Y')
studentSave();
}
cout<<"已安全退出,";
system("pause");
exit(0);
}

void Student::showMenu(){
cout<<" "<<"|------------------------------------------------|"<<endl;
cout<<" "<<"| 学生信息管理系统 |"<<endl;
cout<<" "<<"|------------------------------------------------|"<<endl;
cout<<" "<<"| 1. 清空:清除所有学生数据 |"<<endl;
cout<<" "<<"|------------------------------------------------|"<<endl;
cout<<" "<<"| 2. 添加:插入一条学生数据 |"<<endl;
cout<<" "<<"|------------------------------------------------|"<<endl;
cout<<" "<<"| 3. 删除:删除指定学生数据 |"<<endl;
cout<<" "<<"|------------------------------------------------|"<<endl;
cout<<" "<<"| 4. 查找:查找指定学生数据 |"<<endl;
cout<<" "<<"|------------------------------------------------|"<<endl;
cout<<" "<<"| 5. 显示:显示所有学生数据 |"<<endl;
cout<<" "<<"|------------------------------------------------|"<<endl;
cout<<" "<<"| 6. 保存:保存所有学生数据 |"<<endl;
cout<<" "<<"|------------------------------------------------|"<<endl;
cout<<" "<<"| 7. 统计:按学生平均分统计 |"<<endl;
cout<<" "<<"|------------------------------------------------|"<<endl;
cout<<" "<<"| 0. 退出:安全的退出本系统 |"<<endl;
cout<<" "<<"|------------------------------------------------|"<<endl<<endl;
}

void Student::showTip(){
cout<<endl;
cout<<"-------------------操作完成---------------------"<<endl;
cout<<"-----------------选择0-7继续-------------------"<<endl;
cout<<"请选择:";
}

void Student::doMenu(char n){
switch(n){
case '1':
studentClear();break;
case '2':
studentInsert();break;
case '4':
studentFind();break;
case '3':
studentDelete();break;
case '5':
studentView();break;
case '6':
studentSave();break;
case '7':
studentAverageTotle();break;
case '0':
Exit();break;
default:cout<<"输入错误!";
}
}

int main(){
Student s;
char i='9';
s.showMenu();
cout<<"选择对应数字进行操作:";
while(1){
cin>>i;
system("cls"); //清除屏幕
s.showMenu();
s.doMenu(i);
s.showTip();
}
return 0;}

㈣ 求学生成绩管理系统的源代码

#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);
}

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

㈤ c语言学生成绩管理系统1000行源代码

/*首次使用,新建score.in文件,在里面打入0
可用程序
#include<stdio.h>
FILE *fin
main()
{
fin=fopen("score.in","r");
fprintf(fin,"0");
return 0;
}
完成
*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<time.h>
#define n 999
FILE *fin;
main()
{
int a[n]={0},ori=0,i=0,b=0,add[n]={0},con=0,orix[n]={0},t=0,te[n]={0},TRUEt,ixi,fx,abc=0,sum,TURE,xx;
long long f[n]={0},tex[n]={0};
printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t学生成绩管理系统\n\t\t\t\t\t\t Please wait...");
Sleep(2000);system("cls");
int xp,xi;
fin=fopen("score.in","r+");
fscanf(fin,"%d",&xp);
i=xp;
for(xi=1;xi<=xp;xi++)
{fscanf(fin,"%d%d%d",&f[xi],&a[xi],&te[xi]);te[xi]--;
printf("Id:%lld score:%d ranking:%d\n",f[xi],a[xi],te[xi]+1);
add[xi]=xi;orix[xi]=a[xi];
}
fclose(fin);
int TRUE1;
pe:
while(1)
{ TRUE1=1;i++;
printf("Id(输入-1:删除,输入-2:修改成绩,输入-3:删除所有内容,输入-4:保存到score.in并退出):");
scanf("%lld",&f[i]);
for(sum=1;sum<i;sum++)
if(f[sum]==f[i])
{system("cls");for(con=1;con<=i;con++) {if(a[con]==0)continue;printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}TRUE1=0;i--;printf("Error with two same id.\n");continue;}
if(TRUE1==0)
continue;
if(f[i]==-3)
{int r;
for(r=0;r<n;r++)
{
a[r]=0;ori=0;i=0;b=0;add[r]=0;con=0;orix[r]=0;t=0;te[r]=0;abc=0;
f[r]=0;tex[r]=0;
}
system("cls");
goto pe;
}
if(f[i]==-2)
{TURE=0;i--;
system("cls");
for(con=1;con<=i;con++)
{if(a[con]==0)continue; printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
printf("修改学号_____________号的分数.\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b",f[con],a[con],te[con]+1);
scanf("%d",&xx);
for(sum=1;sum<=i;sum++)
if(f[sum]==xx)
{
TURE=1;
printf("\n修改为___________.\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%d",&a[sum]);
printf("\n修改成功!将在下一次输入后更新名次。\n\n");
continue;
}
if(TURE==0)
printf("No id is %d\n",xx);
continue;
}
if(f[i]==-4)
{
i--;
fin=fopen("score.in","r+");
fprintf(fin,"%d\n",i);
for(xi=1;xi<=i;xi++)fprintf(fin,"%d %d %d\n",f[xi],a[xi],te[xi]+1);
for(xi=i+1;xi<=xp;xi++)fprintf(fin," \n");
fclose(fin);
return 0;
}
if(f[i]==-1)
{TRUEt=0;
system("cls");
i--;
for(con=1;con<=i;con++){if(a[con]==0)continue;printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
printf("删除学号_____________号.\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%lld",&fx);
for(con=1;con<=i;con++)
if(f[con]==fx)
{TRUEt=1;abc++;
f[con]=0;
a[con]=0;
tex[abc]=te[con];
for(ixi=1;ixi<=i;ixi++)
if(te[ixi]>te[con])
te[ixi]--;
te[con]=0;
break;}
system("cls");
for(con=1;con<=i;con++){
if(a[con]==0)continue;
printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
if(TRUE==0)
printf("No Id is %lld\n",fx);
continue;
}
system("cls");
for(con=1;con<i;con++)
{if(a[con]==0)continue; printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
printf("Id:%lld score:",f[i]);
scanf("%d",&ori);system("cls");
a[i]=ori;add[i]=i;orix[i]=a[i];
system("cls");
for(b=1;b<=i;b++)
for(con=i;con>=b;con--)
if(orix[con]>orix[con-1])
{t=orix[con];orix[con]=orix[con-1];orix[con-1]=t;
t=add[con];add[con]=add[con-1];add[con-1]=t;}
for(con=1;con<=i;con++) te[add[con]]=con;
for(con=1;con<=abc;con++)
for(ixi=1;ixi<=i;ixi++)
if(te[ixi]>tex[con])
te[ixi]--;
if(te[i]==te[i-1])te[i]=0;
for(con=1;con<=i;con++)
{if(a[con]==0)continue;printf("Id:%lld score:%d ranking:%d\n",f[con],a[con],te[con]+1);}
}
return 0;
}
//求采纳

㈥ 学生成绩管理C语言程序设计源代码

这个是我大一的时候写的,你参考一下自己修改修改就能用了:

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define PF printf
#define SF scanf
#define NUM_sub 4
#define SIZE 80
#define LEN sizeof(struct cj_statistic)
static int n=0;
int i=0;

struct cj_statistic
{
int num;
char name[15];
int score[NUM_sub];
int sum;
int aver_stu;
int aver_cour;
int index;
struct cj_statistic *next;
} stud[SIZE],temp;
void add();
void del();
void change();
void display();
void arrange();
void find();

void add()
{ FILE *fp;
float s1=0.0; int i; clrscr();
if((fp=fopen("xx.out","a"))==NULL)
{PF("磁盘已满举察! ");
getchar();
return;}
PF(" 请输入要添加的学生学号:");
SF("%d",&stud[n].num);
PF(" 请输入要添加的学生姓名:");
SF("%s",stud[n].name);
PF(" 请输入该学生的各科成绩:");
s1=0;
for(i=0;i<NUM_sub;i++)
{
do
{
PF("score%d:",i+1);
SF("%d",&stud[n].score[i]);
if(stud[n].score[i]>100||stud[n].score[i]<0)
PF("wrong data,repeat input ");
}
while(stud[n].score[i]>100||stud[n].score[i]<0);
s1=s1+stud[n].score[i]; /*算总分*/
}
stud[n].sum=s1;
stud[n].aver_stu=(float)s1/NUM_sub;
stud[n].index=n+1;
getchar();
if(fwrite(&stud[n],LEN,1,fp)) n++;
fclose(fp);

}
void del()
{
int k, m;
FILE *fp;
clrscr();
fp=fopen("xx.out","r");
for(i=0;i<n;i++)
fread(&stud[i],LEN,1,fp);
fclose(fp);
PF(" 请输入要删除的学号:");
SF("%d",&m);
getchar();
for(i=0;i<n;i++)
if(m==stud[i].num){k=1;break;}/*查找记录*/
if(k==1)/*删除记录*/
{ for(k=i;k<n-1;k++)
{ strcpy(stud[k].name,stud[k+1].name);
敏虚 stud[k].num=stud[k+1].num;
for(i=0;i<NUM_sub;i++)
stud[k].score[i]=stud[k+1].score[i];
stud[k].sum=stud[k+1].sum;
stud[k].aver_stu=stud[k+1].aver_stu;
stud[k].index=stud[k+1].index;
} n--;PF("删除成功!");
}
else
{
PF("找不到要删除的记录: ");
PF("按回车键返回:");
getchar();
正拿茄 }
fp=fopen("xx.out","a");/*打开新文件*/
for(i=0;i<n;i++)
fwrite(&stud[i],LEN,1,fp);/*写入信息*/
fclose(fp);
}
void change()
{ int k,m;
FILE *fp;
clrscr();/*清屏*/
fp=fopen("xx.out","r");
for(i=0;i<n;i++)
fread(&stud[i],LEN,1,fp);
fclose(fp);
PF(" 请输入要修改的学生学号:");
SF("%d",&m);
getchar();
for(i=0;i<n;i++)
if(m==stud[i].num)
{k=1;break;}/*查找*/
if(k==1)/*开始修改*/
{ PF(" ");
PF(" 请输入修改后的学生姓名:");
SF("%s",stud[i].name);
PF(" 请输入修改后的学生学号:");
SF("&d",&stud[i].num);
for(i=0;i<NUM_sub;i++)
{ PF("score%d:",i+1);
SF("%d",&stud[n].score[i]);}
}
else
{ PF("对不起,找不到要修改的记录! ");
PF("按回车键返回:");
getchar();}
fp=fopen("xx.out","w");
for(i=0;i<n;i++)
fwrite(&stud[i],LEN,1,fp);/*写入数据*/
fclose(fp);
}
void display() /*浏览全部学生信息*/
{ FILE *fp;
clrscr();/*清屏*/
fp=fopen("xx.out","r");
printf(" ************************************STUDENT************************************* ");
printf("| 学号 | 姓名 | 英语 | 高数 | C语言 | 物理 | 总分 | 平均分 |名次| ");
printf("|--------|-----------|------|------|-------|--------|-------| -------|----| ");
for(i=0;i<n;i++)
{
fread(&stud[i],LEN,1,fp);/*读一个输出一个*/
PF("| %d | %s | %d | %d | %d | %d | %d | %d | ",stud[i].num,
stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].sum,stud[i].aver_stu,
stud[i].index);

}
PF("按任意键返回!");
fclose(fp);
getchar();

}

void arrange()
{
int k=0,j,sum1,sum2,sum3,sum4;
FILE *fp;
clrscr();
if((fp=fopen("xx.out","r"))==NULL)
{PF("磁盘已满! ");
getchar();
return;}
for(i=0;i<n;i++)
{ for(j=0;j<n-i;j++)
if(stud[j].sum<stud[j+1].sum)
{temp=stud[j];
stud[j]=stud[j+1];
stud[j+1]=temp;} }
fwrite(&stud[i],LEN,1,fp);/*写入数据*/
printf(" *********************************STUDENT****************************************** ");
printf("| 学号 | 姓名 | 英语 | 高数 | C语言 | 物理 | 总分 | 平均分 |名次| ");
printf("|--------|-----------|------|------|-------|--------|-------|--------|----| ");
for(i=0;i<n;i++)
{
fread(&stud[i],LEN,1,fp);/*读一个输出一个*/
PF("| %d | %s | %d | %d | %d | %d | %d | %d | %d | ",stud[i].num,
stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].sum,stud[i].aver_stu,
++k);}
for(sum1=0,sum2=0,sum3=0,sum4=0,i=0;i<n;i++)
{fread(&stud[i],LEN,1,fp);
sum1=sum1+stud[i].score[0]; sum2+=stud[i].score[1];
sum3+=stud[i].score[2];sum4+=stud[i].score[3];}
PF("各 科 成 绩 平均分:| %d | %d | %d | %d |",sum1/(n+1),sum2/(n+1),sum3/(n+1),sum4/(n+1));


PF("按任意键返回!");
fclose(fp);
getchar();

}
void find()
{ int k,m;
FILE *fp;
clrscr();/*清屏*/
if((fp=fopen("xx.out","r"))==NULL)
{PF("不能打开文件! ");
PF("按回车键返回:");
getchar(); return;
}
for(i=0;i<n;i++)
fread(&stud[i],LEN,1,fp);
fclose(fp);
PF(" 请输入要查询的学生学号:");
SF("%d",&k);
getchar();
for(i=0;i<n;i++)
if(k==stud[i].num)/*查找记录*/
{m=1;break;}
if(m==1)
{PF("| 学号 | 姓名 | 英语 | 高数 | C语言 | 物理 | 总分 | 平均分 |名次| ");
PF("|--------|-----------|------|------|-------|--------|-------|--------|----| ");
PF("| %d | % s | %d | %d | %d | %d | %d | %d | %d | ",stud[i].num,
stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].sum,stud[i].aver_stu,
stud[i].index);}


else PF("无记录显示,或记录已被删除!");
PF("按回车键返回!");
fclose(fp);
getchar();
}

void main()
{ FILE *fp;
char c;
int i; clrscr(); /**/
PF(" *欢迎使用学生成绩统计系统*");
PF(" 制作人 董伟");
PF(" 2008年6月");
PF(" 按回车键进入主菜单:");/**/
getchar();
do
{ clrscr();
PF(" ");
PF(" ************** ");
PF(" * 主菜单 * ");
PF(" ************** ");
PF(" 1添加一个学生信息 2删除一个学生信息 ");
PF(" 3修改一个学生信息 4浏览全部学生信息 ");
PF(" 5学生成绩排序 6查找一个学生信息 ");
PF(" 7 退出系统 ");
PF(" 请选择[1/2/3/4/5/6/7]:");
do
{ c=getchar();}
while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5'&&c!='6'&&c!='7');
getchar();
switch(c)
{ case'1':add();break;
case'2':del();break;
case'3':change();break;
case'4':display();break;
case'5':arrange();break;
case'6':find();break;
case'7':exit(0);
}
PF(" 按任意键返回主菜单: ");
getchar();
clrscr();
} while(1);
}





㈦ c语言程序学生成绩管理系统源代码

头文件:::
#ifndef H_STUDENT_HH
#define H_STUDENT_HH

#include "stdio.h"
#include "string.h"
#include "malloc.h"

#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/
#define numsubs 5 /*学科数目*/
typedef struct message_student /*结构体定义*/
{
char number[6];
char name[20];
char sex[4];
float subject[numsubs];
float score;
float average;
int index;
}student;

extern int numstus; /*学生数目*/
extern student *pointer; /*指向结构体数组*/
extern int lens;

int menu_select(); /*函数声明*/
int openfile(student stu[]);
int findrecord(student stud[]);
int writetotext(student stud[]);
void welcome();
void display1();
void showtable();
void sort(student stu[]);
void deleterecord(student stu[],int i);
void addrecord(student stud[]);
void display(student stud[],int n1,int n2);
void amendrecord(student stud[]);
void count(student stud[]);
void sortnum(student stud[]);
void sortnum2(student stud[]);
void sortname(student stud[]);
void sortname2(student stud[]);
void sortcount(student stud[]);
void sortcount2(student stud[]);
void statistic(student stud[]);
void display1();

#endif

#include "head.h"
int menu_select()
{
char c;
printf("\n\n");
printf(" | 1. 增加学生记录 5.统计信息 |\n");
printf(" | 2. 查询学生记录 6.打开文件 |\n");
printf(" | 3. 修改学生记录 7.保存文件 |\n");
printf(" | 4. 学生纪录排序 8.显示记录 |\n");
printf(" | 0.退出系统 |\n");
printf("\n\n");
printf("请选择(0-8):");
c=getchar();
getchar();
return (c-'0');
}

#include "head.h"
int findrecord(student stud[]) /*查找信息*/
{
char str[2];
int i,num;
if(numstus==0)
{
printf("没有可被查找的记录\n");
return -1;
}
else
{
printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n");
gets(str);
if(str[0]=='1') /*按学号查找*/
{
printf("请输入学号:");
gets(str);
for(i=0;i<=numstus;i++)
if(strcmp(str,stud[i].number)==0)
{
display(stud,i,i);
break;
}
else continue;
}
else if(str[0]=='2') /*按姓名查找*/
{
printf("请输入姓名:");
gets(str);
for(i=0;i<=numstus;i++)
if(strcmp(str,stud[i].name)==0)
{
display(stud,i,i);
break;
}
else continue;
}
else if(str[0]=='3') /*按名次查找*/
{
printf("请输入名次:");
scanf("%d",&num);
getchar();
for(i=0;i<=numstus;i++)
if(num==stud[i].index)
{
display(stud,i,i);
break;
}
else continue;
}
if(i>numstus)
{
printf("没有查找所要的信息。\n");
return -1;
}
return i;
}
}

#include"head.h"
int openfile(student stu[])
{
int i=0,j;
FILE *fp;
char filename[20],str[2];
if(numstus!=0)
{
printf("已经有记录存在,是否保存?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(stu);
}
printf("请输入文件名:");
gets(filename);
numstus=0;
if((fp=fopen(filename,"rb+"))==NULL)
{
printf("无法打开该文件\n");
return(-1);
}
fscanf(fp,"%d",&numstus);
fgetc(fp);
while(i<numstus)
{
fscanf(fp,"%s",stu[i].number);
fscanf(fp,"%s",stu[i].name);
fscanf(fp,"%s",stu[i].sex);
for(j=0;j<numsubs;j++)
fscanf(fp,"%f",&stu[i].subject[j]);
fscanf(fp,"%f",&stu[i].score);
fscanf(fp,"%f",&stu[i].average);
fscanf(fp,"%d",&stu[i].index);
i++;
}
fclose(fp);
printf("文件读取成功\n");
printf("是否显示纪录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
display(stu,0,numstus-1);
return(0);
}
#include "head.h"
void sort(student stud[])
{
int i,j=0;
char str[5];
student *p;
p=stud;
if(numstus==0)
{
printf("没有可供查询的记录!");
}
while(1)
{
for(i=0;;i++)
{
printf(" 请输入查询方式:");
printf("(直接输入回车则结束查询操作)\n");
printf("1.按照学号\t");
printf("2.按照姓名\t");
printf("3.按照名次\n");
gets(str);
if(strlen(str)==0) break;
if(str[0]=='1')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortnum2(p);
else
sortnum(p);
display(stud,0,numstus-1);
}
else if(str[0]=='2')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortname2(p);
else
sortname(p);
display(stud,0,numstus-1);
}
else if(str[0]=='3')
{
printf("请输入排序次序:\n");
printf("1.升序排列\t");
printf("2.降序排列\n");
gets(str);
if(str[0]=='1')
sortcount2(p);
else
sortcount(p);
display(stud,0,numstus-1);
}
else printf("请输入1~3");
printf("是否退出排序?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') break;
}
return;
}
}
void sortnum(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j+1].number,stud[j].number)>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortnum2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j].number,stud[j+1].number)>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortname(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j+1].name,stud[j].name)>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortname2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j].name,stud[j+1].name)>0)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortcount(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(stud[j+1].index>stud[j].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
void sortcount2(student stud[])
{
int i,j;
student temp;
student *p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(stud[j].index>stud[j+1].index)
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
#include"head.h"
void statistic(student stud[]) /*新增功能,输出统计信息*/
{
int i,j=0,k=0;
char c1,str[2];
float average[numsubs],sum=0;
if(numstus==0)
printf("没有可被查找的记录\n");
else
{
while(1)
{
printf("下面将统计考试成绩\n");
printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n");
c1=getchar();
printf("\t一共有个%d记录\n",numstus); /*总共记录数*/
switch(c1)
{
case '1':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[0];
if(stud[k].subject[0]>stud[i].subject[0]) k=i;
if(stud[j].subject[0]<stud[i].subject[0]) j=i;
}
average[0]=sum/numstus;
printf("\t科目A的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]);
printf("\t科目A的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]);
printf("\t科目A的平均分是 %5.2f\n",average[0]); /*平均分*/
break;
case '2':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[1];
if(stud[k].subject[1]>stud[i].subject[1]) k=i;
if(stud[j].subject[1]<stud[i].subject[1]) j=i;
}
average[1]=sum/numstus;
printf("\t科目B的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]);
printf("\t科目B的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]);
printf("\t科目B的平均分是 %5.2f\n",average[1]); /*平均分*/
break;
case '3':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[2];
if(stud[k].subject[2]>stud[i].subject[2]) k=i;
if(stud[j].subject[2]<stud[i].subject[2]) j=i;
}
average[2]=sum/numstus;
printf("\t科目C的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]);
printf("\t科目C的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]);
printf("\t科目C的平均分是 %5.2f\n",average[2]); /*平均分*/
break;
case '4':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[3];
if(stud[k].subject[3]>stud[i].subject[3]) k=i;
if(stud[j].subject[3]<stud[i].subject[3]) j=i;
}
average[3]=sum/numstus;
printf("\t科目D的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]);
printf("\t科目D的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]);
printf("\t科目D的平均分是 %5.2f\n",average[3]); /*平均分*/
break;
case '5':
for(i=0;i<numstus;i++) /*循环输入判断*/
{
sum+=stud[i].subject[4];
if(stud[k].subject[4]>stud[i].subject[4]) k=i;
if(stud[j].subject[4]<stud[i].subject[4]) j=i;
}
average[4]=sum/numstus;
printf("\t科目E的最高分:\n"); /*最高分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]);
printf("\t科目E的最低分是:\n"); /*最低分*/
printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]);
printf("\t科目E的平均分是 %5.2f\n",average[4]); /*平均分*/
break;
default:printf("输入错误!请输入1~5之间的数\n");
}
sum=0;
getchar();
printf("是否继续进行统计?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') ;
else break;
}
}
}

#include"head.h"
int writetotext(student stud[]) /*将所有记录写入文件*/
{
int i=0,j;
FILE *fp;
char filename[20];
printf("输入文件名称:");
gets(filename);
fp=fopen(filename,"w");
fprintf(fp,"%d\n",numstus);
while(i<numstus)
{
fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex);
for(j=0;j<numsubs;j++)
fprintf(fp,"%f ",stud[i].subject[j]);
fprintf(fp,"%f %f %d ",stud[i].score,stud[i].average,stud[i].index);
i++;
}
fclose(fp);
printf("已成功存储!\n");
display(stud,0,numstus-1);
numstus=0;
return 0;
}

#include"head.h"
void welcome()
{
printf("\t*************************************************************\n");
printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n");
printf("\t*************************************************************\n");

}

void showtable()
{
printf("---------------------------------------------------------------------------------------\n");
printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n");
printf("---------------------------------------------------------------------------------------\n");
}

void display(student stud[],int n1,int n2)
{
int i;
showtable(); /*显示表头*/
for(i=n1;i<=n2;i++)
printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index);
/*通过循环输出数据*/

}
void display1()
{
printf("\t\t本系统由计应精英一组亲情制作\n\n");
printf("\t\t制作人员列表: (按比划)\n");
printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n");
printf("\n\n");
getchar();
}

#include"head.h"
#include<string.h>
void amendrecord(student stud[])
{
char str[5]; /*供用户输入*/
int i=-1,j;

if(numstus==0) /*没有记录返回*/
printf("没有可供修改的记录!");
while(i<0)
{
i=findrecord(stud);
if(i>=0)
{
printf("要删除这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
deleterecord(stud,i);
count(stud);
}
else
{
printf("确定要修改这个学生的信息吗?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{

printf("下面请重新输入学生的信息:\n");
printf("请输入学号:");
gets(stud[i].number);
printf("请输入姓名:");
gets(stud[i].name);
printf("请输入性别(男/女 1/0):");
gets(str);
if(str[0]=='0')
strcpy(stud[i].sex,"女");
else
strcpy(stud[i].sex,"男");
stud[i].score=0;
printf("请按顺序输入成绩:");
for(j=0;j<numsubs;j++)
{
scanf("%f",&stud[i].subject[j]);
stud[i].score+=stud[i].subject[j];
}
getchar();
stud[i].average=stud[i].score/numsubs;
}
count(stud);
}
display(stud,0,numstus-1);
}
printf("是否继续进行其他修改?(y/n)\n");
gets(str);
if(str[0]=='y'||str[0]=='Y')
i=-1;
else i=1;
}
}

void deleterecord(student stu[],int i) /*删除信息*/
{
int j;

while(i>=0)
{
for(j=i;j<numstus;j++)
stu[j]=stu[j+1];
numstus--;
printf("删除成功!\n");

}
}

void count(student stud[])
{
int i,j;
for(i=0;i<numstus;i++)
{
stud[i].index=1;
for(j=0;j<numstus;j++)
if(stud[j].score>stud[i].score)
stud[i].index++;
}
}

#include "head.h"
void addrecord(student stud[])
{
int i=0,j,num;
char str[5];
if(numstus!=0)
{
printf("已有记录存在是否覆盖?(y/n)\n");
gets(str);
if(str[0]=='Y'||str[0]=='y')
i=0;
else i=numstus;
}

printf("请输入增加的学生信息条目数:");
scanf("%d",&num);
if(i==0)
numstus=num;
else numstus+=num;
if(numstus>lens)
{
lens+=50;
pointer=(student *)realloc(pointer,lens*LEN);
}
printf("请输入学生信息:\n");
for(;i<numstus;i++)
{
getchar();
printf("请输入学号:");
gets(pointer[i].number);
printf("请输入姓名:");
gets(pointer[i].name);
printf("请输入性别(男/女 1/0):");
gets(pointer[i].sex);
if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");
else strcpy(pointer[i].sex,"男");
printf("请输入各科成绩:(按ABCDE的顺序):");
stud[i].score=0;
for(j=0;j<numsubs;j++)
{
scanf("%f",&stud[i].subject[j]); /*计算总分*/
stud[i].score+=stud[i].subject[j];
}
stud[i].average=stud[i].score/numsubs; /*计算平均分*/
}
count(stud); /*附名次*/
display(stud,0,numstus-1);
getchar();
}#include "head.h"
int numstus;
int lens;
student *pointer;
void main()
{
int i=1;
char str[2];
lens=100;
pointer=(student *)malloc(lens*LEN); /*分配内存*/
numstus=0;
welcome(); /*欢迎界面*/
while(i>0)
{
i=menu_select(); /*控制菜单*/
switch(i)
{
case 1:addrecord(pointer);break; /*增加学生信息*/
case 2:findrecord(pointer);break; /*查询学生信息*/
case 3:amendrecord(pointer);break; /*修改学生信息*/
case 4:sort(pointer);break; /*学生信息排序*/
case 5:statistic(pointer);break; /*统计信息*/
case 6:openfile(pointer);break; /*打开文件*/
case 7:writetotext(pointer);break; /*保存文件*/
case 8:display(pointer,0,numstus-1);break; /*显示记录*/
case 0:
if(numstus!=0) printf("是否保存当前记录?(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(pointer);
i=-1;break; /*退出系统*/
default:printf("请输入数字0~8:\n");i=1; /*输入错误*/
}
}
printf("\t\t欢迎再次使用本系统。\n\n");
display1();
}

自己一改就能用,给我加分哈!

㈧ 求一个用java写的学生成绩管理信息系统的源代码,要求有界面,能实现

以下方法实现了用户界面登陆
import java.awt.*;
import java.awt.event.*;
public class DengLuJieMian extends Frame implements ActionListener
{
Label username=new Label("用户名:");//使用文本创建一个用户名标签
TextField t1=new TextField();//创建一个文本框对象
Label password=new Label("密码:");//创建一个密码标签
TextField t2=new TextField();
Button b1=new Button("登陆");//创建登陆按钮
Button b2=new Button("取消");//创建取消按钮
public DengLuJieMian()
{
this.setTitle("学生信息管理系统");//设置窗口标题
this.setLayout(null);//设置窗口布局管理器
username.setBounds(50,40,60,20);//设置姓名标签的初始位置
this.add(username);// 将姓名标签组件添加到容器
t1.setBounds(120,40,80,20);// 设置文本框的初始位置
this.add(t1);// 将文本框组件添加到容器
password.setBounds(50,100,60,20);//密码标签的初始位置
this.add(password);//将密码标签组件添加到容器
t2.setBounds(120,100,80,20);//设置密码标签的初始位置
this.add(t2);//将密码标签组件添加到容器
b1.setBounds(50,150,60,20);//设置登陆按钮的初始位置
this.add(b1);//将登陆按钮组件添加到容器
b2.setBounds(120,150,60,20);//设置取消按钮的初始位置
this.add(b2);// 将取消按钮组件添加到容器
b1.addActionListener(this);//给登陆按钮添加监听器
b2.addActionListener(this);// 给取消按钮添加监听器

this.setVisible(true);//设置窗口的可见性
this.setSize(300,200);//设置窗口的大小
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});//通过内部类重写关闭窗体的方法
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)//处理登陆事件
{
String name=t1.getText();
String pass=t2.getText();
if(name!=null&&pass.equals("000123"))//判断语句
{
new StudentJieMian();
}
}
}
public static void main(String args[])//主函数
{
new DengLuJieMian();
}
}
以下方法实现了学生界面设计
import java.awt.*;
import java.awt.event.*;
class StudentJieMian extends Frame implements ActionListener
{
MenuBar m=new MenuBar();//创建菜单栏
Menu m1=new Menu("信息");//创建菜单“信息”
MenuItem m11=new MenuItem("插入");//创建“插入”的菜单项
MenuItem m12=new MenuItem("查询");
Menu m2=new Menu("成绩");//创建菜单“成绩”
MenuItem m21=new MenuItem("查询");
public StudentJieMian()
{
this.setTitle("学生界面");//设置窗口标题
this.setLayout(new CardLayout());//设置窗口布局管理器
this.setMenuBar(m);//将菜单栏组件添加到容器
m.add(m1);//将信息菜单放入菜单栏
m.add(m2);
m1.add(m11);//将“插入”菜单项添加到“信息”菜单
m1.add(m12); //将“查询”菜单项添加到“信息”菜单
m2.add(m21); //将“查询”菜单项添加到“成绩”菜单
m11.addActionListener(this); //给“插入”菜单项添加监听器
m12.addActionListener(this); //给“查询”菜单项添加监听器
m21.addActionListener(this); //给“查询”菜单项添加监听器
this.setVisible(true); //设置窗口的可见性
this.setSize(300,200); //设置窗口的大小
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);//关闭窗口
}
});
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==m11) //处理“添加信息”事件
{
new AddStudent();
}
if(e.getSource()==m12) //处理“查询信息”事件
{
new SelectStudent();
}
if(e.getSource()==m21) //处理“查询成绩”事件
{
new ChengJiStudent();
}
}
public static void main(String args[])
{ new StudentJieMian(); //创建一个对象 }

阅读全文

与成绩管理的源码相关的资料

热点内容
服务器软路由怎么做 浏览:289
冰箱压缩机出口 浏览:225
OPT最佳页面置换算法 浏览:642
网盘忘记解压码怎么办 浏览:852
文件加密看不到里面的内容 浏览:651
程序员脑子里都想什么 浏览:430
oppp手机信任app在哪里设置 浏览:185
java地址重定向 浏览:268
一年级下册摘苹果的算法是怎样的 浏览:448
程序员出轨电视剧 浏览:88
服务器系统地址怎么查 浏览:54
解压游戏发行官 浏览:601
国外小伙解压实验 浏览:336
顶级大学开设加密货币 浏览:437
java重载与多态 浏览:528
腾讯应届程序员 浏览:942
一键编译程序 浏览:129
语音加密包哪个好 浏览:341
有什么学习高中语文的app 浏览:284
安卓手机的表格里怎么打勾 浏览:411