学生成绩管理系统 c 语言 救命啊!!!!!!!!!!

求快速 在线等
1.头文件说明
(1) #include <stdio.h>
由于在程序中需要调用输入输出函数,所以需要包含头文件stdio.h
(2) #include <stdlib.h>
由于需要用system函数调用操作系统在DOS下的请屏命令“cls”,而该函数包含在头文件stdlib.h中,所以需要包含该头文件。
(3) #include <string.h>
由于需要使用字符串处理函数strcmp,而该函数包含在头文件string.h中,所以需要包含该头文件。
2.所用到主要知识点
注意:如果这些知识点,你还不太清楚,影响了编程,请自行认真看书复习。
(1) 符号常量或常变量定义的形式以及位置。
(2) 基本输入scanf函数与输出printf函数的正确使用。
(3) if 语句的基本格式,含义与执行过程。
(4) swicth语句的基本格式,含义及执行过程,注意break语句的使用。
(5) 每种循环语句的基本格式,含义及执行过程。
有三种语句:while语句,do...while语句,for语句。
(6) 数组(包括字符数组)的定义与使用(包括初始化)。
(7) 函数的定义的基本格式,具体含义。
(8) 函数声明的基本格式。
(9) 函数的调用,形式参数与实际参数的值的传递。
(10) 如何使用数组作为函数参数。
3.编写该管理系统程序目的
使大家掌握上节中的主要知识点,增强自己动手编写程序,调试程序的能力,并理解模块化编程的思想。
4.程序疑点解释
为何在按任意键后返回时需要使用两个getchar(),即在程序中使用了如下语句:
getchar();//接收回车符
getchar();//等待用户按键
原因在于:
使用输入函数scanf()来从键盘输入数据时,通常是按‘Enter’键来结束输入,而如果后面有使用getchar()函数来读一个字符,则这个‘Enter’键对应的字符就会被getchar()读到,也就是说程序不会等待用户按键就会直接往下执行。例如:
int main() {
char ch;int a;
printf("请输入一个整数:");
scanf("%d", &a);//输入一个整数给变量a
printf("您输入的数是%d\n", a);
ch=getchar();
printf("ch的ASCII码值是%d",ch);
return 0;
}
则上述程序段当你输入一个数,并按回车键时,上述程序是不会等你再按一个键的。而下述程序则不同,当你输入一个数后,还需要按一个键后程序才会结束。
int main() {
char ch;int a;
printf("请输入一个整数:");
scanf("%d", &a);//输入一个整数给变量a
printf("您输入的数是%d\n", a);
ch=getchar();
printf("ch的ASCII码值是%d",ch);
getchar();
return 0;
}
5.整个程序的流程图大致如下:

6.其他说明
我给你们的只是一个框架和部分代码,仅供参考!欢迎你们有更好的编程解决方法。

功能要求说明
1.总体功能简介
完成对学生成绩信息的基本管理。
每个学生的信息包括:学号,成绩1,成绩2,成绩3,平均成绩。采用一个二维数组来存储学生成绩信息,学生数应在5个以上。
2.主界面示意

3.模块功能说明
学生成绩录入。即录入每个学生的学号,三门功课的成绩。平均成绩由三门成绩自动计算出。
学生成绩输出。即输出每个学生的学号,三门功课的成绩,平均成绩。一个学生一行。
学生成绩删除。即按给定的学号,删除这个学生的成绩,删除成绩后该学生的所有成绩设为-1。
学生成绩修改。即按给定的学号,修改这个学生的三门课成绩。修改后,他的平均成绩自动算出。
学生成绩查询。即按给定的学号,输出这个学生的所有信息。
学生成绩排序。即按学生的平均成绩,按升序排序。
学生成绩统计。即按给定的分数段(用两个整数表示,例如0,60,表示〔0,60〕,即小于等于60,大于等于0),统计平均分在这个分数段内的学生数。
退出管理系统。即退出程序

在下高二计算机竞赛党,写了个代码拿来丢人。
表示只有50分我也写了,实在是闲的蛋疼……
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int num = 0;
int student[10000][6];
int stunum[10000];

void swap(int &a,int &b)
{
int t = a;
a = b;
b = t;
}

void init(void)
{
memset(stunum,0,sizeof(stunum));
memset(student,0,sizeof(student));
int a,b,c,d,i;
scanf("%d",&num);
for(i=1 ; i<=num ; i++)
{
scanf("%d %d %d %d",&a,&b,&c,&d);
stunum[a] = i;
student[i][1] = b;
student[i][2] = c;
student[i][3] = d;
student[i][4] = (b + c + d)/3;
student[i][5] = a;

}
}

void output(void)
{
for(int i=1 ; i<=num ; i++)
{
printf("%d %d %d %d %d",
student[i][5],
student[i][1],
student[i][2],
student[i][3],
student[i][4]
);
}
}

void del(int i)
{
int thestu = 0;
thestu = stunum[i];
student[thestu][1]
= student[thestu][2]
= student[thestu][3]
= student[thestu][4]
= -1;
}

void modify(int i)
{
int thestu = 0;
thestu = stunum[i];
int a,b,c,d;
scanf("%d %d %d",&a,&b,&c);
student[thestu][1] = a;
student[thestu][2] = b;
student[thestu][3] = c;
student[thestu][4] = (a + b + c) / 3;
}

void search(int j)
{
int i;
int thestu = 0;
thestu = stunum[j];
printf("%d ",j);
for(i=1 ; i<=3; i++)
printf("%d ",student[thestu][i]);
printf("%d",student[thestu][4]);
}

void sort(void)
{
int i,j;
int temp[10000][6];
for(i=1 ; i<=num ; i++)
for(j=1 ; j<=5 ; j++)
temp[i][j] = student[i][j];
for(i=1 ; i<=num ; i++)
for(j=1 ; j<=num-i ; j++)
{
if(temp[j][4] > temp[j+1][4])
{
swap(temp[j][1],temp[j+1][1]);
swap(temp[j][2],temp[j+1][2]);
swap(temp[j][3],temp[j+1][3]);
swap(temp[j][4],temp[j+1][4]);
swap(temp[j][5],temp[j+1][5]);
}
}
}

void statistics(int min,int max)
{
int i;
int all = 0;
scanf("%d %d",&min,&max);
for(i=1 ; i<=num ; i++)
{
if(student[i][4] >=min && student[i][4] <=max)
all ++;
}
}

int main(void)
{
return 0;
}
一切问题都是用函数来写的,你参考一下,需要哪个就把那个丢进main里用。
我只是编译了一下确保没问题,具体步骤我想要是有错误也是小错误。
大体意思给你讲一下。(每个步骤函数都是按照你的问题顺序来的。)
成绩录入就是个scanf,没啥好讲的,memset函数你可以百度一下,这玩意初始化数组很好用的。
输出也很脑残,就是printf。
我这里用了一个stunum数组来节省后续查找学好的时间,stunum数组是一个学号和数组下标之间的联系,是个索引,stunum[i]表示的是,学号为i的这个学生,他在student数组里的位置。比如stunum[i] = j;就表示学号为i的学生的一切信息被保存在、student[j][...]里。而student[][]数组为了后续的方便,student[...][5]也存了这个学生的学号。
排序用了冒泡,我觉得你这估计是交作业用的而国内大学老师基本读不懂结构体,所以没用结构体qsort。swap函数是交换数据用的,其实是交换了数据的地址,具体原因,百度吧。
至于后来那个查找无非就是遍历一遍所有学生,找到符合要求的++,完事。
getchar你自己加就好了~
给分吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-04
求快速 在线等
1.头文件说明
(1) #include <stdio.h>
由于在程序中需要调用输入输出函数,所以需要包含头文件stdio.h
(2) #include <stdlib.h>
由于需要用system函数调用操作系统在DOS下的请屏命令“cls”,而该函数包含在头文件stdlib.h中,所以需要包含该头文件。
(3) #include <string.h>
由于需要使用字符串处理函数strcmp,而该函数包含在头文件string.h中,所以需要包含该头文件。
2.所用到主要知识点
注意:如果这些知识点,你还不太清楚,影响了编程,请自行认真看书复习。
(1) 符号常量或常变量定义的形式以及位置。
(2) 基本输入scanf函数与输出printf函数的正确使用。
(3) if 语句的基本格式,含义与执行过程。
(4) swicth语句的基本格式,含义及执行过程,注意break语句的使用。
(5) 每种循环语句的基本格式,含义及执行过程。
有三种语句:while语句,do...while语句,for语句。
(6) 数组(包括字符数组)的定义与使用(包括初始化)。
(7) 函数的定义的基本格式,具体含义。
(8) 函数声明的基本格式。
(9) 函数的调用,形式参数与实际参数的值的传递。
(10) 如何使用数组作为函数参数。
3.编写该管理系统程序目的
使大家掌握上节中的主要知识点,增强自己动手编写程序,调试程序的能力,并理解模块化编程的思想。
4.程序疑点解释
为何在按任意键后返回时需要使用两个getchar(),即在程序中使用了如下语句:
getchar();//接收回车符
getchar();//等待用户按键
原因在于:
使用输入函数scanf()来从键盘输入数据时,通常是按‘Enter’键来结束输入,而如果后面有使用getchar()函数来读一个字符,则这个‘Enter’键对应的字符就会被getchar()读到,也就是说程序不会等待用户按键就会直接往下执行。例如:
int main() {
char ch;int a;
printf("请输入一个整数:");
scanf("%d", &a);//输入一个整数给变量a
printf("您输入的数是%d\n", a);
ch=getchar();
printf("ch的ASCII码值是%d",ch);
return 0;
}
则上述程序段当你输入一个数,并按回车键时,上述程序是不会等你再按一个键的。而下述程序则不同,当你输入一个数后,还需要按一个键后程序才会结束。
int main() {
char ch;int a;
printf("请输入一个整数:");
scanf("%d", &a);//输入一个整数给变量a
printf("您输入的数是%d\n", a);
ch=getchar();
printf("ch的ASCII码值是%d",ch);
getchar();
return 0;
}
5.整个程序的流程图大致如下:

6.其他说明
我给你们的只是一个框架和部分代码,仅供参考!欢迎你们有更好的编程解决方法。

功能要求说明
1.总体功能简介
完成对学生成绩信息的基本管理。
每个学生的信息包括:学号,成绩1,成绩2,成绩3,平均成绩。采用一个二维数组来存储学生成绩信息,学生数应在5个以上。
2.主界面示意

3.模块功能说明
学生成绩录入。即录入每个学生的学号,三门功课的成绩。平均成绩由三门成绩自动计算出。
学生成绩输出。即输出每个学生的学号,三门功课的成绩,平均成绩。一个学生一行。
学生成绩删除。即按给定的学号,删除这个学生的成绩,删除成绩后该学生的所有成绩设为-1。
学生成绩修改。即按给定的学号,修改这个学生的三门课成绩。修改后,他的平均成绩自动算出。
学生成绩查询。即按给定的学号,输出这个学生的所有信息。
学生成绩排序。即按学生的平均成绩,按升序排序。
学生成绩统计。即按给定的分数段(用两个整数表示,例如0,60,表示〔0,60〕,即小于等于60,大于等于0),统计平均分在这个分数段内的学生数。
退出管理系统。即退出程
第2个回答  2011-05-04

要做图形界面么?大一的时候写过DOS下的带界面学生管理系统,要不?虽然大一下学期就改成WxWidgets的图形界面了……

第3个回答  2011-05-04
#include<stdio.h>
int main()
{
int i=0;
FILE *fp1;
fp1=fopen("A.txt","w");
if(fp1==NULL)
{
printf("Can't open it!");
}
for(i=0;i<26;i++)
{
fputc(('A'+i),fp1);
}
fclose(fp1);
FILE *fp2;
fp2=fopen("B.txt","w");
if(fp2==NULL)
{
printf("Can't open it!");
}
for(i=0;i<10;i++)
{
fputc(('0'+i),fp2);
}
fclose(fp2);
//合并
FILE *fp3;
fp3=fopen("C.txt","w");
if(fp2==NULL)
{
printf("Can't open it!");
}
char c;
FILE *fp4;
fp4=fopen("A.txt","r");
if(fp4==NULL)
{
printf("Can't open it!");
}
while((c=fgetc(fp4))!=EOF)
fputc(c,fp3);
fclose(fp4);
FILE *fp5;
fp5=fopen("B.txt","r");
if(fp5==NULL)
{
printf("Can't open it!");
}
while((c=fgetc(fp5))!=EOF)
fputc(c,fp3);
fclose(fp5);

fclose(fp3);
return 0;
}
另外,站长团上有产品团购,便宜有保证
相似回答