C语言程序设计

求C语言课程设计报告啊!!下面是要求:
学生成绩管理系统
1、需要处理的基础数据
 学生基本信息:如班级、学号、姓名、性别、年龄等。
 学生选修课程的基本信息:课程编号、课程名称、学分、考试成绩、平时成绩、综合成绩(考试成绩*0.7+平时成绩*0.3)等。
2、系统的基本功能
 数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息;
 数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息;
 数据的插入:插入某个学生信息;
 数据的查询:如按学号查询、按姓名查询等;
 数据的删除:如删除指定学号、或者指定姓名的学生及其选修课程信息;
 平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息;
 列出不及格学生清单(学号、姓名、不及格的课程和成绩)。
 考虑用文件把数据保存起来(可选)。

《C语言程序设计实践》要求
1、 编写C语言程序,实现系统的基本功能,鼓励自行增加新功能;
2、要有用户界面:要求至少采用文本菜单界面;鼓励采用图形菜单界面;
3、写课程设计报告,内容包括:
 封面(参见任务书最后一页)
 系统描述:分析和描述系统的基本要求和内容;
 功能模块结构:包括如何划分功能模块,各功能模块之间的结构图,以及各模块的功能描述;
 数据结构设计:设计数据结构以满足系统的功能要求,并加以注释说明;
 主要模块的算法说明:即实现该模块的思路;
 运行结果:包括典型的界面、输入和输出数据等;
 总结:包括C语言程序设计实践中遇到的问题,解决问题的过程及体会、收获、对程序开发的认识与思考等。
 附录:包括主要程序清单,要有适当的注释,使程序容易阅读。
在网上也找到一些,但并不能实现所有的功能。哪位大虾能给我个完整版的,小弟感激不尽!!

我只有这么多分了~~~

这个也不是很全,但是大体功能有了,你改进一下嘛,我运行过的可以!
希望对你有所帮助!

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10 /*定义常量SIZE便于以后的修改*/
struct student /*定义一个结构体数组存放学生的信息*/
{
int number; /*学号*/
char name[20];/*名字*/
float score[3];/*分数*/
float average;/*平均分*/
}stu[SIZE];

void menu();/*调用菜单函数*/
void write();/*读入信息*/
void save();/*保存stud.dat文件函数*/
void open();/*检查是否正确保存*/
void inturn (struct student c[]);/*用于对学生的信息按平均分排序的函数*/
void save2();/*将排序后的信息存入studsort.dat文件中*/
void read();/*读取studsort.dat文件文件中第2 4 6 8 10个学生的信息*/

void main()
{

int choice;/*用户选择变量*/

printf("*******************************************************************************\n");
printf("* *\n");
printf("* Hwadee &学生成绩文件管理& Hwadee *\n");
printf("* *\n");
printf("*******************************************************************************\n\n\n");
printf("******************************●●欢迎使用●●*********************************");

system("pause");

while (1)
{
menu();/*调用菜单函数形成操作界面*/

printf("请选择:\t");
scanf("%d", &choice);

if ( choice == 0 )
{
system("cls");
printf("\n\n\t\t\t\t谢谢使用!!!\n\n\t\t\t\t\t\t\t\t指导老师: 梁凯\n\n\t\t\t\t\t\t\t\t 学生:万超\n");
break;
}

switch(choice) /*多重选择实现功能不同的功能*/
{

case 1:

write();
break;

case 2:

system("cls");
save();
break;

case 3:

system("pause");
system("cls");
open();
break;

case 4:

system("cls");
printf("排序前的学生信息:\n");
open();
inturn(stu);
save2();
break;

case 5:

system("cls");
read();
break;

default:

printf("\n无此项功能!\n请重新输入\n");

}

}

}

void menu()
{
printf("\n1*****输入学生信息\t\t2*****将信息存入文件stud.dat中\n");
printf("3*****检查文件数据\t\t4*****将学生信息排序并存入文件studsort.dat中\n");
printf("5*****读取文件studsort.dat中的第 2 4 6 8 10个学生的信息\n");
printf("0*****退出系统\n\n\n");
}
/**********************************************************************\
函数名称:
write
功能描述:
完成将学生信息写入
函数参数:
i stu
返回值:

模块历史:
\*********************************************************************/
void write()
{
int i;/*计数变量*/
stu[i].average = 0;/*初始化结构体成员 average*/

printf("请你输入学生的信息\n");
printf("学号\t姓名\t语文\t数学\t英语\t\n");
for (i=0; i<SIZE;i++)
{
scanf("%d\t",&stu[i].number);

if (stu[i].number == 0)/*不需输入信息时输入0即可*/
break;

scanf("%s\t%f\t%f\t%f",&stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);

stu[i].average = (stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;/*计算平均成绩*/

}
}

/**********************************************************************\
函数名称:
save
功能描述:
将写入的信息读入文件中
函数参数:
FILE *fp i
返回值:

模块历史:

\*********************************************************************/
void save()
{
FILE *fp;/*定义文件指针用于向文件读入数据*/
int i;
if ((fp=fopen("stud.dat","wb")) == NULL)
{
printf("cannot open file\n");
return;
}
for (i=0;i<SIZE;i++)
if (fwrite(&stu[i],sizeof(struct student),1,fp) != 1)
printf("file write error\n");
fclose(fp);
printf("\n信息保存成功!恭喜!!\n\n");
}
/**********************************************************************\
函数名称:
open
功能描述:
用于检查读入文件的数据是否正确
函数参数:
FILE *cp i
返回值:

模块历史:
\*********************************************************************/

void open()
{
int i;
FILE *cp;
cp = fopen ("stud.dat","rb");
printf("保存在stud.dat文件中的信息:\n\n");
printf("学号\t姓名\t数学\t语文\t英语\t平均分\n\n");
for (i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,cp);
printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average );
}
fclose (cp);
}
/**********************************************************************\
函数名称:
inturn
功能描述:
用于对结构体数组中的元素排序
函数参数:
into i,j,k
struct student temp
返回值:

模块历史:
\*********************************************************************/

void inturn(struct student m[])
{
int i,j,k;/*计数变量*/
struct student temp;/*中间变量 类型为结构体*/
for(i=0; i<SIZE-1; i++) /*运用冒泡排序对结构体数组进行排序*/

for (j=i+1; j<SIZE; j++)
{

if( m[i].average < m[j].average )
{
temp = m[i];
m[i] = m[j];
m[j] = temp;
}
}
printf("\n排序后的学生信息:\n\n");
printf(" 学号\t姓名\t数学\t语文\t英语\t平均分\n");
for (i=0; i<SIZE; i++)
{
printf("第%d名 %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",i+1, stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average );
}/*输出排序后的学生信息*/

}
/**********************************************************************\
函数名称:
save2
功能描述:
将排序后的学生信息读入到另外的文件中
函数参数:
FILE *mp
i
返回值:

模块历史:
\*********************************************************************/

void save2()
{
FILE *mp;
int i;
if ((mp=fopen("studsort.dat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for (i=0;i<SIZE;i++)
if (fwrite(&stu[i], sizeof(struct student), 1, mp) != 1)
printf("file write error\n");
fclose(mp);/*读取完毕关闭文件*/
}
/**********************************************************************\
函数名称:
read
功能描述:
读出另外文件中的信息
函数参数:
FILE *tp
i
返回值:

模块历史:
\*********************************************************************/

void read()
{
int i=1;
FILE *tp;
tp = fopen ("studsort.dat", "rb" );
printf("studsort.dat文件中偶数号码学生的信息如下:\n\n");
printf("学号\t姓名\t数学\t语文\t英语\t平均分\n\n");
for (i = 1;i<SIZE;i += 2)
{
fseek(tp,i*sizeof(struct student),0);/*fseek函数可以根据用户所需对文件开头的偏移量来读取文件的数据。

k*sizeof(struct student)是指将位置指针移到当前位置k个字节处*/
fread(&stu[i],sizeof(struct student),1,tp);
/*注意:必须使用fseek函数定位后才能根据自己所需读出数据,但是只用fseek函数不用fread,

只是把数据打印到屏幕上而并没有从文件中读取。这是一个常见性问题*/
printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average );
}
fclose (tp);/*读取完毕关闭文件*/
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-07-09
分数太低了,这个做起来,很麻烦,会浪费时间,分太低
第2个回答  2010-07-09
QQ拿出来,我发给你,有一个现成写好的。。