汇编课程设计成绩管理系统+源代码复习过程

合集下载

C语言课程设计报告+源代码(成绩管理系统)

C语言课程设计报告+源代码(成绩管理系统)

课程设计报告(专科)课程:C语言程序设计学号:0810720070姓名:班级:08级计算机应用师范专科班教师:时间:2009.6.8~2009.6.19计算机科学与技术系附录:源程序代码#include"stdio.h"#include"string.h"#include "conio.h"void input(struct class_list cla[6]);void total(struct class_list cla[6]);void search(struct class_list cla[6]);void modify(struct class_list cla[6]);void display(struct class_list cla[6]);int i,j,a=0,b[11]; //定义为全局变量struct student{char sex[5];char name[20];int num;double score;};struct class_list{struct student stu[50];}cla[10];int main(){int choice;printf("------------欢迎使用C语言成绩管理系统------------\n\n\n");do{printf("1.录入成绩2.统计成绩3.成绩查询4.修改学生信息5.显示成绩单0.退出\n");printf("请输入你的选择:");scanf("%d",&choice);if(choice<0||choice>5){printf("无效选择,请重选:");scanf("%d",&choice);}printf("\n");switch(choice){case 1:printf("只能使用一次此功能,请不要重复使用!!\n");input(cla); //成绩录入break;case 2:total(cla); //统计成绩break;case 3:search(cla); //成绩查询break;case 4:modify(cla); //修改学生信息break;case 5:display(cla); //显示成绩单break;case 0:break;}}while(choice!=0);printf("谢谢使用!\n");return 0;}void input(struct class_list cla[]) //成绩录入{int date; //学期printf("请输入学期:");scanf("%d",&date);printf("请输入班级的个数:");scanf("%d",&a);for(i=0;i<a;i++){printf("class:%d\n",i+1); //输出班级号printf("请输入学生的个数:");scanf("%d",&b[i]);printf("\n学号不能重复\n");for(j=0;j<b[i];j++)//输入学生的信息{printf("学号:");scanf("%d",&cla[i].stu[j].num);printf("姓名:");scanf("%s",cla[i].stu[j].name);printf("性别:");scanf("%s",cla[i].stu[j].sex);printf("C语言成绩:");scanf("%lf" ,&cla[i].stu[j].score);}if(j>=b[i])printf("人数已满\n");}if(i>=a)printf("班级已满\n\n");}void total(struct class_list cla[]){double sum,average;for(i=0;i<a;i++){sum=0;average=0;for(j=0;j<b[i];j++)sum=sum+cla[i].stu[j].score;average=sum/b[i];printf("班级:%d 总分:%.2lf 平均分:%.2lf\n",i+1,sum,average);}}void search(struct class_list cla[]){int choice2,num2,flag;char name2[20];do{printf("1.按姓名查找2.按学号查找3.查找学生不及格名单0.退出\n");printf("请输入你的选择:");scanf("%d",&choice2);switch(choice2){case 1:flag=0;printf("请输入你要查找的学生姓名:");scanf("%s",name2);for(i=0;i<a;i++)for(j=0;j<b[i];j++)if(strcmp(name2,cla[i].stu[j].name)==0){printf("班级:%d 学号:%d 姓名:%s 性别:%s c语言成绩:%.2f\n",i+1,cla[i].stu[j].num,cla[i].stu[j].name, cla[i].stu[j].sex,cla[i].stu[j].score);flag=1;}if(flag==0)printf("没有此学生信息!\n");break;case 2:flag=0;printf("请输入你要查找的学生学号:");scanf("%d",&num2);for(i=0;i<a;i++)for(j=0;j<b[i];j++)if(num2==cla[i].stu[j].num){printf("班级:%d 学号:%d 姓名:%s 性别:%s C语言成绩:%.2lf\n",i+1,cla[i].stu[j].num,cla[i].stu[j].name, cla[i].stu[j].sex,cla[i].stu[j].score);flag=1;}if(flag==0)printf("没有此学生信息!\n");break;case 3:flag=0;for(i=0;i<a;i++)for(j=0;j<b[i];j++){if(cla[i].stu[j].score<60)printf("班级:%d 学号:%d 姓名:%s 性别:%s c语言成绩:%.2lf\n",i+1,cla[i].stu[j].num,cla[i].stu[j].name,cla[i].stu[j].sex,cla[i].stu[j].score);flag=1;}if(flag==0)printf("没有学生不及格!\n");break;case 0:break;}}while(choice2!=0);}void modify(struct class_list cla[]) //修改学生信息{int choice2,num2,num3;int k,p,flag;float score2;char name2[20],name3[20],ch;if(a==0){printf("无班级,无人数,无法修改!\n");return ;}do{printf("1.增加学生信息 2.删除学生信息 3.修改姓名 4.修改学号 5.修改C语言成绩 6.退出\n");printf("请输入你的选择:");scanf("%d",&choice2);if(choice2<1||choice2>9){printf("无效选择,请重选:");scanf("%d",&choice2);}switch(choice2){case 1: //插入学生printf("请输入想插入的班级号1~10:");scanf("%d",&p);if(p>a){printf("无此班级,请重新输入:");printf("班级数为1~%d:",a);scanf("%d",&p);}b[p-1]++; //人数增加printf("请输入学生信息:\n");printf("学号:");scanf("%d",&cla[p-1].stu[b[p]].num);printf("姓名:");scanf("%s",cla[p-1].stu[b[p]].name);printf("c语言:");scanf("%lf",&cla[p-1].stu[b[p]].score);printf("性别:");scanf("%s",&cla[p-1].stu[b[p]].sex);printf("班级:%d 学号:%d 姓名:%s 性别:%s C语言成绩:%.2lf \n\n",p,cla[p-1].stu[b[p]].num,cla[p-1].stu[b[p]].name,cla[p-1].stu[b[p]].sex,cla[p-1].stu[b[p]].score);break;case 2: //删除学生printf("请输入要删除的学生姓名:");scanf("%s",name3);for(i=0;i<a;i++)for(j=0;j<b[i];j++){if(strcmp(name3,cla[i].stu[j].name)==0){flag=1;printf("班级:%d 学号:%d 姓名:%s 性别:%s c语言成绩:%.2\nf",i+1,cla[i].stu[j].num,cla[i].stu[j].name,cla[i].stu[j].sex,cla[i].stu[j].score);printf("你确认要删除此学生吗?<y/n> ");ch=getch();if(ch=='y'){for(k=j;k<b[i];k++){strcpy(cla[i].stu[k].name,cla[i].stu[k+1].name);strcpy(cla[i].stu[k].sex,cla[i].stu[k+1].sex);cla[i].stu[k].score=cla[i].stu[k+1].score;cla[i].stu[k].num=cla[i].stu[k+1].num;b[i]--;}printf("你已成功删除!\n");}else {flag=1;printf("删除未完成!\n");}if(b[i]==0)printf("班级%d为空!\n\n",i+1);}if(flag==0)printf("没有此学生!\n");}break;case 3: //修改的学生姓名flag=0;printf("请输入要修改的学生姓名:");scanf("%s",name2);for(i=0;i<a;i++){for(j=0;j<b[i];j++){if(strcmp(cla[i].stu[j].name,name2)==0){printf("请输入修改后的学生姓名:");scanf("%s",name3);strcpy(cla[i].stu[j].name,name3);flag=1;}}}if(flag==0)printf("无此人信息\n");break;case 4: //修改的学生学号flag=0;printf("请输入要修改的学生学号:");scanf("%d",&num2);for(i=0;i<a;i++){for(j=0;j<b[i];j++){if(cla[i].stu[j].num==num2){printf("请输入修改后的学生学号:");scanf("%d",&num3);cla[i].stu[j].num=num3;flag=1;}}}if(flag==0)printf("无此人信息\n");break;case 5: //修改学生的c语言成绩flag=0;printf("请输入要修改的C语言成绩的学生姓名:");scanf("%s",name2);for(i=0;i<a;i++){for(j=0;j<b[i];j++){if(strcmp(cla[i].stu[j].name,name2)==0){printf("请输入修改后的C语言成绩:");scanf("%f",&score2);cla[i].stu[j].score=score2;flag=1;}}}if(flag==0)printf("无此人信息\n");break;case 6:printf("\n");break;}}while(choice2!=6);}void display(struct class_list cla[]) //输出成绩单{if(a==0){printf("无班级,无人数,无法输出\n");return ;}for(i=0;i<a;i++){printf("班级:%d\n",i+1);for(j=0;j<b[i];j++)printf("学号:%d 姓名:%s 性别:%s c语言成绩:%.2lf\n",cla[i].stu[j].num,cla[i].stu[j].name,cla[i].stu[j].sex,cla[i].stu[j].score);}printf("\n");}。

学生成绩管理系统=附源码=附源码

学生成绩管理系统=附源码=附源码

题目2学生成绩管理系统一、设计目的与内容1.设计目的用c语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。

可以建立函数输入二叉树。

要写明:存储结构、基本算法(可以使用程序流程图)、输入输出、源程序、测试数据和结果、算法的时间复杂度;2.设计内容:建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。

程序运行时显示一个简单的菜单,如:(1):信息输入(2):总分统计(3):平均分统计(4):总分排序(5):平均分排序(6):查询其中:(1):对4个学生的信息进行输入;(2):对每个学生的3门课程统计总分;(3):对每个学生的3门课程统计平均分;(4):对4个学生的总分按降序或升序排序并显示出来;(5):对4个学生的平均分按降序或升序排序并显示出来;(6):查询输入一个学号或姓名后,显示出该学生的有关信息;二、算法的基本思想程序分为6个功能模块:信息录入,总分统计,平均分统计,总分排序,平均分排序,查询。

其中总分排序功能模块还设了按总分降序和按总分升序两个菜单, 平均分排序功能模块还设了按平均分降序和按平均分升序两个菜单, 查询功能模块还设了按学号查询和按姓名查询两个菜单。

程度的总体设计思想如下图框架所示:三、测试数据第一个学生:姓名:小张学号:01Fox得分:67C得分:78 ENGLISH得分:87 第二个学生:姓名:小李学号:02Fox得分:66C得分:98 ENGLISH得分:78 第三个学生:姓名:小王学号:03Fox得分:88C得分:78 ENGLISH得分:65 第四个学生:姓名:小陈学号:04Fox得分:65C得分:79 ENGLISH得分:68 如图1-1所示:(图1-1)四、源程序及系统文件使用说明1、进入系统并输入测试数据(如上图1-1)2、测试总分统计(如图1-2)(图1-2)3、测试平均分统计(如图1-3)(图1-3)4、(1)测试总分降序排序(如图1-4)(图1-4)(2)测试总分升序排序(如图1-5)(图1-5)5、(1)测试平均分降序排序(如图1-6)(图1-6)(2)测试平均分升序排序(如图1-7)(图1-7)6、(1)测试按学号查询(如图1-8)(图1-8)(2)测试按姓名查询(如图1-9)(图1-9)另附部分程序代码:1、初试代码char stu[4][10];//学生char bb[3]={'0'};int num[4][4];//学号,成绩int t[4]={0,1,2,3};int i,j,a,m,temp,b,c,d,aa=0,k=0;int sum[4],sums[4],ave[4];//总分,平均分for(i=0;i<4;i++)sum[i]=0,sums[4]=0,ave[4]=0;H1:d=0;printf(" ==============学生成绩信息管理=================\n"); printf(" 1.信息输入\n");printf(" 2.总分统计\n");printf(" 3.平均分统计\n");printf(" 4.总分排序\n");printf(" —>(1)按总分降序排序\n");printf(" —>(2)按总分升序排序\n");printf(" 5.平均分排序\n");printf(" —>(1)按平均分降序排序\n");printf(" —>(2)按平均分升序排序\n");printf(" 6.查询\n");printf(" —>(1)按学号查询\n");printf(" —>(2)按姓名查询\n");printf(" ================================================\n"); printf("请选择操作项:");scanf("%d",&a);2、信息输入if(a==1){for(i=0;i<4;i++){printf("请输入第%d个学生的姓名:",i+1);scanf("%s",stu[i]);printf("学号:");scanf("%d",&num[i][0]);for(m=0;m<i;m++){if(num[i][0]==num[m][0]){printf("学号重复,请重新输入不同的学号!\n");printf("学号:");scanf("%d",&num[i][0]);}}printf("FOX得分:");scanf("%d",&num[i][1]);if(num[i][1]<0 || num[i][1]>100){printf("输入数值不合法,请输入0到100之间的数\n");printf("FOX得分:");scanf("%d",&num[i][1]);}printf("C得分:");scanf("%d",&num[i][2]);if(num[i][2]<0 || num[i][2]>100){printf("输入数值不合法,请输入0到100之间的数\n");printf("C得分:");scanf("%d",&num[i][2]);}printf("ENGLISH得分:");scanf("%d",&num[i][3]);if(num[i][3]<0 || num[i][3]>100){printf("输入数值不合法,请输入0到100之间的数\n");printf("ENGLISH得分:");scanf("%d",&num[i][3]);}printf("\n");}3、总分统计else if(a==2&&k==1)//总分统计{for(i=0;i<4;i++)for(j=1;j<4;j++)sum[i]=sum[i]+num[i][j];printf("学号姓名总分\n");for(i=0;i<4;i++)printf("%d %s %d\n",num[i][0],stu[i],sum[i]);printf("\n");printf("总分统计完成!是否继续(1.继续/2.退出)\n");scanf("%d",&c);if(c==1)goto H1;elseexit(1);}else if(a==3&&k==1)//平均分统计{for(i=0;i<4;i++){for(j=1;j<4;j++)sums[i]=sums[i]+num[i][j];ave[i]=sum[i]/3;}printf("学号姓名平均分\n");for(i=0;i<4;i++)printf("%d %s %d\n",num[i][0],stu[i],ave[i]);printf("\n");printf("平均分统计完成!是否继续(1.继续/2.退出)\n");scanf("%d",&c);if(c==1)goto H1;elseexit(1);}4、总分排序else if(a==4&&k==1)//总分排序{printf("总分排序:\n1.降序\n2.升序\n");scanf("%d",&aa);if(aa==1){printf("按总分降序排序如下:\n");//总分降序for(i=0;i<4;i++)for(j=i;j<4;j++)if(sum[t[i]]<sum[t[j]]){temp=t[i];t[i]=t[j];t[j]=temp;}for(i=0;i<4;i++)printf("%d %s %d\n",num[t[i]][0],stu[t[i]],sum[t[i]]);//输出学号姓名总分printf("\n");printf("总分降序排序完成!是否继续(1.继续/2.退出)\n");scanf("%d",&c);if(c==1)goto H1;elseexit(1);}else if(aa==2){printf("按总分升序排序如下:\n");//总分升序for(i=0;i<4;i++)for(j=i;j<4;j++)if(sum[t[i]]>sum[t[j]]){temp=t[i];t[i]=t[j];t[j]=temp;}for(i=0;i<4;i++)printf("%d %s %d\n",num[t[i]][0],stu[t[i]],sum[t[i]]);//输出学号姓名总分printf("\n");printf("总分升序排序完成!是否继续(1.继续/2.退出)\n");scanf("%d",&c);if(c==1)goto H1;elseexit(1);}}5、平均分排序else if(a==5&&k==1)//平均分排序{printf("平均分排序:\n1.降序\n2.升序\n");scanf("%d",&aa);if(aa==1){printf("按平均分降序排序如下:\n");//平均分降序for(i=0;i<4;i++)for(j=i;j<4;j++)if(ave[t[i]]<ave[t[j]]){temp=t[i];t[i]=t[j];t[j]=temp;}for(i=0;i<4;i++)printf("%d %s %d\n",num[t[i]][0],stu[t[i]],ave[t[i]]);//输出学号姓名总分printf("\n");printf("平均分降序排序完成!是否继续(1.继续/2.退出)\n");scanf("%d",&c);if(c==1)goto H1;elseexit(1);}else if(aa==2){printf("按平均分升序排序如下:\n");//平均分升序for(i=0;i<4;i++)for(j=i;j<4;j++)if(ave[t[i]]>ave[t[j]]){temp=t[i];t[i]=t[j];t[j]=temp;}for(i=0;i<4;i++)printf("%d %s %d\n",num[t[i]][0],stu[t[i]],ave[t[i]]);//输出学号姓名总分printf("\n");printf("平均分升序排序完成!是否继续(1.继续/2.退出)\n");scanf("%d",&c);if(c==1)goto H1;elseexit(1);}}6、查询else if(a==6&&k==1)//查询{printf("查询:\n1.学号\n2.姓名\n");scanf("%d",&aa);if(aa==1){printf("请输入查询学号:");//学号查询scanf("%d",&b);for(i=0;i<4;i++)if(num[i][0]==b){printf("学号:%d 姓名:%s\n",num[i][0],stu[i]);printf("FOX: %d C: %d ENGLISH: %d 总分:%d\n",num[i][1],num[i][2],num[i][3],sum[i]);d=1;printf("\n");printf("查询完成!是否继续(1.继续/2.退出)\n");scanf("%d",&c);if(c==1)goto H1;elseexit(1);}if(d==0){printf("没有该学生!\n");printf("是否继续(1.继续/2.退出)\n");scanf("%d",&c);if(c==1)goto H1;elseexit(1);}}else if(aa==2){printf("请输入查询姓名:");//姓名查询scanf("%s",bb);for(i=0;i<4;i++)if(strcmp(stu[i],bb)==0){printf("学号:%d 姓名:%s\n",num[i][0],stu[i]);printf("FOX: %d C: %d ENGLISH: %d 总分:%d\n",num[i][1],num[i][2],num[i][3],sum[i]);d=1;printf("\n");printf("查询完成!是否继续(1.继续/2.退出)\n");scanf("%d",&c);if(c==1)goto H1;elseexit(1);}if(d==0){printf("没有该学生!\n");printf("是否继续(1.继续/2.退出)\n");scanf("%d",&c);if(c==1)goto H1;elseexit(1); } } }五、心得体会通过本课程设计让我对用C语言编程以及算法的应用有了进一步的认识,对数据统计,排序,查询反面的编程以及信息录入和界面友好性设计方面都有了不同程度的学习,巩固和提高,另外,程序中应用到了各种算法让我更加深了对算法的理解与应用。

学生成绩管理系统源代码-(数据结构与算法课设)C语言版汇编

学生成绩管理系统源代码-(数据结构与算法课设)C语言版汇编

运行前需在功程里新建个ni.txt.内容如下7004 sun 98.0 89.0 97.0 94.7 284.0 005 li 98.0 48.0 78.0 74.7 224.0 002 zhao 98.0 78.0 59.0 78.3 235.0 006 zhou 89.0 97.0 86.0 90.7 272.0 003 qian 78.0 98.0 89.0 88.3 265.0 001 chen 59.0 60.0 98.0 68.3 205.0 007 wu 57.0 76.0 87.0 73.3 220.0代码# include <stdio.h> //使程序包含头文件<stdio.h># include <stdlib.h> //使程序包含头文件<stdlib.h># include <string.h> //使程序包含头文件<string.h># define SIZE 50 //定义常量SIZE来控制数组的长度void input_num(struct Student stud[], int n, int i); //声明学号输入函数void input_name(struct Student stud[], int n, int i); //声明姓名输入函数void input_score(struct Student stud[], int n, int i); //声明成绩输入函数void output_stu(struct Student stud[], int n, int i); //声明输出函数void stat_stu(struct Student stud[], int n, int o); //声明统计函数float class_avr(struct Student stud[], int n, int o); //声明排序函数void chenji_stu(struct Student stud[], int n, int o);void desc_stu(struct Student stud[], int n, int o); //声明降序函数int find_stu(struct Student stud[], int n); //声明查找函数void delete_stu(struct Student stud[], int n, int y); //声明删除函数void amend_stu(struct Student stud[], int n, int y); //声明修改函数void write_text(struct Student stud[], int n); //声明保存文件函数int add_text(struct Student stud[], int n); //声明读取文件函数struct Student /*声明结构体*/ {char num[10];char name[20];float score[5];};void main() /*主函数,是程序的入口*/{struct Student stu[SIZE]; //定义一个结构数组int count = 0; //定义整型变量count用来存放学生信息的个数,初始化为0int choice; //定义choice用于存放用户对主菜单的选择 int a; //用于接收主选单中scanf()函数的返回值 char judge; //用于帮助判断输入的选择是否正确int flag_main; //用于判断主菜单用户输入的选择是否有误 int stat_choice = 0; //定义stat_choice用于用户对统计项目的选择,初始化为0int flag_stat; //用于接收scanf()函数的返回值int flag_find; //定义flag_find用于接收查寻函数的返回值char man_choice; //定义man_choice用于接收用户对是否进行修改删除的选择int con_choice; //定义con_choice用于接收用户对修改或删除的选择char sign_main; //定义sign_main接收用户对是否离开程序的选择char sign_input; //定义sign_main接收用户对是否继续输入的选择int i; //定义i,j作为控制循环的变量while (1) //形成一个死循环{system("color 71"); //设置输出显示颜色/*输出主选菜单*/printf("\n============================欢迎使用班级成绩管理系统============================\n\n");printf("==============================请选择您要使用的功能==============================\n\n");printf("\t\t-◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆-\n");printf("\t\t★※★\t\t 1:班级成绩录入★※★\n\n");printf("\t\t★※★\t\t 2:班级成绩显示★※★\n\n");printf("\t\t★※★\t\t 3:班级成绩统计★※★\n\n");printf("\t\t★※★\t\t 4:班级成绩查询★※★\n\n");printf("\t\t★※★\t\t 5:班级成绩修改★※★\n\n");printf("\t\t★※★\t\t 6:班级成绩表★※★\n\n");printf("\t\t★※★\t\t 7:班级成绩存档★※★\n\n");printf("\t\t★※★\t\t 8:班级成绩读入★※★\n\n");printf("\t\t★※★\t\t 0:退出★※★\n\n");printf("\t\t-◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆-");printf("======================================================================= =========");/*输入对菜单的选择*/do{flag_main = 0;printf("\n\t\t\t 请您选择需要的操作(0-6):");fflush(stdin);a = scanf("%d%c", &choice, &judge);if (a<2 || judge != '\n'){printf("\n\t\t\t 您的选择有误,请重新输入!\n");flag_main--;}}while (flag_main < 0);printf("\n\t\t\t ");system("pause"); //令屏幕暂停待输入任意键后恢复运行 system("cls"); //清屏system("color 71"); //设置输出显示颜色switch (choice) //把用户对主菜单的选择作为switch结构的判断条件{case (1):printf("\n\t\t请录入学生信息:\n");i=0; //循环前对i清零do{if (count+i == 50){break;}input_num(stu, count, i); //输入学号input_name(stu, count, i); //输入姓名input_score(stu, count, i); //录入成绩及总成绩平均成绩i++; //每录入一个学员信息i加1printf("\n\t\t还需要继续录入吗?(Y/N)"); /*产生是否继续录入的条件*/fflush(stdin);sign_input = getchar();}while(sign_input == 'y' || sign_input== 'Y' ); //判断count=count+i; //计算出本次录入后总的已录入成员个数printf("\t\t");break;case (2):/* printf("\n显示班级成绩信息:\n");printf("--------------------------------------------------------------------------------");printf("学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩"); /*格式化输出提示信息*/printf(" 学生信息表\n");*/printf(" ==================\n\n");printf("┏━━━━━━┳━━━━━━━━┳━━━┳━━━┳━━━┳━━━┳━━━━━┓\n");printf("┃学号┃姓名┃数据库┃算法┃ C语言┃总成绩┃平均成绩┃\n");printf("┣━━━━━━╋━━━━━━━━╋━━━╋━━━╋━━━╋━━━╋━━━━━┫\n");for (i = 0; i < count; i++) /*循环输出学员信息*/{output_stu(stu, count, i); //输出单个学员信息}printf("┗━━━━━━┻━━━━━━━━┻━━━┻━━━┻━━━┻━━━┻━━━━━┛\n");break;case (3):while (stat_choice != 4) /*循环统计直到用户选择退出结束*/{printf("\t\t0:数据库\n");printf("\t\t1:算法\n");printf("\t\t2:C语言\n");printf("\t\t3:平均成绩\n");printf("\t\t4:结束统计\n");printf("\n\n请选择成绩统计的项目");fflush(stdin);flag_stat = scanf("%d%c", &stat_choice, &a); /*接收用户选择并返回值给flag_stat*/if (flag_stat == 2 && a == '\n') /*如果成功接收用户选择则根据选择进行统计若选择有误提示重新输入*/{if (stat_choice == 0) /*根据选择0进行统计*/{desc_stu(stu, count, stat_choice);stat_stu(stu, count, stat_choice);}else if (stat_choice == 1) /*根据选择1进行统计*/{desc_stu(stu, count, stat_choice);stat_stu(stu, count, stat_choice);}else if (stat_choice == 2) /*根据选择2进行统计*/{desc_stu(stu, count, stat_choice);stat_stu(stu, count, stat_choice);}else if (stat_choice == 3) /*根据选择3进行统计*/{desc_stu(stu, count, stat_choice);stat_stu(stu, count, stat_choice);}else if (stat_choice == 4) /*选择4则break循环退出*/{break;}else /*其它错误选择提示重新输入*/{printf("\n您的输入有误,请重新输入!");}}else /*若没成功接收用户选择则提示重新输入*/{printf("\n您的输入有误,请重新输入!");}}stat_choice =getchar(); //每次循环结束stat_choice归0printf("\n");break;case (4):flag_find = find_stu(stu, count); //实现用户的查找功能/*根据查找函数的返回值为用户显示查找的信息*/if (flag_find > 0) /*返回值大于0,用户选择的是姓名查找方式*/{printf("\n 学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩\n");output_stu(stu, count, flag_find-1);printf("\n--------------------------------------------------------------------------------");}else if (flag_find == 0) /*查找失败返回失败信息*/{printf("\n对不起没有找到您的成绩!\n");}else /*返回值大于0,用户选择的是学号查找方式*/{printf("\n 学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩\n");output_stu(stu, count, -flag_find-1);printf("\n--------------------------------------------------------------------------------");}break;case (5):flag_find = find_stu(stu, count); //实现用户的查找功能/*根据查找函数的返回值为用户显示查找的信息*/if (flag_find > 0) /*返回值大于0,用户选择的是姓名查找方式*/{printf("\n 学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩\n");output_stu(stu, count, flag_find-1);printf("\n--------------------------------------------------------------------------------");}else if (flag_find == 0) /*查找失败返回失败信息*/{printf("\n对不起没有找到您的成绩!\n");}else /*返回值大于0,用户选择的是学号查找方式*/{printf("\n 学号\t\t姓名\t\t数据库\t算法\tC语言\t总成绩\t平均成绩\n");output_stu(stu, count, -flag_find-1);printf("\n--------------------------------------------------------------------------------");}if (flag_find != 0) /*查找成功的情况下用户可选择修改或删除操作*/{fflush(stdin);man_choice = getchar(); /*接收用户选择是否进行下一步操作*/while (man_choice) /*判断用户的选择*/{printf("\t\t1:修改\n");printf("\t\t2:删除\n");printf("\t\t3:退出\n");printf("\n请选择您的操作");fflush(stdin);scanf("%d",&con_choice); /*用于接收用户选择的操作*//*根据用户的选择完成用户选择的操作*/if (con_choice == 1) /*进行修改操作*/{amend_stu(stu, count, flag_find);}else if (con_choice == 2) /*进行删除操作,一旦删除则无法再进行修改*/{delete_stu(stu, count, flag_find);count--;printf("\n删除成功!\n");break;}else if (con_choice == 3) /*选择4则break循环退出*/{break;}else /*用户输入错误信息返回用户选择有误*/{printf("您的选择有误!\n");}stat_choice = 0; //每次循环结束stat_choice归0}}//修改删除操作结束printf("\n");break;case (7):printf("\t\t\t将学生成绩信息存盘:\n\n\n");write_text(stu, count); /*循环写入数据*/printf("\t\t\t");break;case (8):printf("\t\t\t从文件载入学生信息:\n\n\n");count = add_text(stu, count); /*读入文件信息*/break;case (6):printf("\t\t\t学生成绩排名信息:\n");chenji_stu(stu, count, stat_choice);/*读入文件信息*/printf("\t\t\t");break;case (0):printf("\n\t\t\t确定您真的要退出吗?(y/n)"); /*提醒用户是否退出并接收选择*/fflush(stdin);sign_main = getchar();if (sign_main == 'y' || sign_main == 'Y') /*若用户确定退出则返回退出信息*/{printf("\n\n\n\n\t\t\t谢谢使用本软件!\n\n\n\n\n");exit(0); //退出主程序}printf("\n\t\t\t");break;default: //提示用户输入错误printf("\n\t\t\t您的输入有误,请重新输入!\n\n\t\t\t");}system("pause"); //令屏幕暂停待输入任意键后恢复运行system("cls"); //清屏system("color 71"); //设置输出屏幕颜色}}/*************************************************************************** 功能:从键盘输入正确学号依次存放入stu[n].num中参数:参数struct Student stud[ ]代表结构体数组首地址,n代表已有成员个数,i代表本次录入的第i个学号。

汇编语言程序设计课程设计报告-学生成绩管理系统程序

汇编语言程序设计课程设计报告-学生成绩管理系统程序

学生成绩管理系统程序设1、需求说明用汇编语言编写一个学生成绩管理系统,实现基本学生成绩管理,功能包括添加学生信息、修改学生信息、删除学生信息、打印学生信息、浏览学生信息存储文件以及粗略的统计学生信息,程序界面友好,有输入界面提示,有菜单功能。

2、设计要求2.1设计说明该程序要求具备的功能:清晰且易于操作的用户界面,在文本编辑界面中输入学生成绩。

其中“I”表示插入,“L”表示浏览,“Q”表示查询,“E”表示退出,“D”表示删除,“M”表示修改,“c”表示统计各分数段人数,“P”表示打印.以上各功能应该能单独运行和连续运行。

2.2开发平台与开发工具该程序使用DOS操作系统32位实模式汇编语言编写,使用的编译器为微软的MASM5.0,调试工具为DOS下的debug.exe程序。

2.3数据结构程序采用静态链表的方式来存储学生信息,链表结点描述如下:Student strucm_sName db 6 dup(' ')m_sNum db 8 dup(' ')m_sScore db 3 dup(' ')Student ends3、设计思路3.1设计方案及基本流程3.11总体结构分析整个程序采用总程序调用子程序的方式。

主程序完成菜单的显示,子程序完成一个独立功能的方法实现。

各子程序的实现方法简要描述如下:1、设计Insert(录入)子程序时,先打开文件SCORE.TXT,并置文件指针到文件尾,然后调用GET_REC子程序接受用户的输入,再把用户的输入写入文件,最后关闭文件返回主程序。

2、设计Delete(删除)子程序时,先打开文件,再调用宏GETIN得到要删除的学生的姓名,然后读文件中的记录,直到其记录的名与所输入的名字相同为止,把文件指针后退8个字符(即4门课程所占的空间),写入8个“0”字符,关闭文件返回主程序。

3、设计List(浏览)子程序时,先打开文件,然后读一个记录,并通过调用宏SHOW_ITEM 将其显示到屏幕上,若文件指针没有到达文件尾,则继续读记录并显示,当文件指针到达文件尾时,则关闭文件返回主程序。

C语言课程设计 学生成绩管理系统 源代码

C语言课程设计 学生成绩管理系统 源代码

//学生成绩管理系统//用户名:xdxy 密码:700619#include<stdio.h>#include<conio.h> /*清屏*/#include <stdlib.h> /*显示目录*/#include<string.h>#define MAX 1000void menu();void input(); /*输入数据函数*/ void sort(); /*排序数据函数*/ void display(); /*显示数据函数*/ void display1(); /*显示各科成绩函数*/ void insert(); /*插入数据函数*/ void del(); /*删除数据函数*/ void average(); /*平均值函数*/void find(); /*查找数据函数*/ void save(); /*保存数据函数*/ void read(); /*读出数据函数*/ void del_file(); /*删除文件函数*/void modify(); /*修改文件函数*/int now_no=0;struct student //定义学生信息{int no; // 学号char name[20]; //姓名char sex[4]; //性别float score1; //成绩1float score2; //成绩2float score3; //成绩3float sort; //排序成绩float ave; //平均分float sum; //总分};void main(){int h,flag1,flag2;char name[20]="xdxy",password[10]="700619";char person[20],password1[10];printf ("\t\t ******** 欢迎进入学生成绩管理系统!********\n\n");printf ("\t\t\t 用户登录\n\n");for(h=0;h!=5;){printf("\t\t\t\t 用户名:");gets(person);flag1=strcmp(person,name);printf("\t\t\t\t 密码:");gets(password1);flag2=strcmp(password,password1);if(flag1==0 && flag2==0){printf("\t\t\t\t 登陆成功!\n\n");menu();break;}else{printf ("\t\t\t 用户名或密码错误!\n\n");printf ("\t\t\t 请注意:您还剩%d次机会!\n\n",4-h);h++;}}if (h=5)printf ("对不起,您输入的用户名或密码有误,已被强制退出。

学生成绩管理系统c语言源代码

学生成绩管理系统c语言源代码

学生成绩管理系统c语言源代码介绍学生成绩管理系统是一个能够帮助学校、教师和学生管理和查询学生成绩的软件系统。

通过该系统,教师可以录入学生的考试成绩,并进行统计和分析;学生可以查询自己的成绩和排名;学校可以通过系统生成各种报表和分析数据。

本文将介绍一个使用C语言编写的学生成绩管理系统的源代码实现。

功能设计学生成绩管理系统的功能设计可以分为以下几个主要模块:登录模块1.输入用户名和密码;2.验证用户名和密码是否匹配;3.登录成功后进入主菜单。

学生管理模块1.输入学生信息(学号、姓名、性别、年龄等);2.添加学生信息到系统中;3.删除指定学号的学生信息;4.修改指定学号的学生信息;5.查询指定学号的学生信息;6.显示所有学生的信息。

课程管理模块1.输入课程信息(课程号、课程名称、授课教师等);2.添加课程信息到系统中;3.删除指定课程号的课程信息;4.修改指定课程号的课程信息;5.查询指定课程号的课程信息;6.显示所有课程的信息。

成绩管理模块1.输入学号和课程号;2.输入成绩信息(平时成绩、期末成绩、总评成绩等);3.添加成绩信息到系统中;4.修改指定学号和课程号的成绩信息;5.查询指定学号和课程号的成绩信息;6.统计指定课程的平均成绩、最高成绩和最低成绩;7.统计指定学生的平均成绩、最高成绩和最低成绩。

数据导入与导出模块1.从文件导入学生信息和成绩信息;2.将学生信息和成绩信息导出到文件。

源代码实现以下是一个使用C语言实现的学生成绩管理系统的源代码实例:#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义学生结构体typedef struct {int id;char name[100];char gender[10];int age;} Student;// 定义课程结构体typedef struct {int id;char name[100];char teacher[100];} Course;// 定义成绩结构体typedef struct {int studentId;int courseId;float ordinaryGrade;float finalGrade;float totalGrade;} Grade;// 学生管理函数void addStudent(Student *students, int *studentCount) {// 添加学生信息到系统}void deleteStudent(Student *students, int *studentCount, int studentId) { // 删除指定学号的学生信息}void modifyStudent(Student *students, int studentId) {// 修改指定学号的学生信息}void queryStudent(Student *students, int studentId) {// 查询指定学号的学生信息}void displayAllStudents(Student *students, int studentCount) { // 显示所有学生的信息}// 课程管理函数void addCourse(Course *courses, int *courseCount) {// 添加课程信息到系统}void deleteCourse(Course *courses, int *courseCount, int courseId) { // 删除指定课程号的课程信息}void modifyCourse(Course *courses, int courseId) {// 修改指定课程号的课程信息}void queryCourse(Course *courses, int courseId) {// 查询指定课程号的课程信息}void displayAllCourses(Course *courses, int courseCount) {// 显示所有课程的信息}// 成绩管理函数void addGrade(Grade *grades, int *gradeCount) {// 添加成绩信息到系统}void modifyGrade(Grade *grades, int gradeCount, int studentId, int courseId) { // 修改指定学号和课程号的成绩信息}void queryGrade(Grade *grades, int gradeCount, int studentId, int courseId) { // 查询指定学号和课程号的成绩信息}void calculateCourseStatistics(Grade *grades, int gradeCount, int courseId) { // 统计指定课程的平均成绩、最高成绩和最低成绩}void calculateStudentStatistics(Grade *grades, int gradeCount, int studentId) {// 统计指定学生的平均成绩、最高成绩和最低成绩}// 数据导入与导出函数void importData() {// 从文件导入学生信息和成绩信息}void exportData() {// 将学生信息和成绩信息导出到文件}int main() {// 主程序菜单return 0;}总结学生成绩管理系统是一个非常有用的工具,可以帮助学校、教师和学生高效地管理和查询学生成绩。

c语言成绩管理系统源代码

c语言成绩管理系统源代码

c语言成绩管理系统源代码C语言成绩管理系统源代码一、引言C语言是一门广泛应用于计算机编程领域的高级编程语言,其简洁明了、灵活易学的特点使得其成为了众多程序员的首选。

本文将介绍一个C语言成绩管理系统的源代码,该系统可实现学生信息录入、成绩查询、成绩修改等功能。

二、需求分析1. 学生信息录入:需要输入学生姓名、学号、性别等基本信息,并且需要输入每门课程的成绩。

2. 成绩查询:可以按照学号或者姓名进行查询,查询结果包括学生基本信息和各科成绩。

3. 成绩修改:可以根据学号或者姓名进行修改,修改后需要重新保存。

三、程序设计1. 结构体定义:定义一个结构体类型student,包含姓名、学号、性别和各科成绩等基本信息。

2. 学生信息录入函数:实现输入每个学生的基本信息和各科成绩,并将其保存到文件中。

3. 成绩查询函数:根据输入的姓名或者学号查找对应的学生信息,并输出其基本信息和各科成绩。

4. 成绩修改函数:根据输入的姓名或者学号查找对应的学生信息,然后可以选择修改某一科目的成绩或者全部成绩,并将修改后的结果保存到文件中。

四、源代码以下是C语言成绩管理系统的源代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_NUM 100#define FILE_NAME "student.dat"typedef struct{char name[20];char id[20];char sex[5];float score[3];}student;void input(student *stu,int num);void output(student *stu,int num);void modify(student *stu,int num);int main(){student stu[MAX_NUM];int num=0,flag=1;FILE *fp;fp=fopen(FILE_NAME,"rb");if(fp!=NULL){fread(&num,sizeof(int),1,fp);fread(stu,sizeof(student),num,fp);fclose(fp);}while(flag){printf("\n\n\t\t学生成绩管理系统\n"); printf("\t\t1. 学生信息录入\n");printf("\t\t2. 成绩查询\n");printf("\t\t3. 成绩修改\n");printf("\t\t4. 退出系统\n");printf("\t\t请选择功能:");int choice;scanf("%d",&choice);switch(choice){case 1:input(stu,num);break;case 2:output(stu,num);break;case 3:modify(stu,num);break;case 4:flag=0;break;default:printf("输入有误,请重新输入!"); break;}fp=fopen(FILE_NAME,"wb");fwrite(&num,sizeof(int),1,fp);fwrite(stu,sizeof(student),num,fp);fclose(fp);}return 0;}void input(student *stu,int num){printf("\n\n\t\t学生信息录入\n");printf("\t\t请输入学生人数:");int n;scanf("%d",&n);if(num+n<=MAX_NUM){for(int i=num;i<num+n;i++){printf("\t\t请输入第%d个学生的姓名:",i+1); scanf("%s",stu[i].name);printf("\t\t请输入第%d个学生的学号:",i+1); scanf("%s",stu[i].id);printf("\t\t请输入第%d个学生的性别:",i+1); scanf("%s",stu[i].sex);for(int j=0;j<3;j++){printf("\t\t请输入第%d个学生的第%d门课程成绩:",i+1,j+1);scanf("%f",&stu[i].score[j]);}}num+=n;printf("\n\n\t\t录入成功!\n");}else{printf("存储空间不足,无法录入!");}}void output(student *stu,int num){printf("\n\n\t\t成绩查询\n");printf("\t\t按照姓名查询输入1,按照学号查询输入2:");int choice;scanf("%d",&choice);if(choice==1){char name[20];printf("\t\t请输入要查询的姓名:");scanf("%s",name);for(int i=0;i<num;i++){if(strcmp(stu[i].name,name)==0){printf("\t\t姓名:%s\n",stu[i].name); printf("\t\t学号:%s\n",stu[i].id);printf("\t\t性别:%s\n",stu[i].sex); for(int j=0;j<3;j++){printf("\t\t第%d门课程成绩:%.2f\n",j+1,stu[i].score[j]);}flag=1;}}if(flag==0){printf("未找到该学生信息!");}}else if(choice==2){int flag=0;printf("\t\t请输入要查询的学号:");scanf("%s",id);for(int i=0;i<num;i++){if(strcmp(stu[i].id,id)==0){printf("\t\t姓名:%s\n",stu[i].name); printf("\t\t学号:%s\n",stu[i].id);printf("\t\t性别:%s\n",stu[i].sex); for(int j=0;j<3;j++){printf("\t\t第%d门课程成绩:%.2f\n",j+1,stu[i].score[j]);}flag=1;}}if(flag==0){printf("未找到该学生信息!");}}else{printf("输入有误,请重新输入!");}}void modify(student *stu,int num){printf("\n\n\t\t成绩修改\n");printf("\t\t按照姓名修改输入1,按照学号修改输入2:");int choice;scanf("%d",&choice);if(choice==1){char name[20];int flag=0;printf("\t\t请输入要修改的学生姓名:");scanf("%s",name);for(int i=0;i<num;i++){if(strcmp(stu[i].name,name)==0){printf("\t\t姓名:%s\n",stu[i].name);printf("\t\t学号:%s\n",stu[i].id);printf("\t\t性别:%s\n",stu[i].sex);for(int j=0;j<3;j++){printf("\t\t第%d门课程成绩:%.2f\n",j+1,stu[i].score[j]);}printf("\n\n\t\t请选择修改方式:\n");printf("\t\t1. 修改某一科目成绩\n");printf("\t\t2. 修改全部科目成绩\n");int m;scanf("%d",&m);if(m==1){int k;float score;printf("\t\t请输入要修改的科目编号:"); scanf("%d",&k);if(k>=1&&k<=3){printf("\t\t请输入新的成绩:");scanf("%f",&score);stu[i].score[k-1]=score;flag=1;break;}else{printf("输入有误,请重新输入!");break;}}else if(m==2){for(int j=0;j<3;j++){printf("\t\t请输入第%d门课程成绩:",j+1); scanf("%f",&stu[i].score[j]);}flag=1;break;}}}if(flag==0){printf("未找到该学生信息!");}else{printf("\n\n\t\t修改成功!\n");}}else if(choice==2){char id[20];int flag=0;printf("\t\t请输入要修改的学生学号:");scanf("%s",id);for(int i=0;i<num;i++){if(strcmp(stu[i].id,id)==0){printf("\t\t姓名:%s\n",stu[i].name); printf("\t\t学号:%s\n",stu[i].id);printf("\t\t性别:%s\n",stu[i].sex); for(int j=0;j<3;j++){printf("\t\t第%d门课程成绩:%.2f\n",j+1,stu[i].score[j]);}printf("\n\n\t\t请选择修改方式:\n"); printf("\t\t1. 修改某一科目成绩\n"); printf("\t\t2. 修改全部科目成绩\n");int m;scanf("%d",&m);if(m==1){int k;float score;printf("\t\t请输入要修改的科目编号:"); scanf("%d",&k);if(k>=1&&k<=3){printf("\t\t请输入新的成绩:");scanf("%f",&score);stu[i].score[k-1]=score;flag=1;break;}else{printf("输入有误,请重新输入!");break;}}else if(m==2){for(int j=0;j<3;j++){printf("\t\t请输入第%d门课程成绩:",j+1); scanf("%f",&stu[i].score[j]);}flag=1;break;}}}if(flag==0){printf("未找到该学生信息!");}else{printf("\n\n\t\t修改成功!\n");}}else{printf("输入有误,请重新输入!");}}五、总结本文介绍了一个C语言成绩管理系统的源代码,该系统可实现学生信息录入、成绩查询、成绩修改等功能。

汇编语言课程设计学生成绩管理系统

汇编语言课程设计学生成绩管理系统

汇编语言课程设计课题名称:学生成绩管理系统小组成员:班级:指导教师:日期:2014.06.18 一、选题目的:熟悉汇编语言程序设计的实验环境,主要是熟悉汇编程序的基本结构,编译、连接和调试等基本操作。

利用该题目进行汇编语言程序设计运用的综合性训练,综合运用汇编语言循环程序和子程序编程方法,巩固以及提高汇编语言程序设计能力运用水平,为后续的开发和实验工作打好基础。

二、功能设计:编制一个程序,要求接收从键盘收入的一个班的学生成绩,并存放于50字节的GRADE 数组中,其中GRADE+N保存学号N+1的学生成绩,然后根据GRADE得学生成绩,把学生名次填入50自己的RANK数组中,其中RANK+N的内容是学号N+1学生的名次,在按学号把学生顺序学生名次显示出来。

三、算法流程图:四、运行结果:从键盘输入三个学生的姓名和成绩,按学生成绩升序排序,并显示出排序结果五、程序源代码:data segmentinfor0 db 0ah,0dh,'sort=$'infor1 db 0ah,0dh,'input name:$'infor2 db 0ah,0dh,'input score:$'n equ 8 姓名长度m equ 4 成绩长度(3位+回车符)p equ 3 输入的人数q equ 3 成绩的位数buff1 db n,?,n dup(0),'$' 姓名缓冲区,加$字符以便输入时用 buff2 db m,?,m dup(0),'$' 成绩缓冲区sname db p dup(n+1 dup(0)) 保存姓名score1 dw p dup(m+1 dup(0)) 保存成绩score2 dw p dup(m+1 dup(0))mingci db p dup(0) 名次x dw ?sign1 dw 0sign2 dw 0cont db '1' 计数data endscode segmentassume cs:code, ds:datamain proc farstart:mov ax,datamov ds,axmov es,axmov bx,0mov cx,0call inputcall sortcall printmov ah,4chint 21hmain endpinput procinc bx 输入次数统计cmp bx,p 输入次数>p?ja exitlea dx,infor1 显示提示2mov ah,9int 21hlea dx,buff1 输入姓名mov ah,10int 21hmov al,buff1+1 实际输入个数——a1add al,2 +2.包含bufferl的0、1号单元mov ah,0mov si,ax 回车0d所在位置,跟在最后一个字符后 mov buff1[si],0 将0d换为0,便于输出显示lea dx,infor2 显示提示2mov ah,9int 21hlea dx,buff2 输入成绩mov ah,10int 21hmov al,buff2+1 实际输入个数add al,2 个数+2,包含0、1单元,为找到0dmov ah,0mov si,axmov buff2[si],0 将0d换为0,便于输出显示mov mingci[bx-1],bl bx为输入次数,保存输入的次序cmp bx,1 第一次输入转let1jz let1add sign1,n+1 姓名间隔为n+1add sign2,q 成绩间隔为qlet1: 子程序嵌套call copyjmp inputexit:retinput endpcopy procmov cx,n+1 姓名长度+3(包含$)lea si,buff1+2lea di,sname 姓名传递到snameadd di,sign1 加上间隔值cldrep movsbmov cx,nmov ax,'$' 用$覆盖姓名区,清除已输入的姓名 lea si,buff2+2lea di,score1 成绩传递到score1add di,sign2 加上间隔符cldrep movsblea si,buff2+2mov di,sign2call change 二进制成绩score2retcopy endpchange procmov x,0mov cx,[si-1] 成绩的位数cxmov cx,000fh 保留低四位rept2:mov al,[si] 按位取出成绩cmp al,30h 是否在0、9之间jl exit1cmp al,39hjg exit1and ax,000fhxchg ax,xmov dx,10 将ax中前一次形成的书扩大十倍mul dx 保存到xadd x,axinc siloop rept2mov ax,x 按十进制形成的成绩以二进制保存 mov score2[di],ax 二进制成绩送入score2mov x,0add sign2,2 下一个成绩单元exit1:retchange endpsort procmov cx,p 数组长度dec cxloop1:push cx 保存外循环次数mov bx,0mov si,0loop2: mov ax,score2[bx]cmp ax,score2[bx+m+1] m+1=5jge next 降序xchg ax,score2[bx+m+1] 交换成绩mov score2[bx],axmov al,mingci[si]xchg al,mingci[si+1] 交换名次mov mingci[si],alnext:add bx,m+1inc si 下一个成绩loop loop2pop cx 恢复外循环次数loop loop1retsort endpprint proclea dx,infor0 显示结果提示mov ah,9int 21hmov cx,pmov bx,0mov ax,0mov di,0rept3:mov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov dl,cont 显示名次序号mov ah,2int 21hinc contmov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov ax,0mov al,mingci[di] 取名次dec al 位置-1,因为地址从0开始 mov bl,9mul bllea dx,snameadd dx,ax 偏移地址+姓名位移量mov ah,9 显示姓名int 21hmov dl,0ah 回车换行mov ah,2int 21hmov dl,0dhint 21hmov ax,0mov bx,0mov al,mingci[di] 取名次dec al 地址从0开始mov bl,5mul bllea dx,score1add dx,axmov ah,9 显示成绩int 21hinc diloop rept3retprint endpcode endsend start六、自我评价:本次大作业做的是显示学生名次表,重要考察的是复杂程序设计中,采用模板块结构可以划分功能,分解程序,在各个程序之间存在参数传递问题,强调了传递方式和嵌套调用层次的运用。

c语言学生成绩信息管理系统源代码

c语言学生成绩信息管理系统源代码

C语言学生成绩信息管理系统源代码一、概述在学校教学管理工作中,学生成绩信息管理是一个至关重要的环节。

为了方便高效地进行学生成绩信息的录入、查询和管理,我们可以利用C语言编写一个学生成绩信息管理系统。

本文将介绍该系统的源代码,并对其进行详细的解释和讲解。

二、系统功能需求1. 录入学生成绩信息2. 查询学生成绩信息3. 修改学生成绩信息4. 删除学生成绩信息5. 显示所有学生成绩信息三、系统源代码实现```c#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义学生结构体typedef struct student {int id; // 学号char name[20]; // 尊称float score; // 成绩} Student;// 全局变量int count = 0; // 记录学生数量Student students[100]; // 学生数组// 录入学生成绩信息void inputStudentInfo() {printf("请输入学生学号:");scanf("d", students[count].id);printf("请输入学生尊称:");scanf("s", students[count].name); printf("请输入学生成绩:");scanf("f", students[count].score); count++;}// 查询学生成绩信息void queryStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {printf("学生信息如下:\n");printf("学号:d\n", students[i].id);printf("尊称:s\n", students[i].name);printf("成绩:.2f\n", students[i].score);return;}}printf("未找到该学生信息!\n");}// 修改学生成绩信息void modifyStudentInfo(int id, char *name, float score) { for (int i = 0; i < count; i++) {if (students[i].id == id) {strcpy(students[i].name, name);students[i].score = score;printf("修改成功!\n");return;}}printf("未找到该学生信息!\n");}// 删除学生成绩信息void deleteStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {for (int j = i; j < count - 1; j++) { students[j] = students[j + 1]; }count--;printf("删除成功!\n");return;}}printf("未找到该学生信息!\n");}// 显示所有学生成绩信息void displayAllStudentInfo() {if (count == 0) {printf("暂无学生信息!\n");return;}printf("学生成绩信息如下:\n");for (int i = 0; i < count; i++) {printf("学号:d,尊称:s,成绩:.2f\n", students[i].id, students[i].name, students[i].score);}}int m本人n() {int choice, id;char name[20];float score;while (1) {printf("欢迎使用学生成绩信息管理系统!\n");printf("1. 录入学生成绩信息\n");printf("2. 查询学生成绩信息\n");printf("3. 修改学生成绩信息\n");printf("4. 删除学生成绩信息\n");printf("5. 显示所有学生成绩信息\n");printf("6. 退出系统\n");printf("请选择操作:");scanf("d", choice);switch (choice) {case 1: // 录入学生成绩信息inputStudentInfo();break;case 2: // 查询学生成绩信息printf("请输入要查询的学生学号:"); scanf("d", id);queryStudentInfo(id);break;case 3: // 修改学生成绩信息printf("请输入要修改的学生学号:"); scanf("d", id);printf("请输入修改后的尊称:");scanf("s", name);printf("请输入修改后的成绩:");scanf("f", score);modifyStudentInfo(id, name, score); break;case 4: // 删除学生成绩信息printf("请输入要删除的学生学号:"); scanf("d", id);deleteStudentInfo(id);break;case 5: // 显示所有学生成绩信息displayAllStudentInfo();break;case 6: // 退出系统printf("感谢使用学生成绩信息管理系统!\n");exit(0);default:printf("请输入正确的操作!\n");}}return 0;}```四、系统运行效果1. 运行系统后,会出现一个菜单,根据需求选择相应的操作。

VC课程设计学生成绩管理系统详解和源码

VC课程设计学生成绩管理系统详解和源码

VC++课程设计设计项目:学生成绩管理系统设计者:张守阳(20102973)班级:计本10级二班使用软件: VC++6.0使用数据库: ACCESS设计流程一、设计理念开发一款学生成绩管理程序,实现学生基本信息的录入、查询及浏览和修改操作。

以及学生成绩的录入、查询、浏览以及统计分析等功能。

以上功能以可视化界面方式进行操作,并将学生成绩信息保存。

二、数据库设计在这个程序中,所用到的数据库是ACCESS数据库。

在数据库中,添加了8个表,分别是NO1OBJECT、NO1STUDENT、NO1STUINFO、NO1TEACHER、NO2OBJECT、NO2STUDENT、NO2STUINFO、NO2TEACHER.这8个表分别记录着两个班的:成绩概况、学生成绩、学生信息、教师信息。

三、程序设计此成绩管理系统共有两个模块:一个是学生成绩管理模块,一个是学生信息管理模块。

在登录成功后(登录用户名和密码都是:admin)会出现主窗口。

在主窗口中可以通过单击两个模块的按钮实现来实现两个模块间的切换。

学生成绩模块所实现的功能是:根据班级选项显示学上成绩信息,并且实现成绩的添加、修改、删除、查询功能。

学生信息模块能够实现学生信息的显示、添加、修改和删除功能。

四、此程序的介绍此程序是基于对话框的MFC程序。

所有的弹出式对话框是模态对话框,由于用到的对话框较多,所以定义的类较多,看起来有点眼花缭乱。

由于我对MFC掌握程度有限,这个程序做的有点粗糙,既不美观,在功能上也有许多不尽人意的地方,或许还会存在bug。

五、程序的实现1)、修改APP类由于此程序用到数据库,所以需要先连接数据源。

此程序通过采用代码来连接到所设计的数据源。

首先将设计的数据库复制到工程所在根目录下,再在APP中的initInstance()函数中添加如下代码:///////加载数据源if (!AfxSocketInit()){AfxMessageBox(IDP_SOCKETS_INIT_FAILED);return FALSE;}CString sPath;GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);sPath.ReleaseBuffer ();int nPos;nPos=sPath.ReverseFind ('\\');sPath=sPath.Left (nPos);nPos=sPath.ReverseFind('\\');sPath=sPath.Left (nPos);CString lpszFile = sPath + "\\mydb.mdb";char* szDesc;int mlen;szDesc=new char[256];sprintf(szDesc,"DSN=%s? DESCRIPTION=TOC support source? DBQ=%s?FIL=MicrosoftAccess? DEFAULTDIR=%s?? ","mydb",lpszFile,sPath);mlen = strlen(szDesc);for (int i=0; i<mlen; i++){if (szDesc[i] == '?')szDesc[i] = '\0';}if (FALSE == SQLConfigDataSource(NULL,ODBC_ADD_DSN,"Microsoft Access Driver (*.mdb)\0",(LPCSTR)szDesc))AfxMessageBox("SQLConfigDataSource Failed");try{CString strConnect;strConnect.Format("DSN=mydb;");if(!m_DB.OpenEx(strConnect,CDatabase::useCursorLib)){AfxMessageBox("Unable to Connect to the Specified Data Source");return FALSE ;}}catch(CDBException *pE){pE->ReportError();pE->Delete();return FALSE;}//////////////////////////////其中m_DB是定义的一个CDatabase 对象,用来指向数据库mymdb。

学生成绩管理系统C语言课程设计源代码

学生成绩管理系统C语言课程设计源代码

#include<stdio.h>#include<string.h>#include<math.h>#include<conio.h>#include<stdlib.h>struct chengji /* 成绩结构体*/ {int point;char subject[20];};struct student /* 学生结构体*/ { int w;char name[20];int number;struct chengji cheng[30];float sum;float average;}stu[40];void pjun(); /*按平均分排序*/void pfen(); /*按总分排序*/ void addnew(); /*录入学生成绩*/void pall(); /*显示所有成绩*/ void check(); /*查询菜单*/ void pnum(); /*按学号排序*/ void pjing(); /*精确查找*//****************************************************************************** *************************//*主菜单*/main(){char choose;while(1){printf("\n\t\t**************************************");printf("\n\t\t* 欢迎使用成绩管理系统*");printf("\n\t\t* *");printf("\n\t\t* 请选择*");printf("\n\t\t* 1. 录入学生成绩*");printf("\n\t\t* 2. 查询学生成绩*");printf("\n\t\t* 3. 清屏*");printf("\n\t\t* 0. 退出程序*");printf("\n\t\t* *");printf("\n\t\t**************************************");printf("\n\n");printf("请选择:");scanf("%c",&choose);getchar();switch(choose){ case '1': addnew(); break;case '2': check(); break;case '3': system("cls"); break;case '0': exit(0); break;default: printf("输入错误,请从新输入!\n\n");}}}/****************************************************************************** **********************//*录入学生成绩*/void addnew(){int n,m,i,p;float sum;float average;FILE *file;sum=0.00000;average=0.00000;if((file=fopen("c:\\student.dat","rb"))==NULL){file = fopen("c:\\student.dat", "wb+"); /* 创建一个文件*/}printf("请输入需要录入的学生人数: ");scanf("%d",&n);for(i=0;i<n;i++){printf("输入第%d个同学信息:\n",i+1);printf("姓名:");scanf("%s",&stu[i].name);printf("学号:");scanf("%d",&stu[i].number);printf("输入科目个数:");scanf("%d",&m);stu[i].w=m;printf("按科目(回车)成绩(回车)……的顺序输入:\n"); /* 录入成绩*/for(p=0;p<m;p++){scanf("%s",&stu[i].cheng[p].subject);scanf("%d",&stu[i].cheng[p].point);stu[i].sum=stu[i].sum+stu[i].cheng[p].point;stu[i].average=stu[i].sum/m;}/* printf("总分%f , 平均分%f\n ",stu[i].sum,stu[i].average);*/fwrite(&stu[i],sizeof(stu),1,file); /* 把stu写入文件*/}fclose(file); /* 关闭文件*/fflush(stdin);system("cls");}/****************************************************************************** **********************//*查询菜单*/void check(){while(1){ char choose;printf("\n\t\t**************************************");printf("\n\t\t* 查询菜单*");printf("\n\t\t* *");printf("\n\t\t* 请选择*");printf("\n\t\t* 1. 按学号排列*");printf("\n\t\t* 2. 按总分排列*");printf("\n\t\t* 3. 按平均分排列*");printf("\n\t\t* 4. 精确查询*");printf("\n\t\t* 5. 显示所有学生成绩*");printf("\n\t\t* 6. 清屏*");printf("\n\t\t* 0. 返回*");printf("\n\t\t**************************************");printf("\n\n");printf("请选择:");scanf("%c",&choose);getchar();switch(choose){ case '1': pnum(); break;case '2': pfen(); break;case '3': pjun(); break;case '4': pjing(); break;case '5': pall(); break;case '6': system("cls"); break;case '0': main(); break;}}}/****************************************************************************** **********************//*显示所有成绩*/void pall(){int i=0,m;FILE *file;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error!!\n");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0)/* 循环整个文件*/{ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++)/*显示各科成绩*/{printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}i++;fread(&stu[i],sizeof(stu),1,file);}fclose(file);}/****************************************************************************** *************************//*按学号排序*/void pnum(){ FILE *file;int j;int i=0;int n=0;int m=0;struct student bm; /*创建一个‘中间’结构体,用于交换*/if((file=fopen("c:\\student.dat","rb"))==NULL) /* 打开文件*/ { printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].number>stu[i+1].number) /*对比学号,对换stu*/{ bm=stu[i]; /*交换位置*/stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++)/* 交换后从新排序*/{ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/****************************************************************************** *************************//*按总分排序*/void pfen(){ FILE *file;int j;int i=0;int n=0;int m;struct student bm;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].sum<stu[i+1].sum){ bm=stu[i];stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++){ printf("姓名----学号----总分----平均分\n"); /*显示到屏幕*/printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/*******************************************************************************************************//*按平均分排序*/void pjun(){ FILE *file;int j;struct student bm;int i=0;int n=0;int m;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].average<stu[i+1].average){ bm=stu[i];stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++){ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/****************************************************************************** *************************//*精确查找*/void pjing(){int n;int i=0;int m;FILE *file;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}printf("请输入要查询的学生的学号:");scanf("%d",&n);getchar();fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){ if(n==stu[i].number) /*输出对应的学号的学生成绩*/{printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}break;}i++;fread(&stu[i],sizeof(stu),1,file);}fclose(file);fflush(stdin);}/******************************************结束*******************************************************/。

c++语言学生成绩管理系统源代码

c++语言学生成绩管理系统源代码

我是电大的学生,这是struct 类型的c 语言学生成绩管理系统代码,大家交流一下#include<stdio.h>#include<string.h> #include<stdlib.h>#define MAXN 100 //#define MAXN 100 //一个班最多的人数一个班最多的人数#define MAXM 2 //#define MAXM 2 //成绩的课程门数成绩的课程门数int R;void input(); //1.void input(); //1.学生成绩新建学生成绩新建void sort(); //2.void sort(); //2.学生成绩插入学生成绩插入void load(); //3.void load(); //3.学生成绩修改学生成绩修改void print(); //4.void print(); //4.学生成绩删除学生成绩删除void total(); //5.void total(); //5.学生成绩统计学生成绩统计void search(); //6.void search(); //6.学生成绩查询学生成绩查询void save(); //7.void save(); //7.学生成绩保存学生成绩保存void end(); //8.void end(); //8.结束结束struct student{char name[20]; //char name[20]; //保存全班姓名保存全班姓名保存全班姓名char num[12]; // char num[12]; //保存全班学号保存全班学号保存全班学号char man[20]; //char man[20]; //保存全班性别保存全班性别保存全班性别float score[MAXM]; //float score[MAXM]; //保存全班所有课程成绩保存全班所有课程成绩保存全班所有课程成绩 float sum; //float sum; //保存全班每个人的总成绩保存全班每个人的总成绩保存全班每个人的总成绩float avg; // float avg; //保存每个人的平均成绩保存每个人的平均成绩保存每个人的平均成绩};struct student s[MAXN];struct http{char subject[20]; //char subject[20]; //保存全班所有课程保存全班所有课程保存全班所有课程};struct http c[MAXM];void main() //void main() //欢迎首界面欢迎首界面欢迎首界面{ int select,l;system("color fC");printf("\n");printf("\n");printf("\n");printf("\n");printf(" printf(" ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n"); \n"); printf(" * *\n"); printf(" * *\n"); printf(" * printf(" * 欢迎进入终极一班学生管理系统欢迎进入终极一班学生管理系统欢迎进入终极一班学生管理系统 *\n"); *\n"); printf(" * *\n"); printf(" * ︻┳═一︻┳═一︻┳═一 cf ... *\n"); cf ... *\n"); printf(" * printf(" * ┈━═☆甘总管的多塔生活∝╬══→┈━═☆甘总管的多塔生活∝╬══→┈━═☆甘总管的多塔生活∝╬══→ *\n"); *\n"); printf(" * *\n"); printf(" * printf(" * 凸凸^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸 *\n"); printf(" printf(" ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n"); \n"); printf(" printf(" ╭ ╭ ╭ v v v╮╮ ╔══╗╔╗╔══╗╔╗ ╔╗╔╗╔╗╔╗╔╗╔╗ ╭╭''''''╮╮\n");printf(" (@ ^o^ @)╚╗╔╝║║╔═╦╦╦═╗║╚╝╠═╦╦╗(~ : : ~~)\n");printf(" (~) : (~)╔╝╚╗║╚╣║║║║╠╣╚╗╔╣║║║║(~) v (~)\n");printf(" ╚══╝╚═╩═╩═╩═╝ ╚╝╚═╩═╝ \n");printf("\n");printf("\n");printf(" printf(" 请按任意键进入下一界面请按任意键进入下一界面请按任意键进入下一界面\n"); \n");printf("------------------------------------------------------------------\n"); system("pause");system("color f2");system("color f1");system("color f3"); system("color fE");system("color fB");system("color f5");system("color f9");system("color f6");system("color f1");system("color f3");system("color fE");system("color fB");system("color f5");system("color f9"); system("color f6");system("color f1");system("color f3");system("color f5");system("color f9");system("color f6");system("color fD");system("pause");system("color fC");system("cls"); // system("cls"); //上面是第一个界面上面是第一个界面上面是第一个界面while(1){system("cls");printf(" ****************欢迎进入终极一班学生管理系统****************\n");printf(" ******************************************************\n");printf(" * ∝╬══→ 1.学生成绩新建 囧rz 欢 *\n");printf(" * ::======>> 2. 2.学生成绩插入学生成绩插入学生成绩插入 迎迎 *\n"); printf(" * printf(" * ┈━═☆┈━═☆┈━═☆ 3. 3.学生成绩修改学生成绩修改学生成绩修改 来来 *\n"); printf(" * printf(" * ∝╬══→∝╬══→∝╬══→ 4. 4.学生成绩删除学生成绩删除学生成绩删除 到到 *\n"); printf(" * ∝╬══→∝╬══→ 5. 5.学生成绩统计学生成绩统计学生成绩统计 英英 *\n"); printf(" * printf(" * ∝╬══→∝╬══→∝╬══→ 6. 6.学生成绩查询学生成绩查询学生成绩查询 雄雄 *\n"); printf(" * printf(" * ▄︻┻═┳▄︻┻═┳▄︻┻═┳ 7. 7.学生成绩保存学生成绩保存学生成绩保存 联联 *\n"); printf(" * printf(" * ∝╬══→∝╬══→∝╬══→ 8. 8.退出退出退出//撒拉嘿撒拉嘿 盟盟 *\n"); printf(" * ( printf(" * (⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙) *\n"); ) *\n");printf(" ******************************************************\n"); printf("\n"); printf("\n printf("\n"); printf("\n 请输入您的选择编号请输入您的选择编号请输入您的选择编号,,回车键继续:回车键继续:\n"); \n");printf("---------------------------------------------------------------------------\n"); scanf("%d",&select);do {if(select<1||select>8){printf(" printf(" 您输入有误,请重新输入,谢谢!您输入有误,请重新输入,谢谢!!!\n"); scanf("%d",&select);}l=select;}while(l<1||l>8);switch(select) {case 1:input();break; //1. case 1:input();break; //1.学生成绩新建学生成绩新建学生成绩新建case 2:sort(); break; //2. case 2:sort(); break; //2.学生成绩插入学生成绩插入学生成绩插入case 3:load(); break; //3. case 3:load(); break; //3.学生成绩修改学生成绩修改学生成绩修改case 4:print(); break; //4. case 4:print(); break; //4.学生成绩删除学生成绩删除学生成绩删除case 5:total();break; //5. case 5:total();break; //5.学生成绩统计学生成绩统计学生成绩统计case 6:search();break; //6. case 6:search();break; //6.学生成绩查询学生成绩查询学生成绩查询case 7:save();break; //7. case 7:save();break; //7.学生成绩保存学生成绩保存学生成绩保存case 8: end();break; //8. case 8: end();break; //8.结束结束结束default:printf(" default:printf(" 请按相应数学选择系统功能:请按相应数学选择系统功能:请按相应数学选择系统功能:"); ");}}}void input() //1学生成绩输入成绩模块成绩输入成绩模块{int i,j,b;float a=0;printf(" printf(" 请输入该班同学的人数:请输入该班同学的人数:请输入该班同学的人数:\n"); \n");printf(" printf(" 班同学的人数在班同学的人数在1~%d 之间:之间:\n",MAXN); \n",MAXN);scanf("%d",&R);do{if(R<1||R>100){printf(" printf(" 您输入有误,请重新输入,谢谢!您输入有误,请重新输入,谢谢!!!\n"); scanf("%d",&R);}b=R;} while(b<1||b>100);for(i=0;i<MAXM;i++){printf(" printf(" 请输入该班同学的第请输入该班同学的第请输入该班同学的第%d %d 门课程名称为:门课程名称为:\n",(i+1)); \n",(i+1));scanf("%s", &c[i].subject);}for(i=0;i<R;i++){printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的姓名:个同学的姓名:\n",(i+1)); \n",(i+1)); scanf("%s",&s[i].name);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的学号:个同学的学号:\n",(i+1)); \n",(i+1));scanf("%s",&s[i].num);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的性别(注:可以不详):\n",(i+1)); scanf("%s",&s[i].man);printf(" printf(" 请依次输入请依次输入请依次输入%d %d 门学科的成绩:门学科的成绩:\n",MAXM); \n",MAXM);for(j=0;j<MAXM;j++){printf(" printf(" 请输入课程请输入课程请输入课程%s %s 的成绩为:的成绩为:\n",c[j].subject); \n",c[j].subject);scanf("%f",&s[i].score[j]);a=a+s[i].score[j];}s[i].sum=a;s[i].avg=s[i].sum/MAXM;a=0;}}void sort() //2学生成绩插入成绩模块模块{int i,j,k,b;float a=0;printf(" printf(" 请输入要插入的学生的位置请输入要插入的学生的位置1~%d 号:号:\n",R); \n",R);printf(" printf(" 第几个学生的位置之后:第几个学生的位置之后:第几个学生的位置之后:\n"); \n");scanf("%d",&k);do{if(k<1||k>R){printf(" printf(" 您输入有误,请重新输入,谢谢!您输入有误,请重新输入,谢谢!!!\n"); scanf("%d",&k);}b=k;}while(b<1||b>R);R=R+1;for(i=R;i>k;i--){strcpy(s[i].name,s[i-1].name);strcpy(s[i].num,s[i-1].num);strcpy(s[i].man,s[i-1].man);s[i].sum=s[i-1].sum;s[i].avg=s[i-1].avg;for(j=0;j<MAXM;j++) {s[i].score[j]=s[i-1].score[j];}}printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的姓名:个同学的姓名:\n",(k+1)); \n",(k+1));scanf("%s",&s[k].name);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的学号:个同学的学号:\n",(k+1)); \n",(k+1));scanf("%s",&s[k].num);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的性别(注:可以不详):\n",(k+1)); scanf("%s",&s[k].man);printf(" printf(" 请依次输入请依次输入请依次输入%d %d 门学科的成绩:门学科的成绩:\n",MAXM); \n",MAXM);for(j=0;j<MAXM;j++){printf(" printf(" 请输入课程请输入课程请输入课程%s %s 的成绩为:的成绩为:\n",&c[j].subject); \n",&c[j].subject);scanf("%f", &s[k].score[j]);a=a+s[k].score[j];}s[k].sum=a;s[k].avg=s[k].sum/MAXM;}void load() //3学生成绩修改学生成绩修改 {int load1(); int load2();int select,index,b;while(1){printf("*************************************************************\n");printf(" * 1.按学号修改按学号修改 * * \n");printf(" * 2.按姓名修改按姓名修改 * * \n"); printf(" * 0.返回返回 * * \n");printf(" * 请输入您的选择编号:请输入您的选择编号: * * \n");printf("*************************************************************\n");scanf("%d",&select);do{if(select<0||select>2){printf(" printf(" 您输入有误,请重新输入,谢谢!您输入有误,请重新输入,谢谢!!!\n"); scanf("%d",&select);}b=select;}while(b<0||b>2);switch(select){case 1:index=load1(); break;case 2:index=load2();break;case 0:return;}if(index!=-1){int i,j;float a=0,h[MAXM];i=index;printf(" printf(" 请输入请输入请输入%d %d 号的新学号:号的新学号: \n",i+1); \n",i+1);scanf("%s",&s[i].name);printf(" printf(" 请输入请输入请输入%d %d 号的新姓名:号的新姓名: \n",i+1); \n",i+1); scanf("%s",&s[i].num);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的性别(注:可以不详):\n",(i+1)); scanf("%s",&s[i].man);for(j=0;j<MAXM;j++){printf(" printf(" 请输入课程请输入课程请输入课程%s %s 的成绩为:的成绩为:\n",&c[j].subject); \n",&c[j].subject);scanf("%f",&h[j]);s[i].score[j] =h[j];a=a+s[i].score[j];}s[i].sum=a;s[i].avg=s[i].sum/MAXM;printf(" printf(" 修改成功。

学生成绩管理系统c语言源代码

学生成绩管理系统c语言源代码

学生成绩管理系统c语言源代码一、引言学生成绩管理系统是一个用于管理学生信息和成绩的软件,可以方便地查询、修改和统计学生成绩。

本文将介绍一个基于C语言的学生成绩管理系统的源代码。

二、需求分析1. 功能需求(1)学生信息管理:包括添加、删除、修改和查询学生信息;(2)成绩录入:可以录入每个学生的各科成绩;(3)成绩查询:可以按照不同的条件查询学生成绩,如按照班级、科目等;(4)成绩统计:可以对所有学生的成绩进行统计分析。

2. 性能需求(1)系统响应速度快,界面友好;(2)数据存储安全可靠,数据备份方便。

三、设计思路本系统采用C语言编写,主要采用结构体和文件读写方式实现数据存储。

具体实现过程如下:1. 定义结构体类型student存储每个学生的信息,包括姓名、性别、年龄、班级和各科成绩等。

2. 采用文件读写方式将每个学生的信息存储到文件中,并在程序启动时读取文件中的数据。

3. 实现各种功能模块,包括添加/删除/修改/查询学生信息、录入学生成绩、查询成绩和统计成绩等。

4. 对查询结果进行排序和格式化输出,方便用户查看。

四、源代码以下是基于C语言的学生成绩管理系统的源代码,包括结构体定义、文件读写、各种功能模块的实现等。

为了更好地展示代码,本文将代码分为多个模块,并加入了注释说明。

1. 结构体定义/* 定义结构体类型student,用于存储每个学生的信息 */ typedef struct student{char name[20]; // 姓名char sex[10]; // 性别int age; // 年龄char class[20]; // 班级float score[3]; // 各科成绩(数学、语文、英语)}STUDENT;2. 文件读写/* 将一个学生的信息写入文件中 */void write_student(STUDENT stu){FILE *fp;fp = fopen("student.dat", "ab");fwrite(&stu, sizeof(STUDENT), 1, fp);fclose(fp);}/* 从文件中读取所有学生的信息 */int read_student(STUDENT *stu){FILE *fp;int count = 0;fp = fopen("student.dat", "rb");if (fp == NULL) return 0;while (fread(stu, sizeof(STUDENT), 1, fp) != 0) count++;fclose(fp);return count;}3. 添加/删除/修改/查询学生信息/* 添加一个学生的信息 */void add_student(){STUDENT stu;printf("请输入学生姓名:");scanf("%s", );printf("请输入学生性别:");scanf("%s", stu.sex);printf("请输入学生年龄:");scanf("%d", &stu.age);printf("请输入学生班级:");scanf("%s", stu.class);write_student(stu); // 将该学生的信息写入文件中}/* 删除一个学生的信息 */void delete_student(){STUDENT stu;char name[20];printf("请输入要删除的学生姓名:");scanf("%s", name);FILE *fp1, *fp2;fp1 = fopen("student.dat", "rb");if (fp1 == NULL)return;fp2 = fopen("temp.dat", "wb");while (fread(&stu, sizeof(STUDENT), 1, fp1) != 0)if (strcmp(, name) != 0)fwrite(&stu, sizeof(STUDENT), 1, fp2);fclose(fp1);fclose(fp2);remove("student.dat"); // 删除原文件rename("temp.dat", "student.dat"); // 将新文件重命名为原文件}/* 修改一个学生的信息 */void modify_student(){STUDENT stu;char name[20];printf("\n请输入要修改的学生姓名:");scanf("%s", name);FILE *fp;fp = fopen("student.dat","rb+");while (fread(&stu,sizeof(STUDENT),1,fp) != 0) {if (strcmp(,name) == 0){printf("请输入修改后的学生姓名:");scanf("%s", );printf("请输入修改后的学生性别:");scanf("%s", stu.sex);printf("请输入修改后的学生年龄:");scanf("%d", &stu.age);printf("请输入修改后的学生班级:");scanf("%s", stu.class);fseek(fp,-sizeof(STUDENT),SEEK_CUR); // 将文件指针回到该记录开头fwrite(&stu, sizeof(STUDENT), 1, fp); // 写入新记录break;}}fclose(fp);}/* 查询一个学生的信息 */void query_student(){STUDENT stu;char name[20];printf("\n请输入要查询的学生姓名:");scanf("%s", name);FILE *fp;fp = fopen("student.dat","rb");while (fread(&stu,sizeof(STUDENT),1,fp) != 0)if (strcmp(,name) == 0){printf("\n姓名\t性别\t年龄\t班级\t数学成绩\t语文成绩\t 英语成绩\n");printf("%s\t%s\t%d\t%s\t%.2f\t%.2f\t%.2f\n", , stu.sex, stu.age, stu.class, stu.score[0], stu.score[1],stu.score[2]); break;}fclose(fp);}4. 录入/查询/统计成绩/* 录入学生成绩 */void input_score(){STUDENT stu;char name[20];printf("\n请输入要录入成绩的学生姓名:");scanf("%s", name);FILE *fp;fp = fopen("student.dat","rb+");while (fread(&stu,sizeof(STUDENT),1,fp) != 0)if (strcmp(,name) == 0){printf("\n请输入数学成绩:");scanf("%f", &stu.score[0]);printf("请输入语文成绩:");scanf("%f", &stu.score[1]);printf("请输入英语成绩:");scanf("%f", &stu.score[2]);fseek(fp,-sizeof(STUDENT),SEEK_CUR); // 将文件指针回到该记录开头fwrite(&stu, sizeof(STUDENT), 1, fp); // 写入新记录break;}fclose(fp);}/* 按照班级查询所有学生的成绩 */void query_score_by_class(){STUDENT stu[100];int count = read_student(stu);char class_name[20];printf("\n请输入要查询的班级名称:");scanf("%s", class_name);int i;printf("\n姓名\t性别\t年龄\t班级\t数学成绩\t语文成绩\t英语成绩\n");for (i = 0; i < count; i++)if (strcmp(stu[i].class,class_name) == 0)printf("%s\t%s\t%d\t%s\t%.2f\t%.2f\t%.2f\n", stu[i].name, stu[i].sex, stu[i].age, stu[i].class, stu[i].score[0],stu[i].score[1],stu[i].score[2]);}/* 统计所有学生的成绩 */void statistics_score(){STUDENT stu[100];int count = read_student(stu);float math_sum = 0, chinese_sum = 0, english_sum = 0;int i;for (i = 0; i < count; i++){math_sum += stu[i].score[0];chinese_sum += stu[i].score[1];english_sum += stu[i].score[2];}printf("\n数学平均分:%.2f", math_sum / count);printf("\n语文平均分:%.2f", chinese_sum / count);printf("\n英语平均分:%.2f", english_sum / count);}五、总结本文介绍了一个基于C语言的学生成绩管理系统的源代码,包括结构体定义、文件读写、各种功能模块的实现等。

c语言课程设计学生成绩管理系统源代码

c语言课程设计学生成绩管理系统源代码

c语言课程设计学生成绩管理系统源代码一、引言学生成绩管理系统是一个非常常见的应用程序,它可以帮助学校或教育机构轻松地管理学生的成绩信息。

在本文中,我们将介绍一个基于C语言的学生成绩管理系统源代码。

二、需求分析在开始编写代码之前,我们需要明确系统的需求和功能。

该系统应该能够完成以下任务:1. 添加新学生信息:包括姓名、性别、年龄等基本信息。

2. 添加课程信息:包括课程名称、授课教师等基本信息。

3. 输入学生的成绩:输入每个学生在每个课程中的成绩。

4. 计算总分和平均分:计算每个学生的总分和平均分,并将其存储在数据库中。

5. 查询成绩信息:查询某个学生或某门课程的成绩信息。

6. 修改成绩信息:修改某个学生或某门课程的成绩信息。

7. 删除成绩信息:删除某个学生或某门课程的成绩信息。

三、设计思路1. 数据库设计我们需要设计一个简单的数据库来存储所有的数据。

该数据库应该包括以下表:- 学生表(student):包含姓名、性别、年龄等基本信息。

- 课程表(course):包含课程名称、授课教师等基本信息。

- 成绩表(score):包含每个学生在每个课程中的成绩信息。

2. 界面设计我们需要设计一个简单的界面来让用户输入和查看数据。

该界面应该包括以下功能:- 添加新学生信息- 添加新课程信息- 输入学生成绩- 查询成绩信息- 修改成绩信息- 删除成绩信息3. 程序设计在程序设计方面,我们需要编写一些函数来执行以上功能。

这些函数应该包括:- add_student():添加新学生信息。

- add_course():添加新课程信息。

- input_score():输入学生成绩。

- calculate_score():计算总分和平均分。

- query_score():查询成绩信息。

- update_score():修改成绩信息。

- delete_score():删除成绩信息。

四、源代码实现在这里,我们提供一个C语言的学生成绩管理系统源代码,该代码可以满足以上需求。

c课程设计学生成绩管理系统源代码

c课程设计学生成绩管理系统源代码

#include <stdio.h>#include <stdlib.h>#include <string.h>int n=5;/*全局变量*/ struct student /*定义结构体数组*/ { char num[10];char name[10];int score;}stu[3];int menu_select() /*菜单选择函数*/ { char a;do{system("cls");printf("\t************学生成绩管理系统****************\n");printf("\t\t1.输入学生成绩\n");printf("\t\t2.显示学生成绩\n");printf("\t\t3.学生成绩排序\n");printf("\t\t4.插入学生记录\n");printf("\t\t5.删除学生记录\n");printf("\t\t6.查询学生成绩\n");printf("\t\t7.修改学生成绩\n");printf("\t\t0.退出\n");printf("\t*********************************************\n");printf("\n");printf("给出你的选择(0-7):");a=getchar();}while(a<'0'||a>'7');return(a);}void input() /*定义输入函数*/char c;void menu();FILE *fp;if((fp=fopen("student message","w"))==NULL){printf("cannot open the file\n");exit(0);}printf("学号姓名分数(需要终止输入时请在该行结尾输入n)\n");for(i=0;;i++){ scanf("%s %s %d",stu[i].num,stu[i].name,&stu[i].score);fwrite(&stu[i],sizeof(struct student),1,fp);c=getchar();if(c=='n')break;}n=i+1;fclose(fp);system("pause");menu();}void display() /*定义显示函数*/ { int i;void menu();FILE *fp;if((fp=fopen("student message","r"))==NULL){printf("cannot open the file\n");exit(0);}printf("\t学号\t姓名\t分数\n");for(i=0;i<n;i++){ fread(&stu[i],sizeof(struct student),1,fp);printf("\t%s\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score); }fclose(fp);system("pause");}void sort() /*定义排序函数*/ { int i,j;struct student temp;void menu();FILE *fp;if((fp=fopen("student message","r"))==NULL){ printf("cannot open the file:\n");exit(0);}for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);for(j=0;j<n-1;j++)for(i=0;i<n-1-j;i++)if(stu[i].score<stu[i+1].score){temp=stu[i];stu[i]=stu[i+1];stu[i+1]=temp;}for(i=0;i<n;i++)printf("\t%s\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score);fclose(fp);system("pause");menu();}void insert() /*定义插入函数*/ { int i;struct student st;void menu();FILE *fp;if((fp=fopen("student message","a"))==NULL){ printf("cannot open the file:\n");exit(0);}for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);printf("输入要插入学生的信息:\n");printf("学号:");scanf("%s",st.num);printf("姓名:");scanf("%s",);printf("分数:");scanf("%d",&st.score);n++;fwrite(&st,sizeof(struct student),1,fp);fclose(fp);system("pause");menu();}void delet() /*定义删除函数*/ { int i,t;char name[10];void menu();FILE *fp,*fp1;if ((fp=fopen("student message","r"))==NULL){ printf("can not open file!\n");exit(0); }for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);if ((fp1=fopen("student message","w"))==NULL){ printf("can not open file!\n");exit(0); }printf("请输入要删除学生的姓名:");scanf("%s",name);for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0)for(i=0;i<t;i++)fwrite(&stu[i],sizeof(struct student),1,fp1);for(i=t+1;i<n;i++)fwrite(&stu[i],sizeof(struct student),1,fp1);printf("该学生信息已删除!\n\n");fclose(fp);fclose(fp1);system("pause");menu();}void query() /*定义查询函数*/ { int i;char a[10];void menu();FILE *fp;if((fp=fopen("student message","r"))==NULL){ printf("cannot open file\n");exit(0); }for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);printf("输入要查询学生的姓名:");scanf("%s",a);for(i=0;i<n;i++)if(strcmp(stu[i].name,a)==0)printf("\t%s\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score);fclose(fp);system("pause");menu();}void revise() /*定义修改函数*/char name[10];void menu();FILE *fp,*fp1;if((fp=fopen("student message","r"))==NULL){ printf("cannot open file\n");exit(0); }for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);if ((fp1=fopen("student message","w"))==NULL){ printf("can not open file!\n");exit(0); }printf("请输入要修改学生的姓名:");scanf("%s",name);for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0)t=i;printf("依次输入要修改学生的学号、姓名、分数:");scanf("%s %s %d",stu[t].num,stu[t].name,&stu[t].score);for(i=0;i<n;i++)fwrite(&stu[i],sizeof(struct student),1,fp1);printf("该学生信息已修改成功!");fclose(fp);fclose(fp1);system("pause");menu();}void quite() /*退出*/ {printf("再见!!!\n\n");}void menu() /*定义菜单函数*/{ switch(menu_select()){ case '1': input();break;case '2': display();break;case '3': sort();break;case '4': insert();break;case '5': delet();break;case '6': query();break;case '7': revise();break;case '0': quite();break;}}void main() /*主函数*/ {menu();}。

学生成绩管理系统C语言(附完整源代码)

学生成绩管理系统C语言(附完整源代码)

学生成绩管理系统C语言(附完整源代码)学生成绩管理系统C语言(附完整源代码)课程设计报告学生成绩管理系统院系:专业:班级:完成日期: 2009年1月03日设计题目:学生成绩管理系统目录1、题目描述2、算法设计/设计思想3、结构框图、各模块的功能描述4、主体思想:5、程序的,,,流程图6、源代码1.题目描述设计一个简单的学生成绩管理系统,要求有简单的界面,程序段要分清模块,该程序应该:(1)输入学生成绩,求总分,平均分,以及排序。

(2)查询学生单科成绩,总分和平均成绩;(3)添加、修改学生成绩具有下列功能:(4)实现保存与查看功能2.算法设计/设计思想利用二维数组——定义stu[][]存储学生学号、各科成绩,总分,平均分,名次,利用文件来存储,读取数据。

详细合作是::负责inputx(),print1(),input();:卖力文件的储备和读取,main(),System(),Idea()和各挪用函数之间的连;:卖力find1(),find2(),find3(),find31(),Find();:负责del(),add(),change1(),Change();前期调试由小组配合卖力。

3.结构框图、各模块的功能描述3.1建立成就表3.1.1 input()功用是输退学生的信息,便于当前的查询、欣赏。

3.2增加3.2.1 add( )功用是向inputy()增加新的内容。

3.3.2 chance( )对单科成绩进行修改。

3.3查询3.3.1可根据学号,科目,名次,进行查询。

3.3.2查询内容包孕:该学生的各课成就、、均匀分。

3.4删除3.4.1能够输退学号删除一逻辑学生的一课成就。

3.5浏览成绩单3.5.1通过此print1()可以查看所有学生的各课成绩、总分、平均分和名次。

3.6文件()3.6.1保存以上所输入的信息以达到既是关闭窗口信息也不会丢失信息的目的。

3.6.2随时打开,修改文件。

3.7.退出功用是退出主菜单退出系意见评述功能菜单统输入增加及改查找功用退出功用菜单成就功用查输排查找学学添修某某生生加改XXX某成成就绩科绩绩绩成就按按按名学科次号目查查查找找找四、主体思想:1、斟酌到此步伐量大代码多,以是用函数挪用,分几小我去完成。

c语言成绩管理系统源代码+流程图

c语言成绩管理系统源代码+流程图

#include<stdio.h>#include<string.h>#include<stdlib.h>void frist_print(){printf("\t\t********************************\n\n"); //欢迎信息printf("\t\t\t欢迎进入学生成绩系统\n");printf("\t\t\t\t\t\t\t\t 此程序合作完成由");printf("\n\t\t\t\t\t\t\t\t * * * * \n");printf("\t\t\t\t\t\t\t\t * * * * \n");printf("\t\t\t\t\t\t\t\t * * * \n");printf("\t\t\t\t\t\t\t\t * 王杨* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * 李淼鑫* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * 孙天顺* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * \n");}//***************************************************************************************************************************************************************************** ******void menu(){printf("\n\t\t***********************************\n"); //管理菜单printf("\n\t\t==========1.录入学生成绩===========\n\t\t+\n");printf("\t\t==========2.显示学生成绩===========\n\t\t+\n");printf("\t\t==========3.查询学生成绩===========\n\t\t+\n");printf("\t\t==========4.添加学生成绩===========\n\t\t+\n");printf("\t\t==========5.修改学生成绩===========\n\t\t+\n");printf("\t\t==========6.删除学生成绩===========\n\t\t+\n");printf("\t\t==========7.清空页面===========\n\t\t+\n");printf("\t\t==========8.退出系统===========\n");printf("\n\t\t***********************************\n");printf("please choise 1--8:\t");putchar(10);}//************************************************************************************** *************************************************************************************** ******struct MM // 结构体定义变量{char num[20];char name[10];float sco,sco2,sco3,sco4;int many;}mm;//************************************************************************************** *************************************************************************************** ******void scanf_1() //第一次输入信息并保存在文件中{char ch;FILE *fp;if((fp=fopen("dd.dat","wb+"))==NULL){printf("cannot open file\n");exit(0);}do{printf("请输入学生的--编号:\t");getchar();gets(mm.num);printf("姓名:\t");gets();printf("总成绩:\t");scanf("%f",&mm.sco);printf("平时成绩:\t");scanf("%f",&mm.sco2);printf("作业成绩:\t");scanf("%f",&mm.sco3);printf("考试成绩:\t");scanf("%f",&mm.sco4);printf("学号:\t");scanf("%d",&mm.many);if(fwrite(&mm,sizeof(struct MM),1,fp)!=1){printf("file write error\n");exit(0);}printf("是否继续输入y or n ?\t");getchar();ch=getchar();}while(ch=='y'||ch=='Y');fclose(fp);}//************************************************************************************** *************************************************************************************** ******void find() //查询成绩的信息{ int a,b=0;char ch[20];FILE *fp;if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要查询的成绩的方式\n\t1.编号2.姓名:\n\t请选择1 or 2 \t"); scanf("%d",&a);if(a==1){ getchar();printf("请输入学生的编号:\t");gets(ch);while(fread(&mm,sizeof(struct MM),1,fp)==1)if(strcmp(mm.num,ch)==0){b++;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);}if(b==0) printf("对不起!没有找到相关信息:\n");}else if(a==2){ printf("请输入学生的姓名:\t");getchar();gets(ch);while(fread(&mm,sizeof(struct MM),1,fp)==1)if(strcmp(,ch)==0){b++;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);}if(b==0) printf("input error!\n");}fclose(fp);}//************************************************************************************** *************************************************************************************** ******void scanf_2() //第二次输入信息并保存在文件中{char ch;FILE *fp;if((fp=fopen("dd.dat","ab"))==NULL){printf("cannot open file\n");exit(0);}do{printf("请输入要添加成绩的--编号:\t");getchar();gets(mm.num);printf("姓名:\t");gets();printf("成绩:\t");scanf("%f",&mm.sco);printf("学号:\t");scanf("%d",&mm.many);if(fwrite(&mm,sizeof(struct MM),1,fp)!=1){printf("file write error\n");exit(0);}printf("是否继续输入y or n ?\t");getchar();ch=getchar();}while(ch=='y'||ch=='Y');fclose(fp);}//************************************************************************************** *************************************************************************************** ******void print() //输出文档中的信息{FILE *fp;if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");return ;}printf("编号\t姓名\t成绩\t\t学号\n");while(fread(&mm,sizeof(struct MM),1,fp)==1)printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);fclose(fp);}//************************************************************************************** *************************************************************************************** ******void change(){ //修改信息的函数,定义另一个文件,把要修改的信息放到该文件中struct XX //然后把其余的信息复制到该文件中;并把该文件从新命名为原来的名{ //把原来的文件移除;char num[20];char name[10];float sco;int many;}xx;FILE *fp2;int a,b=0,c=0,n=0;char ch[20],ck;FILE *fp;do{if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");exit(0);}if((fp2=fopen("temp.dat","wb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要修改成绩的编号:\t");scanf("%s",ch);n++;while(fread(&mm,sizeof(struct MM),1,fp)==1){if((strcmp(mm.num,ch)==0)){b++;//b的值如果一直没有改变说明,没有找到相关的信息;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);getchar();printf("请输入成绩的新编号:\t");gets(xx.num);printf("请输入成绩的新姓名:\t");gets();printf("请输入成绩的新成绩:\t");scanf("%f",&xx.sco);printf("请输入成绩新学号:\t");scanf("%d",&xx.many);getchar();fwrite(&xx,sizeof(struct XX),1,fp2);}if(strcmp(mm.num,ch)!=0)fwrite(&mm,sizeof(struct MM),1,fp2);}if(b==0){printf("\t没有找到相关信息!\n");getchar();}rewind(fp); //如果要继续修改的话,要把标记返回到文件的开头;printf("是否继续修改?enter 'y' or 'n' \t");ck=getchar();fclose(fp);fclose(fp2);remove("dd.dat");rename("temp.dat","dd.dat");}while(ck=='y'||ck=='Y');if(b!=0)//如果没有找到相关信息就不能输出printf("\t修改成功:\n");}//************************************************************************************** *************************************************************************************** ******void del(){ //删除函数(和修改很相似) FILE *fp2;int a,b=0,c=0,n=0;char ch[20],ck;FILE *fp;do {if((fp=fopen("dd.dat","rb"))==NULL) //判断以读二进制的方式打开文件dd.dat,文件句柄保存到fp,fp是否为空如果为空,就是打开文件失败,否则打开文件成功{printf("cannot open file\n");exit(0);}if((fp2=fopen("temp.dat","wb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要删除成绩的编号:\t");scanf("%s",ch);n++;while(fread(&mm,sizeof(struct MM),1,fp)==1) //fread()成功的返回值就是参数里读取的数据块个数,这里就是1; sizeof中是每一项的长度,{if((strcmp(mm.num,ch)==0)) //设这两个字符串为str1,str2,若str1==str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。

学生录入成绩C语言代码,学生成绩管理系统C语言源代码.doc

学生录入成绩C语言代码,学生成绩管理系统C语言源代码.doc

学⽣录⼊成绩C语⾔代码,学⽣成绩管理系统C语⾔源代码.doc 学⽣成绩管理系统C语⾔源代码#include"stdio.h"#include#include#include"process.h"#include"ctype.h"typedef struct{char num[10];char name[10];int c;int math;int English;double aver;}Student;Student stu[99];int shuru(Student stud[],int n)/*输⼊若⼲条记录*/{int i=0;char sign,x[10];double a=0.0;while(sign!='n'&&sign!='N'){printf("输⼊学⽣学号:");scanf("%s",stu[n+i].num);printf("输⼊学⽣姓名:");scanf("%s",stu[n+i].name);printf("输⼊学⽣的C、数学、英语");scanf("%d%d%d",&stu[n+i].c,&stu[n+i].math,&stu[n+i].English);a=1.0*(stu[n+i].c+stu[n+i].math+stu[n+i].English/3);stu[n+i].aver=a;gets(x); /*清除多余的输⼊*/printf("是否继续输⼊?(Y/N):\n");scanf("%c",&sign);i++;}return(n+i);}void xianshi(Student stud[],int n) /*显⽰所有记录*/{int i ;printf("----------------------------------------------------------\n"); /*格式头*/printf("学号 姓名 C 数学 英语 平均成绩 \n");printf("----------------------------------------------------------\n");for(i=0;i{printf("%-10s%-10s%-10d%-10d%-10d%-10.2lf\n",stu[i].num,stu[i].name,stu[i].c,stu[i].math,stu[i].English,stu[i].aver); }}void xiugai(Student stud[],int n) /*修改*/{int i=0,choice=1;char x[10];while(choice!=0){printf("请输⼊您要修改的学⽣的学号:\n");scanf("%s",x);for(i=0;;i++){if(strcmp(stu[i].num,x)==0)break;}printf("请选择您要修改的内容:\n");printf(" ---------------------- \n");printf("| 姓名 请按 1 |\n");printf("| c 请按 2 |\n");printf("| 数学分数 请按 3 |\n");printf("| 英语分数 请按 4 |\n"); printf("| 退出 请按 0|\n"); printf("+-----。

c语言课程设计学生成绩管理系统源代码

c语言课程设计学生成绩管理系统源代码

标题:C语言课程设计——学生成绩管理系统源代码摘要:本文介绍了一份用C语言编写的学生成绩管理系统源代码。

通过该系统,教师和学生可以方便地进行成绩录入、查询、修改和统计等操作。

文章从简单到复杂地介绍了系统的各个模块和功能,并提供了自己对该系统的理解和观点。

【序言】在现代教育系统中,学生成绩管理是一项重要任务。

为了方便教师进行成绩管理和学生了解自己的成绩情况,我们设计了一款学生成绩管理系统,使用C 语言实现。

该系统简洁易用,提供了多个功能模块,包括成绩录入、查询、修改和统计等。

通过本文,我们将逐步介绍该系统的具体实现和设计思路。

【正文】 1. 【模块1:登陆模块】在学生成绩管理系统中,首先需要实现登陆模块,以确保只有授权人员才能访问和管理成绩信息。

该模块要求用户输入用户名和密码,与预先存储的用户名和密码进行匹配。

一旦验证成功,用户将获得访问系统的权限。

我们在设计中使用了安全的密码存储方式,如hash算法等。

2.【模块2:成绩录入模块】学生成绩录入是该系统的核心功能之一。

在该模块中,教师可以输入学生的学号、尊称和各项科目的考试成绩。

我们使用了结构体数组来存储学生的相关信息,并通过循环和用户输入实现多次成绩录入,确保系统的灵活性和扩展性。

3.【模块3:成绩查询模块】为了便捷地查询学生成绩,我们设计了成绩查询模块。

该模块允许用户通过学号或尊称查询学生的成绩。

我们使用了线性搜索算法和条件判断来实现查询功能,并通过输出语句将查询结果展示给用户。

4.【模块4:成绩修改模块】在实际教学中,教师可能需要对学生的成绩进行修改。

为此,我们设计了成绩修改模块。

该模块允许用户根据学生的学号或尊称选择需要修改的学生,并提供修改学生各项科目成绩的功能。

我们使用了指针和条件判断等技术,确保修改操作的准确性和可靠性。

5.【模块5:成绩统计模块】学生成绩统计模块可以帮助教师对班级的整体成绩进行分析和评估。

该模块提供了课程总成绩、平均分、最高分、最低分等统计指标。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

XXXXX课程设计说明书汇编语言课程设计班级: 网络B101 姓名: XXX学号XXX设计题目: 学生成绩管理设计时间: 2012.12.09 至2012.12.21指导教师: XXX评语:___________________________________________________________________________________________________________________________________________________________________________________________评阅成绩:___________评阅教师:____________ 一、课程设计的目的进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。

二、设备与环境PC兼容机、Windows操作系统、汇编程序masm for windows 2010三、课程设计要求1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。

2.遵循模块化、结构化的程序设计方法。

3.要求程序必须正确。

4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。

5.要求程序结构合理,语句使用得当。

6.适当追求编程技巧和程序运行效率。

四、课程设计的课题和分析题目:学生成绩管理分析:建立学生成绩文档;输入学生各门功课成绩;(假设3门功课);修改指定学号的学生成绩;统计指定学号的学生的平均成绩、总成绩,并在屏幕上显示;统计指定学号课程的平均成绩,并在屏幕上显示;每门课程成绩分析在屏幕上显示3门课程的各个分数段的学生人数;(分数段为:>=90;80~89;70~79;60~69;<=59)此处可以以表格的形式给出数据,或者以坐标曲线的形式给出。

对学生成绩记录进行检索(按学号、姓名), 成绩排序(按总成绩降序排列), 退出,最好用到文件处理。

五、流程图、总体设计、详细设计学生成绩管理,最基本能实现的的功能是输入学号,同时显示该学生的基本的信息,我设计的成绩管理系统功能还包括了显示该生的语文,英语,数学三门学科的成绩,求出了该生的总分,以及该生的平均分,动态输入学生的成绩,而且成绩是按照三位数显示的,可以输入任意多的学生人数,每个学生都是三门课程,最后统计输入所有学生的各科各个分数段的人数,最后显示出所有学生的成绩排名情况。

为了使系统更实际一些,我设计的系统包括建立了文件,方便学生的信息一次录入之后可以保存该数据,将该数据保存在score.txt文件中,而且文件的路径与该软件默认的安装路径一致;为了使系统更方便用户使用,我设计了菜单,菜单中设计了六个功能,包括插入,删除,查询,修改,查看,退出等。

以下是对程序中常用的六个个功能进行解析:1、数据输入功能:这是必不缺少的功能,学号的输入,成绩的输入都离不了这个功能,在输入成绩时,特地加了一个判断功能,在输入不合理的成绩时,程序将提示出错,并要求重新输入。

在输入学生学号的时候,程序首先会判断此学生的成绩是否存在,如果存在,则程序提示需重新输入。

插入一条学生记录子模块,搜索可用单元,接收输入的记录,并写入文件。

建立成绩表子模块,控制输入界面,并多次调用插入记录子模块,完成成绩的建立。

2、修改功能:考虑到会存在在输入成绩时,容易输入错误,或者发生个别学生的试卷被误判需修改成绩等情况,所以加了此功能,在发生以上情况时可以调用此功能,修改指定学生的成绩。

3、删除学生信息的功能。

如果输入的学生信息根本不存在,或者发生其它情况需删除一个无意义的学生信息时,可以调用此功能。

此功能将实现将指定学号学生的信息删除。

4、信息查找功能:当需要查询某个学生的成绩或者检查输入是否有误时,可以调用此功能,此功能实现将指定学号学生的成绩显示出来。

实际上在调用此功能的同时,程序会首先求的总成绩,平均成绩,然后产生排名结果,最后将数据信息显示。

5、显示排名信息功能:此功能会将学生成绩自动相加,得到每位学生的总成绩及平均成绩,然后进行排名,得到每个学生的名词,最后按照输入顺序将所有学生的学号,语文成绩,英语成绩,数学成绩,平均成绩,总成绩,名次依次输出。

模块中排名处理、学科平均成绩计算、均需取出某一学科的所有学生成绩,因而此操作作为公用子程序以供调用。

个人总分及平均分处理较为简单,根据索引逐条处理记录。

排名处理。

排名结果为一维数组,与学科成绩存在对应关系。

查询学生记录,先进行学号匹配,再输出一条记录;查询该生的所有信息。

6、文件写入及退出功能。

此功能实现将学生的信息保存在一个文件里。

此程序默认将文件放在C盘下,名称为:score,属性为txt格式的文本文档。

该文档能够保存数据,以便数据不需要重复录入,是系统更能满足用户需求。

写入文件完毕后,关闭文件,并退出程序。

该程序的流程图:文件创建和菜单显示:在创建文件时使用命令请求创建文件,以下是菜单显示,首先显示菜单的界面,1号功能接收功能,程序先和菜单中所有的功能都进行比较,假如都不是功能菜单,则提示输入错误,重新输入,假如输入正确,则调用相对应的子程序。

文件内容显示:在文件查找的子程序会显示该生的学号,三门的成绩,该生的总分,平均分和该生成绩的排名情况,则在显示学生信息之前先处理数据,成绩和总分是按照三位数的处理,学号和名次是按照两位数处理的,总分是字类型,其他的是字节类型,所以必须要转换基址才能找到该生相对应的总分。

文件的删除则是先找到该学生的信息,然后显示该生的成绩缓存区的地址的下一位,则显示的是空白。

总分和名次定义子程序sum proc near,先是从存放各科的缓存区移出数据,然后相加,采用循环,对用户输入的数据都是按照这个规则求出该生的总分;ping proc near 是求出该生的平均分,把之前存放在zc[bx]的总分数据取出来,然后除以3;六、遇到的问题及解决办法问题:在编写程序时,不知道删除的程序应该如何实现,以及在创建文件时不知道如何下手,然后老师提示是采用中断,我们需要自学中断,在设置光标和屏幕显示也是采用中断,我自能自学课本的第九章内容,然后再写程序,在文件的删除那里我卡住了研究好久也不知道怎么实现,最后我问了我同学,我们一起讨论出的结果就是让屏幕不显示当前指针指向的内容,显示指针指向的一个内容即可,这样就可以实现删除功能,删除功能就是删除该学号学生的成绩数据,使这些数据全部清空则达到了删除文件的功能;关键代码:此段代码时是实现数据段插入功能首先提示输入学号的语句,然后调用shuru的宏定义,这个宏定义是接收键盘输入的两位数,然后处理成十进制输出,比较符合实际,然后把n学生个数给bl,将输入的学生学号保存在xh[bx]数组中,方便使用,然后判断该学号是否为第一次输入,是则跳转,假如不是第一次输入,则提示用户该学号已经存在,需要重新输入,跳转到输入成绩的子程序,在调用shuruu宏,此功能是处理三位数,使成绩是按照三位数显示的,而且必须是在合理的范围内的,假如输入的数据是不合理的则又跳转到重新输入的界面,要求用户输入有效数据,数据输入完成之后则存入相对应的缓存区。

;*********************************************input proc near ;输入学生学号,成绩e6: output mess1shurumov bl,n ;统计输入学生个数mov bh,0mov xh[bx],dl ;输入的个数同时以地址指针形式显示cmp bx,0 ;判断是不是第一次输入,如果是,则跳过比较程序je qq1 ;继续输入成绩mov cl,n ;如果不是第一次输入则要将输入的学号与以前输入的比较cbwmov si,0mov al,xh[bx]e7: cmp al,xh[si]je e5add si,1loop e7jmp qq1e5: output ts4jmp e6qq1:output mess2 ;如果不是重复的学号则可以继续输入成绩和其他信息output mess4mov si,0mov cx,3qq3:shuruucmp dx,78h ;比较输入的成绩是否大于120,如果大于120的话,那么重新输入成绩jbe qq2output ts3 ;提示输入错误jmp qq1qq2:mov buf[si],dl ;把输入的学生信息保存在缓存区output bgadd si,1loop qq3mov bl,ncbwmov al,buf[0] ;以下是把之前的成绩数据保存到相对应的缓存区mov chi[bx],almov al,buf[1]mov eng[bx],almov al,buf[2]mov mat[bx],alretinput endp;**********************************************该关键代码是实现该学号学生的总分和名次的交换以及显示,首先是先把即将要用到的存储器全部清零,将名次mc[si]初值为1,si依次+1,因为存放名次的数组是字节类型的,然后把n学生的个数赋给cl,接下来就是处理查找总分的地址指针,因为总分数组是字型所以需要使bl*2,然后cx清零,按照学号找到相对应该生的总分,两个总分相比较此时大的则暂时为第一名,然后再继续接受总分,接受的总分又要和之前暂时的第一比较然后和暂时的第二名比较,循环找出第一名,继续循环,显示总分和名次。

;**********************************************rank proc near ;排名mov cl,nmov ch,0 ;将用到的存储器清零mov si,0rrc:mov mc[si],1 ;将存储名次的存储器给予的初值是1add si,1 ;loop rrcmov al,n ;此处2n最后放到al中,是为了下面总分的输出mov bl,2mul blmov cl,nmov ch,0mov si,0mov bx,0mov di,0rrb: mov dx,zc[di]rra: cmp dx,zc[bx] ;总分之间的比较jge continue ;大于等于的那个分数则为第一名add mc[si],1continue:add bx,2loop rra ;余下的继续比较依次排出名次mov cl,ncbwadd si,1 ;名次是字节类型的add di,2 ;总分是字类型的mov bx,0cmp si,ax ;ax里面是2n为了找到总分输出jbe rrbretrank endp;************************************************** 七、结果显示菜单显示界面图:首次输入学生信息界面;修改学生信息界面;查看学生各个分数段的界面;删除学生信息界面:查看学生成绩排名情况界面:八、感想、收获及体会终于完成了一门课程设计,比起之前完成的综合实验我觉得自己又上升了一个台阶,学到的东西更多了,虽然自己付出了两周的时间,但是一个好的程序员就需要舍得花时间去创建更加完美的程序,完成更多的功能,满足用户更多的要求。

相关文档
最新文档