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

合集下载

学生成绩管理系统源代码-(数据结构与算法课设)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个学号。

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语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include”stdlib。

h"#include"string。

h”typedefstruct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedefstruct unit//定义接点{studentdate;struct unit*next;}unit;unit大build()//建立链表并返回指针{unit*p;if((p=(unit*)malloc(sizeof(unit)))==NULL){printf("二>初始化失败!”);return0;}else{p—>next=NULL;p-〉date.number=O;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit大head)//增加学生{unit*p,*q;int m,n=0;q=head-〉next;p=(unit*)malloc(sizeof(unit));printf(”二〉请输入新生姓名!\n");gets(p—>);fflush(stdin);printf("二〉请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q二二NULL)n二1;while(q){if(q->date.number==m){prinTf("二>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head-〉next;break;}else{q=q->next;if(q==NULL)n=1;}}}p一〉date。

学生成绩管理系统程序源代码

学生成绩管理系统程序源代码

首先呢,先建立新的c++文件。

然后拷贝这些内容到里面:#include 〈stdio.h>#include <string.h〉typedef struct count{ /*保存记录条数结构体*/ char name[10];int num;}count;typedef struct st{char name[10];long Number;int Math;int C;int Amount;}st;st record[8];count num[1];char filename[10]={”0"};char filename2[10]={"0”};int Inputnum[8];void MainMenu(){/*主菜单*/ printf("\n\t\t\t\t* ** * **** **\n”);printf("\t\t\t\t*主菜单*\n”);printf(”\t\t\t\t* 1。

新建数据*\n”);printf(”\t\t\t\t*2。

添加数据*\n");printf("\t\t\t\t* 3. 删除数据*\n");printf("\t\t\t\t* 4. 排序*\n”);printf("\t\t\t\t* 5。

查询*\n");printf(”\t\t\t\t* 6. 退出*\n");printf(”\t\t\t\t***** ** ***\n”);}void DelMenu(){/*删除菜单*/ printf(”\n\t\t\t\t* ** *** *** * * *\n");printf("\t\t\t\t*删除菜单*\n”);printf("\t\t\t\t* 1. 学号查询删除*\n”);printf(”\t\t\t\t*2。

成绩管理系统源代码

成绩管理系统源代码

#include<stdio.h>#include<stdlib.h>#include<string.h>void Add();void Del();void Qur();void Modefy();void Wrong();typedef struct STU{ char num[10];char name[15];int cgrade;int mgrade;int egrade;int total;double ave;int mingci;struct STU *next;}STU;int select;char new_num[10], new_name[15];int i,n,new_cgrade,new_mgrade,new_egrade,new_total; double new_ave;STU *head,*p,*q,*r;void main(){head=(STU *)malloc(sizeof(STU));/*建立其它结点并将其链接*/printf("输入学生数:");scanf("%d",&n);p=head;/*输入新结点部分成员并求新结点其它成员值*/printf("学号:");scanf("%s",p->num);printf("姓名:");scanf("%s",p->name);printf("该生三科成绩:");scanf("%d%d%d",&p->cgrade,&p->mgrade,&p->egrade);p->total=p->cgrade+p->mgrade+p->egrade;p->ave=p->total/3.0;for(i=1;i<n;i++){q=(STU*)malloc(sizeof(STU));p->next=q;p=q;printf("学号:");printf("姓名:");scanf("%s",p->name);printf("该生三科成绩:");scanf("%d%d%d",&p->cgrade,&p->mgrade,&p->egrade);p->total=p->cgrade+p->mgrade+p->egrade;p->ave=p->total/3.0;i++;}/*尾结点的链置空*/p->next=NULL;/*输出链表中每个结点*/printf("\n\n计科系**班第*学年第*学期**课程成绩表\n");printf("--------------------------------------------------------------------------------\n");printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","学号","姓名","c成绩","数学成绩","英语成绩","总分","平均分");p=head;while(p!=NULL){printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10f\n",p->num,p->name,p->cgrade,p->mg rade,p->egrade,p->total,p->ave);p=p->next;}printf("--------------------------------------------------------------------------------\n");printf("\t\t\22 学生成绩管理系统主菜单\22\n");printf("\t\t\22 \22\n");printf("\t\t\22 1.增加学生记录\22\n");printf("\t\t\22 2.删除学生记录\22\n");printf("\t\t\22 3.查询学生记录\22\n");printf("\t\t\22 4.修改学生记录\22\n");printf("\t\t\22 5.退出\22\n");printf("\t\t请选择: 1-5:");scanf("%d",&select);switch(select){case 1:Add();break;case 2:Del();break;case 3:Qur();break;case 4:Modefy();break;case 5:break;default :Wrong();break;}}void Add(){/*输入待插学生的学号*/printf("请输入待插学生学号:");printf("姓名:");scanf("%s",new_name);printf("该生三科成绩:");scanf("%d%d%d",&new_cgrade,&new_mgrade,&new_egrade);new_total=new_cgrade+new_mgrade+new_egrade;new_ave=new_total/3.0;/*在单链表中寻找满足学号>new_num的第一条记录p,并记录其前驱q*/ p=head; q=head;while(p!=NULL&&strcmp(p->num, new_num)<0){ q=p;p=p->next;}/*建立新结点*/r=(STU *)malloc(sizeof(STU));strcpy(r->num, new_num);strcpy(r->name, new_name);r->cgrade=new_cgrade;r->mgrade=new_mgrade;r->mgrade=new_egrade;r->total=new_total;r->ave=new_ave;/*在q结点后面(p结点前面)插入新结点r*/if(p!=head) /*当待插位置不在第一位置*/{ r->next=q->next;q->next=r;}else /*应该在头结点前插入*/{ r->next=p;head=r;}/*输出新单链表*/printf("插入新结点后的单链表为:");printf("\n\n计科系**班第*学年第*学期**课程成绩表\n");printf("--------------------------------------------------------------------------------\n");printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","学号","姓名","c成绩","数学成绩","英语成绩","总分","平均分");p=head;while(p!=NULL){printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10f\n",p->num,p->name,p->cgrade,p->mg rade,p->egrade,p->total,p->ave);p=p->next;}printf("--------------------------------------------------------------------------------\n");printf("--------------------------------------------------------------------------------\n");printf("\t\t\22 学生成绩管理系统主菜单\22\n");printf("\t\t\22 \22\n");printf("\t\t\22 1.增加学生记录\22\n");printf("\t\t\22 2.删除学生记录\22\n");printf("\t\t\22 3.查询学生记录\22\n");printf("\t\t\22 4.修改学生记录\22\n");printf("\t\t\22 5.退出\22\n");printf("\t\t请选择: 1-5:");scanf("%d",&select);switch(select){case 1:Add();break;case 2:Del();break;case 3:Qur();break;case 4:Modefy();break;case 5:break;default :Wrong();break;}}void Del(){/*输入待删学生的学号*/printf("请输入待删学生学号:");scanf("%s", new_num);/*在单链表中寻找学号=new_num的记录p,并记录其前驱q*/p=head; q=head;while(p!=NULL&&strcmp(p->num, new_num)<0){ q=p;p=p->next;}/*判断是否找到该结点*/if(p!=NULL&&strcmp(p->num, new_num)==0){ if(p!=head) /*若不是头结点*/q->next=p->next;elsehead=p->next;free(p);}else printf("未找到该学生!\n");/*输出新单链表*/printf("删除结点后的单链表为:");printf("\n\n计科系**班第*学年第*学期**课程成绩表\n");printf("--------------------------------------------------------------------------------\n");printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","学号","姓名","c成绩","数学成绩","英语成绩","总分","平均分");p=head;while(p!=NULL){printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10f\n",p->num,p->name,p->cgrade,p->mg rade,p->egrade,p->total,p->ave);p=p->next;}printf("--------------------------------------------------------------------------------\n");printf("--------------------------------------------------------------------------------\n");printf("\t\t\22 学生成绩管理系统主菜单\22\n");printf("\t\t\22 \22\n");printf("\t\t\22 1.增加学生记录\22\n");printf("\t\t\22 2.删除学生记录\22\n");printf("\t\t\22 3.查询学生记录\22\n");printf("\t\t\22 4.修改学生记录\22\n");printf("\t\t\22 5.退出\22\n");printf("\t\t请选择: 1-5:");scanf("%d",&select);switch(select){case 1:Add();break;case 2:Del();break;case 3:Qur();break;case 4:Modefy();break;case 5:break;default :Wrong();break;}}void Qur(){int select;printf("\t\t\22 1.以学号查询\22\n");printf("\t\t\22 2.以姓名查询\22\n");printf("请输入:1-2:");scanf("%d",&select);switch(select){case 1:{printf("请输入查询学生学号:");scanf("%s", new_num);/*在单链表中寻找学号=new_num的记录p,并记录其前驱q*/p=head; q=head;while(p!=NULL&&strcmp(p->num, new_num)<0){ q=p;p=p->next;}/*判断是否找到该结点*/if(p!=NULL&&strcmp(p->num, new_num)==0){printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","学号","姓名","c成绩","数学成绩","英语成绩","总分","平均分");printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10f\n",p->num,p->name,p->cgrade,p->mgr ade,p->egrade,p->total,p->ave);}else printf("未找到该学生!\n");}break;case 2:{printf("请输入查询学生姓名:");scanf("%s", new_name);/*在单链表中寻找学号=new_name的记录p,并记录其前驱q*/p=head; q=head;while(p!=NULL&&strcmp(p->name, new_name)!=0){ q=p;p=p->next;}/*判断是否找到该结点*/if(p!=NULL&&strcmp(p->name, new_name)==0){printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","学号","姓名","c成绩","数学成绩","英语成绩","总分","平均分");printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10f\n",p->num,p->name,p->cgrade,p->mgr ade,p->egrade,p->total,p->ave);}else printf("未找到该学生!\n");}break;}printf("--------------------------------------------------------------------------------\n");printf("\t\t\22 学生成绩管理系统主菜单\22\n");printf("\t\t\22 \22\n");printf("\t\t\22 1.增加学生记录\22\n");printf("\t\t\22 2.删除学生记录\22\n");printf("\t\t\22 3.查询学生记录\22\n");printf("\t\t\22 4.修改学生记录\22\n");printf("\t\t\22 5.退出\22\n");printf("\t\t请选择: 1-5:");scanf("%d",&select);switch(select){case 1:Add();break;case 2:Del();break;case 3:Qur();break;case 4:Modefy();break;case 5:break;default :Wrong();break;}}void Modefy(){printf("请输入要修改学生学号:");scanf("%s", new_num);/*在单链表中寻找学号=new_num的记录p,并记录其前驱q*/p=head; q=head;while(p!=NULL&&strcmp(p->num, new_num)<0){ q=p;p=p->next;}if(p!=NULL&&strcmp(p->num, new_num)==0){strcpy(p->num, new_num);printf("重新输入该学生信息:");printf("姓名:");scanf("%s",p->name);printf("该生三科成绩:");scanf("%d%d%d",&p->cgrade,&p->mgrade,&p->egrade);p->total=p->cgrade+p->mgrade+p->egrade;p->ave=p->total/3.0;printf("修改后的单链表为:");printf("\n\n计科系**班第*学年第*学期**课程成绩表\n");printf("--------------------------------------------------------------------------------\n");printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","学号","姓名","c成绩","数学成绩","英语成绩","总分","平均分");p=head;while(p!=NULL){printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10f\n",p->num,p->name,p->cgrade,p->mg rade,p->egrade,p->total,p->ave);p=p->next;}printf("--------------------------------------------------------------------------------\n");}printf("--------------------------------------------------------------------------------\n");printf("\t\t\22 学生成绩管理系统主菜单\22\n");printf("\t\t\22 \22\n");printf("\t\t\22 1.增加学生记录\22\n");printf("\t\t\22 2.删除学生记录\22\n");printf("\t\t\22 3.查询学生记录\22\n");printf("\t\t\22 4.修改学生记录\22\n");printf("\t\t\22 5.退出\22\n");printf("\t\t请选择: 1-5:");scanf("%d",&select);switch(select){case 1:Add();break;case 2:Del();break;case 3:Qur();break;case 4:Modefy();break;case 5:break;default :Wrong();break;}}void Wrong(){printf("输入错误!!!!\n");printf("请输入1-5:\n");printf("--------------------------------------------------------------------------------\n"); printf("\t\t\22 学生成绩管理系统主菜单\22\n");printf("\t\t\22 \22\n");printf("\t\t\22 1.增加学生记录\22\n");printf("\t\t\22 2.删除学生记录\22\n");printf("\t\t\22 3.查询学生记录\22\n");printf("\t\t\22 4.修改学生记录\22\n");printf("\t\t\22 5.退出\22\n");printf("\t\t请选择: 1-5:\n");scanf("%d",&select);switch(select){case 1:Add();break;case 2:Del();break;case 3:Qur();break;case 4:Modefy();break;case 5:break;default :Wrong();break;}}。

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. 运行系统后,会出现一个菜单,根据需求选择相应的操作。

学生成绩管理系统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);}/******************************************结束*******************************************************/。

学生成绩管理系统源代码

学生成绩管理系统源代码

学生成绩管理系统源代码#include<stdio.h>#include<stdlib.h>int main(){typedef struct LNode{char name[6];int no;int yw;int sx;int yy;struct LNode *next;}LinkList;struct NameNo{int no;int yw;int sx;int total;char name[6];}st[10];FILE *fp,*fp1;char ch,sname[6];int x,i,j;NameNo tmp;LinkList *p,*s;printf("\n");printf("-------------------------------");printf("学生成绩管理系统");printf("--------------------------------");printf("\n\n");printf("在您的C盘根目录下是否有cj1.txt和cj2.txt文件?如果有请输入,1");printf("否则输入0;如果没有,那么程序将终止!1 or 0?");scanf("%d",&i);if(i==0) return 0;printf("\n\n");printf("对cj1.txt和cj2.txt进行合成请按‘1’");scanf("%d",&i);if(i!=1) return 0;printf("正在把cj1.txt和cj2.txt中的数据进行合并\n");printf("......\n.....\n....\n...\n..\n.\n");if((fp=fopen("c:\\cj1.txt","rt"))==NULL){printf("无cj1.txt文本文件,程序结束。

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

C语言学生成绩管理系统_源代码
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)
};
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);
printf ("对不起,您输入的用户名或密码有误,已被强制退出。\n");
}
struct student stu[MAX],*p;
void menu() /*主函数*/

学生成绩管理系统的设计与实现代码

学生成绩管理系统的设计与实现代码

学生成绩管理系统的设计与实现代码本系统有增加学生记录、修改学生记录、删除学生记录、按姓名查询学生记录、按C语言成绩对学生进行排序、退出系统6大功能。

能够对学生的姓名,学号,c语言成绩做相应的操作。

在检测到输入成绩大于55时,会自动加上5。

该管理系统设计功能模块图:下面是源代码:#include "stdio.h"#include "string.h"/*定义学生结构体*/struct Student{char ID[20]; //学号char Name[20]; //姓名float C_Mark; //C语言成绩};/*声明学生数组及学生数量*/struct Student students[1000];int num=0;/*通过学号返回数组下标*/int Student_SearchByIndex(char id[]) {int i;for (i=0;i<num;i++){if (strcmp(students[i].ID,id)==0) {return i;}}return -1;}/*通过姓名返回数组下标*/int Student_SearchByName(char name[]) {int i;for (i=0;i<num;i++){if (strcmp(students[i].Name,name)==0){return i;}}return -1;}/*显示单条学生记录*/void Student_DisplaySingle(int index){printf("%10s%10s%8s\n","学号","姓名","C语言成绩");printf("-------------------------------------------------------------\n");printf("%10s%10s%8.2f\n",students[index].ID,students[index] .Name,students[index].C_Mark);}/****1、增加学生记录*****/void Student_Insert(){while(1){printf("请输入学号:");scanf("%s",&students[num].ID);getchar();printf("请输入姓名:");scanf("%s",&students[num].Name);getchar();printf("请输入C语言成绩:");scanf("%f",&students[num].C_Mark);getchar();if (54<students[num].C_Mark && students[num].C_Mark< 60) //把55~59分之间的成绩都加上5分{students[num].C_Mark += 5;}num++;printf("是否继续?(Y/N),继续请按任意键,否则输入N:");if (getchar()=='N'){break;}}}/******2、修改学生信息**********/void Student_Modify(){while(1){char id[20];int index;printf("请输入要修改的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index==-1){printf("该学生不存在!\n");}else{printf("你要修改的学生信息为:\n");Student_DisplaySingle(index);printf("-- 请输入新值--\n");printf("请输入学号:");scanf("%s",&students[index].ID);getchar();printf("请输入姓名:");scanf("%s",&students[index].Name);getchar();printf("请输入C语言成绩:");scanf("%f",&students[index].C_Mark);getchar();}printf("是否继续?(Y/N),继续请按任意键,否则输入N:");if (getchar()=='N'){break;}}}/****3、删除学生信息****/void Student_Delete(){int i;while(1){char id[20];int index;printf("请输入要删除的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index==-1){printf("学生不存在!\n");}else{printf("你要删除的学生信息为:\n");Student_DisplaySingle(index);printf("是否真的要删除?(Y/N)");if (getchar()=='Y'){for (i=index;i<num-1;i++){students[i]=students[i+1];//把后边的对象都向前移动}num--;}getchar();printf("已删除\n");}printf("是否继续删除?(Y/N),继续请按任意键,否则输入N:");if (getchar()=='N'){break;}}}/****4、按姓名查询******/void Student_Select(){while(1){char name[20];int index;printf("请输入要查询的学生的姓名:");scanf("%s",&name);getchar();index=Student_SearchByName(name);if (index==-1){printf("学生不存在!\n");}else{printf("你要查询的学生信息为:\n");Student_DisplaySingle(index);}printf("是否继续?(Y/N),继续请按任意键,否则输入N:");if (getchar()=='N'){break;}}}/******5、按C语言成绩排序*******/void Student_SortByAverage(){int i,j;struct Student tmp;for (i=0;i<num;i++){for (j=1;j<num-i;j++){if (students[j-1].C_Mark<students[j].C_Mark){tmp=students[j-1];students[j-1]=students[j];students[j]=tmp;}}}}/*显示学生信息*/void Student_Display(){int i;printf("%10s%10s%8s\n","学号","姓名","成绩");printf("-------------------------------------------------------------\n");for (i=0;i<num;i++){printf("%10s%10s%8.2f\n",students[i].ID,students[i].Name ,students[i].C_Mark);}}/*将学生信息从文件(Database.txt)中读出*/void IO_ReadInfo(){FILE *fp;int i;if ((fp=fopen("Database.txt","rb"))==NULL){printf("不能打开文件!\n");return;}if (fread(&num,sizeof(int),1,fp)!=1){num=-1;}else{for(i=0;i<num;i++){fread(&students[i],sizeof(struct Student),1,fp);}}fclose(fp);}/*将学生信息写入文件(Database.txt)*/void IO_WriteInfo(){FILE *fp;int i;if ((fp=fopen("Database.txt","wb"))==NULL){printf("不能打开文件!\n");return;}if (fwrite(&num,sizeof(int),1,fp)!=1){printf("写入文件错误!\n");}for (i=0;i<num;i++){if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1){printf("写入文件错误!\n");}}fclose(fp);}/***********主程序*********/void main(){int choice;IO_ReadInfo(); //读取文件while(1){/*主菜单*/printf("\n------ 学生成绩管理系统------\n");printf("1. 增加学生记录\n");printf("2. 修改学生记录\n");printf("3. 删除学生记录\n");printf("4. 按姓名查询学生记录\n");printf("5. 按C语言成绩排序\n");printf("6. 退出\n");printf("请选择(1-6):");scanf("%d",&choice);getchar();switch(choice){case 1:Student_Insert();break;case 2:Student_Modify();break;case 3:Student_Delete();break;case 4:Student_Select();break;case 5:Student_SortByAverage();Student_Display();break;case 6:exit(0);break;}IO_WriteInfo();}}1234567891011121415161718192021222324252627282930313233343637383940414243444546474849505152535455565859606162636465666768697071727374757677788081828384858687888990919293949596979899 100102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320322323324325326327328329330331332333334335336337338运行结果:测试第一个功能,输入四个学生的成绩:测试第二个功能,修改学生记录:测试第三个功能,删除学生记录:测试第四个功能,按姓名查询学生记录:测试第五个功能,显示所有学生的成绩,按照C语言成绩由高到底排序:我们可以看到,各项功能的实现,在第2个步骤中,将赵的成绩改为80,而第3个步骤删除了李的成绩。

学生成绩管理系统源代码

学生成绩管理系统源代码

学生成绩管理系统源代码(总13页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--#include <>#include <>#include <>#include <>#include<>#include<>#include<>#include<>#define PRINT1 textcolor(12); cprintf("\r 请按任意键返回主菜单\n\r");textcolor(10); getch();clrscr(); break;int shoudsave=0;struct student /* 学生信息结构体定义*/{char num[10],name[20],cla[4];int score1,score2,score3,total,ave;};typedef struct node{struct student data;struct node *next;}Node,*L;void print1(){cprintf("\r================================================================================");}void print2(){cprintf("\n\r 1.输入学生成绩信息在这里你可以按照提示输入学生的班级,学号,姓名及各科成绩.\n");cprintf("\n\r 2.注销学生成绩信息在这里你可以按照学号或姓名将某名学生的信息从本系统中删除.\n");cprintf("\n\r 3.查询学生成绩信息在这里你可以按照学号或姓名查询某一名学生的信息.\n");cprintf("\n\r 4.修改学生成绩信息在这里你可以按照提示修改某一名学生的学号,姓名及各科成绩.");cprintf("\n\r 5.学生成绩信息排序在这里你可以看到所有学生的各科成绩.\n");cprintf("\n\r 6.学生成绩信息统计在这里本系统将为你显示所有科目的最高分及最低分所得学生.\n");cprintf("\n\r 7.显示学生成绩信息在这里你可以看到系统中所有学生的信息.\n");cprintf("\n\r 8.保存学生成绩信息在这里你可以将学生你信息保存到内存中.\n");cprintf("\n\r 9.帮助学生成绩信息在这里你可以获得帮助信息.\n"); cprintf("\n\r 0.退出系统在这里选择是否保存后,你可以安全的退出本系统.\n\n\r ");}void menu(){cprintf("\n\r\xc9\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd \xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\ xcd\xcd\xcd\xcd\xcd\xcd\xcb\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\x cd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xc d\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xbb");cprintf("\r\xba 学生信息导入 \xba 学生信息处理 \xba");cprintf("\r\xba____________________________________\xba______________ ____________________________\xba");cprintf("\r\xba 1-->输入学生成绩信息 \xba 6-->学生成绩信息统计 \xba");cprintf("\r\xba 2-->注销学生成绩信息 \xba 7-->显示学生成绩信息 \xba");cprintf("\r\xba 3-->查询学生成绩信息 \xba 8-->保存学生成绩信息 \xba");cprintf("\r\xba 4-->修改学生成绩信息 \xba 9-->帮助学生成绩信息 \xba");cprintf("\r\xba 5-->学生成绩信息排序 \xba 0-->退出系统 \xba");cprintf("\r\xc8\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\x cd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xc d\xcd\xcd\xcd\xcd\xcd\xca\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd \xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\ xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xbc");}void wrong(){cprintf("\n\r输入错误!请验证后重新输入.\n");}void notfind(){cprintf("\n\r该学生信息不存在!请验证后重新输入.\n");}void printc() /* 此函数用于输出中文格式 */{cprintf("\r学号姓名班级英语数学 C语言总分平均分\n ");}void printe(Node *p) /* 此函数用于输出英文格式 */{cprintf("\r%-4s%-4s%4s%5d%5d%8d%5d%7d\n\r",p->,p->,p->,p->,p->,p->,p->,p->;}Node* Locate(L l,char findinfo[],char nameornum[])/* 该函数用于定位连表中符合要求的接点,并返回该指针 */{Node *r;if(strcmp(nameornum,"num")==0) /* 按学号查询 */{r=l->next;while(r!=NULL){if(strcmp(r->,findinfo)==0)return r;r=r->next;}}else if(strcmp(nameornum,"name")==0) /* 按姓名查询 */{r=l->next;while(r!=NULL){if(strcmp(r->,findinfo)==0)return r;r=r->next;}}return 0;}void input(L l)/* 增加学生 */{Node *p,*r,*s;char num[10];r=l;s=l->next;while(r->next!=NULL)r=r->next; /* 将指针置于最末尾 */while(1){ cprintf("\r如果输入完毕,请按任意键返回主菜单\n");cprintf("\r如果你还想输入,请按y(yes)继续\n\r");scanf("%s",num);if(strcmp(num,"y")==0){ cprintf("请你输入学号:");scanf("%s",num); } else break;while(s){if(strcmp(s->,num)==0){printf("\t学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\n",num);print1();printc();printe(s);print1();printf("\n");getch();return;}s=s->next;}p=(Node *)malloc(sizeof(Node));strcpy(p->,num);cprintf("\r请你输入姓名:");scanf("%s",p->;getchar();cprintf("\r请你输入班级:");scanf("%s",p->;getchar();cprintf("\r请你输入c语言成绩(0-100):");scanf("%d",&p->;getchar();cprintf("\r请你输入数学成绩(0-100):");scanf("%d",&p->;getchar();cprintf("\r请你输入英语成绩(0-100):");scanf("%d",&p->;getchar();p->=p->+p->+p->;p->=p-> / 3; /* 信息输入已经完成 */p->next=NULL;r->next=p;r=p;shoudsave=1;}}void query(L l) /* 查询学生信息 */{int select;char findinfo[20];Node *p;if(!l->next){cprintf("\n 没有信息可以查询!\n");return;}cprintf("\n1==>按学号查找\n\r2==>按姓名查找\n\r");scanf("%d",&select);if(select==1) /* 学号 */{cprintf("\r请你输入要查找的学号:");scanf("%s",findinfo);p=Locate(l,findinfo,"num");if(p){cprintf(" 查找结果\n\r");print1();printc();printe(p);print1();}elsenotfind();}else if(select==2) /* 姓名 */{cprintf("\r请你输入要查找的姓名:");scanf("%s",findinfo);p=Locate(l,findinfo,"name");if(p){cprintf(" 查找结果\n\r");print1();printc();printe(p);print1();}elsenotfind();}elsewrong();}void Delete(L l) /* 删除学生信息 */{int select;Node *p,*r;char findinfo[20];if(!l->next){cprintf("\n 没有信息可以删除!\n");return;}cprintf("\n1==>按学号删除\n\r2==>按姓名删除\n\r");scanf("%d",&select);if(select==1){cprintf("\r请你输入要删除的学号:");scanf("%s",findinfo);p=Locate(l,findinfo,"num");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);cprintf("\n\r该学生已经成功删除!\n");shoudsave=1;}elsenotfind();}else if(select==2){cprintf("\r请你输入要删除的姓名:");scanf("%s",findinfo);p=Locate(l,findinfo,"name");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);cprintf("\n\r该学生已经成功删除!\n");shoudsave=1;}elsenotfind();}else wrong();}void modify(L l) /*修改学生信息*/{Node *p;char findinfo[20];if(!l->next){cprintf("\n\r没有信息可以修改!\n");return;}cprintf("\r请你输入要修改的学生学号:");scanf("%s",findinfo);p=Locate(l,findinfo,"num");if(p){cprintf("\r请你输入新学号(原来是%s):",p->;scanf("%s",p->;cprintf("\r请你输入新姓名(原来是%s):",p->;scanf("%s",p->;getchar();cprintf("\r请你输入新班级(原来是%s):",p->;scanf("%s",p->;cprintf("\r请你输入新的c语言成绩(原来是%d分):",p->;scanf("%d",&p->;getchar();cprintf("\r请你输入新的数学成绩(原来是%d分):",p->;scanf("%d",&p->;getchar();cprintf("\r请你输入新的英语成绩(原来是%d分):",p->;scanf("%d",&p->;p->=p->+p->+p->;p->=p->3;cprintf("\n\r信息修改成功!\n");shoudsave=1;}elsenotfind();}void display(L l){/*显示全部学生信息*/int count=0;Node *p;p=l->next;if(!p){cprintf("\n\r 没有信息可以显示!\n");return;}cprintf(" 显示结果");print1();printc();while(p){ if(count%5==0) getch();printe(p);p=p->next;count++;}print1();cprintf("\n");}void Statistic(L l) /*统计学生信息*/{Node *pm_max,*pe_max,*pc_max,*pt_max,*pa_max; /* 用于指向分数最高的接点 */Node *pm_min,*pe_min,*pc_min,*pt_min,*pa_min;Node *r=l->next;if(!r){cprintf("\n\r 没有信息可以统计!\n");return ;}pm_max=pe_max=pc_max=pt_max=pa_max=pm_min=pe_min=pc_min=pt_min=pa_min =r;while(r!=NULL){if(r->>=pc_max->pc_max=r;if(r-><=pc_min->pc_min=r;if(r->>=pm_max->pm_max=r;if(r-><=pm_min->pm_min=r;if(r->>=pe_max->pe_max=r;if(r-><=pe_min->pe_min=r;if(r->>=pt_max->pt_max=r;if(r-><=pt_min->pt_min=r;if(r->>=pa_max->pa_max=r;if(r-><=pa_min->pa_min=r;r=r->next;}cprintf("====================================统计结果====================================\n");cprintf("\r总分最高者: %-16s %d分\n",pt_max->,pt_max->; cprintf("\r平均分最高者: %-16s %d分\n",pa_max->,pa_max->; cprintf("\r英语最高者: %-16s %d分\n",pe_max->,pe_max->; cprintf("\r数学最高者: %-16s %d分\n",pm_max->,pm_max->; cprintf("\rc语言最高者: %-16s %d分\n\r",pc_max->,pc_max->; cprintf("\r总分最低者: %-16s %d分\n",pt_min->,pt_min->; cprintf("\r平均分最低者: %-16s %d分\n",pa_min->,pa_min->;cprintf("\r英语最低者: %-16s %d分\n",pe_min->,pe_min->;cprintf("\r数学最低者: %-16s %d分\n",pm_min->,pm_min->;cprintf("\rc语言最低者: %-16s %d分\n\r",pc_min->,pc_min->;print1();}void Sort(L l){L ll;Node *p,*rr,*s;ll=(L)malloc(sizeof(Node)); /* 用于做新的连表 */ll->next=NULL;if(l->next==NULL){cprintf("\n\r 没有信息可以排序!\n");return ;}p=l->next;while(p){s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息 */s->data=p->data;s->next=NULL;rr=ll;while(rr->next!=NULL && rr->next->>=p->rr=rr->next;if(rr->next==NULL)rr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}free(l);l->next=ll->next;cprintf("\n\r 排序已经完成!\n");}void Save(L l) /* */{FILE* fp;Node *p;int flag=1,count=0;fp=fopen("c:\\student","wb");if(fp==NULL){cprintf("\n\r 重新打开文件时发生错误!\n");exit(1);}p=l->next;while(p){if(fwrite(p,sizeof(Node),1,fp)==1){p=p->next;count++;}else{flag=0;break;}}if(flag){cprintf("\n\r 文件保存成功.(有%d条信息已经保存.)\n\r",count);shoudsave=0;}fclose(fp);}void main() /* */{L l;/* 链表 */FILE *fp; /* 文件指针 */int count=0 ,i,menu_select; /*菜单选择 */char ch ,creat;Node *p,*r;time_t it;clrscr();textmode(C80);window(1,1,80,25);textbackground(1); clrscr();textcolor(10);printf("\r 学生成绩管理系统");printf("\r -------扬州大学信息工程学院软件0902班 ") ;printf("\r 设计人员:李天鹏 ");l=(Node*)malloc(sizeof(Node));l->next=NULL;r=l;fp=fopen("c:\\student","rb");if(fp==NULL){cprintf("\n\r 该文件还未存在,是否需要创建(y/n,Y/N)\n\r");scanf("%c",&creat);if(creat=='y'||creat=='Y'){fp=fopen("c:\\student","wb");}elseexit(0);}gotoxy(9,11); textcolor(12);cprintf("\n\r 文件已经打开,系统正在导入信息");for(i=0;i<6;i++){ cprintf(".");sleep(1);}textcolor(10);gotoxy(9,11); cprintf("\n ");while(!feof(fp)){p=(Node*)malloc(sizeof(Node));if(fread(p,sizeof(Node),1,fp))/* 将文件的内容放入接点中 */{p->next=NULL;r->next=p;r=p; /* 将该接点挂入连中 */count++;}fclose(fp);/* 关闭文件 */gotoxy(1,3);cprintf("\n\r信息导入完毕,系统共导入%d条信息",count);sleep(1);while(1){ menu();textcolor(12);cprintf("\r现在时间: "); it=time(NULL);cprintf(ctime(&it));cprintf("\r左边数字对应功能选择,请按0--9选择操作:\n\r");textcolor(10) ;scanf("%d",&menu_select);if(menu_select==0){if(shoudsave==1){ getchar(); textcolor(128+12);cprintf("\n\r 信息已经改动,是否将改动保存到文件中(y/n Y/N)\n\r");scanf("%c",&ch);if(ch=='y'||ch=='Y')Save(l);}cprintf("\n\r 你已经成功退出学生成绩信息系统,欢迎下次继续使用!\n");break;}switch(menu_select){case 1: clrscr(); input(l); clrscr(); break; /* 输入学生 */case 2: clrscr(); Delete(l); PRINT1 /* 删除学生 */case 3: clrscr(); query(l); PRINT1 /* 查询学生 */case 4: clrscr(); modify(l); PRINT1 /* 修改学生 */case 5: clrscr(); Sort(l); PRINT1case 6: clrscr(); Statistic(l); PRINT1case 7: clrscr(); display(l); PRINT1case 8: clrscr(); Save(l); PRINT1 /*保存学生 */case 9: clrscr(); cprintf(" ==========帮助信息==========\n");print2(); PRINT1 ; default: wrong(); getchar(); break;} }}。

学生成绩管理系统源代码汇编

学生成绩管理系统源代码汇编
fclose(fp);
}
/*将排序后的学生信息读入到另外的文件中**********************************************************/
void save2()
{
FILE *fp;
int i;
if((fp=fopen("stud.dat","rb+"))==NULL)/*以二进制读,写方式打开文件*/
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 3 /*定义常量SIZE便于以后的修改*/
struct student /*定义一个结构体数组存放学生的信息*/
{
int number; /*学号*/
char name[20];/*名字*/
printf("*************************************\n");
printf("1.学生成绩写入及排序\n");
printf("2.增加学生信息\n");
printf("3.删除学生信息\n");
printf("4.修改学生信息\n");
printf("5.查询学生信息\n");
void search();/*查找最高成绩操作*/
void tongji2();/*统计不及格率操作*/
void read();/*读取student.dat文件文件中学生的信息*/
/*主函数************************************************************************************/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

学生成绩管理系统源代码

学生成绩管理系统源代码

#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>struct student{char no[9];char name[20];int score[4];float aver;float sum;};void menu()//菜单{printf(" \t\t 学生成绩管理系统\n");printf("\t\t*******************菜单*******************\n");printf("\t\t* 1 录入成绩 2 删除成绩*\n");printf("\t\t* 3 查询成绩 4 修改成绩*\n");printf("\t\t* 5 插入成绩 6 具体查看*\n");printf("\t\t* 7 成绩排序8 保存成绩*\n");printf("\t\t* 9 显示成绩0 退出系统*\n");printf("\t\t******************************************\n");printf("\n");}void input(struct student *stu,int *n)//录入成绩{int i=*n;int k=1;int a,b;system("cls");printf("\t\t\t\t录入成绩\n");while(k){printf("\t\t请输入学号:");scanf("%s",stu[i].no);printf("\t\t请输入XX:");scanf("%s",stu[i].name);printf("\t\t请输入语文成绩:");scanf("%d",&stu[i].score[0]);printf("\t\t请输入数学成绩:");scanf("%d",&stu[i].score[1]);printf("\t\t请输入英语成绩:");scanf("%d",&stu[i].score[2]);printf("\t\t请输入C语言成绩:");scanf("%d",&stu[i].score[3]);printf("\t\t继续录入请输入1,终止录入请输入0:");scanf("%d",&k);i++;(*n)++;}for(a=0;a<i;a++){ //sum aver 归零stu[a].sum=0;stu[a].aver=0;}for(a=0;a<i;a++)//计算总分for(b=0;b<4;b++)stu[a].sum+=stu[a].score[b];for(a=0;a<i;a++)//计算平均分stu[a].aver=stu[a].sum/4;system("pause");}void dele(struct student *stu,int *n)// 删除成绩{system("cls");int i;char number[9],name[9];printf("\t\t请输入您要删除该同学的学号:");scanf("%s",number);printf("\t\t请输入您要删除该同学的XX:");scanf("%s",name);for(i=0;i<*n;i++){if(strcmp(stu[i].no,number)==0 && strcmp(stu[i].name,name)==0){for(;i<(*n-1);i++)stu[i]=stu[i+1];(*n)--;}break;}printf("\t\t删除成功!");}void search(struct student *stu,int n)// 查询成绩{system("cls");int i,a=1;char number[9];char name[20];while(a){printf("\t\t请输入您的学号:");scanf("%s",&number);printf("\t\t请输入您的XX:");scanf("%s",&name);for(i=0;i<n;i++){if(strcmp(stu[i].no,number)==0 && strcmp(stu[i].name,name)==0 ){printf("\t-----------------------------成绩单-------------------------------\n");printf("\n");printf("\t| 学号| | 语文| 数学| 英语| C语言| 总分| 平均分|\n");printf("\t| %-5s | %-6s | %-4d| %-4d| %-4d| %-4d| %-3.1f | %-5.1f |\n",stu[i].no,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].a ver);a=0;}else{printf("\t\t输入有误,请重新输入!\n");}break;}}system("pause");}void modify(struct student *stu,int n)//修改成绩{system("cls");char number[9],name[9];int a,i,m=1,b;printf("\t根据学号来修改成绩请输入1,根据XX来修改成绩请输入0。

  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;************************************************** 七、结果显示菜单显示界面图:首次输入学生信息界面;修改学生信息界面;查看学生各个分数段的界面;删除学生信息界面:查看学生成绩排名情况界面:八、感想、收获及体会终于完成了一门课程设计,比起之前完成的综合实验我觉得自己又上升了一个台阶,学到的东西更多了,虽然自己付出了两周的时间,但是一个好的程序员就需要舍得花时间去创建更加完美的程序,完成更多的功能,满足用户更多的要求。

相关文档
最新文档