C程序,工程浩大,一千行左右,没耐心和不想挑战的勿进

制作一个学生成绩管理系统.
1、输入成绩 回到目录
2、查找成绩 院
3、修改成绩落 系

科目
学生

(当按左边数字时,再按回车,就能实现它的功能;按右边的也是这样,总之最后实现想查具体某个学生的各项或实现修改)

(我知时间是一定要长的啦,辛苦了!!!!谢谢!!!)
就是用数组也可以解决啦,而且很多重复的,可以复制.

别忘了给分!
/**********************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define N 3 /*学生人数*/
#define M 3 /*课程门数*/

void input();
void display();
void select();
void statistics();
void dataSave();
void dataLoad();
void menu();

float courses[N][M];
FILE *fp;

void input() /*输入成绩*/
{
int i=0;
int j=0;
for(i=0;i<N;i++)
{
printf("学生%d号\n",i+1);
for(j=0;j<M;j++)
{
printf("第%d门成绩的分数为:",j+1);
scanf("%f",&courses[i][j]);
}
printf("\n\n");
}
printf("\n\n");
printf("输入完毕!按任意键返回主菜单!");
getch();
}

void display()
{
int i=0;
int j=0;
for(i=0;i<N;i++)
{
printf("学生%d号的成绩分别为:",i+1);
for(j=0;j<M;j++)
printf("%0.2f ",courses[i][j]);
printf("\n");
}
printf("\n按任意键返回主菜单!");
getch();
}

void select(int no)
{
int i=0;
printf("您选择了查看学生%d号的成绩:",no);
for(i=0;i<M;i++)
{
printf("%0.2f ",courses[no-1][i]);
}
printf("\n按任意键返回主菜单!");
getch();
}

void statistics() /*统计*/
{
float cAverage[M]; /*每门课程平均分*/
float sAverage[N]; /*每个学生平均分*/
float temp=0;
int i=0;
int j=0;
/*算平均分*/
printf("单科课程平均分为:"); /*单科课程平均分*/
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
temp=temp+courses[j][i];
}
cAverage[i]=temp/M;
printf("%0.2f\t",cAverage[i]);
temp=0;
}
temp=0;
printf("\n学生成绩平均分为:");
for(j=0;j<N;j++) /*学生成绩平均分*/
{
for(i=0;i<M;i++)
{
temp=temp+courses[j][i];
}
sAverage[j]=temp/N;
printf("%0.2f\t",sAverage[j]);
temp=0;
}

/*排序(冒泡法)*/
for(i=0;i<M;i++)
for(j=0;j<M-i-1;j++)
if(cAverage[j]<cAverage[j+1])
{
temp=cAverage[j];
cAverage[j]=cAverage[j+1];
cAverage[j+1]=temp;
}
for(j=0;j<N;j++)
for(i=0;i<N-j-1;i++)
if(sAverage[i]<sAverage[i+1])
{
temp=sAverage[i];
sAverage[i]=sAverage[i+1];
sAverage[i+1]=temp;
}
printf("\n单科课程的前三名:");
for(i=0;i<3;i++)
{
printf("\n第%d名:%0.2f",i+1,cAverage[i]);
}
printf("\n学生总成绩前三名:");
for(i=0;i<3;i++)
{
printf("\n第%d名:%0.2f",i+1,sAverage[i]);
}
printf("\n\n按任意键返回主菜单!");
getch();
}

void menu()
{
int num=0;
int n=0;
printf("\n\t\t\t学生成绩管理系统\n\n");
printf("\t\t\t1.输入学生成绩\n\t\t\t2.显示所有数据\n\t\t\t3.按学号查询\n\t\t\t4.统计\n\t\t\t5.退出\n");
printf("\t\t\tchoose:");
scanf("%d",&num);
switch(num)
{
case 1:
system("cls");
input();
break;
case 2:
system("cls");
display();
break;
case 3:
system("cls");
printf("请输入要查询的学生号:");
scanf("%d",&n);
select(n);
break;
case 4:
system("cls");
statistics();
break;
case 5:
dataSave();
exit(1);
default:break;
}
}

void dataLoad() /*读入文件*/
{
int i=0;
fp=fopen("record.txt","r+"); /*存在原文件*/
if(fp!=NULL) /*到文件尾返回*/
for(i=0;i<N&&!feof(fp);i++)
fread(&courses[i],sizeof(courses),1,fp);
else fp=fopen("record.txt","w"); /*不存在则新建一个文件*/
}

void dataSave() /*文件保存*/
{
int i;
fp=fopen("record.txt","w");
for(i=0;i<N;i++)
if(fwrite(&courses[i],sizeof(courses),1,fp)!=1)
{
fclose(fp); /*关闭文件指针*/
printf("file write error\n");
getch();
}
}

void main()
{
int i=0;
int j=0;
dataLoad();
while(1)
{
system("cls"); /*清屏*/
menu();
}
}

/*********************************************************/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-02
建议到网上找类似的程序再找人修改或者自己修改。
第2个回答  2008-06-02
原文地址:http://www.bc-cn.net/bbs/dispbbs.asp?BoardID=12&ID=73964

学生成绩管理系统源码下载地址

NetBeans5.5编写
Struts1.2.8 + Hibernate3.1 + MYSQL5.0

数据库结构为:
DROP DATABASE IF EXISTS ENOVA;
CREATE DATABASE ENOVA;
USE ENOVA;

CREATE TABLE STUDENT (
ID int(11) NOT NULL auto_increment,
NUMBER char(15) NOT NULL UNIQUE,
NAME varchar(4) NOT NULL ,
SEX varchar(1) default NULL,
NATION varchar(10) default NULL,
ENROLL_YEAR YEAR(4) NOT NULL ,
BIRTHDAY date default NULL,
BIRTH_PLACE varchar(50) default NULL,
PASSWORD char(15) NOT NULL ,
CLASS_ID int(11) NOT NULL ,
PRIMARY KEY (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE TEACHER(
ID int(11) NOT NULL auto_increment,
NAME varchar(4) default NULL ,
SEX varchar(1) default NULL,
USERNAME char(15) NOT NULL UNIQUE ,
PASSWORD char(15) NOT NULL ,
PRIMARY KEY (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE DEPARTMENT(
ID int(11) NOT NULL auto_increment,
NAME varchar(20) NOT NULL,
PRIMARY KEY (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE SPECIAL(
ID int(11) NOT NULL auto_increment,
NAME varchar(20) NOT NULL,
DEPARTMENT_ID int(11) NOT NULL ,
PRIMARY KEY (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE CLASS(
ID int(11) NOT NULL auto_increment,
NAME varchar(20) NOT NULL,
TEACHER_ID int(11) NOT NULL ,
SPECIAL_ID int(11) NOT NULL ,
YEAR year(4) NOT NULL ,
PRIMARY KEY (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE COURSE(
ID int(11) NOT NULL auto_increment,
NAME varchar(20) NOT NULL,
TEACHER_ID int(11) NOT NULL ,
HOUR int(4) default NULL,
CREDIT float(2,1) NOT NULL ,
YEAR year(4) default NULL,
TERM varchar(1) default NULL,
EXAM_MODE varchar(2) default NULL,
EXAM_TYPE varchar(2) default NULL,
TYPE varchar(2) default NULL,
PRIMARY KEY (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE SCORE(
COURSE_ID int(11) NOT NULL ,
STUDENT_ID int(11) NOT NULL ,
VALUE int(4) default NULL ,
DATE date NOT NULL ,
PRIMARY KEY (STUDENT_ID,COURSE_ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE ROOT(
ID int(11) NOT NULL auto_increment,
USERNAME char(15) NOT NULL UNIQUE ,
PASSWORD char(15) NOT NULL ,
PRIMARY KEY (ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE CLASS_COURSE(
CLASS_ID int(11) NOT NULL ,
COURSE_ID int(11) NOT NULL ,
PRIMARY KEY (CLASS_ID,COURSE_ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;

alter table STUDENT add constraint FK_STUDENT_CLASS
foreign key(CLASS_ID) references CLASS(ID) on delete cascade;

alter table SPECIAL add constraint FK_SPECIAL_DEPARTMENT
foreign key(DEPARTMENT_ID) references DEPARTMENT(ID) on delete cascade;

alter table CLASS add constraint FK_CLASS_TEACHER
foreign key(TEACHER_ID) references TEACHER(ID) on delete cascade;

alter table CLASS add constraint FK_CLASS_SPECIAL
foreign key(SPECIAL_ID) references SPECIAL(ID) on delete cascade;

alter table SCORE add constraint FK_SCORE_COURSE
foreign key(COURSE_ID) references COURSE(ID) on delete cascade;

alter table SCORE add constraint FK_SCORE_SUTDENT
foreign key(STUDENT_ID) references STUDENT(ID) on delete cascade;

alter table CLASS_COURSE add constraint FK_CC_CLASS
foreign key(CLASS_ID) references CLASS(ID) on delete cascade;

alter table CLASS_COURSE add constraint FK_CC_COURSE
foreign key(COURSE_ID) references COURSE(ID) on delete cascade;

alter table COURSE add constraint FK_COURSE_TEACHER
foreign key(TEACHER_ID) references TEACHER(ID) on delete cascade;

insert into ROOT(USERNAME,PASSWORD) values('vlinux','lovefs');

create trigger CLASS_COURSE_DELETE BEFORE DELETE ON CLASS_COURSE
FOR EACH ROW DELETE FROM SCORE WHERE COURSE_ID=old.COURSE_ID
and STUDENT_ID in (SELECT ID FROM STUDENT WHERE CLASS_ID=old.CLASS_ID);

grant all on ENOVA.* to enova@localhost identified by "enova" with grant option;

数据结构文件可以从/enova/src/enova/ENOVA_DB.SQL中找到

管理员初始帐号/密码为:vlinux/lovefs

PS:管理员的学生成绩管理模块还没时间做,如果那个人有能力的就帮忙做了吧,不过估计在这个注释缺乏的程序中想快速理解好像有点难度。考试完我会适当加上注释的。毕竟我目前的目标就是为BCCN写一个自己的论坛。
大家可以把这个程序当成一本书,有什么对Struts、Hibernate不理解的地方可以参考一下。呵呵,一起努力吧。

参考资料:http://www.bc-cn.net/Article/web/jsp/jszl/200606/4162.html

第3个回答  2008-06-02
这种编程,你给100分是不会有人帮你做的.

你还是花些钱找些专业编程的来做吧.
第4个回答  2008-06-02
做C语言程序设计呢吧,我去年做了,百度上就能搜到,耐心搜一下吧,呵呵,有一个专门的网站
第5个回答  2008-06-03
看我的空间里面吧,里面有一个通讯录的程序,稍微改一改就可以变成成绩管理系统了,花不了多少时间的