第一篇:用c语言编写一个成绩管理系统
程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:(1)主菜单 学生成绩管理系统
1、成绩录入
2、成绩查询
3、成绩统计
4、退出(2)各菜单项功能 ① 成绩录入:输入学生的学号、姓名及三门课的成绩; ② 成绩查询:(至少一种查询方式)。v 按学号查询学生记录。v 查询不及格学生的记录。③成绩统计: v 计算学生的平均分; v 根据学生的平均分高低,对学生的数据进行排序后输出; v 对学生单科成绩排序,输出学生姓名与该科成绩; ④退出系统:退出整个系统(即主菜单)。(3)结构体数组: #define N 30 struct student {int num;/* 定义学号*/
char name[20];/* 定义姓名*/
float score[3];/* 定义存贮三门课成绩的数组*/
float average;/* 定义平均成绩*/
};struct student stu[N];/* 定义结构体数组,存贮多个学生的记录*/
.#include
#include
#include
struct student
{ int num;char name[20];
float score[4];
float average;
}
stu[10000];
long t,max;
bool unpass[1000];
FILE *fstu=fopen(“stud.dat”,“at+”);
int init()
{
int no,i;
float s[4],ave;
char nam[20];
while(!feof(fstu))
{
fscanf(fstu,“%d”,&no);
fscanf(fstu,“%s”,nam);
fscanf(fstu,“%f%f%f%f”,&s[1],&s[2],&s[3],&ave);
if(no>max)
max=no;
stu[no].num=no;
strcpy(stu[no].name,nam);
unpass[no]=false;f
or(i=1;i<=3;i++)
{
stu[no].score[i]=s[i];
if(s[i]<60)
unpass[no]=true;
}
stu[no].average=ave;
}
}
int stuinsert()
{
int no,i;
float s[3],sum;
char nam[20],cha;
loop:printf(“请输入学生的学号、姓名及三门课的成绩 n”);
scanf(“%d”,&no);scanf(“%s”,nam);
scanf(“%f%f%f/n”,&s[1],&s[2],&s[3]);
if(no>max)
max=no;
stu[no].num=no;
sum=0.0;
strcpy(stu[no].name,nam);
unpass[no]=false;
for(i=1;i<=3;i++)
{
stu[no].score[i]=s[i];
sum=sum+s[i];
if(s[i]<60)
unpass[no]=true;
}
stu[no].average=sum/3.0;
fprintf(fstu,“n”);
fprintf(fstu,“%d %s %f %f %f %fn”,stu[no].num,stu[no].name,stu[no].score[1],stu[no].score[2],stu[no].score[3],stu[no].average);
}
int find(int x)
{
long i,no;
switch(x)
{
case 1:printf(“请输入学号:”);
scanf(“%d”,&no);
printf(“%d %s %f %f %f %fn”,stu[no].num,stu[no].name,stu[no].score[1], stu[no].score[2],stu[no].score[3],stu[no].average);
break;
case 2:for(i=1;i<=max;i++)if(unpass[i])printf(“%d %s %f %f %f %fn”,stu[i].num,stu[i].name,stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].average);
break;
}
}
int sort(int x)
{
extern int headprint(int x);
student so[1000];
int i,j,k,n;
switch(x)
{
case 1:for(i=1;i<=max;i++)if(stu[i].num==i)printf(“%d %s %fn”,i,stu[i].name,stu[i].average);
break;
case 2:n=0;
for(i=1;i<=max;i++)
{
j=1;if(stu[i].num==i)
while((so[j].average>stu[i].average)&&(j<=n))
j++;n++;
for(k=n;k>=j;k--)so[k]=so[k-1];so[j]=stu[i];
}
for(i=1;i<=n;i++)
printf(“%d %s %f %f %f %fn”,so[i].num,so[i].name,so[i].score[1],so[i].score[2],so[i].score[3],so[i].average);break;case 3:headprint(4);
}
}
int othersort(int x)
{
extern int headprint(int x);
student so[1000];
int i,j,k,n,q;q=0;
switch(x)
{
case 1:if(q==0)q=1;
case 2:if(q==0)q=2;
case 3:if(q==0)q=3;
n=0;
for(i=1;i<=max;i++)
{
j=1;
if(stu[i].num==i)
while((so[j].score[q]>stu[i].score[q])&&(j<=n))
j++;
n++;
for(k=n;k>=j;k--)
so[k]=so[k-1];
so[j]=stu[i];
}
for(i=1;i<=n;i++)
printf(“%d %s %fn”,so[i].num,so[i].name,so[i].score[q]);
break;
}
}
int select(int x)
{
extern int headprint(int x);
int p;
switch(x)
{
case 1:scanf(“%d”,&p);
switch(p)
{
case 1:stuinsert();
break;
case 2:headprint(2);
break;
case 3:headprint(3);
break;
case 4:t=0;
break;
}
break;
case 2:scanf(“%d”,&p);
find(p);
break;
case 3:scanf(“%d”,&p);
sort(p);
break;
case 4:scanf(“%d”,&p);
othersort(p);
break;
}
}
int headprint(int x)
{
switch(x)
{ case 1:printf(“学生成绩管理系统n”);
printf(“
1、成绩录入n”);printf(“
2、成绩查询n”);
printf(“
3、成绩统计n”);
printf(“
4、退出n”);
select(x);
break;
case 2:printf(“
1、按学号查询学生记录n”);
printf(“
2、查询不及格学生的记录n”);
select(x);
break;
case 3:printf(“
1、计算学生的平均分n”);
printf(“
2、根据学生的平均分高低,对学生的数据进行排序后输出n”);
5printf(“
3、对学生单科成绩排序,输出学生姓名与该科成绩n”);select(x);
break;
case 4:printf(“
1、第一科n”);printf(“
2、第二科n”);printf(“
3、第三科n”);select(x);break;;
}
}
int main()
{ max=0;t=1;
init();
loop:headprint(1);
if(t!=0)
goto loop;
}
第二篇:学生成绩管理系统毕业论文C语言
111111111学院
毕 业 论 文
题 目
学生成绩管理系统
姓 名 1 1 1 所在系别 计 算 机 系 专业班级 计算机应用技术计算机111班
学 号 1111111111 指导教师 1 1 1 日 期
2012 年 4 月 15 日
临汾职业技术学院 09届计算机应用技术专业毕业论文
目 录
摘 要 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„1
临汾职业技术学院 09届计算机应用技术专业毕业论文
学生成绩管理系统
计算机111班 1111 指导老师 111
摘 要:学生成绩管理系统是为了实现学校对学生成绩管理的系统化、规范化和自动化,从而提高学校管理效率而设计的。它完全取代了原来一直用人工管理的工作方式,避免了由于管理人员的工作疏忽以及管理质量问题所造成的各种错误,为及时、准确、高效的完成学生成绩管理提供了强有力的工具和管理手段。学生成绩管理系统是一个中小型数据库管理系统,它界面美观、操作简单、安全性高,基本满足了学生成绩管理的要求。
本系统是在以ACCESS2003作为后台数据库来开发的。学生成绩管理系统在运行阶段,效果好,数据准确性高,提高了工作效率,同时也实现了学生成绩管理计算机化。关键字: 成绩 管理系统 数据库
Abstract:The system of “The Managment of Student's Mark” has been designed mainly for acheiving such goal of letting the students' marks to be well-managed and modelized automaticly in order to higher the school's managing speed.it has already replaced the original artificial method completely thus the avoiding of wrongs that could be caused by carelessness and the lack of managing skill.due to the more accurate results within a shorter time, the system is obviously providing a stronger managing mean.“The Managment of Student's Mark” is a middle-sized system of data Management, which is both simple-controlling and safe.this technique is the nowadays best system towards the management of student's marks since it is now being mostly satisfied.The system's opening relies on ACCESS2003 as a backup of the data management.this technology not only shortened the managing time but also, it hightlights the high-quality by providing more accurate datas.on top of it, it has also put the computerized “The Managment of Student's Mark” into practice.Key word: Mark
Administrative System
The Database
临汾职业技术学院 09届计算机应用技术专业毕业论文
学校对系统的开发大力支持。因此经济上是可行的。
本系统可以马上开始实施,并尽可能做到提前完成。从人力资源优化角度来说,可以充分利用学校已有人力资源。从开发成本角度来说,将支出成本降到最底。所以在三个可选择的方案中推荐此方案为最佳方案。
临汾职业技术学院 09届计算机应用技术专业毕业论文
2.4 系统功能模块设计
该系统的目标是提高学生成绩管理的效率,通过本系统可以对学生个人信息、课程和任课教师信息、选课信息进行管理和维护。该系统分为教师权限和学生权限,主要功能包括: 1.用户管理 2.基于数据管理
3.学生对个人数据的查询及管理 具体模块功能如下图2-1,图2-2:
图2-1
临汾职业技术学院 09届计算机应用技术专业毕业论文
图2-2
临汾职业技术学院 09届计算机应用技术专业毕业论文
3:课程表中的课程号与学生成绩表中的课程号对应,课程表中的课程号依附于学生成绩表中的课程号。
4:课程号于老师是一对一的关系,课程名对成绩是一对一的关系。
学号于课程号同样是一对多的关系,课程号对成绩是一对多的关系,一个学号和一个课程号对于成绩是一一对应的关系。E-R图如下图3-1
图3-1
3.3 数据库逻辑结构设计
学生成绩信息系统中的关系模式如下:
学生基本信息(学号,姓名 ,性别),主键是学号。学生成绩表(学号,课程号,成绩),主键是学号+课程号。课程表(课程号,课程名,教师姓名)。主键是课程号。
临汾职业技术学院 09届计算机应用技术专业毕业论文
临汾职业技术学院 09届计算机应用技术专业毕业论文
图4-3
图4-4
4.2 成绩信息模块的设计
这一模块的主要功能是用于实现对学生各科成绩的录入,修改与查询。学生成绩录入,修改界面图4-5:
临汾职业技术学院 09届计算机应用技术专业毕业论文
图4-5
学生成绩查询界面图4-6:
临汾职业技术学院 09届计算机应用技术专业毕业论文
图4-6
4.3 添加信息模块的设计
这一模块的主要功能是对教师,学生信息的录入,修改与查询。图4-7,图4-8,图4-9:
图4-7
临汾职业技术学院 09届计算机应用技术专业毕业论文
图4-8
图4-9:
临汾职业技术学院 09届计算机应用技术专业毕业论文
4.4 查询统计模块的设计
这一模块的主要功能是对学生选课及教师授课信息的查询。图4-10,图4-11,图4-12:
图4-10:
临汾职业技术学院 09届计算机应用技术专业毕业论文
图4-11
图4-12
4.5 开发中的难点和解决技巧
1.一个全面的Access应用至少会涉及到以下三种基本Access 对象类型:(1)表用于存储你或其他人向数据库中添加的数据。
(2)窗体用于显示和输入数据,控制其他窗体的打开和关闭以及打印报表。
临汾职业技术学院 09届计算机应用技术专业毕业论文
(3)报表打印表中的细节信息、总结信息或者将两者都进行打印。2.Access模块:包含VBA子过程和函数(公共,任何窗体或报表均可访问)要想成为一个完善的关系型数据库管理系统(RDBMS),一个应用必须具备以下四个基本功能,其中每个功能都有其自己的表现形式(或者视图):(1)数据组织(表的创建和操作)
(2)表链接和数据提取(查询,临时表等)(3)数据输入和编辑(窗体实现)(4)数据表示(报表)
3.数据库实用工具(一些需要在不打开数据库的情况下执行)
(1)压缩和修复(最好压缩和修复为新数据库,防止数据库不小心损坏不能恢复)(2)添加切换面板窗体(没有将创建新)
(3)创建.mde文件(编译过的VBA代码,源文件不可用,用户将不能再修改其中的设计对象)4.设计表需要注意的事项
(1)字段名称:不能重复,最长64字符,可中间包含(空格,“。”没“!”和“[]”
(2)数据类型,说明,主键,字段大小,格式(不影响值本身,只是显示方式),Precision(Decimal类型特有,指定总共用多少数位表示一个数值,默认18位),Scale(Decimal特有,决定小数位数),小数位数,输入掩码,标题,默认值,有效性规则,有效性文本,必填字段,允许0长度,索引,新值(自动编号类型特有)5.字段类型需要注意的事项
(1)文本:默认,最大255个字符(指定长度后,如果输入数据超出,将自动截去多余)(2)备注:最大65535个字符(不能作为关键字段)(3)数字型:根据字段大小属性设置一个合适的类型
(4)自动编号:(长整型),产生方法取决于新值属性(最大20亿左右)
(5)Yes/No:逻辑(布尔)字段(True:-1,False:0),可被索引,但不能作为关键字段(6)货币:currency,固定格式(小数4位)
6.设置“主键”:唯一性,可创建多字段的主键和相应的索引
临汾职业技术学院 09届计算机应用技术专业毕业论文
求,能够完成学生信息的存储和成绩的查询以及各类相关报表的打印。并提供部分系统测试功能,使用户方便进行数据备份和恢复、数据删除。对于数据的一致性的问题也通过程序进行了有效的解决。
但是由于毕业设计时间较短和本人水平所限,所以该系统还有许多不尽如人意的地方,希望使用者能给予指正,这些都有待进一步改善。
致谢
在此更要感谢我的导师和专业老师,是你们的细心指导和关怀,使我能够顺利的完成毕业论文。在我的学业和论文的研究工作中无不倾注着老师们辛勤的汗水和心血。老师的严谨治学态度、渊博的知识、无私的奉献精神使我深受启迪。从尊敬的导师身上,我不仅学到了扎实、宽广的专业知识,也学到了做人的道理。在此我要向我的导师致以最衷心的感谢和深深的敬意。
参考文献
[1]白以恩.计算机网络基础及应用.哈尔滨:工业大学出版社,2000 [2]包锦阳.大专生毕业论文(设计)写作指导.浙江大学出版社,2004 [3] 李俊德.ACCESS2003入门与实例演练.中国青年出版社,2005 [4]张泽虹.数据库原理及应用:Access2003.电子工业出版社,2005 [5]彭湘凯,曾光辉.数据库原理与应用.机械工业出版社,2007 [6]楼土明.信息系统应用与开发.浙江摄影出版社,2009 [7]张作华.管理制度——人事与组织机构管理制度.伊犁人民出版社,2000 [8]毛国君.高级数据库原理与技术.人民邮电出版社,2004 [9]上海市教育委员会.信息系统与数据库技术学习指导及习题解析.机械工业出版社,2009 [10]何宁,黄文斌,熊建强.数据库技术应用教程.机械工业出版社,2007 [11]吴京慧,刘爱红,廖国琼.数据库系统原理与设计实验教程.清华大学出版社,2009 [12]刘晓强.信息系统与数据库技术.机械工业出版社,2008 [13]丁宝康,陈坚.数据库系统工程师考试全程指导.清华大学出版社,2006 [14]张平.数据库应用基础Access2003.人民邮电出版社,2007
临汾职业技术学院 09届计算机应用技术专业毕业论文
[15]魏茂林.数据库应用技术.电子工业出版社,2009 [16]黄河,乐磊.微软解疑专家(5)——Access数据库.北京大学出版社,2001 [17]神龙工作室.新编Access2003数据库管理入门与提高.人民邮电出版社,2007 [18]启明工作室.ACCESS 数据库应用实例完全解析.人民邮电出版社,2007 [19]高英,张晓冬.ACCESS数据库应用系统开发与实例.人民邮电出版社,2008 [20]王宇虹.专家门诊--ACCESS开发答疑200问1CD.人民邮电出版社,2009
第三篇:c语言实验报告三 学生成绩管理系统
1.实验内容
实现一个学生成绩处理程序,先输入多名学生的学号和成绩,然后进入菜单,可以选择打印,添加,修改,删除或查询成绩(学号查询和成绩段查询)。
2.实验步骤 2.1 程序1 2.1.1 程序功能
这是一个学生成绩处理程序,通过用户输入多名学生的学号和成绩,然后进入菜单,可以选择打印,添加,修改,删除或查询成绩(学号查询和成绩段查询)。2.1.2 设计思路
将一个大程序分块化处理,各个部分先用普通方法实现,在能运行的条件下改用插入排序和折半查找实现。先实现输入成绩和菜单,再一项一项实现菜单中的功能。
2.1.3 流程图或其他描述(不要求可以不写)
2.1.4 程序代码(要有注释)
//实现一个学生成绩处理程序,可以选择打印、添加、修改、删除或查询成绩(学号和成绩段查询)
#include
typedef struct student { long num;int score;}STU;
STU stu[N];int n=0;int KEY=0;int k;
void Input();void Output();void Add();void Direct();void Delete();void Search();void Sch();void Save();void Read();
void main(){
switch(chos){ case 1: Input();break;system(“cls”);printf(“n”);printf(“学生成绩管理系统nn”);printf(“1.录入n2.显示n3.添加n4.修改n”);printf(“5.删除n6.查找n7.查询n8.退出n”);printf(“n请选择: ”);scanf(“%d”, &chos);int chos;case 2:
} Output();break;case 3: Add();break;case 4: KEY = 1;Search();break;case 5: Delete();break;case 6: Search();break;case 7: Sch();break;case 8: exit(0);break;default:
} printf(“错误!请按要求输入!”);Sleep(2000);main();void Input(){
} int i=-1;system(“cls”);printf(“当输入学号为负时返回!n”);do{
i++;printf(“n”);printf(“请输入第%2d个学生的学号: ”, i+1);scanf(“%ld”, &stu[i].num);if(stu[i].num < 0)break;printf(“请输入第%2d个学生的成绩: ”, i+1);scanf(“%d”, &stu[i].score);n++;}while(i
} Read();printf(“nn任意键返回!”);getchar();getchar();main();void Add(){
for(i=0;i } if(stu[N-1].num < stu[i].num){ for(j=n;j>i;j--){ } stu[i].num = stu[N-1].num;stu[i].score = stu[N-1].score;break;stu[j].num = stu[j-1].num;stu[j].score = stu[j-1].score;}else{ } stu[n].num = stu[N-1].num;stu[n].score = stu[N-1].score;break;}n++;printf(“修改后的”);Save();void Direct(){ } void Delete(){ system(“cls”);printf(“请输入要删除信息的学生学号: ”);scanf(“%ld”, &del);getchar();printf(“确认删除?(Y/N)”);int i, del;char key;printf(“请输入修改后的成绩: ”);scanf(“%d”, &stu[k].score);printf(“修改后的成绩为:n”);printf(“t%8ldt%dn”, stu[k].num, stu[k].score);printf(“nn”);printf(“修改后的”);Save(); } scanf(“%c”, &key);if(key=='y' || key=='Y'){ } printf(“修改后的”);Save();for(i=0;i } if(del == stu[i].num){ } stu[i] = stu[i+1];n-= 1;void Search(){ int i;char key = 'y'; } long search;system(“cls”);if(KEY==1)printf(“n请输入要修改成绩学生的学号: ”);else printf(“n请输入要查询成绩学生的学号: ”);scanf(“%ld”, &search);for(i=0;i } if(KEY == 1)Direct();KEY = 0;if(search == stu[i].num){ } printf(“学生信息为:n”);printf(“t%ldt%dn”, stu[i].num, stu[i].score);k = i;void Sch(){ } void Save(){ printf(“任意键返回!”);getchar();getchar();main();for(i=0;i } if(stu[i].score>=a && stu[i].score<=b)printf(“t%ldt%dn”, stu[i].num, stu[i].score);system(“cls”);printf(“请输入您要查询的成绩段(A B): ”);scanf(“%d %d”, &a, &b);printf(“符合条件的学生有:n”);int i, a ,b; } FILE *fp;if((fp=fopen(“score.bin”, “wb”))== NULL){ } fwrite(stu, sizeof(STU), n, fp);fclose(fp);printf(“Failed to save the data!n”);exit(0);printf(“学生成绩已储存在”score.bin“中!n”);printf(“nn任意键返回!”);getchar();getchar();main();void Read(){ FILE *fp;int i, total; } printf(“学生信息:n”);if((fp=fopen(“score.bin”, “rb”))== NULL){ } printf(“Failed to read the data!n”);exit(0);for(i=0;!feof(fp);i++){ } fclose(fp);fread(&stu[i], sizeof(STU), 1, fp);total = i-1;for(i=0;i 3.实验体会 3.1 调试中出现的问题及解决过程 在程序中运用数组时还是不够熟练,调试时总出现指代不明或无法显示所要内容的情况,在认真看老师课上例子后找出错误所在,修改后运行成功。 3.2 心得体会 3.3 实验改进建议 在查询某个学生成绩,可实现查询第n-m名学生成绩,查询分数在n-m之间的学生成绩,查询平均成绩;学生成绩修改(增加、删除、修改)等。 课程设计题目:简单的学生成绩管理的程序 要求: 一、由键盘输入原始数据。原始数据内容如下: 学号姓名C程序设计高等数学英语线性代数 1王..80808080 2张..90909090 注:要求至少有20个学生的原始数据 二、实现以下功能。 程序要求主函数是一个功能选择菜单,其它各功能用函数实现。功能要求如下: 1、原始数据的输入 2、计算每位同学的平均分 3、计算每门课程的平均分 4、计算各分数段(90-100、80-89、60-79、60以下)的人数 5、对这些同学的成绩按平均分排序,给出名次。 6、对原始数据可以进行增、删、改的编辑操作。 7、按学号查询学生。找到则显示该生信息,否则提示未找到。 8、原始数据可以保存为文件,也可以从文件载入。 注:程序统计输出结果如下: 学号姓名C程序设计高等数学英语线性代数平均分名次 1王..80808080802 2张..90909090901 … 各科平均分8585858585 C程序设计高等数学英语线性代数平均分 90-10011111 80-8911111 60-6900000 60以下00000 C语言课程设计——学生成绩管理系统 个人心得体会 (徐州工程学院 14计嵌1班 07组 张凯) 这一周以来的课程设计,不仅让我明白了C语言的确是一门很有用的,但是又是不容易的一门课程。起初刚开始做课程设计时,以为这个课程设计不会有多难,只不过是把多个函数组合起来就好了,但是,经过这一星期的编程,发现要完完整整把程序按照要求编出来是一件很不容易的事情。然而在这一周以来的学习中,也对C语言这门课程有了更加的了解和学习。 在整个编程的过程中,可以说遇到了很多难题,但是让我印象最深刻的是在编写从某文件中读取学生信息这个程序时所遇到的困难。起初,程序时编写出来了,在组建时也没有错误,但是就是实现不了这个功能,接着就是整整一天的苦战;终于,能够读取文件中的信息了,可是,新问题又来了,在显示读取的信息时出现了乱序。另外在编写加密代码的时候竟然忘记了将其放在主函数中运行闹了笑话,在指导老师的帮助下最后解决了这个问题。 每天看到一行行代码着实有时让人头大。然而在这个程序完整地编写下来,我觉得编写程序需要很大的耐心,一个稍微大点的程序就有个几百甚至上千行,没有耐心是很难做得成功的。当然细心也很需要,在编程的过程中有很多错误都是自己的粗心造成的,有时甚至自己多次检查都看不出来,这样一来,会造成时间的大量浪费。 这次的课程设计也是一次很好的对自我的检查。它让我知道了自己在C语言的学习上还不够认真刻苦,很多知识点还是没有很好的掌握,甚至有些知识点很生疏,这也许就是我在编写从某文件中读取学生信息这一函数时老碰壁的原因所在!从这一点上来看,发现我对待学习的态度还不够端正,有待加强。 不管怎么说,经过这一次课程设计,在C语言方面的收获最大,让我读代码的能力大大提升了不少,也巩固了很多知识。同时也受到了指导老师刘云、邹文辉的细心指导,非常感谢!第四篇:C语言课程设计任务书(学生成绩管理系统)
第五篇:C语言课程设计学生成绩管理系统个人总结