当前位置:文档之家› 学生成绩管理系统

学生成绩管理系统

学生成绩管理系统
学生成绩管理系统

软件综合课程设计

学生成绩管理系统

稀疏矩阵应用

二〇一四年六月

学生成绩管理系统

一、问题陈述

现有学生成绩信息文件1(1.txt),内容如下

姓名学号语文数学英语

张明明 01 67 78 82

李成友 02 78 91 88

张辉灿 03 68 82 56

王露 04 56 45 77

陈东明 05 67 38 47

…. .. .. .. …

学生成绩信息文件2(2.txt),内容如下:

姓名学号语文数学英语

陈果 31 57 68 82

李华明 32 88 90 68

张明东 33 48 42 56 李明国 34 50 45 87

陈道亮 35 47 58 77

…. .. .. .. …

试编写一管理系统,要求如下:

1)实现对两个文件数据进行合并,生成新文件3.txt。

2)抽取出三科成绩中有补考的学生并保存在一个新文件4.txt。

3)合并后的文件3.txt中的数据按总分降序排序(至少采用两种排序方法实

现)。

4)输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种

查找方法实现)。

5)要求使用结构体,链或数组等实现上述要求。

6)采用多种方法且算法正确者,可适当加分。

二、需求分析

本系统要求实现具体的五项功能,根据提供的这五项功能,运行时系统提供

了相应的功能菜单,选择不同的选项来实现相应的功能。

1.采用了读文件和写文件的方式,边读边写,合并两个文件成为一个文件。

2.采用结构体数组存入从文件中读入的数据,再通过对于数据中的相关成绩

判断该学生是否需要补考,如果需要补考则将其信息写入另外一个文件。

3.采用快速排序、选择排序、冒泡排序的方法按总分对学生数据进行排序。

4.采用了二种查找的方法找到学生信息并输出。

5.通过调用函数exit(0)退出程序。

三、概要设计

1、实现对文件1.txt和文件2.txt数据进行合并,生成新文件3.txt。

调用函数Unitedfile()来实现,函数以读的方式打开1.txt文件,以写的

方式打开3.txt文件,从1.txt读入一个数据并写入3.txt文件,直到遇到1.txt

文件结束。关闭1.txt文件,再以读的方式打开2.txt文件,用上述方式直到遇到2.txt文件结束。关闭2.txt,3.txt文件。实现对于文件的合并。

2、抽取出三科成绩中有补考的学生并保存在一个新文件4.txt。

调用函数findout()来实现。函数以读的方式打开3.txt文件,以写的方式打开4.txt文件。读入3.txt文件的一个数据到结构体stud中,判断学生信息中语文、数学和英语成绩中是否有不及格的,如果有,则将数据写入4.txt中,直至遇到3.txt文件结束。

3、对合并后的文件3.txt中的数据按总分降序排序。

调用函数sortfile()来实现。函数提供了三种排序方法,通过调用函数kuaisu()来实现快速排序,通过调用函数xuanze()来实现选择排序,通过调用函数maopao()来实现冒泡排序。

4、输入一个学生姓名后,能查找到此学生的信息并输出结果。

调用函数findoutstudent()来实现。函数也提供了两种查找方法:

(1)通过调用函数derectfindoutstudent()实现从文件从3.txt中逐个读入数据,再进行查找判断,如果找到所需要的数据,则查找

结束,否则继续查找直至文件结束。

(2)autofindoutstudent()在进行第三步的过程中,已经把3.txt中的学生数据读入了结构体数组当中,调用函autofindoutstudent()

直接从结构体中进行查找。

5、通过调用函数exit()退出。

四、详细设计

1.把1.txt和2.txt文件中的内容放到3.txt文件中。

调用Unitedfile()文件,打开文件1和文件3,从1.txt中读入学生数据进结构体,把结构体中学生数据放到文件3中。关闭文件1,从2.txt中读入学

生数据进结构体,把结构体中学生数据放到文件3中。关闭文件2和文件3。

void Unitedfile(){

FILE *fp,*p;

Student stud;

fp=fopen("d:\\1.txt","r")

;

p=fopen("d:\\3.txt","w");

while(fscanf(fp,"%s%s%d%d

%d",https://www.doczj.com/doc/a82076096.html,,stud.id,&stud.chin ese,&stud.math,&stud.english )!= EOF)

{

fprintf(p,"%-6s %-6s %-6d %-6d %-6d\n",https://www.doczj.com/doc/a82076096.html,,stud.id, stud.chinese,stud.math,stud.engl ish ); }

fclose(fp);

fp=fopen("d:\\2.txt","r")

;

while(fscanf(fp,"%s%s%d%d

%d",https://www.doczj.com/doc/a82076096.html,,stud.id,&stud.chin ese,&stud.math,&stud.english )!= EOF)

{

fprintf(p,"%-6s %-6s %-6d %-6d %-6d\n",https://www.doczj.com/doc/a82076096.html,,stud.id, stud.chinese,stud.math,stud.engl ish ); }

fclose(fp);

fclose(p);

}

2. 抽取出三科成绩中有分数低于60分的学生并保存在一个新文件4.txt

从3.txt中读入学生数据进结构体,判断是否有不及格的课程,如果有,则写入文件4.txt中

void findout(){

FILE *fp,*p;

Student stud;

fp=fopen("d:\\3.txt","r") ;

p=fopen("d:\\4.txt","w");

while(fscanf(fp,"%s%s%d%d %d",https://www.doczj.com/doc/a82076096.html,,stud.id,&stud.chin ese,&stud.math,&stud.english )!= EOF)

{

if(stud.chinese<60||stud.engl ish<60||stud.math<60)

{

fprintf(p,"%-6s %-6s %-6d %-6d %-6d\n",https://www.doczj.com/doc/a82076096.html,,stud.id, stud.chinese,stud.math,stud.engl ish ); }

}

fclose(fp);

fclose(p);

}

3.对文件3.txt中的数据按总分以降序进行排序(三种方法:选择排序、快速排序、冒泡排序)

void sortfile()

{ char c;

cout<<"请选择排序方法:"<

cout<<"1.选择排序"<

cout<<"2.快速排序"<>c;

switch(c)

{ case'1':

xuanze();//选择排序

break;

case'2':

kuaisu();//快速排序

break;

case'3':

maopao();//直接插入排序

break; }}

3.1选择排序

void xuanze()

{ int j,k,max1,sum1,sum2,q;

i=0;

Student temp;

FILE *fp;

fp=fopen("d:\\3.txt","r") ;

i=0;

while(fscanf(fp,"%s%s%d%d %d",stud[i].name,stud[i].id,&stu d[i].chinese,&stud[i].math,&stud [i].english )!=EOF)

{ i++;} fclose(fp);

for(j=0;j

stud[j].sum=stud[j].chinese +stud[j].math+stud[j].english;

for(j=0;j

{ max1=j;

sum1=stud[j].sum;

for(k=j+1;k

{

sum2=stud[k].sum;

if(sum1

{ max1=k;

sum1=sum2;

}

}

if(max1!=j)

{

temp=stud[max1];

stud[max1]=stud[j];

stud[j]=temp;

}

stud[j].sum=sum1;

}

fp=fopen("d:\\3.txt","w") ;//将排序后的数据写入3.txt中

for(q=0;q

{

fprintf(fp,"%-8s %-8s %-8d %-8d %-8d %-8d\n",stud[q].na me,stud[q].id,stud[q].chinese,st ud[q].math,stud[q].english,stud[ q].sum ); }

fclose(fp);

}

3.2 快速排序

void kuaisu()

{ int i,low,high;

FILE *fp;

fp=fopen("d:\\3.txt","r") ;

i=0;

while(fscanf(fp,"%s%s%d%d %d",stud[i].name,stud[i].id,&stu d[i].chinese,&stud[i].math,&stud [i].english )!=EOF)

{

stud[i].sum=stud[i].chinese+s tud[i].math+stud[i].english;

i++; }

fclose(fp);

low=0;

high=i-1;

QSort(low,high);//快速排序

fp=fopen("d:\\3.txt","w") ;//将排序后的数据写入3.txt中

for(int j=0;j

{

fprintf(fp,"%-8s %-8s %-8d %-8d %-8d %-8d\n",stud[j].na me,stud[j].id,stud[j].chinese,st ud[j].math,stud[j].english,stud[ j].sum ); }

fclose(fp); }

3.3 冒泡排序

void maopao()

{ int j,k,q;

Student temp;

FILE *fp;

fp=fopen("d:\\3.txt","r") ;

i=0;

while(fscanf(fp,"%s%s%d%d %d",stud[i].name,stud[i].id,&stu d[i].chinese,&stud[i].math,&stud [i].english )!=EOF)

{

stud[i].sum=stud[i].chinese+s tud[i].math+stud[i].english;

i++;

} int n=i;

for( i=0;i

{ k=i;

for(j=i+1;j

{

if(stud[j].sum>stud[k].sum)

k=j; }

temp=stud[i];

stud[i]=stud[k];

stud[k]=temp;

}

fp=fopen("d:\\3.txt","w");//

将排序后的数据写入3.txt中

for(q=0;q

{

fprintf(fp,"%-8s %-8s %-8d %-8d %-8d %-8d\n",stud[q].na me,stud[q].id,stud[q].chinese,st ud[q].math,stud[q].english,stud[ q].sum );

}

fclose(fp);

}

4. 输入一个学生姓名后,能查找到此学生的信息并输出结果。(1、从文件3中直接查找;2、在运行第三步的基本上查找)

void findoutstudent()//提供两种查找方法

{ char c;

cout<<"请选择查找方法"<

cout<<"1.从文件3中直接查找"<

cout<<"2.在运行第三步的基础上查找"<

cin>>c;

cout<<"请输入学生姓名:";

if(sign1==0&&c=='2')

{ cout<<"请执行操作3后再执行此项操作!"<

return; }

switch(c)

{ case'1':

derectfindoutstudent();//从文件3中直接查找

break;

case'2':

autofindoutstudent();//从结构体数据中直接查找

break; }

}

4.1从文件3中直接查找

void derectfindoutstudent(){ char NAME[30];

int flag=0;

FILE *fp;

fp=fopen("d:\\3.txt","r") ;

cin>>NAME;

while(fscanf(fp,"%s%s%d%d %d%d",stud[1].name,stud[1].id,&s tud[1].chinese,&stud[1].math,&st ud[1].english,&stud[1].sum )!=EO F)

{

if(strcmp(stud[1].name,NAME)= =0)

{ flag=1;

cout<<"*******姓名*******学号*******语文*******数学*******英语*******总分*******"<

cout<<"

"<

"<

cout<

"<

"<

break;

}

}

if(flag==0)

cout<<"无此学生相关信息"<

fclose(fp);

}

4.2在运行第三步的基础上查找

void autofindoutstudent()//从结构体数组中查找

{ int n,flag=0,k;

char Name[30];

i=0;

FILE *fp;

fp=fopen("d:\\3.txt","r") ;

while(fscanf(fp,"%s%s%d%d %d%d",stud[1].name,stud[1].id,&s tud[1].chinese,&stud[1].math,&st ud[1].english,&stud[1].sum )!=EO F)

{ i++;

} n=i-1;

cin>>Name;

for(k=1;k<=n;k++)

{

if(strcmp(stud[k].name,Name)= =0)

{

flag=1;

cout<<"*******姓名

*******学号*******语文*******数

学*******英语*******总分

*******"<

cout<<"

"<

"<

cout<

"<

"<

break;

}

}

if(flag==0)

cout<<"无此学生相关信息"<

fclose(fp); }

五、程序代码

#include

using namespace std;

#define SIZE 100

typedef struct

{

char name[8];

char id[2];

int chinese;

int math;

int english;

int sum;

}Student;

Student stud[SIZE];

int i;

int

sign=0,sign1=0,sign2=0,sign3=0;

void Unitedfile()

{ FILE *fp,*p;

Student stud;

fp=fopen("d:\\1.txt","r")

;//以读的方式打开1.txt

p=fopen("d:\\3.txt","w");

//以写的方式打开3.txt

while(fscanf(fp,"%s%s%d%d

%d",https://www.doczj.com/doc/a82076096.html,,stud.id,&stud.chin ese,&stud.math,&stud.english )!= EOF)

{

fprintf(p,"%-6s %-6s %-6d %-6d %-6d\n",https://www.doczj.com/doc/a82076096.html,,stud.id, stud.chinese,stud.math,stud.engl ish );

}//读取1.txt的数据进入结构体中,写入3.txt,继续读取直结束

fclose(fp);//关闭文件1.txt

fp=fopen("d:\\2.txt","r")

;//以写的方式打开2.txt

while(fscanf(fp,"%s%s%d%d

%d",https://www.doczj.com/doc/a82076096.html,,stud.id,&stud.chin ese,&stud.math,&stud.english )!= EOF)

{

fprintf(p,"%-6s %-6s %-6d %-6d %-6d\n",https://www.doczj.com/doc/a82076096.html,,stud.id, stud.chinese,stud.math,stud.engl ish );

}

fclose(fp);

fclose(p);

}

void findout(){

FILE *fp,*p;

Student stud;

fp=fopen("d:\\3.txt","r")

;

p=fopen("d:\\4.txt","w");

while(fscanf(fp,"%s%s%d%d

%d",https://www.doczj.com/doc/a82076096.html,,stud.id,&stud.chin ese,&stud.math,&stud.english )!= EOF)

{

if(stud.chinese<60||stud.engl ish<60||stud.math<60)

{

fprintf(p,"%-6s %-6s %-6d %-6d %-6d\n",https://www.doczj.com/doc/a82076096.html,,stud.id, stud.chinese,stud.math,stud.engl ish );

}

}

fclose(fp);

fclose(p);

}

void xuanze() //对合并后的文件3.txt中的数据按总分降序排序

{

int j,k,max1,sum1,sum2,q;

i=0;

Student temp;

FILE *fp;

fp=fopen("d:\\3.txt","r")

;

i=0;

while(fscanf(fp,"%s%s%d%d %d",stud[i].name,stud[i].id,&stu d[i].chinese,&stud[i].math,&stud [i].english )!=EOF)

{

i++;

}//从3.txt中读入数据进结构体数组stud中

fclose(fp);

for(j=0;j

stud[j].sum=stud[j].chinese

+stud[j].math+stud[j].english;

for(j=0;j

{ max1=j;

sum1=stud[j].sum;

for(k=j+1;k

{

sum2=stud[k].sum;

if(sum1

{ max1=k;

sum1=sum2;

}

}

if(max1!=j)

{ temp=stud[max1];

stud[max1]=stud[j];

stud[j]=temp; }

stud[j].sum=sum1;

}

fp=fopen("d:\\3.txt","w") ;//将排序后的数据写入3.txt中

for(q=0;q

{

fprintf(fp,"%-8s %-8s %-8d %-8d %-8d %-8d\n",stud[q].na me,stud[q].id,stud[q].chinese,st ud[q].math,stud[q].english,stud[ q].sum );

}

fclose(fp);

}

void maopao()

{ int j,k,q;

Student temp;

FILE *fp;

fp=fopen("d:\\3.txt","r") ;

i=0;

while(fscanf(fp,"%s%s%d%d %d",stud[i].name,stud[i].id,&stu d[i].chinese,&stud[i].math,&stud [i].english )!=EOF)

{

stud[i].sum=stud[i].chinese+s tud[i].math+stud[i].english;

i++; }

int n=i;

for( i=0;i

{

k=i;

for(j=i+1;j

{

if(stud[j].sum>stud[k].sum)

k=j; }

temp=stud[i];

stud[i]=stud[k];

stud[k]=temp; }

fp=fopen("d:\\3.txt","w");//

将排序后的数据写入3.txt中

for(q=0;q

{

fprintf(fp,"%-8s %-8s %-8d %-8d %-8d %-8d\n",stud[q].na me,stud[q].id,stud[q].chinese,st ud[q].math,stud[q].english,stud[ q].sum );

}

fclose(fp);

}

int Partition(int low,int high)//区分

{ int p;//p是pivotkey初始关键字

Student temp;

temp=stud[low];

p=stud[low].sum;

while(low

{

while(low

stud[low]=stud[high];

while(low=p)++low;

stud[high]=stud[low];

}

stud[low]=temp;

return low;

}

void QSort(int low,int high)//快速排序

{ int k;

if(low

{ k=Partition(low,high);

QSort(low,k-1);

QSort(k+1,high); } }

void kuaisu()//读取文件,快速排序,将结果写入3.txt

{

int i,low,high;

FILE *fp;

fp=fopen("d:\\3.txt","r") ;

i=0;

while(fscanf(fp,"%s%s%d%d %d",stud[i].name,stud[i].id,&stu d[i].chinese,&stud[i].math,&stud [i].english )!=EOF)

{

stud[i].sum=stud[i].chinese+s tud[i].math+stud[i].english;

i++;

}//从文件3.txt中读入数据进结构体数组stud中

fclose(fp);

low=0;

high=i-1;

QSort(low,high);//快速排

fp=fopen("d:\\3.txt","w")

;//将排序后的数据写入3.txt中

for(int j=0;j

{

fprintf(fp,"%-8s %-8s %-8d %-8d %-8d %-8d\n",stud[j].na me,stud[j].id,stud[j].chinese,st

ud[j].math,stud[j].english,stud[ j].sum ); }

fclose(fp);

}

void derectfindoutstudent(){

char NAME[30];

int flag=0;

FILE *fp;

fp=fopen("d:\\3.txt","r")

;

cin>>NAME;

while(fscanf(fp,"%s%s%d%d

%d%d",stud[1].name,stud[1].id,&s

tud[1].chinese,&stud[1].math,&st

ud[1].english,&stud[1].sum )!=EO

F)

{

if(strcmp(stud[1].name,NAME)=

=0)

{ flag=1;

cout<<"*******姓名

*******学号*******语文*******数

学*******英语*******总分

*******"<

cout<<"

"<

"<

cout<

"<

"<

break; }

}

if(flag==0)

cout<<"无此学生相关信息"<

fclose(fp);

}

void autofindoutstudent()//从

结构体数组中查找

{ int n,flag=0,k;

char Name[30];

i=0;

FILE *fp;

fp=fopen("d:\\3.txt","r")

;

while(fscanf(fp,"%s%s%d%d

%d%d",stud[1].name,stud[1].id,&s

tud[1].chinese,&stud[1].math,&st

ud[1].english,&stud[1].sum )!=EO

F)

{ i++; }

n=i-1;

cin>>Name;

for(k=1;k<=n;k++)

{

if(strcmp(stud[k].name,Name)=

=0)

{ flag=1;

cout<<"*******姓名

*******学号*******语文*******数

学*******英语*******总分

*******"<

cout<<"

"<

"<

cout<

"<

"<

break; }

}

if(flag==0) cout<<"无此学生相关信

息"<

fclose(fp);

}

void findoutstudent()//提供两种查找方法

{

char c;

cout<<"请选择查找方法"<

cout<<"1.从文件3中直接查找"<

cout<<"2.在运行第三步的基础上查找"<

cin>>c;

cout<<"请输入学生姓名:";

if(sign1==0&&c=='2')

{ cout<<"请执行操作3后再执行此项操作!"<

return; }

switch(c)

{

case'1':

derectfindoutstudent();//从文件3中直接查找

break;

case'2':

autofindoutstudent();//从结构体数据中直接查找

break;

}

}

void sortfile()//提供两种排序方法

{

char c;

cout<<"请选择排序方法:"<

cout<<"1.选择排序"<

cout<<"2.快速排序"<

cout<<"3.冒泡排序"<

cin>>c;

switch(c)

{ case'1':

xuanze();//选择排序

break;

case'2':

kuaisu();//快速排序

break;

case'3':

maopao();//直接插入排序

break; }

}

int main()/*主程序*/

{ int choice;

while(1)

{

/*主菜单*/

if(sign3==0)

{

printf("********************* **********学生成绩管理系统******************************** *\n");

printf("\t1. 合并1.txt和2.txt为3.txt\n");

printf("\t2. 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt\n");

printf("\t3. 对合并后的文件 3.txt中的数据按总分降序排序\n");

printf("\t4. 输入一个学生姓名,查找到此学生的信息并输出结果\n");

printf("\t5. 退出\n");

printf("请选择(1-5):\n");

printf("********************* ******************************** ***************************\n");

}

sign3=1;

scanf("%d",&choice);

switch(choice)

{

case 1:

Unitedfile();

sign=1;

cout<<"操作1成

功!"<

break;

case 2:

if(sign==0)

{ cout<<"

请执行操作1后再执行此项操

作!"<

break;

}

cout<<"操作2成

功!"<

findout();

break;

case 3:

if(sign==0)

{ cout<<"请执

行操作1后再执行此项操作!"<

break;

}

sortfile();

cout<<"操作3成

功!"<

sign1=1;

break;

case 4:

while(1)

{ char c;

findoutstudent();

cout<<"继续查找

请输入Y:"<

cout<<"返回主菜

单请输入N:"<

cin>>c;

if(c=='N'||c=='n')break;

}

sign3=0;

break;

case 5:

exit(0);

break; } } return 0; }

六、运行结果与测试

七、设计体会与总结

通过本次课程设计,进一步熟悉了数据结构课程设计的基本设计思想,加深了对于数据结构的认识。本系统为学生成绩管理系统,能够用于基本的学生成绩管理。

在设计这个程序时,首先我们要弄清楚文件的存储,你是怎么把文件中的数据转移到另一个文件中去,之间的过程是什么样的。按照题目的要求一步一步下来。怎么抽取文件3中三科成绩中有补考的学生成绩到文件4中。在设计这个程序时,我遇到了很多困难,不知道文件是如何的进行存储的,怎么把其他文件中的数据传递到另个一文件中,两个文件能同时打开吧数据传递到第三个文件中去吗?怎么把文件中的数据调用到程序中来,被使用。在这次课程设计中,我发现写代码不是重要的,了解题目的意思,会设计程序框架才是最重要的。知道程序内部是怎么进行实现的才是设计程序的关键。如果没有以上的基本,根本学不出一个好的程序。

稀疏矩阵应用

一、问题陈述:

实现三元组,十字链表下的稀疏矩阵的加、转、乘的实现。(1)稀疏矩阵的存储

(2)稀疏矩阵加法

(3)矩阵乘法

(4)矩阵转置

二、程序代码:

#include

#include

#define MAXSIZE 100

int num[100];

typedef struct OLNode{

int i,j;

int e;

struct OLNode *right,*down;

}OLNode,*OLink;

typedef struct {

int mu,nu,tu;

OLink *rhead,*chead;

}CrossList; //十字链表结构体定义

typedef struct{

int i,j;

int e;

}Triple;

typedef struct{

Triple data[MAXSIZE];

int rpos[MAXSIZE + 1];

int nu,mu,tu;

}TSMatrix; //三元组结构体定义;

int CreateSMatix_OL(CrossList &M){

int i,j,e;

OLink q;

OLink p;

printf("请输入稀疏矩阵的行数,列数,非零元素的个数:");

scanf("%d%d%d",&M.mu,&M.nu,&M .tu);

M.rhead=(OLink

*)malloc((M.mu+1)*sizeof(OLNode) );

M.chead=(OLink

*)malloc((M.nu+1)*sizeof(OLNode) );

for( i=1;i<=M.mu;i++)

M.rhead[i]=NULL;

for( i=1;i<=M.nu;i++)

M.chead[i]=NULL;

printf("请输入稀疏矩阵,如果行为0,则退出\n");

scanf("%d%d%d",&i,&j,&e);

while(i!=0)

{

p=(OLink)malloc(sizeof(OLNode ));

p->i=i;p->j=j;p->e=e;

if(M.rhead[i]==NULL||M.rhead[ i]->j>j)

{

p->right=M.rhead[i];

M.rhead[i]=p;

}

Else

{ q=M.rhead[i];

while(q->right&&q->right->j

)

q=q->right;

p->right=q->right;

q->right=p;

}

if(M.chead[j]==NULL||M.chead[ j]->i>i)

{ p->down=M.chead[j];

M.chead[j]=p;

} else

{

q=M.chead[j];

while(q->down&&q->down->i

q=q->down;

p->down=q->down;

q->down=p;

}

scanf("%d%d%d",&i,&j,&e);

}

return 0;

}//创建十字链表

void CreateSMatrix(TSMatrix &M)

{

printf("请输入稀疏矩阵的行数、列数和非零元个数:");

scanf("%d%d%d",&M.mu,&M.nu,&M .tu);

if((M.mu<=0)||(M.nu<=0)||(M.t u<=0)||(M.tu>M.mu*M.nu))

printf("输入有误!");

for(int i=1;i<=M.tu;i++)//输入稀疏矩阵元素

{

printf("请输入元素坐标(所在行,所在列)及大小:");

scanf("%d%d%d",&M.data[i].i,& M.data[i].j,&M.data[i].e);

if((M.data[i].i<=0)||(M.data[ i].j<=0))

{

printf("输入错误,请重新输入");

scanf("%d%d%d",&M.data[i].i,& M.data[i].j,&M.data[i].e);

}

}

int num[100];

if(M.tu)

{

int i;

for(i = 1; i <= M.mu; i++)

num[i] = 0;//初始化for(int t = 1; t <= M.tu; t++)

++num[M.data[t].i];

M.rpos[1] = 1;

for(i = 2; i <= M.mu; i++)

M.rpos[i] = M.rpos[i-1] + num[i-1]; }

}//创建三元组

Void

TransposeSMatrix(TSMatrix

M,TSMatrix &T){

T.nu=M.mu;

T.mu=M.nu;

T.tu=M.tu;

int q=1;

for(int

col=1;col<=M.nu;col++)

for(int

p=1;p<=M.tu;p++)

if(M.data[p].j==col)

{

T.data[q].i=M.data[p].j;

T.data[q].j=M.data[p].i;

T.data[q].e=M.data[p].e;

q++; } }//三元组转置

int Compare(int a1,int b1,int a2,int b2)

{ if(a1>a2)

return 1;

else if(a1

return -1;

else if(b1>b2)

return 1;

if(b1

return -1;

else

return 0;

}

void AddTMatix(TSMatrix M,TSMatrix T,TSMatrix &S)

{ S.mu=M.mu>T.mu?M.mu:T.mu;//对S矩阵的行数赋值

S.nu=M.nu>T.nu?M.nu:T.nu;//对S矩阵的列数赋值

S.tu=0;

int ce;

int q=1;int mcount=1,tcount=1;

while(mcount<=M.tu&&tcount<=T .tu)

{

switch(Compare(M.data[mcount] .i,M.data[mcount].j,T.data[tcoun t].i,T.data[tcount].j))

{

case -1:

S.data[q].e=M.data[mcount].e; //当

if(M.data[mcount].i

S.data[q].i=M.data[mcount].i;

S.data[q].j=M.data[mcount].j;

q++;

mcount++;

break;

case 1:

S.data[q].e=T.data[tcount].e;

if(M.data[mcount].i>T.data[tc ount].i||M.data[mcount].j>T.data [tcount].j)

S.data[q].i=T.data[tcount].i;

S.data[q].j=T.data[tcount].j; //把第二个矩阵的行数i,列数j赋值给S矩阵的行数i,列数j

q++;

tcount++;

break;

case 0:

ce=M.data[mcount].e+T.data[tc ount].e;

if(ce)

{

S.data[q].e=ce;

S.data[q].i=M.data[mcount].i;

S.data[q].j=M.data[mcount].j;

q++;

mcount++;

tcount++; }

else

{ mcount++;

tcount++; }

break; } };

while(mcount<=M.tu)

{

S.data[q].e=M.data[mcount].e;

S.data[q].i=M.data[mcount].i;

S.data[q].j=M.data[mcount].j;

q++;

mcount++;

}//在case=-1的情况下对S矩阵的非零值,行数,列数进行赋值

while(tcount<=M.tu)

{

S.data[q].e=T.data[tcount].e;

S.data[q].i=T.data[tcount].i;

S.data[q].j=T.data[tcount].j;

q++;

tcount++;

}//在case=1的情况下对S矩阵的非零值,行数,列数进行赋值

S.tu=q-1;

}//三元组相加

int MultSMatrix(TSMatrix M, TSMatrix N, TSMatrix &Q)

{ int arow, brow, ccol, i, t, ctemp[100], p, q, tp;

if(M.nu != N.mu)

return 0;

Q.mu = M.mu, Q.nu = N.nu, Q.tu = 0;

if(M.tu * N.tu != 0)

{ for(arow = 1; arow <= M.mu; ++arow)

{ for(i = 0; i <= N.nu; ++i) ctemp[i] = 0;

Q.rpos[arow] = Q.tu + 1;

if(arow < M.mu)

tp = M.rpos[arow + 1];

else

tp = M.tu +1;

for(p = M.rpos[arow]; p < tp; ++p)//把每行与每列相乘

{

brow = M.data[p].j;

if(brow < N.mu)

t=N.rpos[brow+1];

else

t = N.tu + 1; for(q = N.rpos[brow]; q < t; ++q)

{ ccol = N.data[q].j;

ctemp[ccol] += M.data[p].e * N.data[q].e;

} }

for(ccol = 1; ccol <= Q.nu; ++ccol) { if(ctemp[ccol])

{

if(++(Q.tu) > MAXSIZE) return 1;

Q.data[Q.tu].i = arow; Q.data[Q.tu].j = ccol; Q.data[Q.tu].e = ctemp[ccol];

} }

}}

return 1;

}//三元组相乘

void ShowTMatrix(TSMatrix M)

{

for(int

col=1;col<=M.mu;col++)//通过双重循环,把稀疏矩阵中不为零的元素的行数、列数和值显示出来

for(int

p=1;p<=M.tu;p++)

if(M.data[p].i==col) printf("%4d%4d%4d\n",M.data[p].i ,M.data[p].j,M.data[p].e);

}//三元组显示void TurnSMatrix_OL(CrossList &M){

int col,row; //定义循环变量

OLink p,q;

for(col=1;col<=M.mu;col++)

{ q=p=M.rhead[col];

while(q)

{ row=p->i;

p->i=p->j;

p->j=row;

q=p->right;

p->right=p->down;

p->down=q;

}

}}//十字链表转置

int SMatrix_ADD(CrossList *A,CrossList *B){

OLNode

*pa,*pb,*pre,*p,*cp[100];

int i,j,t;

t=A->tu+B->tu;

for(j=1;j<=A->nu;j++)

cp[j]=A->chead[j];//将A矩阵的列表头指针赋给cp数组

for(i=1;i<=A->mu;i++)

{

pa=A->rhead[i];

pb=B->rhead[i];//将A,B矩阵的行表头指针分别赋给pa,pb

pre=NULL;

while(pb)

{//当pb不等于零

if(pa==NULL||pa->j>pb->j)

{

p=(OLink)malloc(sizeof(OLNode ));//给p动态分配空间

if(!pre)A->rhead[i]=p;

else

pre->right=p;

p->right=pa;

pre=p;

p->i=i;p->j=pb->j;p->e=pb->e;

if(!A->chead[p->j]){ A->chead[p->j]=cp[p->j]=p;

p->down=NULL;

}//如果A->chead[p->j]不等于零,则把p赋给它及cp[p->j]

else

{

cp[p->j]->down=p;

cp[p->j]=p;

}

pb=pb->right;

} cp[p->j]

else if(pa->jj)

{

pre=pa;

pa=pa->right;

}

else if(pa->e+pb->e)

{

t--;

pa->e+=pb->e;

pre=pa;

pa=pa->right;

pb=pb->right;

}

else {

t=t-2;

if(!pre)

A->rhead[i]=pa->right;

else

pre->right=pa->right;

p=pa;pa=pa->right;

if(A->chead[p->j]==p) A->chead[p->j]=cp[p->j]=p->down;

else

cp[p->j]->down=p->down;

free(p);

pb=pb->right;

}

}

}

A->mu=A->mu>B->mu?A->mu:B->mu;

A->nu=A->nu>B->nu?A->nu:B->nu;

return 1;

}//十字链表相加

int MultSMatrix_OL(CrossList M, CrossList N, CrossList &Q)

{

int i, j, e; //中间变量

OLink p0, q0, p, pl, pla; //中间变量

if(M.nu != N.mu) //检查稀疏矩阵M的列数和N的行数是否对应相等{

printf ( "稀疏矩阵A的列数和B的行数不相等,不能相乘。\n" );

return 0;

}

Q.mu = M.mu; Q.nu = N.nu; Q.tu = 0; if(!(Q.rhead = (OLink *)malloc((Q.mu + 1) * sizeof(OLink)))) exit(-2);

if(!(Q.chead = (OLink *)malloc((Q.nu + 1) * sizeof(OLink)))) exit(-2);

for( i =1; i <= Q.mu; i++) Q.rhead[i] = NULL;

for( i = 1; i <= Q.nu; i++) Q.chead[i] = NULL;

for( i=1;i<=Q.mu;i++)

学生成绩管理系统详细操作过程

学生成绩管理系统 我将把我的实现步骤完整的写出来,我是在VC 6.0版本下用MFC实现的。 我创建的基于单文档的应用程序,过程不介绍,大家都会。下面的是我系统菜单: 思路: 刚进入系统时,只有“登录”菜单可用,其他三个菜单项都是灰色不可用的。当用户点“进入系统”菜单项时,用户输入用户名、密码和用户类型,系统将根据相应的用户权限使相应的菜单可用,并且“进入系统”菜单项变为不可用。如:如果用户类型是学生,那么只有学生权限菜单可用,而“教师权限”和“管理员权限”都不可用,同时“进入系统”变为不可用。 “学生权限”下只有“查询成绩”,因为学生只可以查询自己相应的成绩;“教师权限”下有“查询学生成绩”和“增改删学生成绩”两个菜单项,因为教师除了可以查询学生成绩还可以增加、修改和删除学生成绩;“管理员权限”下有“管理学生”和“管理教师”两个菜单项。 整体设计: 因为我们要设置系统菜单的状态,所以必须在CMainFrame中添加相应的函数和代码,具体步骤如下: 【步骤1】由于系统要使用ODBC类操作数据库,所以需要在stdafx.h中加入代码: #include 【步骤2】在CMainFrame中的OnCreat()中添加代码如下,实现菜单的初始化工作,当用户没进入系统之前,只有“登陆”菜单下的“进入系统”菜单项可用,而“退出系统”和其他3个权限菜单都不可用,即都是灰色的。 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { //使“退出系统”和其他3个权限菜单都不可用,即都是灰色的 GetMenu()->GetSubMenu(0)-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED); GetMenu()-> EnableMenuItem(1,MF_BYPOSITION | MF_DISABLED | MF_GRAYED); GetMenu()-> EnableMenuItem(2,MF_BYPOSITION | MF_DISABLED | MF_GRAYED); GetMenu()-> EnableMenuItem(3,MF_BYPOSITION | MF_DISABLED | MF_GRAYED); } 【步骤3】在CMainFrame中添加自己定义的函数void SetMenuSta(int type),此函数在登陆对话框的OnOK()中被调用,即当用户进入系统后使“进入系统”

c简单学生成绩管理系统c课程设计

c简单学生成绩管理系统 c课程设计 The document was prepared on January 2, 2021

C++学生成绩管理系统 要求用C++语言编写学生成绩管理系统,要求能进行添加删除修改输入输出等的操作,并能使用面相对像原理对此系统进行实现。 学生成绩管理系统分析: 学生成绩管理系统分为8个模块,分别是:添加学生信息,输出学生成绩,查找学生成绩,修改学生成绩,删除学生成绩,学生成绩排序,保存数据到文件和读取文件中学生成绩的模块。 各个子函数功能及其流程:

1.首先定义一个学生类Class Student;并定义其各个私有变量和公有函数 2.Student();构造函数,用于初始化学生类中的各个变量并记录 3.Add();函数:用于添加学生信息的函数包括学号姓名成绩等的内容 4.Output();函数:用于输出学生信息,包括学号姓名各科及总分平均成绩 5.Find();函数:用于查找学生各项信息。

6.modify();函数:用于修改学生各项信息。 7.delete();函数:用于删除学生信息。

();函数:对学生各项信息进行排序操作。 8.save()和load();函数:将学生信息保存到文件中,并在需要的时候调用该文 件将其中的学生信息显示出来

9.“=”“<<”“>>”符号的重载:在各个函数处理数据过程中对这些的调用处理函数源代码: 此函数源代码在VisualC++环境下编译通过。具体如下: #include"" #include"" #include"" #include"" #include"" #include"" #include"" class student ame,n1)==0) { temp=stu[j]; f3=1; } } if(f3==0) cout<<"对不起,没有你要查找的学生成绩"<

学生成绩管理信息系统1

1 学生成绩管理信息系统 学生成绩管理系统 一.系统分析

1.现状分析 随着计算机应用的普及和迅雷般的飞速发展,信息化必然成为世界发展的潮流和趋势。信息化正在以前所未有的速度影响着人类 的方方面面,同时对传统教育的改革也起到了推动作用。 在今天的中国,信息化迅速发展,信息化必然走进校园。在学校众多管理工作中,学生的成绩管理原来越重要。然而传统的工作方

式如手工修改和查询成绩是一项非常繁重 而枯燥的工作,经常耗费很大财力和人力。数据量大时,将不可避免的出现失误。因此,学生成绩管理工作的信息化是十分必要的。学生成绩管理系统是利用现代的信息技术,实现学生信息资源的共享,实现学生信息与社会其他信息的有机联系,促进学生成绩管理工作的科学化、现代化,提高学生管理工作的效率。 2.系统需求分析 通过调查,要求系统具有以下功能: 1) 任课教师可以录入所教课程的成绩 2) 成绩的上传和下载 3) 教务处即系导员能够统计成绩

4) 成绩的发布和查询 5) 用户权限的限定 3系统的可行性分析 1)技术可行性分析 该系统选择微软公司的Visual Basic 6.0作为系统开发工具,主要是因为它是一个快速可视化程序开发工具软件且功能强大,主要表现为:所见即所得的界

面设计,尤其是数据窗口能方便而间接操纵数据库的智能化对象,基于对象的设计方法,极短的软件开发周期,较易的代码维护,同时还有众多的Active控制,提高了软件的使用效率。 连接采用SQL Server数据库,SQL Server是一种关系数据库工具,关系数据库已开发的最通用的数据库之一。该数据库能汇集各种信息以供查询、存储和检索。它是一种使用广泛的数据库管理系统,具有许多优点:易用性、适合分布组织科伸缩性、用于决策支持的数据库功能等。. 2)经济可行性分析 从经济角度分析,学生成绩系统所耗费的资源非常的少。目前,计算机越来越普及,大部分

学生成绩管理系统+流程图 (2)

学生成绩管理系统的可行性分析报告 一、系统简述 学生成绩管理系统是以计算机为工具,通过对教务管理所需的信息管理,把管理人员从繁琐的数据计算处理中解脱出来,为老师节省很多时间跟精力,提高老师的工作效率,通过学生成绩管理系统给学校管理者减轻工作的负担,将工作的失误几率降到最低,为广大老师同学带来便利,使大家能够更好的投入到学习中。同时这个系统还可以减少人力与管理费用,提供信息准确度更高,更简便的学生信息管理系统。 该系统的功能能够实现学生成绩信息的管理和查询;同时还可以对信息进行修改、删除和添加,另外该系统应该能做到可以对学生成绩信息以及成绩信息查询和修改的效率尽可能做到精确,同时各项功能的操作要简单,不需过多的对人员的培训。 而延边大学正推行学分制改革,进一步完善改进学生成绩管理系统很有必要。学生成绩管理系统是学校不可缺少的一个重要部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该为用户提供充足的信息和快捷的查询手段。同时,学生成绩管理是各大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,学生成绩日常管理工作及保存管理日趋繁重、复杂。推行学生成绩管理系统势在必行。 二、系统的开发目标 “学生成绩管理系统”针对的学校学生情况对学生各学年的成绩进行有效的管理。能够快速的查询出学生的各科成绩以及所在班级等各种用途。 学生成绩管理系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,有如下的系统开发目标: 1.系统应具有实用性、可靠性和适用性,同时注意到先进性; 2.对各个数据库进行动态管理,防止混乱;

C语言课程设计-学生成绩管理系统-完整版

#include<> #include<> #include<> #include<> /* strcmp函数原型包含*/ #define N 100 /*定义最大学生人数为100*/ struct student /*学生结构体定义*/ { char no[11]; /*学号,10位*/ char name[10];/*姓名,3个汉字*/ char grade[10];/*班级*/ char pro[20];/*专业*/ float score[5];/*储存5门功课的成绩*/ float ave;/*储存平均分*/ int year;/*入学年*/ }stu[N]; int num; void panduani(int); /*通过i的值,判断信息要查找的信息是否存在*/ void output(); /*输出学生成绩函数(公共函数)*/ void init(); /*系统初始化函数*/ void newfile(); /*建立新的数据文件*/ void read1(); /*从数据文件中读取数据*/ void weihu(); /*维护界面函数*/ void new1(); /*新增一个学生成绩函数*/ void xiugai(); /*修改学生成绩*/ void xgcj(int); /*修改成绩*/

void delete1(); /*删除学生信息函数*/ void tongji(); /*统计界面函数*/ void tongji1(); /*计算每个学生平均分*/ void tongji2(); /*计算每门课程的平均分*/ void paixu1(); /*排序函数*/ void paino(); /*按学号排序*/ void paiave(); /*按平均分排序*/ void paidkcj(); /*按单科成绩排序*/ void change(int,int); /*交换结构体数组中的两个记录*/ void outputx(int); /*选择输出单科成绩*/ void find1(); /*查找界面函数*/ int find(char sno[]); /*按学号查找*/ int findname(char cname[]);/*按姓名查找*/ void findyear(int cyear); /*按入学年查找*/ void save(); /*保存文件*/ void stop(); /*停顿函数*/ void stop() /*停顿函数(公共函数)*/ { printf("Press Any Key To Continue...\n"); getchar(); } void output() /*输出学生成绩函数(公共函数)*/ { int i,j;

学生成绩管理信息系统

学生成绩管理系统 一.系统分析 1.现状分析 随着计算机应用的普及和迅雷般的飞速发展,信息化必然成为世界发展的潮流和趋势。信息化正在以前所未有的速度影响着人类的方方面面,同时对传统教育的改革也起到了推动作用。 在今天的中国,信息化迅速发展,信息化必然走进校园。在学校众多管理工作中,学生的成绩管理原来越重要。然而传统的工作方式如手工修改和查询成绩是一项非常繁重而枯燥的工作,经常耗费很大财力和人力。数据量大时,将不可避免的出现失误。因此,学生成绩管理工作的信息化是十分必要的。学生成绩管理系统是利用现代的信息技术,实现学生信息资源的共享,实现学生信息与社会其他信息的有机联系,促进学生成绩管理工作的科学化、现代化,提高学生管理工作的效率。 2.系统需求分析 通过调查,要求系统具有以下功能: 1) 任课教师可以录入所教课程的成绩 2) 成绩的上传和下载 3) 教务处即系导员能够统计成绩 4) 成绩的发布和查询 5) 用户权限的限定 3系统的可行性分析 1)技术可行性分析 该系统选择微软公司的Visual Basic 作为系统开发工具,主要是因为它是一个快速可视化程序开发工具软件且功能强大,主要表现为:所见即所得的界面设计,尤其是数据窗口能方便而间接操纵数据库的智能化对象,基于对象的设计方法,极短的软件开发周期,较易的代码维护,同时还有众多的Active控制,提高了软件的使用效率。 连接采用SQL Server数据库,SQL Server是一种关系数据库工具,关系数据库已开发的最通用的数据库之一。该数据库能汇集各种信息以供查询、存储和检索。它是一种使用广泛的数据库管理系统,具有许多优点:易用性、适合分布组织科伸缩性、用于决策支持的数据库功能等。 2)经济可行性分析 从经济角度分析,学生成绩系统所耗费的资源非常的少。目前,计算机越来越普及,大部分学校都配有计算机,它使用的软件工具Visual Basic 和SQL Server,学校的机房几乎都有安装,而且由于这个系统较小,涉及人员较少,开发费用小,易于维护并具有可靠的安全性,该系统在投入使用后可以节省大量的人力、物力和财力。 3)社会可行性分析 现代科学信息技术的应用越来越普及,促进了社会的高速发展,也将社会带入了一个新的数字时代。学生成绩管理系统采用科学的,有效的手段,对信息加以分析,通过建立一个有效的学生成绩管理系统是学校的各项活动能够提高工作效率,最终提高经济效益和社会效益的目的。 该软件易于操作,实现的功能丰富,大大减少了工作量以及偶那个做人员的数量,便于对学生进行有效的管理,提高了部门信息化水平,同时能够与社会同类院校数据处理相融合,使此系统在时间上具备了可行性。 综上分析可知,学生管理信息系统在技术、经济、社会上具有可行性。 4.业务流程图 业务流程图如下: ①用户登录部分的业务流程

uml学生成绩管理系统

《面向对象分析与设计(UML)》课程设计报告 设计题目:学生成绩管理系统 院系:计算机科学与工程学院 专业:软件工程 班级: 学号: 姓名: 指导教师: 设计地点: 开课时间: 2012 至 2013 学年第 1 学期 常熟理工学院计算机科学与工程学院制

学生姓名成绩 评语: 指导教师(签名) 年月日

目录 1. 设计目的和任务.................................................................. .. (1) 2. 开发环境.................................................................. .............................. (2) 硬件环境.................................................................. ....................... (2) 软件环境.................................................................. (2) 3.设计题目.................................................................. (3) 题目名称.................................................................. ...................... . (3) 题目详细描述.................................................................. ........... .. (3) 功能要求.................................................................. (3) 4. 相关技术及知识点.................................................................. .. (4) UML的建模语言................................................................... . (4) RUP软件开发过程................................................................... ....... .. (4)

学生成绩管理系统基本C语言编写

//代码版权所有,不要 #include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" copy,仅供参考学习。//标准输入输出函数库 //标准函数库 //字符串函数库 //屏幕操作函数库 #define p->data.num,p->https://www.doczj.com/doc/a82076096.html,,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.total,p->data.a ve,p->data.mingci int saveflag=0; //是否需要存盘的标志变量 //定义与学生有关的数据结构 typedef struct student { char num[12]; char name[15]; int cgrade; int mgrade; int egrade; int total; float ave; int mingci; }sqlist; //定义每条记录或结点的数据结构,标记为:node typedef struct node { struct student data;// 数据域 struct node *next; //指针域 }Node,*Link; //Node 为node 类型的结构变量,*Link 为node 类型的指针变量 void menu() //主菜单 { system("cls"); //调 用 DOS 命令,清屏.与clrscr() 功能相同 printf(" \n"); printf(" 学生成绩管理信息系统主菜单\n\n"); printf(" **************************************************\n"); printf(" $ 1 、添加记录6、统计记录$\n"); #define HEADER1 " ********************** ***** 学生成绩信息 ****************************** \n\n" #define HEADER2 " 学号姓名计算机数学英语总分平均分名次\n\n" #define FORMAT " %-10s %-10s %5d %5d %5d %5d %.3f %4d \n" DATA //标记为student //学号 //姓名//计 算机成绩// 数学成绩// 英语成绩 //总分 //平均分 //名次

学生成绩管理系统

程序设计课程设计报告 目录 一、课程设计题目及内容 二、程序中使用的数据及主要符号说明 三、带有详细注释的自己编写的源程序 四、程序运行时的效果图 五、实验结果分析,实验收获和体会。 1、实验结果分析: 2、实验收获和体会: 一、实验内容 实验1: (1)、设计一个学生类Student,包括数据成员:姓名、学号、二门课程(面向对象程序设计、高等数学)的成绩。 (2)、创建一个管理学生的类Management,包括实现学生的数据的增加、删除、修改、按课程成绩排序、保存学生数据到文件及加载文件中的数据等功能。 (3)、创建一个基于对话框的MFC应用程序,程序窗口的标题上有你姓名、学号和应用程序名称。使用(1)和(2)中的类,实现对学

生信息和成绩的输入和管理。 (4)、创建一个单文档的MFC应用程序,读取(3)中保存的文件中的学生成绩,分别用直方图和折线方式显示所有学生某课程的成绩分布图。 二、程序中使用的数据及主要符号说明 unsigned int mID;//学号 CString mName;//姓名 unsigned int mAge;//年龄 CString mAdd;//地址 float mCpp;//c++成绩 float mMath;//数学成绩

CListBox m_list;//列表名 afx_msg void OnClickedButtonAdd();//添加按钮afx_msg void OnClickedButtonDel();//删除按钮afx_msg void OnClickedButtonChange();//修改afx_msg void OnClickedButtonOk();//确定 afx_msg void OnClickedButtonCancle();//取消 afx_msg void OnSelchangeList1();//列表控件 virtual BOOL OnInitDialog();//初始化对话框 afx_msg void OnDestroy();//防止内存泄漏 afx_msg void OnClickedButton6(); int m_count;//记录人数 int mSex;//性别 三、带有详细注释的自己编写的源程序(1)、设计一个学生类Student //Student.h #pragma once #include //using namespace std; #include enum Sex { male, female }; class Student { public: Student();//构造函数 ~Student();//析构函数 unsigned int GetID()const { return m_num; } void SetID(unsigned int ID){ m_num = ID;}; std::string GetName()const { return m_name; }

学生成绩管理系统代码 (1)

C程序学生管理系统 /* Note:Your choice is C IDE */ #include"" #include"" #include"" typedef struct student示所有\t2.按姓名查找\n\t\t\t3.按学号查找\t4.返回主菜单\n"); scanf("%d",&m); fflush(stdin); switch(m) { case 1:printf("\n=>该系统拥有%d名学生!\n\n",head->; p=head->next; printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n\n"); while(p) { printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->,p->,p->, p->,p->,p->; p=p->next; } break; case 2:printf("=>请输入查找姓名!\n"); gets(N); fflush(stdin); p=head->next; while(p) { if(strcmp(p->,N)==0) { printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t 综合\n"); printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->,p->,p->, p->,p->,p->; break; } else {

p=p->next; if(p==NULL) printf("=>你要查的学生不存在!"); } } break; case 3: printf("=>请输入查找学号!\n"); scanf("%d",&m); fflush(stdin); p=head->next; while(p) { if(p->==m) { printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t 综合\n"); printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->,p->,p->, p->,p->,p->; break; } else { p=p->next; if(p==NULL) printf("=>你要查的学生不存在!\n"); } } break; case 4:n=1;break; } } return 1; } int range(unit *head)学号\t2.按成绩\n\n"); printf("=>请选择操作!\n》"); scanf("%d",&n); fflush(stdin); if(q==NULL) { printf("=>无学生可排序!\n");

学生成绩管理系统V2.0

#include #include #include int main() { int a,b,d,e,n,z; float c=0,g; printf("Input student number(n<30):\n"); scanf("%d",&n); long v[n],f; float vc[n]; next:; int x1=0,x2=0,x3=0,x4=0,x5=0,x6=0; int z1=60,z2=69,z3=70,z4=79,z5=80,z6=89,z7=90,z8=99,z9=100; printf("Management for Students' scores\n"

"1.Input record\n" "2.Caculate total and average score of course\n" "3.Sort in descending order by score\n" "4.Sort in ascending order by score\n" "5.Sort in ascending order by number\n" "6.Search by number\n" "7.Statistic analysis\n" "8.List record\n" "0.Exit\n" "Please Input your choice:\n"); scanf("%d",&a); switch (a) { case 1: printf("Input student's ID and score:\n"); for (b=0;b

C语言学生成绩管理系统设计

航空航天大学 课程设计报告 大作业名称:C语言课程设计 大作业题目:学生成绩管理系统设计 院(系):计算机学院 专业:计算机科学与技术 班级: 学号: 姓名: 指导教师: 完成日期:2016年12月24日

目录 第1章概要设计 (1) 1.1题目的容与要求 (1) 1.2总体结构 (1) 第2章详细设计 (2) 2.1主模块 (2) 2.2输入模块 (3) 2.3显示模块 (3) 2.4修改模块 (4) 2.5删除模块 (4) 2.6查询模块 (5) 2.7统计模块 (6) 第3章调试分析 (7) 第4章使用说明 (8) 参考文献 (12) 附录(程序清单) (14)

第1章概要设计 1.1题目的容与要求 容: 学生成绩信息包括:姓名、学号、语文、数学、英语。 实现的主要功能有: 1)信息维护。包括学生成绩的输入、按学号删除、按学号修改等。 2) 信息查询。输入学号或姓名,显示出该生三个科目的成绩,计算出三科总分 并显示,按总分将所有学生成绩排序,显示出该生的名次。 3)成绩统计。先输入任意一个科目,接着选择a或b来分别显示平均分或统计分数段学生,若选择a,则直接显示出该科目的平均分;若选择b,则提示用户输入一个分数段,显示所有该科目属于该分数段的学生信息,并给出学生总数。 要求: 1)系统以菜单方式工作。在不同的界面为用户给出具体提示。 2)系统利用C语言实现,源程序要有适当的注释。 3)采用VC环境进行运行调试。 1.2总体结构 本程序主要分为七个模块(功能模块图见图1.1):结构体模块,输入模块,显示模块,修改模块,删除模块,查询模块,统计模块。 结构体模块:建立一个结构体模块,为链表存信息用。输入模块:键盘输入

学生成绩管理系统详细设计

详细设计说明书1、引言 1.1编写目的 学生成绩管理系统的详细设计是设计的第二阶段,该阶段的根本目标是在概要设计的基础之上确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种设计语言书写的程序。本说明书提供出一个程序的“蓝图”,以便更好的完成编码任务。学校的现代化管理中,学生的成绩管理是必不可少的一部分。成绩管理的内容对于学校的管理是关重要的,所以,成绩管理系统必须要为用户提供必要的信息和快捷的查询功能。 1.2项目背景 该项目充分利用现代化技术来提高学生成绩查询的效率,使得原始的办公系统更加方便,工作效率也得到提高。 1.3使用工具 1)eclipse:开发工具 2)Mysql:数据库管理软件 3)Navicat Premium:第三方软件显示mysql数据库

4)Tomcat: 使用服务器 5)window7:硬件环境 6)JSP:软件开发语言 2、总体设计 2.1需求概述 学生成绩管理系统是对学校教务和教学活动进行综合管理的平台系统,是一个学校和地区教育信息化的基础信息平台。满足学校管理层、学生、教师的日常工作、学习、查询、管理等工作。目的是共享学校各种信息。提高学校的工作效率、规范学校的工作流程、便利学校与学生及教师的交流。 2.2项目任务范围 学生成绩管理系统共分为三个大的模块:学生成绩查询模块、教师成绩录入模块及管理员对各项信息管理模块。 学生:查询学生个人信息,包括个人成绩查询和修改密码。 教师:查询教师个人信息,包括学生成绩录入和修改密码。 管理员:学生管理(对学生进行增删改查);教师管理(对教师进行增删改查);班级管理(对班级进行增删改查);成绩管理(对学生成绩 的增删改查)所有人的密码管理;个人密码修改。

C学生成绩管理系统

C#课程设计 姓名: 班级: 学号: 指导老师: 简介 该系统是用VisuaStudio2010和Access2007,通过C#语言进行相关代码的编写,生成相关程序。学生成绩管理系统是构建于VisualC#.NET平台上的Windows应用程序。本文描述的是基于Windows环境的学生成绩管理系统,主要工具MicrosoftVisualStudio2010设计窗体,Access2007建立数据库,学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,删除,查询,维护以及成绩的统计分析等几方面的功能,是现实问题的迫切要求。 本篇报告介绍一个学生信息管理系统的从分析到设计最后到开发的全过程为,给出了学生信息管理系统的设计和技术实现的过程,特别在细节上分析功能和函数的实现思想。涉及到学生信息管理的基本功能在本报告中都有相应的描述。管理信息系统正在向着网络化、智能化和集成化等趋势发展。学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。 在这次的课程设计中,让我了解到Microsoft Visual Studio 2010,同时学

习了Access数据库的建立和连接与导入。能在Visual C#.NET平台上进行Access数据库的修改与控制,将C#语句与SQL语句混合使用,成功的完成了学生成绩管理系统的整体设计,加深巩固了选择的条件语句,还有曾经学习过的基本运算语句,同时也为以后的进一步学习垫下了了良好的基础。 目录 第一章绪论 (4) 设计目的 (4) 开发工具选择 (4) 开发环境 (4) 第二章需求分析 (5) 系统目标 (5) 功能需求分析 (6) 性能需求分析 (6) 第三章总体设计 (7) 设计概述 (7) 功能模块设计 (7) 第四章数据库设计 (8) 数据库需求分析 (8) 数据库表设计 (9) 第五章详细设计 (10) 系统程序流程图 (11) 系统主要功能模块 (13)

学生成绩管理系统分析报告

学生成绩管理系统分析报告 ■建立新系统的必要性 随着学校规模的不断扩大,专业、班级、学生的数量急剧增加,有关学生各门课程的成绩的各种信息量也成倍增长,学生成绩管理操作重复工作较多,工作量大,因此,建立学生成绩管理系统来提高工作的效率。基于互联网的学生成绩管理系统,在学生成绩的规范管理、科学统计和快速查询方面具有较大的实用意义,提高了信息的开放性和快速性。使学生信息更加系统化,信息更加精确化。使管理人员管理更加方便,能够改动部分信息,最大化的满足工作的需求。 学生成绩管理系统的建立,在学生查询成绩的规范管理、科学统计和快速查询方面具有较大的实用意义,它提高了信息的开放性,大大改善了学生对其最新信息查询的准确性。成绩管理系统有查找方便、可靠性高、存储量大、易操作、保密性好、信息保存时间长等优点,它能极大的提高老师和学生成绩信息管理的效率。 ■业务流程分析 通过对学生成绩管理业务的调查分析,弄清了学生成绩管理系统的业务流程和管理功能,系统的业务流程如下图所示: 业务流程图部分:

管理功能部分: 从业务流程图可以看出,学生成绩管理系统中分为大的三个方面:系统管理员模块、教师模块、学生模块,其主要管理功能有: 1、系统管理员功能 系统管理员进入学生成绩管理系统的主要功能是:实现管理员用户的添加、修改和删除,以及对教师添加、教师修该、教师删除、教师查询、学生的添加、学生的修改、学生的查询等基本功能,并且参与开设课程、选择课程的管理,安排教师的任课和学生的选课工作,管理元为每门课程设置一个学分,没门课程可以是必修或选修,如果学生及格,学生将获得该课程学分。 2 、教师功能 教师进入学生成绩管理系统的主要功能是:各科教师登录系统后查询和修改个人信息、修改自己的账号密码,查询自己的授课课程,实现对选秀了自己课程的学生的成绩进行查询、录入和修改,各科老师可以对自己学生选修课程结束后给与分数,同时可以对自己所带课程的成绩优秀人数、及格人数和不及格人数的分布信息进行查询。 3 、学生功能 学生进入学生成绩管理系统的主要功能是:每个学生登录系统后可以查询和修改个人信息、修改自己的账号密码,以及自己所选课程任课老师的个人信息,同时在课程结束后可以查询在校期间各个时间段选修课程的成绩与学分,以及对单科成绩和总分的排名查询。

学生成绩管理系统1.0

本程序初始化学生人数为3人,请在header文件中将#define STU_NUM 3改为#define STU_NUM 你将输入的学生数目Function.c /* 学生成绩管理系统V1.0(使用数组) 功能要求: 1、输入学号和成绩(格式化输入) 2、计算平均成绩(求和统计) 3、按成绩从高到低排序(冒泡法、选择法) 4、按成绩从低到高排序(冒泡法、选择法) 5、按学号从小到大排序(冒泡法、选择法) 6、按学号查询成绩名次(顺序查找) 7、统计成绩分布(统计计数) 8、输出学号和成绩(格式化输出) 0、退出系统 */ #include #include #include"header.h" int menu() { int result;

while(1) { system("cls"); printf("学生成绩管理系统V1.0\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("0 退出系统\n"); if(scanf("%d",&result)!=1) { fflush(stdin); continue; } if(result>=0&&result<=8) break; }

学生成绩管理系统+流程图-(2)

学生成绩管理系统+流程图- (2) -标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

学生成绩管理系统的可行性分析报告 一、系统简述 学生成绩管理系统是以计算机为工具,通过对教务管理所需的信息管理,把管理人员从繁琐的数据计算处理中解脱出来,为老师节省很多时间跟精力,提高老师的工作效率,通过学生成绩管理系统给学校管理者减轻工作的负担,将工作的失误几率降到最低,为广大老师同学带来便利,使大家能够更好的投入到学习中。同时这个系统还可以减少人力与管理费用,提供信息准确度更高,更简便的学生信息管理系统。 该系统的功能能够实现学生成绩信息的管理和查询;同时还可以对信息进行修改、删除和添加,另外该系统应该能做到可以对学生成绩信息以及成绩信息查询和修改的效率尽可能做到精确,同时各项功能的操作要简单,不需过多的对人员的培训。 而延边大学正推行学分制改革,进一步完善改进学生成绩管理系统很有必要。学生成绩管理系统是学校不可缺少的一个重要部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该为用户提供充足的信息和快捷的查询手段。同时,学生成绩管理是各大学的主要日常管理工作之一,涉及到校、系、师、生的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入,学生成绩日常管理工作及保存管理日趋繁重、复杂。推行学生成绩管理系统势在必行。 二、系统的开发目标 “学生成绩管理系统”针对的学校学生情况对学生各学年的成绩进行有效的管理。能够快速的查询出学生的各科成绩以及所在班级等各种用途。 学生成绩管理系统是将现代化的计算机技术和传统的教学、教务工作相结合,按照学院的工作流程设计完成的。为了使系统在学院的管理中发挥更大的作用,实现工作过程的计算机化,提高工作效率和工作质量,有如下的系统开发目标: 1.系统应具有实用性、可靠性和适用性,同时注意到先进性;

学生成绩管理系统

《数据库原理》课程设计报告 设计题目成绩管理系统 学生姓名马伟光 所在学院计算机与通信学院 专业及班级软件1202 指导教师龙巧云老师 完成日期2014年6月20日

目录 1.概述 (1) 1.1简介设计步骤 (1) 1.2开发环境简介 (1) 2.需求分析 (2) 2.1开发背景 (2) 2.2开发目的 (2) 2.3功能需求 (2) 2.4相关数据 (3) 数据流图 (4) 数据字典 (5) 3.系统设计 (7) 4.数据库设计 (8) 4.1概念设计(E-R) (8) 4.2逻辑设计 (8) 设计成员及分工情况 (9) 5.详细设计 (9) 6.系统总结 (13) 7.结束语 (16) 8.参考文献 (16)

1.概述 1.1 简介设计步骤 该学生成绩管理系统,实现简单的密码修改、成绩查询、课程查询、学生查询等操作,并能实现简单的数据统计。 此系统主要完成用户密码登录、用户密码的修改、成绩查询、课程查询、学生查询、具体成绩查询等基本功能。 (一)用户密码登录: 在登录程序之前会先弹出一个登录对话框,在正确的输入了数据库中存储的用户和密码后才能登录程序。 (二)用户密码的修改 在成功登录了程序之后用户可以根据自己的需要修改当前密码。 (三)成绩查询 1.成绩修改 前选中要修改的成绩信息,然后进行修改。 2.成绩添加 直接弹出添加对话框,然后进行添加。 3.成绩删除 前选中要删除的成绩信息,然后直接删除。 (四) 课程查询 1.课程修改 实现对课程名、学时、学分的修改。 2.课程添加 对一门新开设的课程进行录入,并存入数据库。 3.课程删除 对一门不再开设的课程进行删除,并从数据库中删除。 (五)学生查询 1.学生信息修改 修改选中当前学生的信息。 2.学生信息添加 增加新学生的信息。 3.学生信息删除 删除选中当前学生信息。 1.2 开发环境简介 1)Microsoft visual c++ 6.0 Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。 Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。

学生信息管理系统(完整)

学生信息管理系统(总体设计) 1、管理系统功能模块设计 本系统需要完成的功能主要有: (1)、输入学生基本信息、所在班级、所学课程和成绩等。 (2)、学生信息的查询,包括查询学生基本信息、所在班级、已学课程和成绩等。(3)、学生信息的修改。 (4)、班级信息的输入,包括输入班级设置、年级信息等。 (5)、班级信息的查询。 (6)、班级信息的修改。 (7)、班级课程信息的输入。 (8)、班级课程信息的修改。 (9)、学生课程添加和修改。 (10)、学生成绩信息的输入。 (11)、学生成绩信息的修改。 (12)、学生成绩信息的查询。 (13)、学生成绩信息的统计。 2、功能模块设计:

3、数据库设计:

学生信息管理系统(需求分析)

1.系统开发背景分析 系统的功能取决开用户的需求。随着科技进步和信息时代的到来,教育的普及程度起来起高,学校的人数也在迅速的增长,怎样的管理好成千上万的学生,已经成为一个学校的管理者必须面对的问题。编写本报告的目的就是用最少的代价,尽可能短的时间内确定问题是否能够解决,通过对学校的一些管理软件的调研分析,发现了一些不足,所以拟做此系统,使学生信息的管理更加准确,安全和快捷。 在本次试验中包括的模块有学生信息管理、课程信息管理、成绩信息管理和班级信息管理等几项,各项管理工作涉及到的内容用下面的关系模式表示。a)学生(学号,姓名,性别,年龄,班级,电话,备注,出生日期,入学时间, 班级编号,家庭地址) b)课程(课程编号,课程名称,课程类别,学分,学时) c)班级(系,班级号,指导老师) 2.系统分析 1.抽象出当前系统的逻辑模型 画出反映当前系统工作的数据流程图。数据流程图是逻辑模型的图形表示,即使不是专业的计算机技术人员也能非常容易理解,它是一种很好的系统构造的表示方法。画数据流程图是应该从已获得的人工处理流程中去掉物理因素,只保留数据、信息处理部分。 2.系统功能分析 系统主要用于学校学生信息管理,主要任务是用计算机对学生各种信息进行日常管理,如:查询、修改、增加、删除。 3.系统目标设计 根据本校的实际情况,利用校园网而设计一套针对性和功能都比较强的学生信息管理系统,对学生信息管理系统进行科学的分类、录入、查询. 4.开发设计思想 尽量采用学校现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用资源,提高系统开发的水平和应用效果的目的。系统应该符合学校学生信息管理的规定,满足学校学生日常管理的需要,达到操作过程中的直观、方便、实用、安全等要求。强调多部门合作,学生工作设计面广泛,应该考虑各部门各

相关主题
文本预览
相关文档 最新文档