穆子 发表于 2012-4-14 12:14:11

鱼友求助

怎样设计一个教务信息管理系统,该程序具有以下功能:(1)录入如下信息:学生基本信息:如学号、姓名、性别、年龄、宿舍号码、电话号码等。课程基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。如果重修,需要考虑重修学期、重修成绩,并且要考虑多次重修的情况。(2)录入选课信息(3)录入学生成绩(3)按班统计学生选课情况及考试成绩。(4)按课程统计学生名单及考试成绩。(5)统计并输出每个同学已修学分及不及级课程。求详解,谢谢!!

laiwenyou 发表于 2012-4-14 13:34:57

童鞋,这可不是三言两语可以完成的呀。要学一个开发软件加一个数据库才行呀。可以去学鱼帮主的dephi,再学韩顺平的数据库教程,也可以学个简单的access。简单点用exce表格吧l

昕林浩渺 发表于 2012-4-15 09:43:26

编程一朝一夕是解决不了了,目前我也赞成用excel

仰望天上的光 发表于 2012-4-15 18:58:23

这个是很基本的C语言练习,只是繁琐但一点都不难。LZ如果自己认真看书的话不可能做不出来。

MC_e_e 发表于 2012-4-15 19:20:20

只要熟悉c语言    用文件操作+链表+功能函数 就行了

︶无处安放。 发表于 2012-4-15 21:13:32

我有一个相关的程序,你自己修改一下
#include<stdio.h>
#include<string.h>
//记录总数
int num=0;
//结构体定义
struct Student
{
        char id;
        char name;
        float mark1;//语文
        float mark2;//数学
        float mark3;//外语
        float average;//平均
}stu;
//显示学生记录
void fp_show(int i)
{
printf("\t学号\t姓名\t语文\t数学\t外语\t平均成绩\n");
printf("-------------------------------------------------------------\n");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",stu.id,stu.name,
            stu.mark1,stu.mark2,stu.mark3,stu.average);
}
//1增加学生记录
void fp_add()
{
while(1)
{
printf("\n请输入学号:\n");
scanf("%s",stu.id);
printf("\n请输入姓名:\n");
scanf("%s",stu.name);
printf("\n请输入语文成绩:\n");
scanf("%f",&stu.mark1);
printf("\n请输入数学成绩:\n");
scanf("%f",&stu.mark2);
printf("\n请输入英语成绩:\n");
scanf("%f",&stu.mark3);
stu.average=(stu.mark1+stu.mark2+stu.mark3)/3;
num++;
getchar();
printf("\n是否继续添加(y/n)\n");
if(getchar()=='n') break;
}
}
//2修改学生记录
void fp_modify()
{   char a;
    int i,t;
        while(1)
        {
        printf("\n请输入学生学号:\n");
        scanf("%s",a);
        for(t=0;t<num;t++)
        {
                if(strcmp(stu.id,a)==0)
                i=t;
        }
        if(i>=0){
      fp_show(i);
                printf("\n请输入修改后的学号\n");
                scanf("%s",stu.id);
                printf("\n请输入修改后的姓名\n");
                scanf("%s",stu.name);
                printf("\n请输入修改后的语文\n");
                scanf("%f",&stu.mark1);
                printf("\n请输入修改后的数学\n");
                scanf("%f",&stu.mark2);
                printf("\n请输入修改后的外语\n");
                scanf("%f",&stu.mark3);
      stu.average=(stu.mark1+stu.mark2+stu.mark3)/3;}
    else
    printf("失败");
        getchar();
        printf("\n是否继续修改(y/n)?\n");
    if(getchar()=='n') return;
        }
}
//3删除学生记录
void fp_delete()
{int i,t,a;
while(1){
        printf("\n请输入删除的学生学号:\n");
        scanf("%s",a);
        for(t=0;t<num;t++)//返回下标;
        {
                if(strcmp(stu.id,a)==0)
                i=t;
        }
        if(i>=0)
        {
          fp_show(i);
          getchar();
          printf("\n是否真的要删除?(y/n)\n");
          if(getchar()=='y')
          {
           for(t=i;t<num-1;t++)
                   stu=stu;
           num--;
          }
        }
    else
    printf("失败");
        getchar();
        printf("\n是否继续删除(y/n)?\n");
    if(getchar()=='n') return;
}
}
//4按姓名查询学生记录
void fp_search()
{ void fp_show(int);
char a;
int i,t;
while(1)
{
printf("\n请输入学生姓名:\n");
scanf("%s",a);
for(i=0;i<num;i++)
{
   if(strcmp(stu.name,a)==0)
           t=i;
}
if(t>=0)
fp_show(t);
else
printf("失败");
getchar();
printf("\n返回/继续 y/n\n");
if(getchar()=='y') break;
}
}
//5按成绩排序
void fp_grades()
{int i,j;
struct Student temp;
for(i=0;i<num-1;i++)//冒泡法排序
for(j=0;j<num-1-i;j++)
   if(stu.average>stu.average)
   { temp=stu;
   stu=stu;
       stu=temp;
   }
//输出成绩排序
   
   printf("\t学号\t姓名\t语文\t数学\t外语\t平均成绩\n");
   printf("-------------------------------------------------------------\n");
   for(i=num-1;i>=0;i--){
   printf("%10s%10s%8.2f%8.2f%8.2f%10.2f\n",stu.id,stu.name,
            stu.mark1,stu.mark2,stu.mark3,stu.average);
   }
   getchar();
   printf("\n请输入y返回\n");
   if(getchar()=='y') return;

}
//打开文件
void fp_open()
{ FILE *fp;
int i;
if((fp=fopen("database.txt","rb"))==NULL)
{
          printf("打开文件失败;\n");
          return;
}
if(fread(&num,sizeof(int),1,fp)!=1)
{
          num=0;
}else
{
   for(i=0;i<num;i++)
           fread(&stu,sizeof(struct Student),1,fp);
}
fclose(fp);
}
//写进数据
void fp_write()
{
FILE *fp;
int i;
if((fp=fopen("database.txt","wb"))==NULL)
{
          printf("打开文件失败;\n");
          return;
}
if(fwrite(&num,sizeof(int),1,fp)!=1)
{
          printf("写入错误;\n");
}
{for(i=0;i<num;i++)
    if(fwrite(&stu,sizeof(struct Student),1,fp)!=1)
                printf("写入错误\n");
}
fclose(fp);

}
//主程序
int main()
{   int choice;
        //打开文件
        fp_open();
        while(1)
        {
       printf("\n\n◇◇◇◇◇◇◇◇成 绩 管 理 小 程 序◇◇◇◇◇◇◇◇\n\n\n");
           printf("\t☆\t1.   增加学生信息\t☆\n");
       printf("\t☆\t2.   修改学生信息\t☆\n");
           printf("\t☆\t3.   删除学生信息\t☆\n");
           printf("\t☆\t4.   查询学生信息\t☆\n");
           printf("\t☆\t5.   平均成绩排序\t☆\n");
           printf("\t☆\t6.   保存并退出\t☆\n\n");
           printf("◇请选择(1-6)◇ \n");
           scanf("%d",&choice);
           switch(choice)
           {
             case 1 : fp_add(); break;
               case 2 : fp_modify(); break;
               case 3 : fp_delete(); break;
               case 4 : fp_search(); break;
               case 5 : fp_grades(); break;
               default: exit(0);break;
           }
        //关闭并写入数据
        fp_write();
        }
return 0;
}

穆子 发表于 2012-4-15 22:59:17

MC_e_e 发表于 2012-4-15 19:20 static/image/common/back.gif
只要熟悉c语言    用文件操作+链表+功能函数 就行了

能详细教一下吗

pcfate 发表于 2013-6-10 16:55:02

mark 一下   回去帮楼主写写看!

Skyline 发表于 2013-6-17 21:40:32

学习了。。。。。。。。。。。。。。。。。

阔怀 发表于 2015-8-13 10:58:55

{:1_1:}

fishc1008 发表于 2017-1-21 13:46:43

学习学习
页: [1]
查看完整版本: 鱼友求助