学生成绩单管理组织系统源代码

合集下载

学生成绩管理系统源代码

学生成绩管理系统源代码

学生成绩管理系统源代码-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dos.h>#include<ctype.h>#include<conio.h>#include<stddef.h>#include<time.h>#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\xc d\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\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xc d\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\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\xcd\xcd\xcd\ xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xc d\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\xc d\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->data.num,p->,p->data.cla,p->data.score3,p->data.score2,p->data.score1,p->data.total,p->data.ave); }Node* Locate(L l,char findinfo[],char nameornum[]) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */{Node *r;if(strcmp(nameornum,"num")==0) /* 按学号查询 */{r=l->next;while(r!=NULL){if(strcmp(r->data.num,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->data.num,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->data.num,num);cprintf("\r请你输入姓名:");scanf("%s",p->);getchar();cprintf("\r请你输入班级:");scanf("%s",p->data.cla);getchar();cprintf("\r请你输入c语言成绩(0-100):");scanf("%d",&p->data.score1);getchar();cprintf("\r请你输入数学成绩(0-100):");scanf("%d",&p->data.score2);getchar();cprintf("\r请你输入英语成绩(0-100):");scanf("%d",&p->data.score3);getchar();p->data.total=p->data.score3+p->data.score1+p->data.score2;p->data.ave=p->data.total / 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->data.num);scanf("%s",p->data.num);cprintf("\r请你输入新姓名(原来是%s):",p->);scanf("%s",p->);getchar();cprintf("\r请你输入新班级(原来是%s):",p->data.cla);scanf("%s",p->data.cla);cprintf("\r请你输入新的c语言成绩(原来是%d分):",p->data.score1); scanf("%d",&p->data.score1);getchar();cprintf("\r请你输入新的数学成绩(原来是%d分):",p->data.score2); scanf("%d",&p->data.score2);getchar();cprintf("\r请你输入新的英语成绩(原来是%d分):",p->data.score3); scanf("%d",&p->data.score3);p->data.total=p->data.score3+p->data.score1+p->data.score2;p->data.ave=p->data.total/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->data.score1>=pc_max->data.score1)pc_max=r;if(r->data.score1<=pc_min->data.score1)pc_min=r;if(r->data.score2>=pm_max->data.score2)pm_max=r;if(r->data.score2<=pm_min->data.score2)pm_min=r;if(r->data.score3>=pe_max->data.score3)pe_max=r;if(r->data.score3<=pe_min->data.score3)pe_min=r;if(r->data.total>=pt_max->data.total)pt_max=r;if(r->data.total<=pt_min->data.total)pt_min=r;if(r->data.ave>=pa_max->data.ave)pa_max=r;if(r->data.ave<=pa_min->data.ave)pa_min=r;r=r->next;}cprintf("====================================统计结果====================================\n");cprintf("\r总分最高者: %-16s %d分\n",pt_max->,pt_max->data.total);cprintf("\r平均分最高者: %-16s %d分\n",pa_max->,pa_max->data.ave);cprintf("\r英语最高者: %-16s %d分\n",pe_max->,pe_max->data.score3);cprintf("\r数学最高者: %-16s %d分\n",pm_max->,pm_max->data.score2);cprintf("\rc语言最高者: %-16s %d分\n\r",pc_max->,pc_max->data.score1);cprintf("\r总分最低者: %-16s %d分\n",pt_min->,pt_min->data.total); cprintf("\r平均分最低者: %-16s %d分\n",pa_min->,pa_min->data.ave);cprintf("\r英语最低者: %-16s %d分\n",pe_min->,pe_min->data.score3);cprintf("\r数学最低者: %-16s %d分\n",pm_min->,pm_min->data.score2);cprintf("\rc语言最低者: %-16s %d分\n\r",pc_min->,pc_min->data.score1);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->data.total>=p->data.total) 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;}}}。

Python学生成绩管理系统(源码+数据库)

Python学生成绩管理系统(源码+数据库)

Python学生成绩管理系统(源码+数据库)文章目录•前言•一、sqlite是什么?•二、实验步骤•o 1.封装数据库操作类dbHelper.pyo 2.设计学生类students.pyo 3.结果o 4.SQLiteExpertPersSetup64(软件下载)•总结前言学生成绩管理系统可以实现学生基本信息的管理,要求以下功能:(1)输入并存储学生的信息:输入学生的学号、姓名和分数,把数据保存在建立的db文件里面. (2)打印学生信息:通过打印函数把学生所有信息打印在屏幕上. (3)修改学生信息:首先通过查询功能查询出该学生是否存在,如果存在就对该学生的信息进行修改,如果不存在则返回主界面. (4)删除学生信息:该功能是对相应的学生进行删除操作,如果学生存在就查找并进行删除. (5)按学生成绩进行排序:按照学生总分从高到低进行排序. (6)查找学生信息:输入学生学号,查找该学生的相关信息如果查找到就输出该学生的信息,如果没有该学号就提示输入的学号不存在-一、sqlite是什么?SQLite是一种嵌入式数据库,它的数据库就是一个文件。

由于SQLite本身是用C写的,而且体积很小,所以经常被集成到各种应用程序中,甚至在IOS和Android的APP中都可以集成。

二、实验步骤1.封装数据库操作类dbHelper.py代码如下(示例):import sqlite3import tracebackclass dbHelper:def __init__(self,db_url):self.__db_url=db_urldef __con(self):self.con=sqlite3.connect(self.__db_url)#创建能执行的增删改的操作def exec_sql_noparams(self,sql):try:self.__con()cur=self.con.cursor()n=cur.execute(sql)mit()#提交return n.rowcountexcept Exception as e:self.con.rollback()#回滚traceback.print_exc()finally:cur.close()self.con.close()def exec_sql(self,sql,params):try:self.__con()cur = self.con.cursor()n = cur.execute(sql,params)mit()return n.rowcountexcept Exception as e:self.con.rollback()traceback.print_exc()finally:cur.close()self.con.close()def exec_sql_many(self,sql,seq_params): try:self.__con()cur = self.con.cursor()n = cur.executemany(sql, seq_params) mit()return n.rowcountexcept Exception as e:self.con.rollback()traceback.print_exc()finally:cur.close()self.con.close()def query(self,sql):try:self.__con()cur = self.con.cursor()n = cur.execute(sql)return cur.fetchall()except Exception as e:traceback.print_exc()finally:cur.close()self.con.close()def query_params(self,sql,params):try:self.__con()cur = self.con.cursor()n = cur.execute(sql,params)return cur.fetchall()except Exception as e:traceback.print_exc()finally:cur.close()self.con.close()2.设计学生类students.py代码如下(示例):import osimport sqlite3import tracebackfrom dbHelper import dbHelperclass Student:def __init__(self): = ''self.ID = ''self.score1 = 0#语文self.score2 = 0#数学self.score3 = 0#英语self.sum =0#计算总分的方法def sumscore(self):self.sum=self.score1+self.score2+self.score3#输入学生的信息def input(self):=input("请输入学生的姓名:")self.ID=input("请输入学生的学号:")self.score1=int(input("请输入学生语文的分数:")) self.score2=int(input("请输入学生数学的分数:")) self.score3=int(input("请输入学生英语的分数:")) self.sumscore()#判断学号是否存在def searchByID(stulist, ID):for item in stulist:if item.ID == ID:return Trueelse:return False#添加学生def Add(stulist,stu):DB = dbHelper("db/students.db")if searchByID(stulist,stu.ID) == True:print("学号已存在")return Falseprint("是否保存学生信息?")nChoose=input("输入Y/N")if nChoose == 'Y' or nChoose == 'y':stulist.append(stu)sql = "INSERT INTO students (name,ID,score1,score2,score3,sum) VALUES (?,?,?,?,?,?)"DB.exec_sql(sql,(,stu.ID,stu.score1,stu.score2,stu.sc ore3,stu.sum))print("保存成功")#删除学生信息def Del(stulist,ID):DB = dbHelper("db/students.db")flag = False # 判断是否有该学生学号的变量for item in stulist:if item.ID==ID:stulist.remove(item)flag == Truesql = "delete from students where ID = ?"DB.exec_sql(sql, (ID,))print("删除成功")if flag == False:passprint("没有该学号")#修改学生信息(删除旧学生信息,添加一个新学生信息)def Change(stulist,ID):flag = Falsefor item in stulist:if item.ID==ID:stulist.remove(item)flag == Truesql="delete from students where ID=?"DB.exec_sql(sql,(ID,))stu = Student()stu.input()Add(stulist, stu)if flag != False:returnprint("没有该学生学号")#显示所有学生列表def display(stulist):sql = "select * from students "print("姓名学号语文数学英语总分")for item in DB.query(sql):print("{} {} {} {} {} {}".format(item[0], item[1],item[2], item[3],item[4], item[5]))#成绩排序def Sort():sql="select * from students order by sum desc"print(" 姓名学号语文数学英语总分")DB.query(sql)for item in DB.query(sql):print("{} {} {} {} {} {}".format(item[0], item[1], item[2], item[3], item[4], item[5]))#查询学生信息def Search(stulist,ID):print("姓名学号语文数学英语总分")flag = Falsefor item in stulist:if item.ID == ID:flag == Truesql = "select * from students where ID=?"for item in DB.query_params(sql, (ID,)): # DB.quert_params:Mysql有参查询数据语句print("{} {} {} {} {} {}".format(item[0], item[1], item[2], item[3], item[4], item[5]))if flag == False:passprint("没有该学生的学号")#初始化def Init(stulist):print("初始化。

学生成绩管理系统源代码

学生成绩管理系统源代码

学生成绩管理系统源代码#i nc l ude〈st d io 。

h># i nc lu de〈st dl ib 。

h〉int m ain(){typed e f struc t LNo d e{ﻩﻩch ar name[6] ;ﻩin t no;ﻩin t yw;ﻩﻩi nt sx;ﻩin t yy;ﻩst r u c t LNode *n e xt;} LinkList;str u c t N a meNo{ﻩﻩint no;int y w;ﻩi n t s x ;ﻩﻩint total;ﻩc ha r name[6];} s t [10];F IL E * f p,*fp 1 ;ﻩc ha r ch,sn a me [6];ﻩi nt x,i,j;ﻩN am e N o t mp;Link Lis t *p ,*s ;ﻩprint f(” \n”);ﻩp ri n tf ("-—--——---——--—---—-———-—-——--—- ”) ;ﻩpr in tf (”学生成绩管理系统”) ;pri n t f(” -——-—————--—-——--—--—-————-——-—- ”);ﻩp rint f("\n\n") ;ﻩp r i n t f(”在您的 C 盘根目录下是否有cj1. t x t和c j2.txt 文件?如果有请输入, 1”);print f(”否则输入0;如果没有,那么程序将终止! 1 or 0 ?");sca n f("% d ",&i);if (i== 0 ) return 0;ﻩprintf (” \n\n");ﻩp ri ntf("对cj 1 .t xt和cj 2. t xt 进行合成请按‘1'");ﻩs c an f(”%d”,&i);i f (i ! =1 ) return 0;ﻩprintf("正在把cj 1。

学生成绩管理系统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语言版源代码)

让结局不留遗憾,让过程更加完美。

#include<stdio.h>#include<string.h>#include<stdlib.h>struct students{char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/struct students *next; /*用与构建连表指向下一结点*/};FILE *fp; /*定义全局变量fp*/void Revisemenu();/*修改菜单*/void Sortmenu();/*排序菜单*/void menu();/*主菜单*/void secret();/*安全验证*/struct students * Input();/*新建学生信息*/void fprint(struct students *head);/*将信息导入文件可追加*/void fprint_(struct students *head);/*将信息导入文件并覆盖*/void Browse(struct students *head);/*浏览全部学生信息*/struct students * create(struct students *headint *n);/*从tushu_list中读取数据构建链表*/void FindofNum(struct students *head);/*按学号查询学生信息*/void FindofNname(struct students *head);/*按姓名查询学生信息*/void SortEnglish(struct students * head);/*按英语成绩排序*/void SortJava(struct students * head);/*按Java成绩排序*/void SortSjjg(struct students * head);/*按数据结构成绩排序*/void SortSzdl(struct students * head);/*按数字逻辑电路成绩排序*/ void SortJsj(struct students * head);/*按计算机组成原理成绩排序*/ struct students * Delete(struct students * headchar m[15]);/*按学号删除学生成绩信息*/struct students * Revise();/*修改学生信息(按编号修改)*//*主菜单*/void menu(){printf("\n\n");printf("***************************************************\n");printf(" 学生成绩管理系统 \n");printf("---------------------------------------------------\n");printf(" 1-添加新同学 2-浏览学生信息 \n");printf(" 3-按学号查询 4-按姓名查询 \n");printf(" 5-按成绩排序 6-修改学生信息 \n");printf(" 7-删除学生信息 0-退出系统 \n");printf("---------------------------------------------------\n");printf("___________________________________________________\n"); }/*排序菜单*/void Sortmenu(){printf("\n\n");printf("***************************************************\n");printf(" 按成绩排序 \n");printf(" 1-大学英语 2-JAVA编程 \n");printf(" 3-数据结构 4-数字逻辑电路 \n");printf(" 5-计算机组成原理 0-返回上级菜单 \n");printf("***************************************************\n"); }/*修改菜单*/void Revisemenu(){printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf(" 1--修改学生姓名 2--修改学生学号 \n"); printf(" 3--修改学生性别 4--修改英语成绩 \n"); printf(" 5--修改JAVA成绩 6--修改数据结构 \n"); printf(" 7--修改数字电路 8--修改计算计 \n");printf(" 0--返回上级菜单 \n"); printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); }/*安全验证*/void secret(){char a[20];printf("**欢迎来到学生信息管理系统进入系统前请先进行密码验证---");printf(" ");do{gets(a); /*输入密码*/system("cls"); /*调用库函数清屏*/printf("对不起!您输入的密码有误请重新输入---");}while(strcmp(a"0605")!=0); /*单一密码"0605"*/system("cls");}/*新建学生信息*/struct students * Input(){struct students *p1*p2*head; /*建立辅助结点及头结点*/char Name;int n=0x;printf("\n请按对应项输入学生信息以#结束:\n");printf("姓名学号性别英语 Java 数据结构数字电路计算机组成原理\n");p1=(struct students *)malloc(sizeof(struct students));head=p2=p1;do{ /*使用do while语句输入学生信息*/scanf("%s"&p1->Name);if(strcmp(p1->Name"#")==0)break; /*判断结束符*/elsescanf("%s%s%lf%lf%lf%lf%lf"p1->Nump1->Sex&p1->English&p1->Java&p1->Sjjg&p1->Szdl&p1->Jsj);Name='#';p1=(struct students *)malloc(sizeof(struct students));p2->next=p1;p2=p1;n++;}while(1);p1->next=NULL;printf("学生信息输入结束!\n");getchar();printf("是否保存学生信息?(1.是/2.否):");scanf("%d"&x);if(x==1)fprint(head); /*调用函数保存至文件*/ elseprintf("\n文件没有被保存!\n");return head; /*返回头指针*/}/*将信息导入文件可追加*/void fprint(struct students *head){struct students *p1;if((fp=fopen("students_list.txt""a"))==NULL){printf("File open error!\n");exit(0);}for(p1=head;p1->next!=NULL;p1=p1->next) /*遍历*/fprintf(fp"%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p1->Namep1->Nump1->Sexp1->Englishp1->Javap1->Sjjgp1->Szdlp1->Jsj);/*将学生信息写入文件*/fclose(fp); /*关闭文件*/printf("\n学生信息已成功保存到文件 students_list.txt 中!\n");getchar();}/*将信息导入文件并覆盖*/void fprint_(struct students *head){struct students *p1;if((fp=fopen("students_list.txt""w"))==NULL)printf("File open error!\n");exit(0);}for(p1=head;p1!=NULL;p1=p1->next) /*遍历*/fprintf(fp"%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p1->Namep1->Nump1->Sexp1->Englishp1->Javap1->Sjjgp1->Szdlp1->Jsj);/*将学生信息写入文件*/fclose(fp); /*关闭文件*/;getchar();}/*浏览全部学生信息*/void Browse(struct students *head){char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/if((fp=fopen("students_list.txt""a+"))==NULL){printf("File open error!\n");exit(0);}printf("-------------------------------------------------------------\n");printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(!feof(fp))/*读取并输出*/{fscanf(fp"%s%s%s%lf%lf%lf%lf%lf"NameNum&English&Java&Sjjg&Szdl&Jsj);printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"NameNumSexEnglishJavaSjjgSzdlJsj);};if(fclose(fp)){printf("Can not close the file!\n");exit(0);}}/*从tushu_list中读取数据构建链表*/struct students * create(struct students * headint *n){FILE *fp;struct students*p*p1*p2;if((fp=fopen("students_list.txt""a+"))==NULL){printf("File open error!\n");exit(0);}while(!feof(fp)){(*n)++;p=(struct students *)malloc(sizeof(struct students));fscanf(fp"%s%s%s%lf%lf%lf%lf%lf"p->Namep->Nump->Sex&p->English&p->Java&p->Sjjg&p->Szdl&p->Jsj);if(head==NULL){head=p;p1=p;}else{p1->next=p;p2=p1;p1=p;}}p2->next=NULL;free(p);(*n)--;fclose(fp);return head;}/*按姓名查询学生信息*/void FindofName(struct students *head) {int i=0n=0;char b[20];struct students *p;head=create(head&n);p=head;printf("\n请输入要查询的学生姓名:");scanf("%s"b);while(p!=NULL){if(strcmp(p->Nameb)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);i++;}p=p->next;}if(i==0)printf("\n对不起!没有找到名为"%s"的学生信息!\n"b);}/*按学号查询学生信息*/void FindofNum(struct students *head){int i=0n;char b[20];struct students *p;head=create(head&n);p=head;printf("\n请输入要查询的学生学号:");scanf("%s"b);while(p!=NULL){if(strcmp(p->Numb)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);i++;}p=p->next;}if(i==0)printf("\n对不起!没有找到学号为"%s"学生信息!\n"b);}/*按英语成绩排序*/void SortEnglish(struct students * head){struct students *p*tail; /*定义中间变量*/int n;double English;p=(struct students *)malloc(sizeof(struct students));head=create(head&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;English=p->English; /*将链表中第一个成绩赋给English*/while(p!=NULL){if((p->English)>English)/*比较*/English=p->English;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->English==English){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->English==English){ /*分数相同时无需比较*/ printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/ printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*浏览排序后的信息*/printf("按英语成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按JAVA成绩排序*/void SortJava(struct students * head){struct students *p*tail; /*定义中间变量*/int n;double Java;p=(struct students *)malloc(sizeof(struct students));head=create(head&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Java=p->Java; /*将链表中第一个成绩赋给Java*/while(p!=NULL){if((p->Java)>Java)/*比较*/Java=p->Java;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Java==Java){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Java==Java){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*浏览排序后的信息*/printf("按Java成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按数据结构排序*/void SortSjjg(struct students * head){struct students *p*tail; /*定义中间变量*/int n;double Sjjg;p=(struct students *)malloc(sizeof(struct students));head=create(head&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Sjjg=p->Sjjg; /*将链表中第一个成绩赋给Sjjg*/while(p!=NULL){if((p->Sjjg)>Sjjg)/*比较*/Sjjg=p->Sjjg;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Sjjg==Sjjg){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Sjjg==Sjjg){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*浏览排序后的信息*/printf("按数据结构成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按数字电路排序*/void SortSzdl(struct students * head){struct students *p*tail; /*定义中间变量*/int n;double Szdl;p=(struct students *)malloc(sizeof(struct students));head=create(head&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Szdl=p->Szdl; /*将链表中第一个成绩赋给Szdl*/while(p!=NULL){if((p->Szdl)>Szdl)/*比较*/Szdl=p->Szdl;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Szdl==Szdl){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Szdl==Szdl){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*浏览排序后的信息*/printf("按数字电路成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按计算机组成原理排序*/void SortJsj(struct students * head){struct students *p*tail; /*定义中间变量*/int n;double Jsj;p=(struct students *)malloc(sizeof(struct students));head=create(head&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Jsj=p->Jsj; /*将链表中第一个成绩赋给Jsj*/while(p!=NULL){if((p->Jsj)>Jsj)/*比较*/Jsj=p->Jsj;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Jsj==Jsj){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Jsj==Jsj){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);/*浏览排序后的信息*/printf("按计算机组成原理成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按学号删除学生成绩信息*/struct students * Delete(struct students * headchar m[15]){struct students *ptr1*ptr2;int n;printf("\n所有学生信息如下:\n");Browse(head);printf("\n请输入想要删除的学生学号:");scanf("%s"m);head=create(head&n);if(head==NULL){printf("无学生信息!\n");return head;}if((strcmp(head->Numm)==0)&&head!=NULL){ptr2=head;head=head->next;free(ptr2);}if(strcmp(head->Numm)!=0){ptr1=head;ptr2=head->next;while(ptr2!=NULL){if(strcmp(ptr2->Numm)==0){ptr1->next=ptr2->next;free(ptr2);}elseptr1=ptr2;ptr2=ptr1->next;}}fprint_(head);printf("\n学号为' %s '学生信息已被删除并保存至文件!\n"m);return head;}/*修改学生信息(按编号修改)*/struct students * Revise(){int n=0t;char num[10];char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/struct students *head=NULL;struct students *p;printf("\n所有学生信息如下:\n");Browse(head);head=create(head&n);printf("\n输入需要修改的学生的学号:");scanf("%s"num);p=head;while(head!=NULL){if(strcmp(p->Numnum)==0){system("cls");Revisemenu();printf("编号为%s的学生信息如下:\n"num);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"p->Namep->Nump->Sexp->Englishp->Javap->Sjjgp->Szdlp->Jsj);while(1){printf("请选择需要修改的信息:");scanf("%d"&t);switch(t){case 1:printf("请输入新姓名:");scanf("%s"Name);strcpy(p->NameName);break;case 2:printf("请输入新学号:");scanf("%s"&Num);strcpy(p->NumNum);break;case 3:printf("请输入新性别:");scanf("%s"Sex);strcpy(p->SexSex);break;case 4:printf("请输入新英语成绩:");scanf("%lf"&English);p->English=English;break;case 5:printf("请输入新Java成绩:");scanf("%lf"&Java);p->Java=Java;break;case 6:printf("请输入新数据结构成绩:");scanf("%lf"&Sjjg);p->Sjjg=Sjjg;break;case 7:printf("请输入新数字电路成绩:");scanf("%lf"&Szdl);p->Szdl=Szdl;break;case 8:printf("请输入新计算机组成原理成绩:");scanf("%lf"&Jsj);p->Jsj=Jsj;break;case 0:system("cls");menu();goto lab;break;default:printf("对不起输入有误!");break;}}}elsep=p->next;}lab:fprint_(head);printf("修改完成并储存至文件!\n");return head;}/*主函数*/void main(){int choicech;char m[15];struct students *head=NULL;secret();menu();while(1){printf("请输入选项:");scanf("%d"&choice);switch(choice){case 1:Input();break;case 2:system("cls");menu();Browse(head);break;case 3:system("cls");menu();FindofNum(head);break;case 4:system("cls");menu();FindofName(head);break;case 5:system("cls");Sortmenu();do{printf("请输入您的选择:");scanf("%d"&ch);switch(ch){case 1:system("cls");Sortmenu();SortEnglish(head);break;case 2:system("cls");Sortmenu();SortJava(head);break;case 3:system("cls");Sortmenu();SortSjjg(head);break;case 4:system("cls");Sortmenu();SortSzdl(head);break;case 5:system("cls");Sortmenu();SortJsj(head);break;}}while(ch!=0);system("cls");menu();break;case 6:system("cls");menu();Revise();break;case 7:system("cls");menu();head=Delete(headm);break;case 0:system("cls");printf("\t\t欢迎下次再来!");exit(0);default:printf("对不起输入有误!");break;}}return ;}。

学生成绩管理系统源代码

学生成绩管理系统源代码

printf("请输入需要创建信息的职工人数(1--100):/n");
scanf("%d",&m);
for (i=0;i<m;i++)
{printf("职工号: ");
srand((int)time(0));//该函数是随机函数通过它产生职工号,主要是避免职工号重复出现
em[i].num=rand()%10000+20000000;
scanf("%s",em[i].tel);
printf("/n");
count=count+1;
printf("已增加的人数:/n"); //输出新增的人数
printf("%d/n",count);
}
printf("/n添加完毕!/n");
m=m+count; //m为现有的人数为保存函数中的m做准备
printf("/n ************************谢谢使用**********************/n");
printf("/n");
printf("/n");
}
主要是输出语句,但是通过按相应的数字键就会在主函数中调用相应的函数来实现功能。
2、录入职工信息模块:主要是负责将职工的基本信息记录到该系统中。
主要代码:
void menu() /*菜单函数*/
{
printf("/n");
printf(" ******************欢迎进入职工信息管理****************/n");

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语言成绩对学生进行排序、退出系统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个步骤删除了李的成绩。

(完整word版)学生成绩管理系统源代码

(完整word版)学生成绩管理系统源代码

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dos.h>#include<ctype.h>#include<conio.h>#include<stddef.h>#include<time.h>#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\xc d\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\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\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\xcd\xcd\xcd\xcd\xcd\xcd\ xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xca\xcd\xcd\xcd\xcd\xc d\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->data.num,p->,p->data.cla,p->dat a.score3,p->data.score2,p->data.score1,p->data.total,p->data.ave);}Node* Locate(L l,char findinfo[],char nameornum[]) /* 该函数用于定位连表中符合要求的接点,并返回该指针*/{Node *r;if(strcmp(nameornum,"num")==0)/* 按学号查询*/{r=l->next;while(r!=NULL){if(strcmp(r->data.num,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->data.num,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->data.num,num);cprintf("\r请你输入姓名:");scanf("%s",p->);getchar();cprintf("\r请你输入班级:");scanf("%s",p->data.cla);getchar();cprintf("\r请你输入c语言成绩(0-100):");scanf("%d",&p->data.score1);getchar();cprintf("\r请你输入数学成绩(0-100):");scanf("%d",&p->data.score2);getchar();cprintf("\r请你输入英语成绩(0-100):");scanf("%d",&p->data.score3);getchar();p->data.total=p->data.score3+p->data.score1+p->data.score2;p->data.ave=p->data.total / 3; /* 信息输入已经完成*/p->next=NULL;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();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->data.num);scanf("%s",p->data.num);cprintf("\r请你输入新姓名(原来是%s):",p->);scanf("%s",p->);getchar();cprintf("\r请你输入新班级(原来是%s):",p->data.cla);scanf("%s",p->data.cla);cprintf("\r请你输入新的c语言成绩(原来是%d分):",p->data.score1);scanf("%d",&p->data.score1);getchar();cprintf("\r请你输入新的数学成绩(原来是%d分):",p->data.score2);scanf("%d",&p->data.score2);getchar();cprintf("\r请你输入新的英语成绩(原来是%d分):",p->data.score3);scanf("%d",&p->data.score3);p->data.total=p->data.score3+p->data.score1+p->data.score2;p->data.ave=p->data.total/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->data.score1>=pc_max->data.score1)pc_max=r;if(r->data.score1<=pc_min->data.score1)pc_min=r;if(r->data.score2>=pm_max->data.score2)pm_max=r;if(r->data.score2<=pm_min->data.score2)pm_min=r;if(r->data.score3>=pe_max->data.score3)pe_max=r;if(r->data.score3<=pe_min->data.score3)pe_min=r;if(r->data.total>=pt_max->data.total)pt_max=r;if(r->data.total<=pt_min->data.total)pt_min=r;if(r->data.ave>=pa_max->data.ave)pa_max=r;if(r->data.ave<=pa_min->data.ave)pa_min=r;r=r->next;}cprintf("====================================统计结果====================================\n");cprintf("\r总分最高者: %-16s %d分\n",pt_max->,pt_max->data.total); cprintf("\r平均分最高者: %-16s %d分\n",pa_max->,pa_max->data.ave); cprintf("\r英语最高者: %-16s %d分\n",pe_max->,pe_max->data.score3); cprintf("\r数学最高者: %-16s %d分\n",pm_max->,pm_max->data.score2); cprintf("\rc语言最高者: %-16s %d分\n\r",pc_max->,pc_max->data.score1); cprintf("\r总分最低者: %-16s %d分\n",pt_min->,pt_min->data.total); cprintf("\r平均分最低者: %-16s %d分\n",pa_min->,pa_min->data.ave); cprintf("\r英语最低者: %-16s %d分\n",pe_min->,pe_min->data.score3); cprintf("\r数学最低者: %-16s %d分\n",pm_min->,pm_min->data.score2); cprintf("\rc语言最低者: %-16s %d分\n\r",pc_min->,pc_min->data.score1); 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->data.total>=p->data.total)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;}}}。

python学生成绩管理系统代码开源代码

python学生成绩管理系统代码开源代码

Python 学生成绩管理系统代码开源代码一、介绍1. Python 学生成绩管理系统是一款使用 Python 编程语言开发的学生成绩管理系统,旨在帮助教师和学生更轻松地管理学生成绩信息,提高教学和学习效率。

2. 该系统具有管理学生信息、录入成绩、查询成绩等功能,操作简单方便,适合各类学校和教育机构使用。

二、功能1. 学生信息管理- 实现学生信息的录入、删除、修改等操作,包括学号、尊称、性别、芳龄、班级等基本信息。

2. 成绩录入- 支持教师录入学生成绩信息,包括各科目成绩、总成绩等,方便进行成绩分析和统计。

3. 成绩查询- 学生和教师可以通过系统进行成绩查询,快速准确地了解个人或班级成绩情况。

4. 数据分析- 系统提供成绩分析功能,支持各类成绩报表的生成和导出,方便教师进行成绩分析和评估。

三、代码开源1. 该学生成绩管理系统的代码完全开源,任何人都可以获取并自由使用、修改和分发。

2. 欢迎各类开发者参与进来,为系统的改进和完善贡献自己的力量,共同推动教育信息化的发展。

四、使用方法1. 下载安装 Python 开发环境2. 获取学生成绩管理系统的源代码3. 打开 Python 集成开发环境(IDE),导入系统代码4. 运行系统代码,即可在本地搭建起学生成绩管理系统五、系统截图[这里可以插入系统界面截图,展示系统的操作界面和功能模块]六、未来展望1. 在系统开源的基础上,期待引入更多先进的技术和功能,例如人脸识别、智能推荐等,实现更智能、更便捷的学生成绩管理。

2. 不断优化系统的用户体验和操作界面,提高系统的稳定性和安全性,为广大教育工作者和学生提供更好的服务。

七、结语1. Python 学生成绩管理系统代码开源,是为了促进科技和教育的良性互动,让技术更好地服务于教育事业。

2. 愿我们的努力能够为教育信息化的进步和发展贡献自己的一份力量,让教学和学习变得更加高效和便捷。

以上是关于 Python 学生成绩管理系统代码开源代码的介绍,欢迎大家下载使用,并提出宝贵的意见和建议,让我们一同推动教育信息化事业的发展。

学生成绩管理系统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语言的学生成绩管理系统的源代码,包括结构体定义、文件读写、各种功能模块的实现等。

学生成绩管理系统源程序【呕心沥血整理版】

学生成绩管理系统源程序【呕心沥血整理版】

#include<stdio.h>#include〈stdlib。

h〉#include〈string.h〉#define TITLE ”学生成绩管理系统”#define MAX 10#define MENU_MAIN_COUNT 8#define MENU_SEARCH_COUNT 4#define MENU_CALC_COUNT 3void input_record();void show_record();void search_record();void update_record();void delete_record();void calculate();void save_to_file();void exit_system();void search_by_id();void search_by_name();void search_by_sex();void search_exit();void calc_total();void calc_average();void calc_exit();typedef struct student{char name[MAX];char num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student * next;}stu;stu * head=NULL;char menu_main[] =”||\n" ”| 1 输入学生成绩 |\n" "| 2 显示学生成绩|\n”"| 3 查询学生成绩 |\n"”| 4 更新学生成绩 |\n"”| 5 删除学生成绩 |\n" "| 6 计算学生成绩|\n""| 7 保存文件|\n”"| 8 退出系统 |\n””| |\n”;void (* menu_main_func[]) ()= {input_record,show_record,search_record,update_record,delete_record,calculate,save_to_file,exit_system};char menu_search[]=”| |\n”"| 1 按照学号查询|\n”"| 2 按照姓名查询|\n"”| 3 按照性别查询 |\n" ”| 4 返回上级菜单 |\n" ”||\n”;void ( * menu_search_func[]) () = {search_by_id,search_by_name,search_by_sex,search_exit};char menu_calc[]=”||\n””| 1 计算总成绩|\n”"| 2 计算平均分|\n””| 3 返回上级菜单 |\n””| |\n"; void (* menu_calc_func[])() ={calc_total,calc_average,calc_exit};void main() /*主函数*/{void print_menu_main();print_menu_main();}void print_menu_main() /*显示主菜单*/{void print_menu_title(char * title);int selected = 0;system("cls");print_menu_title(TITLE);printf(menu_main);printf("===========================\n”);while (!(selected >= 1 && selected <= MENU_MAIN_COUNT)) {printf(”〉请选择:”);scanf(”%d”,&selected);if(selected 〉= 1 && selected <= MENU_MAIN_COUNT){break;}printf("\n〉输入错误!(住:请选择1-%d)\n”,MENU_MAIN_COUNT); }menu_main_func[selected—1]();}void print_menu_title(char * title){printf(”===========================\n”);printf("|%s |\n",title);printf(”—-—-—-—----—--—-———————-———\n”);}void input_record() /*输入学生成绩*/{void create_stu_by_input(stu * pNewStu);stu * get_last_student(stu * p);void print_menu_main();char continue_input = ’N';stu * pLastStu=NULL;stu * pNewStu=(stu *)malloc(sizeof(stu));pNewStu-〉next=NULL;create_stu_by_input(pNewStu);if(head==NULL){head=pNewStu;}else{pLastStu=get_last_student(head);pLastStu—〉next=pNewStu;}printf(”继续输入学生成绩?(Y 继续, N 返回菜单)");getchar();continue_input=getchar();if(continue_input=='n' || co ntinue_input=='N’){print_menu_main();}else{input_record();}}stu * get_last_student(stu * p){if(p-〉next==NULL){return p;}else{return get_last_student(p—〉next);}}void create_stu_by_input(stu * pNewStu){printf(”〉请输入学生的信息(注:最大长度是10个字符):\n”);printf(”学号:");scanf(”%s”,pNewStu->num);printf(”姓名:”);scanf(”%s”,pNewStu—〉name);printf(”性别:”);scanf("%s”,pNewStu-〉sex);printf(”>请输入%s的成绩(注:成绩范围0—100):\n”,pNewStu—>name);printf("语文:");scanf("%d”,&(pNewStu—〉chinese));printf(”数学:”);scanf(”%d",&(pNewStu—〉mathematic));printf(”英语:");scanf("%d”,&(pNewStu—〉english));printf(”计算机:”);scanf(”%d”,&(pNewStu->computer));}void show_record() /*显示学生成绩*/{void print_table_head();void print_table_row(stu * p);void print_table_buttom();void print_menu_main();stu * p=head;print_table_head();while(p!=NULL){print_table_row(p);p=p—〉next;}print_table_buttom();printf(”按任意键返回菜单。

完整代码+学生成绩管理系统

完整代码+学生成绩管理系统

学生成绩管理系统完整版(C语言版能运行有截图)源程序代码#include<iostream.h>#include<stdlib.h>#include<ctype.h>#include<stdio.h>#include<string.h>typedef struct{char class_0[20];int number;char name[20];float electrics;float c_program;float multimedia;float english;float math;float sport;float polity;float summary;float average;}Student;Student stu[100];int menu(){char c;do{system("cls");cout<<"********************************学生成绩管理系统********************************"<<endl;cout<<"【1】输入数据"<<endl;cout<<"【2】显示所有数据"<<endl;cout<<"【3】按平均分降序排列"<<endl;cout<<"【4】查找并显示一组数据"<<endl;cout<<"【5】插入一组数据"<<endl;cout<<"【6】修改一组数据"<<endl;cout<<"【7】删除一组数据"<<endl;cout<<"【8】从文件中读入数据"<<endl;cout<<"【9】将所有记录写入文件"<<endl;cout<<"【0】退出本系统\n"<<endl;cout<<"**********************作者:孟强0611103班2011212423************************"<<endl;cout<<"请你选择操作(0-9):"<<endl;c=getchar();}while(c<'0'||c>'9');return(c-'0');}int Input(Student stud[],int n){int i=0;char sign,x[10];while(sign!='n'&&sign!='N'){cout<<"请输入学生的班级:";cin>>stud[n+i].class_0;cout<<"请输入学生的学号:";cin>>stud[n+i].number;cout<<"请输入学生的姓名:";cin>>stud[n+i].name;cout<<"请输入该学生『电子电路』的成绩:";cin>>stud[n+i].electrics;cout<<"请输入该学生『C语言程序设计』的成绩:";cin>>stud[n+i].c_program;cout<<"请输入该学生『多媒体技术』的成绩:";cin>>stud[n+i].multimedia;cout<<"请输入该学生『大学英语』的成绩:";cin>>stud[n+i].english;cout<<"请输入该学生『高等数学』的成绩:";cin>>stud[n+i].math;cout<<"请输入该学生『大学体育』的成绩:";cin>>stud[n+i].sport;cout<<"请输入该学生『马克思主义基本原理』的成绩:";cin>>stud[n+i].polity;stud[n+i].summary=stud[n+i].electrics+stud[n+i].c_program+stud[n+i].multimedia+stud[n+i].en glish+stud[n+i].math+stud[n+i].sport+stud[n+i].polity;stud[n+i].average=stud[n+i].summary/7;cout<<"该学生的总分为:"<<stud[n+i].summary<<"平均分为:"<<stud[n+i].average<<endl; gets(x);cout<<"=====>提示:继续写入成绩?(Y/N)";cin>>sign;i++;}return(n+i);}void Display(Student stud[],int n){int i;if(!stud)cout<<"没有记录";else{cout<<"--------------------------------------------------------------------------------"<<endl;cout<<"班级学号姓名电子C语言多媒体英语数学体育马克思总分平均分"<<endl;cout<<"--------------------------------------------------------------------------------"<<endl;for(i=1;i<n+1;i++){stud[i-1].summary=stud[i-1].electrics+stud[i-1].c_program+stud[i-1].multimedia+stud[i-1].engli sh+stud[i-1].math+stud[i-1].sport+stud[i-1].polity;stud[i-1].average=stud[i-1].summary/7;cout<<stud[i-1].class_0<<" "<<stud[i-1].number<<" "<<stud[i-1].name<<" "<<stud[i-1].electrics<<" "<<stud[i-1].c_program<<" "<<stud[i-1].multimedia<<" "<<stud[i-1].english<<" "<<stud[i-1].math<<" "<<stud[i-1].sport<<" "<<stud[i-1].polity<<" "<<stud[i-1].summary<<" "<<stud[i-1].average<<endl;}cout<<"\t\t\t"<<endl; }system("pause");}void Sort(Student stud[],int n){int i,j,k;float s;char t[20];for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++)if(stud[j].average<stud[j+1].average){strcpy(t,stud[j+1].class_0);strcpy(stud[j+1].class_0,stud[j].class_0);strcpy(stud[j].class_0,t);k=stud[j+1].number;stud[j+1].number=stud[j].number;stud[j].number=k;strcpy(t,stud[j+1].name);strcpy(stud[j+1].name,stud[j].name);strcpy(stud[j].name,t);s=stud[j+1].electrics;stud[j+1].electrics=stud[j].electrics;stud[j].electrics=s;s=stud[j+1].c_program;stud[j+1].c_program=stud[j].c_program; stud[j].c_program=s;s=stud[j+1].multimedia;stud[j+1].multimedia=stud[j].multimedia; stud[j].multimedia=s;s=stud[j+1].english;stud[j+1].english=stud[j].english;stud[j].english=s;s=stud[j+1].math;stud[j+1].math=stud[j].math;stud[j].math=s;s=stud[j+1].sport;stud[j+1].sport=stud[j].sport;stud[j].sport=s;s=stud[j+1].polity;stud[j+1].polity=stud[j].polity;stud[j].polity=s;s=stud[j+1].summary;stud[j+1].summary=stud[j].summary; stud[j].summary=s;s=stud[j+1].average;stud[j+1].average=stud[j].average;stud[j].average=s;}cout<<"--------------------------------------------------------------------------------"<<endl;cout<<" 班级学号姓名电子C语言多媒体英语数学体育马克思总分平均分"<<endl;cout<<"--------------------------------------------------------------------------------"<<endl;for(i=1;i<n+1;i++){stud[i-1].summary=stud[i-1].electrics+stud[i-1].c_program+stud[i-1].multimedia+stud[i-1].engli sh+stud[i-1].math+stud[i-1].sport+stud[i-1].polity;stud[i-1].average=stud[i-1].summary/7;cout<<stud[i-1].class_0<<stud[i-1].number<<stud[i-1].name<<stud[i-1].electrics<<stud[i-1].c_p rogram<<stud[i-1].multimedia<<stud[i-1].english<<stud[i-1].math<<stud[i-1].sport<<stud[i-1].polity<<stud[i-1].summary<<stud[i-1].average<<endl ;}}int Insert(Student stud[],int n){char x[10];cout<<"请输入学生的班级:"<<endl;cin>>stud[n].class_0;cout<<"请输入学生的学号:";cin>>stud[n].number;cout<<"请输入学生的姓名:";cin>>stud[n].name;cout<<"请输入该学生『电子电路』的成绩:";cin>>stud[n].electrics;cout<<"请输入该学生『C语言程序设计』的成绩:";cin>>stud[n].c_program;cout<<"请输入该学生『多媒体技术』的成绩:";cin>>stud[n].multimedia;cout<<"请输入该学生『大学英语』的成绩:";cin>>stud[n].english;cout<<"请输入该学生『高等数学』的成绩:";cin>>stud[n].math;cout<<"请输入该学生『大学体育』的成绩:";cin>>stud[n].sport;cout<<"请输入该学生『马克思主义基本原理』的成绩:";cin>>stud[n].polity;stud[n].summary=stud[n].electrics+stud[n].c_program+stud[n].multimedia+stud[n].english+ stud[n].math+stud[n].sport+stud[n].polity;stud[n].average=stud[n].summary/7;gets(x);n++;Sort(stu,n);cout<<"=====>提示:插入成功!"<<endl;return(n);}int Delete(Student stud[],int n){int s;int i=0,j;cout<<"输入需要删除学生的学号:"<<endl;cin>>s;while((stud[i].number-s)!=0&&i<n) i++;if(i==n){cout<<"=====>提示:对不起,无法找到改学号……"<<endl;return(n);}for(j=i;j<n-1;j++){strcpy(stud[j].class_0,stud[j+1].class_0);stud[j].number=stud[j+1].number;strcpy(stud[j].name,stud[j+1].name);stud[j].electrics=stud[j+1].electrics;stud[j].c_program=stud[j+1].c_program;stud[j].multimedia=stud[j+1].multimedia;stud[j].english=stud[j+1].english;stud[j].math=stud[j+1].math;stud[j].sport=stud[j+1].sport;stud[j].polity=stud[j+1].polity;}cout<<"=====>提示:已成功删除!"<<endl;return(n-1);}void Search(Student stud[],int n){int s;int i=0;cout<<"输入需要查找学生的学号:"<<endl;cin>>s;while((stud[i].number-s)!=0&&i<n) i++;if(i==n){cout<<"=====>提示:对不起,无法找到该学生的信息!"<<endl; return;}cout<<"---------------------------"<<endl;cout<<"班级:"<<stud[i].class_0<<endl;cout<<"学号:"<<stud[i].number<<endl;cout<<"姓名:"<<stud[i].name<<endl;cout<<"电子电路:"<<stud[i].electrics<<endl;cout<<"C语言程序设计:"<<stud[i].c_program<<endl;cout<<"多媒体技术:"<<stud[i].multimedia<<endl;cout<<"大学英语:"<<stud[i].english<<endl;cout<<"高等数学:"<<stud[i].math<<endl;cout<<"大学体育:"<<stud[i].sport<<endl;cout<<"马克思主义基本原理:"<<stud[i].polity<<endl;cout<<"总分:"<<stud[i].summary<<endl;cout<<"平均分:"<<stud[i].average<<endl;}void Modify(Student stud[],int n){int s;int i=0;cout<<"输入需要修改成绩学生的学号:"<<endl;cin>>s;while((stud[i].number-s)!=0&&i<n) i++;if(i==n){cout<<"=====>提示:对不起,无该学生的成绩……"<<endl;return;}cout<<"-----------------------------------该学生的信息---------------------------------"<<endl;cout<<" 班级学号姓名电子C语言多媒体英语数学体育马克思总分平均分"<<endl;cout<<"--------------------------------------------------------------------------------"<<endl;stud[i].summary=stud[i].electrics+stud[i].c_program+stud[i].multimedia+stud[i].english+ stud[i].math+stud[i].sport+stud[i].polity;stud[i].average=stud[i].summary/7;cout<<stud[i-1].class_0<<stud[i-1].number<<stud[i-1].name<<stud[i-1].electrics<<stud[i-1].c_p rogram<<stud[i-1].multimedia<<stud[i-1].english<<stud[i-1].math<<stud[i-1].sport<<stud[i-1].polity<<stud[i-1].summary<<stud[i-1].average<<endl ;cout<<"请输入学生的班级:"<<endl;cin>>stud[n+i].class_0;cout<<"请输入学生的学号:"<<endl;cin>>stud[n+i].number;cout<<"请输入学生的姓名:"<<endl;cin>>stud[n+i].name;cout<<"请输入该学生『电子电路』的成绩:"<<endl;cin>>stud[n+i].electrics;cout<<"请输入该学生『C语言程序设计』的成绩:"<<endl;cin>>stud[n+i].c_program;cout<<"请输入该学生『多媒体技术』的成绩:"<<endl;cin>>stud[n+i].multimedia;cout<<"请输入该学生『大学英语』的成绩:"<<endl;cin>>stud[n+i].english;cout<<"请输入该学生『高等数学』的成绩:"<<endl;cin>>stud[n+i].math;cout<<"请输入该学生『大学体育』的成绩:"<<endl;cin>>stud[n+i].sport;cout<<"请输入该学生『马克思主义基本原理』的成绩:"<<endl;cin>>stud[n+i].polity;stud[i].summary=stud[i].electrics+stud[i].c_program+stud[i].multimedia+stud[i].english+stud[i]. math+stud[i].sport+stud[i].polity;stud[i].average=stud[i].summary/7;cout<<"该学生的总分为:"<<stud[i].summary<<"平均分为:"<<stud[i].average;}int Read(Student stud[],int n){int i=0,num;FILE *fp;char filename[20];cout<<"输入文件名:"<<endl;cin>>filename;if((fp=fopen(filename,"rb"))==NULL){cout<<"=====>提示:无法打开这个文件!"<<endl;cout<<"\t\t\t";system("pause");return(n);}fscanf(fp,"%d",&num);while(i<num){fscanf(fp,"%s%d%s%f%f%f%f%f%f%f%f%f",stud[n+i].class_0,&stud[n+i].number,stud[n+i].n ame,&stud[n+i].electrics,&stud[n+i].c_program,&stud[n+i].multimedia,&stud[n+i].english,&stu d[n+i].math,&stud[n+i].sport,&stud[n+i].polity,&stud[n+i].summary,&stud[n+i].average);i++;}n+=num;fclose(fp);cout<<"=====>提示:读入数据成功,可选择【显示所有成绩】查看"<<endl;cout<<"\t\t\t";system("pause");return(n);}void Save(Student stud[],int n){int i=0;FILE *fp;char filename[20];cout<<"输入文件名:";cin>>filename;if((fp=fopen(filename,"w"))==NULL){cout<<"=====>提示:无法打开这个文件!"<<endl;system("pause");return;}fprintf(fp,"%d\n",n);while(i<n){fprintf(fp,"%-8s%-8d%-6s%-6.1f%-7.1f%-7.1f%-6.1f%-6.1f%-6.1f%-7.1f%-8.1f%-6.2\n",stud[i ].class_0,stud[i].number,stud[i].name,stud[i].electrics,stud[i].c_program,stud[i].multimedia,stud[ i].english,stud[i].math,stud[i].sport,stud[i].polity,stud[i].summary,stud[i].average);i++;}fclose(fp);cout<<"=====>提示:已成功写入数据!"<<endl;}void main(){int n=0;for(;;){switch(menu()){case 1:cout<<endl<<"====>> 输入成绩<<===="<<endl;n=Input(stu,n);break;case 2:cout<<endl<<"====>> 显示所有记录<<===="<<endl;Display(stu,n);break;case 3:cout<<endl<<"====>> 按平均分降序排列<<===="<<endl; Sort(stu,n);cout<<"排序成功!"<<endl;cout<<"\t\t\t";system("pause");break;case 4:cout<<endl<<"====>> 查找并显示一组成绩<<===="<<endl; Search(stu,n);cout<<"\t\t\t";system("pause");break;case 5:cout<<endl<<"====>> 插入一组成绩<<===="<<endl;n=Insert(stu,n);cout<<"\t\t\t";system("pause");break;case 6:cout<<endl<<"====>> 修改一组成绩<<===="<<endl; Modify(stu,n);cout<<"\t\t\t";system("pause");break;case 7:cout<<endl<<"====>> 删除一组成绩<<===="<<endl;n=Delete(stu,n);cout<<"\t\t\t";system("pause");break;case 8:cout<<endl<<"====>> 从文件中读入数据<<===="<<endl;n=Read(stu,n);break;case 9:cout<<endl<<"====>> 将所有记录写入文件<<===="<<endl;Save(stu,n);cout<<"\t\t\t";system("pause");break;case 0:cout<<endl<<"====>> 谢谢您的使用!<<===="<<endl;cout<<"\t\t\t";system("pause");exit(0);}}}界面截图1、程序主菜单运行界面2、成绩录入界面3、成绩修改界面4、成绩数据删除界面5、插入数据界面6、将数据写入文件界面参考文献[1] 谭浩强,张基温.C语言程序设计教程(第3版)[M].北京:高等教育出版社,2006[2] 谭浩强,C程序设计题解与上机指导(第3版)[M]. 北京: 清华大学出版社,2006。

学生成绩管理系统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、斟酌到此步伐量大代码多,以是用函数挪用,分几小我去完成。

学生成绩管理系统源代码

学生成绩管理系统源代码

//帐号和密码均为448//#include<stdio.h> //头文件//#include<stdlib.h>#include<string.h>#define NUM 1000 //定义该系统最多存储人数NUM//int N; //定义一个外部变量N,用来监控存储的学生人数// struct STUDENT //定义一个结构体//{long num;char name[20];int clas;char sex[10];int english;int math;int france;float aver;int total;}student[NUM],student1; //定义两个结构体类型的变量,用来存储学生信息////对用到的所有函数进行声明//void entrance(); //登陆//void menu(); //主菜单//void select(); //选择服务//void build(); //新建学生信息//void add(); //添加学生信息//void change(); //修改学生信息//void find(); //查找//void delate(); //删除学生信息//void in(); //导入已有学生信息//void turn(); //排序//void out(); //退出系统,保存数据//void main() //主函数//{system("color 9c");N=0;entrance();}void entrance() //登陆主页面函数//{int s,n,secrit=448,number=448,i=0,k=0,j=3;printf("\n\t\t********欢迎进入学生成绩管理系统********\n\n\n");for(;;){i++;j--;if(i>3){printf("\t您的输入次数超过3次,请下次登录\n");break;}printf("\t\t请输入管理员账号:"); //登录信息,验证身份,进行安全保护//scanf("%d",&n);printf("\n\n");printf("\t\t请输入管理员密码:");scanf("%d",&s);printf("\n\n");if(s!=secrit||n!=number){system("color 4e");printf("\t\t对不起,您输入的账号或密码错误,请重新输入。

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

学生成绩管理系统源代码汇编
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文件文件中学生的信息*/
/*主函数************************************************************************************/

学生成绩管理系统源代码

学生成绩管理系统源代码

#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)。

学生成绩单管理系统利用面向对象编程方法设计一个学生成绩单管理系统,要求实现以下功能:●录入(添加)学生信息:学号、姓名、平时成绩和考试成绩,系统自动计算总评成绩(平时成绩占20%,考试成绩占80%)。

可以一次录入多名学生的信息。

●查询学生成绩:输入要查询的学生的学号,查询该学生的信息并显示。

●显示学生成绩单:按学号顺序显示学生成绩单。

●删除学生信息:输入要删除的学生的学号,得到用户确认后,删除该学生的信息。

●修改学生信息:输入要修改的学生的学号,显示该学生的原有信息,用户输入修改后的信息。

●对成绩进行统计分析:可以对总成绩进行统计分析,分别统计出各个成绩段的人数和比例, 本课程班级平均成绩等。

实验步骤如下:1. 创建项目创建一个Win32 Console Application,项目名为“StudentScore”。

2. 定义学生类CStudent(1)新建一个“C/C++ Header File”,文件名为“student.h”,代码如下:// student.h 学生类的定义class CStudent {public:CStudent( char * id="", char *na="",int us=0, int ts=0 ); // 构造函数CStudent( const CStudent &s ); // 拷贝构造函数~CStudent();char* GetID(); // 获取学生的学号double GetTotalScore(); // 获取总评成绩static void TableHead( ); // 输出表头void Display( ); // 显示学生信息private:c har ID[5]; // 学号c har name[10]; // 姓名i nt UsualScore; // 平时成绩i nt TestScore; // 考试成绩d ouble TotalScore; // 总评成绩v oid CalcTotalScore(); // 计算总评成绩};(2)新建一个“C++ Source File”,文件名为“student.cpp”,代码如下:// student.cpp 学生类的成员函数实现#include <iomanip.h>#include <string.h>#include "student.h"CStudent::CStudent( char * id, char *na,int us, int ts ) // 构造函数{strcpy(ID,id);strcpy(name,na);UsualScore=us;TestScore=ts;CalcTotalScore();}CStudent::CStudent( const CStudent &s ) // 拷贝构造函数{strcpy( ID, s.ID );strcpy( name, );UsualScore=ualScore;TestScore=s.TestScore;TotalScore=s.T otalScore;}CStudent::~CStudent(){ }char* CStudent::GetID() // 取得学生的学号{ return ID; }double CStudent::GetTotalScore() // 获取总成绩{ return TotalScore;}void CStudent::TableHead( ) // 输出学生信息表头{cout<<setw(4)<<"学号"<<setw(10)<<"姓名"<<setw(10)<<"平时成绩"<<setw(10)<<"考试成绩"<<setw(12)<<"总成绩\n";}void CStudent::Display( ) // 显示学生信息{ cout<<setw(3)<<ID<<setw(10)<<name<<setw(10)<<UsualScore <<setw(10)<<TestScore<<setw(10)<<TotalScore<<endl;}void CStudent::CalcTotalScore() // 计算总成绩{ TotalScore= UsualScore*0.2 + TestScore*0.8; }}3. 定义成绩单类CStuDataBase(1)新建一个“C/C++ Header File”,文件名为“StuDataBase.h”,代码如下:// StuDataBase.h 定义成绩单类,用来管理所有学生的成绩信息#include "student.h"const int MaxStuNum=51; // 班级学生人数最多50人class CStuDatabase {public:CStuDatabase(); // 构造函数,从文件中读入学生成绩信息~CStuDatabase(); // 析构函数,将学生成绩信息写入到文件中void ListScore( ); // 显示成绩单,输出所有学生信息void SelectStuInfo( ); // 查询学生信息void AddStuInfo( ); // 添加学生成绩void DelStuInfo( ); // 删除学生信息void EditStuInfo( ); // 修改学生信息void AnalyScore( ); // 对成绩进行统计分析v oid StuDBM( int ); // 成绩库维护i nt FunctionMenu(); // 功能菜单private:int num; // 学生人数CStudent stu[MaxStuNum]; // 学生数组,stu[0]不用i nt SearchStu(const char* id); // 查找指定学号的学生v oid SortStu( ); // 按学号从小到大对成绩单排序};(2)新建一个“C++ Source File”,文件名为“StuDataBase.cpp”,代码如下:// StuDataBase.cpp 成绩单类的实现#include <fstream.h>#include <string.h>#include <stdlib.h>#include <iomanip.h>#include <conio.h>#include "StuDataBase.h"int InputScore( ) // 输入百分制成绩{ int score;cin>>score;while ( score<0 || score>100 ){ cout<<"成绩超出范围,请重新输入百分制成绩(0---100分):";cin>>score;}return score;}CStuDatabase::CStuDatabase() // 从文件中读入学生信息{ CStudent s; // 学生对象num=0;fstream StuFile; // 该文件用来保存学生信息StuFile.open( "StuInfo.dat", ios::in );if ( !StuFile ){ cout<<"文件StuInfo.dat不能打开!\n";return;}S tuFile.read( (char*)&s, sizeof(s) );w hile ( !StuFile.eof() ){ num++;stu[num]=s;StuFile.read( (char*)&s, sizeof(s) );}S tuFile.close();}CStuDatabase::~CStuDatabase() // 将学生信息写入到文件中{f stream StuFile; // 该文件用来保存学生信息S tuFile.open( "StuInfo.dat", ios::out );i f ( !StuFile ){cout<<"文件StuInfo.dat不能创建!\n";return;}f or ( int i=1; i<=num; i++ ){StuFile.write( (char*)&stu[i], sizeof(stu[i]) ); }S tuFile.close();}int CStuDatabase::SearchStu(const char * id) // 查找指定学号的学生{for ( int i=1; i<=num; i++ )if ( strcmp(stu[i].GetID(),id)==0 )return i;return -1;}int CStuDatabase::FunctionMenu() //功能菜单{ int FuncNum; // 保存操作编号system("cls"); //清屏cout<<"\n\n\n";cout<<setw(20)<<' '<<"**********************************\n\n\n";cout<<setw(24)<<' '<<"请选择要进行的操作:\n\n";cout<<setw(28)<<' '<<"1 --- 查询学生成绩\n\n"<<setw(28)<<' '<<"2 --- 显示学生成绩单\n\n"<<setw(28)<<' '<<"3 --- 添加学生信息\n\n"<<setw(28)<<' '<<"4 --- 删除学生信息\n\n"<<setw(28)<<' '<<"5 --- 修改学生信息\n\n"<<setw(28)<<' '<<"6 --- 对成绩进行统计分析\n\n"<<setw(28)<<' '<<"0 --- 退出\n\n\n";cout<<setw(20)<<' '<<"**********************************\n\n\n";cin>>FuncNum;while ( FuncNum<0 || FuncNum>6 ){cout<<"请重新选择要进行的操作:"<<endl;cin>>FuncNum;}return FuncNum;}void CStuDatabase::StuDBM( int FuncNum ) // 成绩维护{switch ( FuncNum ) {case 1: SelectStuInfo(); break; // 查询学生成绩case 2: ListScore( ); break; // 显示成绩单case 3: AddStuInfo( ); break; // 添加学生信息case 4: DelStuInfo( ); break; // 删除学生信息case 5: EditStuInfo( ); break; // 修改学生信息case 6: AnalyScore( ); break; // 对成绩进行统计分析}}void CStuDatabase::SelectStuInfo( ) // 查询学生信息{system("cls"); //清屏char no[5]; // 临时保存学号cout<<"\n请输入要查询的学生学号:"<<endl;cin>>no;i nt i=SearchStu(no);i f ( i==-1 ){cout<<"\n你查找的学生不存在!\n"; }e lse{ cout<<"\n你所查找的学生成绩如下:\n\n ";CStudent::T ableHead( ); // 输出表头stu[i].Display();}c out<<"\n按任意键返回...."<<endl;getch();}void CStuDatabase::ListScore( ) // 显示成绩单{system("cls"); //清屏if ( num == 0 ){cout<<"当前还没有学生成绩!\n"; }e lse{SortStu( ); // 按学号对成绩单排序CStudent::T ableHead( ); // 输出表头for ( int i=1; i<=num; i++ )stu[i].Display();cout<<"\n共有"<<num<<" 条学生成绩信息\n";}cout<<"\n显示成绩完毕!\n\n按任意键返回...."<<endl;getch();}void CStuDatabase::AddStuInfo( ) // 添加学生成绩{ system("cls"); //清屏char no[5]; // 临时保存学号cout<<"请输入要添加的学生的学号(输入-1 结束):";cin>>no;while ( strcmp(no,"-1")!=0 ){int i=SearchStu( no );while ( i!=-1 ){ cout<<"\n你添加的学生已存在!\n请重新输入学号(-1结束):";cin>>no;if ( strcmp(no,"-1")==0 ){cout<<"\n本次操作完成!\n\n按任意键返回...."<<endl;getch();return;}i=SearchStu( no );}num++;char na[10];cout<<"\n请输入要添加的学生的姓名:";cin>>na;cout<<"\n请输入要添加的学生的平时成绩:\n";int us = InputScore();cout<<"\n请输入要添加的学生的考试成绩:\n";int ts = InputScore();CStudent s(no,na,us,ts);stu[num]=s;cout<<"\n\n请输入要添加的学生的学号(输入-1 结束):";cin>>no;}cout<<"\n本次操作完成!\n\n按任意键返回...."<<endl;getch();}void CStuDatabase::DelStuInfo( ) // 删除学生信息模块{ system("cls"); //清屏char no[5]; // 临时保存学号cout<<"\n请输入要删除的学生学号:"<<endl;cin>>no;int i=SearchStu( no );if ( i==-1 ){ cout<<"\n你要删除的学生不存在!\n"; }else{ cout<<"\n您所删除的学生信息如下:\n\n ";CStudent::T ableHead( ); // 输出表头stu[i].Display();char anser;cout<<"\n是否真的要删除该学生?(Y/N):";cin>>anser;if ( anser=='y' || anser=='Y'){for ( int j=i+1; j<=num; j++ )stu[j-1]=stu[j];num--;cout<<"\n删除信息成功!"<<endl;}}cout<<"\n\n按任意键返回...."<<endl;getch();}void CStuDatabase::EditStuInfo( ) // 修改学生信息模块{ system("cls"); //清屏char no[5]; // 临时保存学号cout<<"\n请输入要修改的学生学号:"<<endl;c in>>no;i nt i=SearchStu( no );i f ( i==-1 ){cout<<"\n你要修改的学生不存在!\n"; }e lse{ cout<<"\n您所修改的学生成绩如下:\n\n ";CStudent::T ableHead( ); // 输出表头stu[i].Display();cout<<"\n请输入学生的新信息:";cout<<"\n请输入学生的姓名:";char na[10];cin>>na;cout<<"\n请输入学生的平时成绩:\n";int us = InputScore();cout<<"\n请输入学生的考试成绩:\n";int ts = InputScore();CStudent s(no,na,us,ts);stu[i]=s;cout<<"\n修改信息成功!"<<endl;}cout<<"\n\n按任意键返回...."<<endl;getch();}void CStuDatabase::AnalyScore( ) // 对成绩进行统计分析{ system("cls"); // 清屏int c[5]={0}; // 用来保存各个分数段的人数double AveScore=0; // 用来保存所有学生的平均成绩double ts; // 临时保存总评成绩for ( int i=1; i<=num; i++ ){ts=stu[i].GetTotalScore();AveScore+=ts;switch ( int( ts/10 ) ){case 10:case 9: c[0]++; break; // 90(含90)分以上人数case 8: c[1]++; break; // 80(含80)---90(不含90)分人数case 7: c[2]++; break; // 70(含70)---80(不含80)分人数case 6: c[3]++; break; // 60(含60)---70(不含70)分人数default: c[4]++; break; // 不及格人数}}AveScore/=num;cout<<"\n学生成绩分布情况如下:\n\n";c out<<"优秀(90分---100分)人数:"<<c[0]<<",\t占"<<double(c[0])/num*100<<" %\n\n";cout<<"良好(80分--- 89分)人数:"<<c[1]<<",\t占"<<double(c[1])/num*100<<" %\n\n";cout<<"中等(70分--- 79分)人数:"<<c[2]<<",\t占"<<double(c[2])/num*100<<" %\n\n";c out<<"及格(60分--- 69分)人数:"<<c[3]<<",\t占"<<double(c[3])/num*100<<" %\n\n";cout<<"不及格(60分以下)人数:"<<c[4]<<",\t占"<<double(c[4])/num*100<<" %\n\n";cout<<"学生总人数为:"<<num<<endl;cout<<"\n班级平均成绩为:"<<AveScore<<endl;cout<<"\n按任意键返回...."<<endl;getch();}void CStuDatabase::SortStu( ) // 按学号从小到大对成绩单排序{ int i, j, k;f or ( i=1; i<num; i++ ){k=i;for ( j=i+1; j<=num; j++ )if ( strcmp( stu[j].GetID(),stu[k].GetID() )<0 )k=j;CStudent temp=stu[i];stu[i]=stu[k];s tu[k]=temp;}}4. 定义主程序新建一个“C++ Source File”,文件名为“StudentScoreMain.cpp”,代码如下:#include <iomanip.h>#include <conio.h>#include "StuDataBase.h"void welcome();void main(){welcome(); // 欢迎画面CStuDatabase stuDB; // 生成成绩单对象int FuncNum; // 保存操作编号FuncNum=stuDB.FunctionMenu(); // 显示功能菜单while ( FuncNum!=0 ){stuDB.StuDBM( FuncNum ); // 学生库管理FuncNum=stuDB.FunctionMenu();}}void welcome(){cout<<"\n\n\n";cout<<setw(20)<<' '<<"**********************************\n\n\n";cout<<setw(24)<<' '<<"欢迎使用学生成绩单管理系统\n\n\n";cout<<setw(20)<<' '<<"**********************************\n\n\n";cout<<"\n按任意键继续...."<<endl;getch();}_。

相关文档
最新文档