| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1300 人关注过本帖
标题:简易教学管理系统的设计与实现------半年学习的果子
取消只看楼主 加入收藏
守望者c_free
Rank: 1
来 自:湖北
等 级:禁止访问
帖 子:56
专家分:0
注 册:2008-2-8
收藏
 问题点数:0 回复次数:3 
简易教学管理系统的设计与实现------半年学习的果子
简易教学管理系统的设计与实现------半年学习的果子
用C-FREE写的。在论坛看了看,好像好多人都没学多少章节 ,但是学过的都比我们从课本上学的深呐,  
哎,学校开的C只有半年的课就完了,以后怎么搞噢~~~~!!
#define M 25
#define N 6
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct student
{
  int num;
  char name[20];
  int score[N];
  float ave;
}st[M];
struct kecheng
{
  int num;
  char kcname[20];
  float xuefen;
  float ave;
  double bzc;
}course[N];
struct tongji
{
  int exc;
  int good;
  int mid;
  int pass;
  int nopass;
}tongji[N];
/* 读取数据文件  WL0114.txt  */
void read_dat1()
{
  int i,j;
  char str1[100];
  FILE *fp;
  fp=fopen("D:\\WL0114.txt","r");
   if(fp==0)
{
printf("cannot open");
exit(0);}
fgets(str1,10000,fp);
for(i=0;i<M;i++)
{
fscanf(fp,"%d%s",&st[i].num,st[i].name);
for(j=0;j<N;j++)
fscanf(fp,"%d",&st[i].score[j]);
}
fclose(fp);
}
/* 读取数据文件  WL01kc.txt  */
void read_dat2()
{
  FILE *fp;
  int k;
  char str2[100];
  fp=fopen("D:\\WL01kc.txt","r");
   if(fp==0)
{
printf("cannot open");
exit(0);
}
fgets(str2,100,fp);
for(k=0;k<N;k++)
fscanf(fp,"%d%s%f",&course[k].num,course[k].kcname,&course[k].xuefen);
fclose(fp);
}
/* 计算每名学生N门课的加权平均分*/
void jqave()
{     FILE *fp;                         /* ******自动创建CTJ0114.txt文件********/
     fp=fopen("D:\\CTJ0114.txt","w");
fprintf(fp,"名次  学号 姓名   英语  C语言  线性代数   离散数学   高等数学   密码学  平均成绩\n");
fclose(fp);
int i,j;
float s=0,sum;
for(i=0;i<N;i++)
  s+=course[i].xuefen;
for(i=0;i<M;i++)
{
sum=0;
for(j=0;j<N;j++)
sum+=st[i].score[j]*course[j].xuefen;
st[i].ave=(int)(sum*10.0/s+0.5)/10.0;
}
}
/* 计算每门课的平均分和标准差 */
void course_ave()
{
 int i,j;
 float  sum;
for(i=0;i<N;i++)
{ sum=0;
for(j=0;j<M;j++)
sum+=st[j].score[i];
course[i].ave=sum/M; }
for(i=0;i<N;i++)
{
  sum=0;
   for(j=0;j<M;j++)
  sum+=(st[j].score[i]-course[i].ave)*(st[j].score[i]-course[i].ave);
  course[i].bzc=sqrt(sum/M);
}
}
 /* 统计每门课的优 良 中 及格与不及格的情况 */
void course_tongji()
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
  if(st[i].score[j]>=90) tongji[j].exc+=1;
 else if(st[i].score[j]>=80)tongji[j].good+=1;
 else if(st[i].score[j]>=70)tongji[j].mid+=1;
 else if(st[i].score[j]>60)tongji[j].pass+=1;
 else tongji[j].nopass+=1;
}
}
}
/* 利用函数course_tongji()的统计结果得到以下各课程成绩分布示意图 */
void course_tjpic()
{
int i,j;
  printf("\n*******************************************************************************\n");
  printf("\n                              各课程成绩分布示意图\n");
  printf("\n 0.返回主菜单  1.英语  2.C语言  3.线性代数  4.离散数学  5.高等数学   6.密码学.\n");
  printf("\n*******************************************************************************\n");
while(1){
printf("输入课程编号(1-6):");
scanf("%d",&j);
switch(j){
    case 1:case 2:case 3:case 4:case 5:case 6:{
printf("\t\t%10s 成绩分布示意图\n",course[j-1].kcname);
printf("优秀   :\t");for(i=0;i<M;i++)if(i<tongji[j-1].exc)printf("=");printf("\n");
printf("良好   :\t");for(i=0;i<M;i++)if(i<tongji[j-1].good)printf("=");printf("\n");
printf("中等   :\t");for(i=0;i<M;i++)if(i<tongji[j-1].mid)printf("=");printf("\n");
printf("及格   :\t");for(i=0;i<M;i++)if(i<tongji[j-1].pass)printf("=");printf("\n");
printf("不及格 :\t");for(i=0;i<M;i++)if(i<tongji[j-1].nopass)printf("=");printf("\n"); }break;
case 0: return;
default:printf(" 输入有误!\n");break;
}
}}
/* 统计不及格的学生并输出其信息 */
void st_tongji()
{
int i,j;
printf("\n学号     姓名      课程名称       学分      成绩\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
 if(st[i].score[j]<60)
 printf("\n%2d%10s%15s%10.1f%10d\n",st[i].num,st[i].name,course[j].kcname,course[j].xuefen,st[i].score[j]);
else continue;
}
}
}
/* 利用函数jqave()的结果对学生进行排名 */
int paim(float t)
{
       int i,n=0;
       for(i=0;i<M;i++)
   {
            if(t<st[i].ave) n++;
            else continue;
   }   return n+1;
}
 /* 统计优秀学生,并显示其信息 */
void st_tongji2()
{
int i,j;
printf("\n学号  姓名      英语   C语言    线性   离散    高数   密码学   平均分  名次\n");
for(i=0;i<M;i++)
{
   for(j=0;j<N;j++)
 {
   if(st[i].ave>=92||paim(st[i].ave)<=5||(st[i].ave>=88&&st[i].score[j]>=99))
   {
   printf("\n%2d%9s",st[i].num,st[i].name);
   for(j=0;j<N;j++)
   printf("%8d",st[i].score[j]);
   printf("%10.1f%4d\n",st[i].ave,paim(st[i].ave));
   }
   else continue;
  }
  }
}
 /* 将排名后的班级成绩单写入到 MC0114.txt */
void Write_cjd()
{
  FILE *fp;
  int i,j;

 fp=fopen("D:\\MC0114.txt","w");
   if(fp==0)
{
printf("Faile to build a new file !\n");
exit(0);
}
fprintf(fp,"名次  学号    姓名       英语     C语言  线性代数   离散数学   高等数学   密码学  平均成绩\n");
for(i=0;i<M;i++)
{
  fprintf(fp,"%3d%4d%10s",paim(st[i].ave),st[i].num,st[i].name);
   for(j=0;j<N;j++)
   fprintf(fp,"%10d",st[i].score[j]);
   fprintf(fp,"%10.1f\n",st[i].ave);
}  printf("文件创建成功,完整路径:D:\\MC0114.txt\n\n");
fclose(fp);
}
/* 将统计每门课的优 良 中 及格与不及格的情况写入到 MC0114.txt */
void Write_course()
{
  FILE *fp;
  int i,j; float t;
 fp=fopen("D:\\KC0114.txt","w");
   if(fp==0)
{
printf("Faile to build a new file !\n");
exit(0);
}
fprintf(fp,"编号  课程名    平均分     标准差     优秀       良好      中等      及格    不及格\n");
for(i=0;i<N;i++)
fprintf(fp,"%d%10s%10.1f%10.1f%10d%10d%10d%10d%10d\n",course[i].num,course[i].kcname,course[i].ave,course[i].bzc,tongji[i].exc,tongji[i].good,tongji[i].mid,tongji[i].pass,tongji[i].nopass);
 printf("文件创建成功,完整路径:D:\\KC0114.txt\n\n");
fclose(fp);
}
/*显示每名学生的成绩*/
void st_cjd()
{
FILE *fp;
  int i,j;
fp=fopen("D:\\CTJ0114.txt","a");
printf("输入学生的学号:");
scanf("%d",&i);
if(i>=0&&i<=M)
{printf("名次  学号 姓名   英语  C语言  线性代数   离散数学   高等数学   密码学  平均成绩\n");
fprintf(fp,"%2d%4d%10s",paim(st[i-1].ave),st[i-1].num,st[i-1].name);
printf("%3d%4d%10s",paim(st[i-1].ave),st[i-1].num,st[i-1].name);
for(j=0;j<N;j++){fprintf(fp,"%8d",st[i-1].score[j]);
printf("%8d",st[i-1].score[j]);}
fprintf(fp,"%10.1f\n",st[i-1].ave);
printf("%10.1f\n",st[i-1].ave); fclose(fp);
printf("\n此学生成绩已经保存到了:D:\\CTJ0114.txt \n\n");

}
else {printf("无效学号 !\n");st_cjd();}
}
void main_chaxun()
{
  int n;
  printf("\n*******************************************************************************\n");
  printf("\n                             学生详细成绩查询系统\n");
  printf("\n   1.输出指定学生的成绩   2.显示不及格名单  3.显示优秀生名单  4.返回主菜单.\n");
  printf("\n*******************************************************************************\n");
while(1){ printf("执行查询命令:");
scanf("%d",&n);
  switch(n)
{ case 1:st_cjd();break;
  case 2:st_tongji();break;
  case 3:st_tongji2();break;
  case 4:return;
  default:printf(" 输入有误!\n");break;
}}}
void main_menu()
{  int n;
  printf("\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
  printf("\n                       简易教学管理系统\n");
  printf("\n1.创建班级成绩单  2.创建各课程成绩统计 3.学生成绩查询 4.课程成绩分布查询 5.退出.\n");
  printf("\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
  while(1){ printf(" 执行命令:");
scanf("%d",&n);
  switch(n)
{ case 1:Write_cjd();break;
  case 2:Write_course();break;
  case 3:main_chaxun();main_menu();
  case 4:course_tjpic();main_menu();
  case 5:exit(0);
  default:printf(" 输入有误!\n");break;
}}}
main()
{
read_dat1();
read_dat2();
jqave();
course_ave();
course_tongji();
main_menu();
}
搜索更多相关主题的帖子: 教学管理 果子 系统 设计 学习 
2008-02-08 22:45
守望者c_free
Rank: 1
来 自:湖北
等 级:禁止访问
帖 子:56
专家分:0
注 册:2008-2-8
收藏
得分:0 
两个数据文件的内容
(1)两个数据文件
 /*     Wl0114.txt文件内容                             */
学号    姓名       英语     C语言  线性代数   离散数学   高等数学   密码学
1     刘**     91       92         93            94        95           96
2     ***      85       92         67            75        93           86
3     ***      88       76         91            92        93           77
4     杨新      65       94         54            91        88           66
5     拓拔野    93       85         33            54        94           90
6     梁萧      90       94         89            90        92           91
7     程冬      69       98         92            59        58           90
8     周风      92       89         86            94        59           92
9     田小玉    89       78         92            88        70           74
10    秦羽      89       69         77            74        68           90
11    花小霜    90       92         93            91        89           78
12    柳莺莺    91       85         59            88        65           92
13    公羊羽    89       68         91            89        87           88
14    项少龙    88       77         66            55        87           94
15    董帅民    89       92         77            91        65           67
16    高进      88       56         88            78        69           89
17    花清啸    89       65         82            94        84           89
18    王小宝    69       58         44            24        33           55
19    谷慎      92       91         90            93        94           91  
20    陆见      85       89         84            81        83           92
21    余敏津    59       91         80            85        85           84
22    梁文靖    85       84         94            92        93           94
23    万归藏    91       94         85            83        81           61
24    鸣人      85       57         93            94        58           68
25    武大      85       81         87            86        80           72

/*          WL01LC.txt文件内容           */
编号  课程名称   课程学分
1      英语       6.0
2     C语言       4.0
3    线性代数     5.0
4    离散数学     4.5
5    高等数学     3.0
6     密码学      2.0
2008-02-08 22:46
守望者c_free
Rank: 1
来 自:湖北
等 级:禁止访问
帖 子:56
专家分:0
注 册:2008-2-8
收藏
得分:0 
2008-02-18 12:29
守望者c_free
Rank: 1
来 自:湖北
等 级:禁止访问
帖 子:56
专家分:0
注 册:2008-2-8
收藏
得分:0 
编译错误?
你用的什么程序。要支持显示中文的
还有要在D盘放两个数据文件,第二个帖子里的
2008-02-20 09:59
快速回复:简易教学管理系统的设计与实现------半年学习的果子
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027486 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved