求学生成绩管理系统。

babyzhuangsir 2009-09-06 01:55:09
学校让做学生成绩管理系统,对于我们这种非计算机专业的同学来说,确实难度不小。有没有人给做一个。如果有相似的可以上传。功能如下:
1) 能够输入、添加、修改、删除学生的个人信息以及各科成绩;
2) 可对学生成绩进行总分合计、平均分计算、单科排名以及综合成绩排名;
3) 可按照学生姓名、学号或者其它信息进行学生及其成绩的综合查询;
4) 能够对按照班级、个人等形式对学生信息及其成绩进行报表汇总与打印;
5) 建立学生成绩数据库或者磁盘文件,存储相关信息。
我在做的时候有几个问题想请问一下。
怎样从硬盘中读入文件,就是说怎么把文件(文本文档)中的内容显示到屏幕上,我试了几个都不行。
...全文
408 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
有java版本的吗?最好是在ssh框架环境下实现的吗?给我发一个 zc529739024@163.com 先谢谢
pydle 2009-09-11
  • 打赏
  • 举报
回复
看看file的用法就好了
只是文本连连接数据库都不需要,dbms都不能算
更谈不上作数据库了
wenhuahetao 2009-09-11
  • 打赏
  • 举报
回复
我的可以调试通过
/**********************************************************************/#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include "conio.h"
#define LEN sizeof(struct student)
typedef struct student
{
char num[10];
char name[10];
int math,english,computer;
int total;
struct student *next;
}student, *LinkList;
void Login();
void weixiu();
void menu() ;
int Open(LinkList L);
void printstart() ;
void Wrong() ;
void Nofind() ;
void printc();
void getinf(LinkList L);
void orderbyzongfen(LinkList L);
void deleteall(LinkList L);
void Developer();
void Sort(LinkList L);
void Save(LinkList L);
LinkList dingwei(LinkList L,char findmess[],char nameornum[]);
LinkList L;
int main(void)
{


Login();



return 0;
}

/*---------------------------------------------------输入学生成绩并计算-----------------------------------------------------*/
void getinf(LinkList L)
{
LinkList r,s;
r=(LinkList )malloc(LEN);
printf("请输入学号:");
scanf("%s",r->num);
printf("请输入姓名:");
scanf("%s",r->name);
printf("请输入数学成绩:");
scanf("%d",&r->math);
printf("请输入英语成绩:");
scanf("%d",&r->english);
printf("请输入电脑成绩:");
scanf("%d",&r->computer);
r->total=r->math+r->english+r->computer;

s=L->next;
L->next=r;
r->next=s;
printf("追加记录成功!\n");
}





/*------------------------------该函数用于定位连表中符合要求的接点,并返回该指针---------------------------*/
LinkList dingwei(LinkList L,char findmess[],char nameornum[])
{
LinkList r;
if(strcmp(nameornum,"num")==0)
{
r=L->next;
while(r!=NULL)
{
if(strcmp(r->num,findmess)==0)
return r;
r=r->next;
}
r=NULL;
return r;
}
else if(strcmp(nameornum,"name")==0)
{
r=L->next;
while(r!=NULL)
{
if(strcmp(r->name,findmess)==0)
return r;
r=r->next;
}
r=NULL;
return r;
}
else return 0;
}




/*---------------------------------------------删除记录--------------------------------------------------*/
void deleteall(LinkList L)
{

char ch;



printf("确定您要清除文件里所有学生的信息,这样就无法恢复数据了( Y or N )\n");
getchar();
scanf("%c",&ch);
if(ch == 'y' || ch == 'Y')
{
L->next = NULL;
printf("文件里学生成绩信息已经被清除!\n");
}
else return;


}

/*-------------------------------------------------排序记录------------------------------------------------------------*/
void Sort(LinkList L)
{
LinkList p,r,s;
p = L;

r = p ->next;
s = p ->next->next;
while(s != NULL)
{
while(s ->total < p ->next->total)
p = p ->next;
if(p ->next == s)
{
printf("排序已完成!\n");return;
}
else
{
r ->next = s ->next;
s ->next = p ->next;
p ->next = s;
s = r ->next;
p = L;
}
}
printf("排序成功!\n");




}
/*--------------------------------------------------------- 排名---------------------------------------------------*/

void orderbyzongfen(LinkList L)

{
LinkList p;


p=L;
if(p->next!=NULL)
{
printstart();
printc();
for (p=p->next;p!=NULL;p=p->next)
printf("%3s\t%3s\t%5d\t%9d\t%5d\t%7d\n",p->num,p->name,p->math,p->english,p->computer,p->total);
printstart();}
else Nofind();
}


/*-----------------------------------------------------------打开文件--------------------------------------------------------*/
int Open(LinkList L)
{
FILE *fp;
LinkList p1,p2;
char choose;
int count=0;

p1=L;
p1->next=NULL;
fp=fopen("E:\\student_score","rb");
if(fp==NULL)
{
printf("\n=====>提示:文件还不存在,是否创建?(y/n)\n");
scanf("%c",&choose);
if(choose=='y'||choose=='Y')
{
fp=fopen("E:\\student_score","wb");
printf("文件已创建,请按回车键关闭,然后重新打开软件\n");getchar();getchar();exit(0);
}
else exit(0);
}

p2=(LinkList)malloc(LEN);
while(fread(p2,LEN,1,fp))
{
p2->next=NULL;
p1->next=p2;
p1=p2;
p2=(LinkList)malloc(LEN);
count++;
}
p2->next=NULL;
fclose(fp);

return 1;
}
/*-----------------------------------------------------保存文件----------------------------------------------------*/
void Save(LinkList L)
{
FILE *fp;
LinkList p1;
char choose;
if(L ->next == NULL)
{printf("没有可以保存的信息!\n");
return;}
printf("确认保存?(y/n)\n");
getchar();
scanf("%c",&choose);
getchar();
if(choose == 'y' || choose == 'Y')
{
fp=fopen("E:\\student_score","wb");
p1=L;
p1=p1->next;

while(p1)
{
if(fwrite(p1,LEN,1,fp)==1)
{
p1=p1->next;
}
else
break;

}
fclose(fp);
printf("保存成功!\n");
}
else printf("没有保存!\n");
}

void weixiu()
{
printf("\n\n\n");
printf("\n **************************************************************");
printf("\n ");
printf("\n 欢迎使用成绩管理系统.本系统尚在试用阶段,有问题请与我联系! ");
printf("\n ");

printf("\n 我的qq是 810097972 ");
printf("\n **************************************************************");
}

/*----------------------------------------------------界面函数-------------------------------------------*/
void Login()
{
system("color 5f");
char ch[23];
int i=0;
char mima[45];
L=(LinkList)malloc(LEN);
int sel,count=0;
weixiu();
printf("\n\n\n");
printf("\n请选择您的登陆方式( 1 :管理员 2 :普通用户 )");
scanf("%d",&i);
switch(i)
{
case 1:

system("cls");
weixiu();
printf("\t\t\t\t用户名:");
scanf("%s",ch);
printf("\t\t密码:");
scanf("%s",mima);
if(strcmp(mima,"123456")==0 && strcmp(ch,"何涛")==0)
{
getchar();printf("\n按回车返回主菜单\n");getchar();
system("cls");
}
else
{
printf("您的用户名或密码有误,无法登陆!\n");
exit(0);

}
menu();
Open(L);

for (scanf("%d",&sel);sel!=0;system("cls"),menu(),scanf("%d",&sel))
{
switch (sel)
{
case 1:
getinf(L);
count++;Save(L);getchar();printf("\n按回车返回主菜单\n");getchar();
break;
case 2:Sort(L);orderbyzongfen(L);getchar();printf("\n按回车返回主菜单\n");getchar();
break;

case 3:
deleteall(L);getchar();printf("\n按回车返回主菜单\n");getchar();
count--;
break;

case 4:
Developer();getchar();printf("\n按回车返回主菜单\n");getchar();
break;
case 5:
printf("谢谢使用 !有问题可以与我联系\n\t\tqq810097972\n");
exit(0);
break;
default:
Wrong();getchar();printf("\n按回车返回主菜单\n");getchar();
}
}
break;

case 2:
system("cls");
Open(L);
printf("\n\t\t\t\t1:按高分排序并显示\n\t\t\t\t2:制作人员\n\t\t\t\t3:退出系统\n");
printf("请选择你要的操作:");

for (scanf("%d",&sel);sel!=0;system("cls"),menu(),scanf("%d",&sel))
{
switch (sel)
{

case 1:Sort(L);orderbyzongfen(L);getchar();printf("\n按回车返回主菜单\n");getchar();
break;



case 2:
Developer();getchar();printf("\n按回车返回主菜单\n");getchar();
break;
case 3:
printf("谢谢使用 !有问题可以与我联系\n\t\tqq810097972\n");
exit(0);
break;
default:
Wrong();getchar();printf("\n按回车返回主菜单\n");getchar();
}
}
break;
break;
}

printf("\n |************************************************************|");




}
void menu()
{
printf("\n\t\t\t\t欢迎进入成绩管理系统\t\t\t\n\n\t\t1:输入学生成绩并计算\n\t\t2:按高分排序并显示\n\t\t3:删除数据\n\t\t4:制作人员\n\t\t5:退出系统\n\n选择您要进入的菜单,请输入功能号(0~5):") ; //主界面)

}
void printstart()
{
printf("\n-------------------------------------------------------------------\n");
}
void Wrong()
{
printf("提示:输入错误!\n");
}
void Nofind()
{
printf("提示:没有找到该学生!\n");
}

void Developer()
{
printf("\n\n\n\t\t\t\t\t制作人员:\n\t\t\t\t\t\t ------何涛\n\n\n");
}

void printc()
{
printf("学号\t姓名\t数学成绩 英语成绩 电脑成绩 总分\n");
}

挡不住的君文 2009-09-09
  • 打赏
  • 举报
回复
高手真多啊
cllggg 2009-09-08
  • 打赏
  • 举报
回复
完整的,没错漏,具有:
班级学生成绩录入,保存在文件grade.txt,成绩统计功能,平均成绩,最高最低成绩,成绩排序。

#include <stdio.h>
#include <process.h>
#include <conio.h>
#define N 5

struct STDEN
{
char stdNum[100];
char stdName[100];
float chinese,english,math;
}grade[N];

int Max(STDEN grade[], int n)//需找最大分数的子函数
{
int Max = 0;

for (int i=1;i<n;i++)
{
if(grade[Max].chinese + grade[Max].english + grade[Max].math < grade[i].chinese + grade[i].english + grade[i].math)
Max=i;
}

return Max;
}

int Min(STDEN grade[],int n)//寻找最少分数的子函数
{
int Min = 0;
for (int i=1;i<n;i++)
{
if(grade[Min].chinese + grade[Min].english + grade[Min].math >grade[i].chinese + grade[i].english + grade[i].math)
Min=i;
}
return Min;
}

void Bubblesort(float a[])//排序
{
int pass;
int j;
float hold;
for(pass=1;pass<=N-1;pass++)
for(j=0;j<=N-1;j++)
{
if(a[j]<a[j+1])
{
hold=a[j];
a[j]=a[j+1];
a[j+1]=hold;
}
}

}

void PrintBubblesort(const float a[])//输出排序
{
int j;
for(j=0;j<=N-1;j++)
printf("%.2f\n",a[j]);
}

void AddMessage()//添加信息
{
FILE *std;
int i;
if((std=fopen("grade.txt","a+")) == NULL)
{
puts("文件访问失败.退出");
getch();
exit(1);
}
else
{
for(i=0;i<N;i++)
{
printf("输入学号和名字:\n?");
scanf("%s %s",grade[i].stdNum,grade[i].stdName);

printf("输入成绩:语文.\n?");
scanf("%f",&grade[i].chinese);

printf("输入成绩:英语.\n?");
scanf("%f",&grade[i].english);

printf("输入成绩:数学.\n?");
scanf("%f",&grade[i].math);
}
fwrite(grade,sizeof(struct STDEN),N,std);
}
fclose(std);
getch();
}

void ReadMessage()//读出信息
{
FILE *std;
int i,j;
int Sum=0;
int Chinese=0;
int English=0;
int Math=0;
float CH[N];
float EN[N];
float MH[N];
if((std=fopen("grade.txt","r+")) == NULL)
{
puts("文件访问失败.退出");
getch();
exit(1);
}
else
{
i=fread(grade,sizeof(struct STDEN),N,std);
fclose(std);
for(i=0;i<N;i++)//计算总分,平均分
{
Sum+=grade[i].chinese+grade[i].english+grade[i].math;
Chinese+=grade[i].chinese;
CH[i]=grade[i].chinese;//给另外一个数组,方便排序
English+=grade[i].english;
EN[i]=grade[i].english;
Math+=grade[i].math;
MH[i]=grade[i].math;
}
y: system("cls");
puts("\t1.全班成绩查询.\n");
puts("\t2.班级总成绩查询.\n");
puts("\t3.班级平均成绩查询.\n");
puts("\t4.最高分查询.\n");
puts("\t5.最低分绩查询.\n");
puts("\t6.全班从高到低排列.\n");
switch(getch())
{
case '1':
system("cls");
puts("学号\t姓名\t语文\t英语\t数学\n");
for(i=0;i<N;i++)
{
printf("%s\t%s\t",grade[i].stdNum,grade[i].stdName);
printf("%.2f\t%.2f\t%.2f\n",grade[i].chinese,grade[i].english,grade[i].math);
}
puts("继续查询请按 Y 退出请按任意键");
if(getch()=='y')
goto y;
break;
case '2':
system("cls");
puts("全部总成绩\t语文科总成绩\t英语科总成绩\t数学科总成绩\n");
printf("%d\t\t%d\t\t%d\t\t%d",Sum,Chinese,English,Math);
puts("\n继续查询请按 Y 退出请按任意键");
if(getch()=='y')
goto y;
break;
case '3':
system("cls");
puts("语文\t英语\t数学\t全班\n");
printf("%d\t%d\t%d\t%.2f",Chinese/N,English/N,Math/N,Sum/3.0);
puts("\n继续查询请按 Y 退出请按任意键");
if(getch()=='y')
goto y;
break;
case '4':
system("cls");
printf("学好%d 成绩最好!\n", Max(grade, N) + 1);

puts("\n继续查询请按 Y 退出请按任意键");
if(getch()=='y')
goto y;
break;
case '5':
system("cls");
printf("学好 %d 需要多加努力\n",Min(grade,N) + 1);
puts("\n继续查询请按 Y 退出请按任意键");
if(getch()=='y')
goto y;
break;
case '6':
system("cls");
puts("\t1-语文成绩排名");
puts("\t2-英语成绩排名");
puts("\t3-数学成绩排名");
switch(getch())
{
case '1':
system("cls");
puts("语文成绩排名:\n");
Bubblesort(CH);
PrintBubblesort(CH);
break;
case '2':
system("cls");
puts("英语成绩排名:\n");
Bubblesort(EN);
PrintBubblesort(EN);
break;
case '3':
system("cls");
puts("数学成绩排名:\n");
Bubblesort(MH);
PrintBubblesort(MH);
break;

}
puts("\n继续查询请按 Y 退出请按任意键");
if(getch()=='y')
goto y;
break;
default:
puts("输入有误.重新输入");
getch();
goto y;
break;
}
}
}

int main()
{
a: system("cls");
puts("********学生成绩录入与查询系统********\n");
puts("\t1-成绩录入.\n");
puts("\t2-成绩查询.\n");

switch(getch())
{
case '1':
AddMessage();
break;
case '2':
ReadMessage();
break;
default:
puts("输入无效,重新输入");
getch();
goto a;
break;
}


}
babyzhuangsir 2009-09-07
  • 打赏
  • 举报
回复
我也在网上找过,可是很多都有错误,而且都不知道怎么改。我c语言只学过些皮毛。大学里学过一个学期。几乎才刚入门。
babyzhuangsir 2009-09-07
  • 打赏
  • 举报
回复
我的邮箱是594869969@qq.com或zhuangchengqian@yahoo.cn
我新手,不知还有分数,你若要我都给你了。
houqidian 2009-09-07
  • 打赏
  • 举报
回复
已经发送
whoname 2009-09-07
  • 打赏
  • 举报
回复
我也要 同求 dajiao8@sina.com
houqidian 2009-09-06
  • 打赏
  • 举报
回复
写个邮箱吧 发给你
norrin159 2009-09-06
  • 打赏
  • 举报
回复
这个啊..
我也很想帮你可是我能力不差一点....
你可以到威客那里发布任务...让别人帮你做...
不过得花RMB...
mstlq 2009-09-06
  • 打赏
  • 举报
回复
fscanf
jinglijun 2009-09-06
  • 打赏
  • 举报
回复
这个网上一大把的啊!
代码好多呢!
自己找吧!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧