一个学生成绩管理系统

到百度贴吧首页
新闻   网页   贴吧   知道   MP3   图片   视频   百科
    吧内搜索 | 帮助

一个学生成绩管理系统

1楼

学生成绩管理系统
计算机网络安全研究协会  赵飞宇


/*这是一个学生管理系统,它有输入,输出,求和,查询等几项功能*/
#include <conio.h>
#include <stdio.h>
FILE *fp;
int a[100][10];       /*定义一个二位数组用来存放学生成绩*/
int stu;
inputx()
{
gotoxy(15,13);
textcolor(RED);
printf("请输入你们班的学生数:");
scanf("%d",&stu);
}
input() /*输入学生成绩*/
{
int i;
for(i=1;i<=stu;i++)
{  scanf("%8d%8d%8d%8d%8d%8d",&a[i][1],&a[i][2],&a[i][3],&a[i][4],&a[i][5],&a[i][6]);
}
}
print1() /*输出成绩表,并求总分,平均分和排名次*/
{
int i,j;
int b[100],c[100];
int t,loc,k;
fp=fopen("成绩表.txt","w");
for(i=1;i<=stu;i++) /*求总分和平均分*/
{
 a[i][7]=0;
 for(j=2;j<=6;j++)
a[i][7]=a[i][7]+a[i][j];
 a[i][8]=a[i][7]/5;
}
for(i=1;i<=stu;i++) /*排名*/
{
 b[i]=a[i][7];
 c[i]=i;
}
for(i=1;i<=stu-1;i++)
{
 loc=i;
 for(j=i+1;j<=stu;j++)
if(b[j]>b[loc])
loc=j;
if(loc!=i)
{t=b[i];b[i]=b[loc];b[loc]=t;
 t=c[i];c[i]=c[loc];c[loc]=t;
}
}
for(i=1;i<=stu;i++)
for(k=1;k<=stu;k++)
if(c[k]==i)
{
 a[i][9]=k;
 break;
}
for(i=1;i<=stu;i++) /*输出成绩表*/
{
for(j=1;j<=9;j++)
printf("%-6d",a[i][j]);
printf("\n");
}
/*以下输出成绩表存到一个文件中*/
fprintf(fp,"学号  语文  数学  英语  物理  化学  总分  均分  名次\n");
for(i=1;i<=stu;i++)
{
for(j=1;j<=9;j++)
fprintf(fp,"%-6d",a[i][j]);
fprintf(fp,"\n");
}
}
print2() /*求各科总分和平均分*/
{
int i,j;
int m[3][6];
for(j=2;j<=6;j++)
{
 m[1][j-1]=0;
 for(i=1;i<=stu;i++)
m[1][j-1]=m[1][j-1]+a[i][j];
 m[2][j-1]=m[1][j-1]/stu;
}
for(i=1;i<=2;i++)
{
for(j=1;j<=5;j++)
printf("%-6d",m[i][j]);
printf("\n");
}
}
change()    /*修改学生成绩*/
{
int m,b,c,i,n=0;
printf("请输入您要修改的学生的学号:");
scanf("%d",&m);
printf("1,语文;2,数学;3,英语;4,物理;5,化学;\n");
printf("请选择您要修改的科目:");
scanf("%d",&b);
printf("请输入新的学生成绩:");
scanf("%d",&c);
for(i=1;i<=stu;i++)
if(m!=a[i][1]) n++;
else {
n++;
break;
}
a[n][b+1]=c;
printf("\n重新输出成绩表\n");
printf("学号  语文  数学  英语  物理  化学  总分  均分  名次\n");
print1();
go();
}
go()     /*选择菜单*/
{
int n;
printf("\n现在您将会遇到以下几种情况:\n");
printf("1,继续查询;2,修改数据;3,重新运行;4,结束程序;\n");
printf("请您根据需要按键选择:");
scanf("%d",&n);
if(n==1)find();
if(n==2)change();
if(n==3)main();
if(n==4){
clrscr();
printf("*********感谢您使用本程序*********\n");
printf("这是我编写的第一个系统程序,为了感谢您的使用,请到3509寝室找李晓锋领奖\n");
printf("\n\n");
printf("再次感谢您的使用\n");
printf("------------ByeBye----------------");
}
getch();       
}
find1()      /*按名次查询学生成绩*/
{
int n,i;
printf("请输入您要查询的学生的名次:");
scanf("%d",&n);
printf("名次  学号  语文  数学  英语  物理  化学  总分  均分\n");
for(i=1;i<=stu;i++)
if(n==a[i][9])
{  printf("%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d",a[i][9],a[i][1],a[i][2],a[i][3],a[i][4],a[i][5],a[i][6],a[i][7],a[i][8]);
 break;
}
printf("\n");
go();     
}

2楼

find2()        /*按学号查询学生成绩*/
{
int n,i;
printf("请输入您要查询的学生的学号:");
scanf("%d",&n);
printf("学号  语文  数学  英语  物理  化学  总分  均分  名次\n");
for(i=1;i<=stu;i++)
if(n==a[i][1])
{  printf("%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d",a[i][1],a[i][2],a[i][3],a[i][4],a[i][5],a[i][6],a[i][7],a[i][8],a[i][9]);
 break;
}
printf("\n");
go();
}
find3_1(int n)    /*输出科目查询结果*/
{
int i;
printf("学号  名次  语文  数学  英语  物理  化学  总分  均分\n");
for(i=1;i<=stu;i++)
if(a[i][n+1]>=90)
{  printf("%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d%-6d",a[i][1],a[i][9],a[i][2],a[i][3],a[i][4],a[i][5],a[i][6],a[i][7],a[i][8]);
 printf("\n");
}
go();
}
find3()     /*科目选择菜单*/
{
int n;
printf("现有以下五种科目供查询:\n");
printf("1,语文;2,数学;3,英语;4,物理;5,化学;\n");
printf("请按键选择:");
scanf("%d",&n);
find3_1(n);
}
find()     /*查询方式菜单*/
{
int m;
printf("根据您的要求,有以下3种查询方式: \n");
printf("1,按名次查询;\n");
printf("2,按学号查询;\n");
printf("3,查询某科成绩在90分以上的学生的情况;\n");
printf("现在,按照您的需要请按键:");
scanf("%d",&m);
if(m==1)find1();
if(m==2)find2();
if(m==3)find3();
}
main()         /*主函数运用文本编辑对欢迎界面进行排版*/
{
int i;
clrscr();        /*清屏*/
textcolor(YELLOW);
{
gotoxy(20,9);
printf("******欢迎使用学生成绩管理系统!******\n");
gotoxy(20,11);
printf("------------制作人:赵飞宇------------\n");
gotoxy(20,13);
printf("******欢迎注册:zfy0422@sina.com******\n");
gotoxy(20,15);
printf("***********飞宇软件开发公司***********\n");
gotoxy(20,17);
printf("版权所有  未经同意  不得复制  违者必究");
}
for(i=1;i<=44;i++)          /*输出用#组成的矩形以达到美观的效果*/
{
{
gotoxy(16+i,19);
printf("#");
}
{
gotoxy(16+i,7);
printf("#");
}
}
for(i=1;i<=13;i++)
{
{
gotoxy(16,6+i);
printf("#");
}
{
gotoxy(61,6+i);
printf("#");
}
}
getch();
clrscr();
inputx();
clrscr();
gotoxy(3,3);
printf("\n学生成绩管理系统\n\n");
printf("一,输入成绩\n");
printf("请输入学生的成绩:\n" );
printf("学号    语文    数学    英语    物理    化学\n");
input();
printf("\n");
printf("二,输出成绩表\n");
printf("学号  语文  数学  英语  物理  化学  总分  均分  名次\n");
print1();
printf("\n");
printf("三,输出各科总分及平均分\n");
printf("语文  数学  英语  物理  化学\n");
print2();
printf("\n");
printf("四,查询\n");
find();
}
2003年11月
于平顶山


编者的话:
    这是我去年11月份编写的一个学生成绩管理程序,对于刚开始学编程的我来说是一个挑战,我完全没有把握。在那一个多星期中,每天我想的都是程序代码,许多数字和字符常在头脑中跳跃,就连做梦中还喊着“for”、“if”,实在是累的我筋疲力尽,但使我感到欣慰的是这个程序基本上编出来了。程序的大多内容都是那时编出来的,今年又加了些内容(包括欢迎界面、控制学生数、保存成绩表、美化界面等),总的来说还算不错。现在回想起当时编程的日子,实在不想从头再来一遍了,我曾跟晓锋说过,无论你做什么事情,只要全心投入达到疯狂的地步,你一定能够成功的,就算是累点,那还是值得的。当时他正在想破解网吧管理系统的方法,也是到了疯狂若痴,梦中犹然的地步,最后终于让他发现了许多突破网吧管理系统的办法。所以我劝戒每一个真正想学到东西的人,不要怕苦,不要怕累,上天不负有心人!
    虽然说C语言是一门基础语言,但为了以后能更好地学习其语言,我们最好能够熟练掌握C语言,许多高级程序员和真正的hacker在他们学习编程的过程中,C语言是必不可少的,并且致关重要,他们都提倡熟练掌握C语言。我们对C语言的学习不必过于深入,但要熟练掌握它的算法和编程思路,因为不管什么语言,他们的算法都是相通的,只要熟练掌握一门语言,就能够很快地学会其他语言。现在,我们开的是C语言课,而不是其他Basic语言、Java语言,我们只有先学好C语言。
    关于C语言的学习,我提几点建议,也是我的经验。在课堂上老师讲的听不懂没有关系,即便是听懂了记不住也没有关系,只要我们能够自己去编一些小程序,自己亲自去实践就一定能学得好。
在编程的过程中,切记不要心急,要一步一步的来,不清楚的地方一定要查书,用到什么就查什么,比如在用到printf这个输出函数时,不知道整型用什么输出格式,实型、字符型、字符串又用什么格式,我们就要认真地去看一下教材4.2章。当我们遇到困难实在不知道该怎么去做时,这时就要去请教高手,我平时就常向刘杨请教,与他交流一些编程中的经验和教训。
在编程过程中,我们要经常看一些经典的例子,要学会模仿,自己编程要有选择,既有趣又经典的程序,我们一定不要放过,我建议大家到图书馆里去借一本《趣味C程序》的书,它里面的内容也不是很难,正适合处学者,而且每个例子都很有趣,如果谁有兴趣可以去借一下。
另外,我建议大家一定要编一个大一点的程序,只有当你编一个大程序时,你才会遇到更大的苦难,学到更多的东西,不但能够发挥你的想象力拓宽你的思路,而且但你的程序编完时,你就会发现你的C语言已经运用到了得心应手的地步。去年我也是在编了学生成绩管理系统后才发现自己对C语言的掌握有点熟练了,此前,我虽然会编程,能够编一些书上的课后题,但总觉得自己运用C语言不够熟练,只有在编了那个程序后,才终于能够长吁一口气。
大家需要一个互相交流的环境,于是我给大家创造了一个环境,我们协会的目的就是为了真正地去学一些东西,编程是我们的首要选择,以后我们还会学到更多的东西。在此感谢大家对我的支持。
这篇文章是在此程序第二次打印时临时打上的,如有不切之处,请大家多多包涵。

计算机网络安全研究协会
赵飞宇
2004.3.24

3楼

学生成绩管理系统最好用链表思想,你的程序最多只能对100人成绩进行管理。不太好。
最好还要把输入的数据输入到文件中,那样会比较好一点。

4楼

是的,用链表是好办法,只不过我当时还不会,这个程序基本上是我学习c语言一个月编成的,今年用链表编过一个学校超市的商品管理系统。以上程序只是给初学者看的。
218.87.41.*

5楼

晕,,,,,,
写写思想就好了

219.134.10.*

6楼

我也是一个刚过C语言的学生,对它一点都不通。但看了你的想法以后对自己有了一点信心,谢谢你。你能告诉我用链表制作学校超市的商品管理系统的那个程序吗?

7楼

那位有兴趣来写个链表的,贴在这里,呵呵,

8楼

好的,既然版主有命,我就贴一个我写的商品管理程序和刘杨的一个商品管理程序,不过都很长,我写的短一些还有6,7K,刘杨的有30K,其他人的也都10K左右,大家要有耐心啊。
我的商品管理程序有六项功能,但是最后两项没有编。我们的程序都是用链表写的。

9楼

/*柳云飞的商品管理程序,此程序实现进货,销售,查看列表,插入删除等功能*/

#include <stdio.h>
#include <conio.h>
#include <bios.h>
#include <dos.h>
#include <malloc.h>
#define NULL 0
#define LEN sizeof(struct mcd)
struct data /*声明一个日期的结构体类型*/
{
 int year;
 int month;
 int day;
};
struct mcd /*声明有关商品信息的结构体类型*/
{
 int code; /*编 号*/
 char name[12]; /*品 名*/
 long price; /*单 价*/
 int num; /*数 量*/
 char place[20]; /*产 地*/
 struct data putdate; /*入库时间*/
 struct data selldate; /*销售时间*/
 struct mcd * next; /*运用指针处理链表*/
};
int n; /*记录链表有几条数据*/
struct mcd *head; /*声明链表头的指针*/

creat() /*输入商品信息的函数*/
{
struct mcd *p1,*p2;
n=0;
p1=p2=(struct mcd *)malloc(LEN); /*开辟一个新单元存放信息*/
head=p1;
loop: {
clrscr();
printf("商品录入系统\n");
printf("录入号:%d\n",n+1);
printf("编 码:");
scanf("%d",&p1->code);
printf("品 名:");
scanf("%s",&p1->name);
printf("单 价:");
scanf("%ld",&p1->price);
printf("数 量:");
scanf("%d",&p1->num);
printf("产 地:");
scanf("%s",&p1->place);
printf("入库时间:");
scanf("%d-%d-%d",&p1->putdate.year,&p1->putdate.month,&p1->putdate.day);
}
while(p1->num!=0)
{
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct mcd *)malloc(LEN);
goto loop;
}
p2->next=NULL;
main();
}

print() /*输出数据列表的函数*/
{
int m=0;
struct mcd *p;
clrscr();
printf("编 号||品 名||单 价||数 量|| 产 地 ||入 库 时 间\n");
p=head;
if(head!=NULL)
do
 {
printf("%-10d%-14s%-12ld%-10d%-22s%-4d-%-2d-%-2d\n",p->code,p->name,p->price,p->num,p->place,p->putdate.year,p->putdate.month,p->putdate.day);
p=p->next;
m=m+1;
if(m%23==0){gotoxy(10,25);printf("按任意键继续.");getch();}
 }while(p!=NULL);
getch();
main();
}

sell()
{
int code,m=3,ch;
long sum=0;
struct mcd *p1;
struct date today;
getdate(&today);
clrscr();
printf("商品销售系统\n");
printf("编 号||||品 名|||| 产 地 ||||单 价(元)||||出 售 时 间\n");
loop:
do{
gotoxy(23,25);
printf("按任意键继续,F2结帐,ESC键退出");
ch=bioskey(0);
}while(0);
switch(ch)
{
case 15360:{
if(sum==0)
{
gotoxy(1,m);printf("还没有购买商品!");
getch();
sell();
break;
  }
else {
gotoxy(1,m);
printf("------------------------------------------------------------------------------");
gotoxy(47,m+1);
printf("总价: %-12ld元",sum);
getch();
main();
break;
   }
 }
case 283:{main();break;}
default:
{
 gotoxy(23,25);
 printf("请输入商品编码,会显示商品信息");
 gotoxy(1,m);
 scanf("%d",&code);
   if(head==NULL)
{
printf("你还没有进货.");
getch();
main();
break;
}
 p1=head;
 while(code!=p1->code&&p1->next!=NULL)
 {p1=p1->next;}
   if(code==p1->code)
{
gotoxy(13,m);
printf("%-16s%-24s%-16ld%4d-%2d-%2d",p1->name,p1->place,p1->price,today.da_year,today.da_mon,today.da_day);
  m=m+1;
p1->num=p1->num-1;
sum=sum+p1->price;
}
 }
goto loop;
}
}

10楼


go()
{
int ch;
clrscr();
printf("请问你要进行什么操作?\n1,插入;2,删除;3,什么也不做;\n");
loop:
do{
ch=bioskey(0);
}while(0);
switch(ch)
{
case 561:insert();break;
case 818:del();break;
case 1075:main();break;
case 283:break;
default:{gotoxy(1,3);printf("请按数字键选择!");goto loop;}
}
getch();
main();
}

insert()
{
struct mcd *p0,*p1,*p2;
p0=p1=p2=(struct mcd*)malloc(LEN);
p1=head;
clrscr();
printf("请输入要插入的商品的信息:\n");
printf("编 码:");
scanf("%d",&p0->code);
printf("品 名:");
scanf("%s",&p0->name);
printf("单 价:");
scanf("%ld",&p0->price);
printf("数 量:");
scanf("%d",&p0->num);
printf("产 地:");
scanf("%s",&p0->place);
printf("入库时间:");
scanf("%d-%d-%d",&p0->putdate.year,&p0->putdate.month,&p0->putdate.day);
if(head==NULL)
{
head=p0;
p0->next=NULL;
}
else
{
while((p0->code>p1->code)&&(p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->code<=p1->code)
{
if(head==p1)head=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;p0->next=NULL;
}
}
n=n+1;
print();
}

del()
{
int code;
struct mcd *p1,*p2;
clrscr();
printf("请输入要删除商品的编号:");
scanf("%d",&code);
if(head==NULL)
{
printf("你还没有进货.");
getch();
main();
}
p1=head;
while(code!=p1->code&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(code==p1->code)
{
if(code==head)head=p1->next;
else  p2->next=p1->next;
n=n-1;
print();
}
else 
{
printf("找不到这条商品信息.");
getch();
print();
}
}



main()
{
do{
clrscr();
printf(" . : : \n");
printf(" '. :'''''''': : : :'''':'''':\n");
printf(" '. : : :'''''' :'''''' : : :\n");
printf(" ................ : : :', :', ''''':''''': : :\n");
printf(" '. .' : : : ', : ', : :....:....:\n");
printf(" '. .' : : ,' ,' : : : :\n");
printf(" '.' : : ', : : : :\n");
printf(".........:........... :........: : ', : :....:....:\n");
printf(" ............... :''''''''''''''': '''':'''' : \n");
printf(" : , , : :'''''': :'''''': ,' : : \n");
printf(" : , , : : : : : :''''''''': : ,' : \n");
printf(" : , , : : : : : : : : ,' ....:.... \n");
printf(" :, :''''''': : : : : : : : :,' : \n");
printf(" : : : : : : : : :'''''''''' ,' : \n");
printf(" : : : : : : : : :.......... ,' : \n");
printf(" : :.......: : : : : : : : ' : \n");
printf(" : : : : : : : : ......:.....\n");
printf(" : ..: :......: :......: :.........: \n");
gotoxy(60,19);
printf("赵飞宇制造 V1.0");
gotoxy(10,21);
printf("1,销售系统;2,进货系统;3,查看列表;4,插入删除;5,销售盈亏;6,帮助文档");
gotoxy(32,24);
printf("按ESC键退出");
key();
}while(0);
}

key()
{
int ch;
loop:
do{
ch=bioskey(0);
}while(0);
switch(ch)
{
case 561:sell();break;
case 818:creat();break;
case 1075:print();break;
case 1332:go();break;
case 283:break;
default:
{
gotoxy(30,22);
printf("请按数字键选择!");
goto loop;
}
}

}
/*以上程序由柳云飞编写,柳云飞系本人写小说的笔名*/

11楼

实在抱歉,程序我复制粘贴后就成这样了,排版格式都乱了,实在对不起了。
我的程序是最短的了,大家不要抱怨啊。
刘杨的程序太长了,有30k,以后我再贴吧。

218.22.29.*

13楼

我很佩服你
我学c语言有一阶段了,程序会一点
但是现在有人让我利用c语言的图形功能制作简单的菜单,结合键盘中断处理,完成简单的游戏程序设计。
程序我是写出来了,但是菜单怎么做啊

219.140.96.*

14楼

我对C语言很头疼,编程是不是要很有耐心啊!
61.144.50.*

15楼

错误不少
219.137.20.*

16楼

好复习呀!!!!!!
218.87.98.*

17楼

现在完全想也不敢想会编出这样的程序,只有靠以后努力学习了,怎么上课全能听懂,去编不出来呢,真的有点糊涂
221.12.10.*

18楼

别忘了还有会员
220.169.0.*

19楼

呵呵 还不错的
219.218.158.*

20楼

你们全都很厉害。惭愧啊
218.27.153.*

21楼

THANK YOU 
做为一个初学者,你的忠告很有帮助。

61.141.157.*

22楼

看到你说“这个程序基本上是我学习c语言一个月编成的”
我真的好佩服你,我断断续续学了一年多,循环的作业都不会,我要晕倒了!为什么会这样啊?

218.28.87.*

23楼

编程太难的,你可以编写一个学生考试系统吗,要求是可以对1000个学生使用,并且可以登陆,查找,删除,修改,输出,统计

24楼

大家都是C语言的学习者,我们可以共同的学习C语言么

25楼

我是一学计算机的学生,C语言也是我必须要学的,可是我学了有半年了,有许多的还不会,你学了一个月就能编了,我真的很佩服你,编程实在太难了,我现在都不知道怎么学了?
219.230.154.*

26楼

你的程序写的真不错,你的吃苦精神让我很佩服,虽然我对C语言一窍不通但你给了我一点自信,万分感谢!

27楼

我的天,
这么长的程序
好恐怖啊

219.140.59.*

28楼

不错,我也是老师要作业啊
才来看看的啊

219.157.68.*

29楼

你她妈的好强!
221.4.182.*

30楼

这种程序也需要你花一个星期,
弱智 本人通过1个星期的自学c语言,
用了1天的时间就能够编出用衔接管理的程序了。
你们谁要就把自己的邮箱地址发到我的邮箱中,
我给你们。

218.28.39.*

31楼

靠 你是天才么????
自以为很吊么?
垃圾 
鄙视你

发表回复

内 容:
用户名:
  
©2010 Baidu 贴吧协议  意见反馈