中南大学C语言课程设计-学生成绩管理系统

合集下载

C语言课程设计--学生成绩管理系统

C语言课程设计--学生成绩管理系统

*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。

主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作源代码:#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>struct Student{int cls;char nam[10];char num[10];int chinese;int english;int computer;int math;}stud1[100],stud2[100];{char a;while(a>'7'||a<'0'){system("cls");printf(" 欢迎使用学生成绩管理系统\n");printf(" 制作人:章建\n");printf("********************** 学生成绩管理系统************************\n");printf(" 1.输入学生成绩\n");printf(" 2.输出学生成绩\n");printf(" 3.查找并显示学生成绩\n");printf(" 4.按姓名查找,修改学生资料\n");printf(" 5.显示所有学生名单\n");printf(" 6.查找并删除学生信息\n");printf(" 7.从文件读取数据\n");printf(" 0.储存学生资料并退出系统\n");printf("********************************************************************* *\n");printf("请选择(0-7)\n");a=getchar();}return(a-'0');}/******************************************************************************int Input(Student stud[],int n) //输入数据(第一学期)。

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

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

c语言学生成绩管理系统课程设计一、课程目标知识目标:1. 学生能理解C语言在开发学生成绩管理系统中的应用,掌握基本的程序结构和语法。

2. 学生能运用C语言实现对学生成绩的录入、查询、修改、删除和排序等功能。

3. 学生了解并掌握数组、结构体、文件操作等C语言核心知识在学生成绩管理系统中的运用。

技能目标:1. 学生能够独立设计并编写简单的C语言程序,实现学生成绩管理系统的基本功能。

2. 学生能够运用调试工具对程序进行调试,找出并修正程序中的错误。

3. 学生能够通过分析实际需求,提出合理的解决方案,提高编程解决问题的能力。

情感态度价值观目标:1. 学生通过学习C语言学生成绩管理系统,培养对计算机编程的兴趣和热情。

2. 学生在团队协作中,学会沟通、分享、合作,培养良好的团队精神和编程习惯。

3. 学生通过解决实际问题,体会编程带来的成就感,增强自信心,培养积极向上的学习态度。

课程性质:本课程属于实践性较强的课程,旨在让学生通过动手实践,掌握C 语言编程技能,并能够应用于实际问题的解决。

学生特点:学生已经具备一定的C语言基础,对编程有一定的了解,但对复杂程序的设计和开发尚处于起步阶段。

教学要求:结合学生特点和课程性质,本课程要求教师注重实践操作,引导学生通过动手实践掌握编程技能,并在实践中提高解决问题的能力。

同时,注重培养学生的团队协作和沟通能力,提高学生的综合素质。

通过本课程的学习,使学生能够达到上述课程目标,并为后续相关课程的学习打下坚实基础。

二、教学内容1. C语言基础知识回顾:包括数据类型、运算符、控制结构等,为后续课程打下基础。

(对应教材章节:1-3章)- 数据类型、变量定义- 运算符、表达式- 顺序结构、分支结构、循环结构2. 数组与函数:介绍数组的使用以及函数的定义与调用,为成绩管理系统提供数据存储和处理方法。

(对应教材章节:4-5章)- 一维数组、二维数组- 函数的定义、调用、参数传递- 递归函数3. 结构体与文件操作:讲解结构体的定义和使用,以及文件操作的基本方法,为成绩管理系统提供数据存储和读取功能。

C语言课程设计_学生成绩管理系统

C语言课程设计_学生成绩管理系统

部署步骤:安装 操作系统、安装 数据库、安装应 用软件等
维护方案:定期 备份数据、定期 检查系统、定期 更新软件等
系统维护方案
定期备份数据: 确保数据安全, 防止数据丢失
定期更新系统: 确保系统安全, 防止病毒和恶意 软件攻击
定期检查硬件: 确保硬件正常运 行,防止硬件故 障
定期培训员工: 确保员工熟悉系 统操作,提高工 作效率
06 系统测试与优化
单元测试
目的:验证单个模块或功能的正确 性
测试内容:功能测试、性能测试、 兼容性测试、安全性测试
添加标题
添加标题
添加标题
添加标题
测试方法:白盒测试、黑盒测试、 灰盒测试
测 试 工 具 : JU n it 、 Te s t NG 、 Selenium等
集成测试
目的:验证系统各模块间的接口和交互是否正常 测试方法:黑盒测试、白盒测试、灰盒测试 测试内容:功能测试、性能测试、安全测试、兼容性测试 测试工具:JMeter、Selenium、Appium等
系统性能优化
性能测试:使用自 动化工具进行性能 测试,如JMeter、 LoadRunner等
性能瓶颈分析:分 析性能测试结果, 找出性能瓶颈,如 数据库查询、网络 延迟等
性能优化:针对性 能瓶颈进行优化, 如优化数据库查询 、减少网络延迟等
性能监控:建立性 能监控体系,实时 监控系统性能,及 时发现和解决性能 问题
学生成绩管理系统是一个用 于管理学生成绩的软件系统
Байду номын сангаас
系统采用模块化设计,易于 维护和扩展
系统支持多种数据格式,如 Excel、CSV等,方便数据
导入和导出
系统目标
提高学生成绩管理效率 方便教师查询、统计和分析学生成绩 提供个性化学习建议和指导 促进家校沟通,提高家长对学生成绩的了解

C语言课程设计_学生成绩管理系统123456

C语言课程设计_学生成绩管理系统123456

摘要本设计是一个基于C语言实现的学生成绩查询系统。

学生成绩管理涉及到的算法都是以链表或顺序表的基本运算作为基础的,此程序包括:添加学生成绩,查询学生成绩,修改学生成绩,,删除学生成绩,,错误查询。

ﻫ查询学生所有成绩输出显示的功能。

通过链表存储结构实现数据的输入,实现各子程序过程的演示,对异常输入信息报错。

本系统以单片机的C语言进行软件设计,为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。

基于我们所学的知识,范围及深度,在此建立一个功能较为简单的查询系统。

关键词:C语言,学生成绩管理库的建立,学生成绩的删除,查找,添加,修改.目录摘要1 设计方案论证2 程序设计3 测试程序1 设计方案论证1。

1 功能要求1。

1.1主菜单界面如下:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@欢迎使用学生成绩管理系统@@@@@@@@@@@@设计者:@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@请选择功能:1、成绩录入2、成绩查询3、成绩统计1.1.2各菜单项要求完成的功能①成绩录入:输入学生的学号、姓名及三门课的成绩;并输出所有学生所有信息.②成绩查询:按学号查询学生记录。

ϖ按学生姓名查询学生记录.ϖ查询不及格学生的记录。

ϖ查询及格学生的记录。

ϖ③成绩统计:计算每个学生的平均分,并输出.ϖ计算各科的总分及平均分,并输出。

ϖ输出各科状元的记录。

ϖ1.1.3定义的结构体数组可以定义如下:#define N30struct student{intnum;/*定义学号*/charname[20];/*定义姓名*/floatscore[3];/*定义存贮三门课成绩的数组*/float average;/* 定义平均成绩*/}stu[N]; /*定义结构体数组,存贮多个学生的记录*/1.2 方案确定我们学过C语言及汇编语言,相对而言对C语言更加的熟悉,应用起来更加的熟练。

C语言课程设计—学生成绩管理系统

C语言课程设计—学生成绩管理系统

#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。

h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。

C语言课程设计-学生成绩管理系统-完整版

C语言课程设计-学生成绩管理系统-完整版

#include<stdio.h> #include<stdlib.h>#include<io.h> #include<string.h> /* strcmp 函数原型包含 */#define N 100 /* 定义最大学生人数为 100*/ struct student /* 学生结构体定义 */ char no[11]; /* 学号 ,10 位 */ char name[10];/* 姓名, 3 个汉字 */ char grade[10];/* 班级 */ char pro[20];/* 专业 */float score[5];/* 储存 5 门功课的成绩 */ float ave;/* 储存平均分 */ int year;/* 入学年 *//* 通过 i 的值,判断信息要查找的信息是否存在 *//* 输出学生成绩函数(公共函数) */ /* 系统初始化函数 */ /* 建立新的数据文件 *//* 从数据文件中读取数据 */ /* 维护界面函数 */ /* 新增一个学生成绩函数 */ /* 修改学生成绩 */ /* 修改成绩 *//* 删除学生信息函数 */ /* 统计界面函数 */ /* 计算每个学生平均分 */ /* 计算每门课程的平均分 */ /* 排序函数 */ /* 按学号排序 */ /* 按平均分排序 */ /* 按单科成绩排序 *//* 交换结构体数组中的两个记录 *//* 选择输出单科成绩 */ /* 查找界面函数 */ /* 按学号查找 */ int findname(char cname[]);/* 按姓名查找 */ void findyear(int cyear); /* 按入学年查找 */ void save(); /* 保存文件 */ void stop(); /* 停顿函数 */void stop()/* 停顿函数 (公共函数) */{printf("Press Any Key To Continue...\n"); getchar();}}stu[N]; int num; void panduani(int); void output(); voidinit(); void newfile(); void read1(); void weihu(); void new1(); void xiugai(); void xgcj(int); void delete1(); void tongji(); void tongji1(); void tongji2(); void paixu1(); void paino(); void paiave(); void paidkcj(); voidchange(int,int); void outputx(int); void find1(); int find(char sno[]);void output() /* 输出学生成绩函数(公共函数) */{int i,j;printf("===================================================================\n");printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("===================================================================\n");for(i=0;i<num;i++){printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year) Jfor(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");}stop();}void init() /* 系统初始化函数*/{if(access("stu.dat",0)) /* 判断文件是否存在*/newfile(); /* 若不存在,新建数据文件*/elseread1(); /* 若存在,读取数据*/}void newfile() /* 建立新的数据文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /* 创建二进制文件*/{printf(" 创建文件失败,请重新运行程序.\n"); /* 显示" 创建文件失败,请重新运行程序"*/exit(0); /* 终止程序*/}printf(" 初次运行,进行数据初始化...\n");/* 显示" 初次运行,进行数据初始化..."*/ stop();printf(" 请输入学生人数:");/* 显示"请输入学生人数:"*/ scanf("%d",&num);for(i=0;i<num;i++){printf(" 请输入第%d 个学生的学号:",i+1); /* 显示"请输入第i+1 个学生的学号:"*/ getchar(); /* 吃回车*/gets(stu[i].no);printf(" 姓名:"); /* 显示"姓名:"*/gets(stu[i].name);printf(" 班级:"); /* 显示"班级:"*/gets(stu[i].grade);printf(" 专业:"); /* 显示"专业:"*/gets(stu[i].pro);printf(" 入学年n:");/* 显示" 入学年"*/scanf("%d",&stu[i].year);printf("C 语言成绩:");/* 显示"C 语言成绩"*/ scanf("%f",&stu[i].score[0]);printf(" 高数成绩:");/* 显示"高数成绩"*/ scanf("%f",&stu[i].score[1]);printf(" 大物成绩:");/* 显示" 大物成绩"*/ scanf("%f",&stu[i].score[2]);printf(" 电路成绩:");/* 显示" 电路成绩"*/ scanf("%f",&stu[i].score[3]);printf(" 模电成绩:");/* 显示" 模电成绩"*/scanf("%f",&stu[i].score[4]);fwrite(&stu[i],1,sizeof(struct student),fp); /* 把第i+1 名学生成绩写入文件*/ }fclose(fp);printf("========================\n");printf(" 刚才输入的%d 个数据为:\n",num); /*显示"刚才输入的num 个数据为:"*/ printf("========================\n\n");output();}void read1() /* 从数据文件中读取数据*/{FILE *fp;num=0; /*num 为数据文件中实际存储的学生人数*/fp=fopen("stu.dat","r");if(fp==NULL) /* 数据文件不存在*/{printf(" 文件打开失败!重新运行程序\n"); /* 显示"文件打开失败!重新运行程序"*/ exit(0);}while(!feof(fp)) /* 文件结束检测"*/{fread(&stu[num],1,sizeof(struct student),fp); num++;}num--; fclose(fp); printf("\t\t\t=======================================\n"); printf(" \t\t\t现有 %d 个学生的成绩: \n",num); /* 显示 "现有 NUM 个学生的成绩: "*/printf("\t\t\t=======================================\n\n"); output();}void weihu() /* 维护界面函数 */{char c1; while(1){getchar(); if(c1=='9') break; switch(c1) { case '1': new1(); break; case '2': delete1(); case '3': xiugai(); break; default:printf(" 选择有误,请重选! \n");/*" 选择有误,请重选! "*/} } }void new1() /* 新增一个学生成绩函数 */{printf(" 请输入学号 :"); /* 显示 "请输入学号 :"*/ gets(stu[num].no);printf("\t\t\t* 维护*\n");printf("\t\t\t* 1. 新增 *\n"); /*新增 */printf("\t\t\t* 2. 删除 *\n"); /* 删除(按学号)*/printf("\t\t\t* 3. 修改 *\n"); /* 修改 */ printf("\t\t\t*9. 返回*\n"); /* 返回 */printf("\t\t\t************************\n");printf("\t\t\t 请选\n");/* 请选*/printf("\n\n\n\t\t\t* ********************* **\n"); c1=getchar();printf(" 姓名:"); /* 显示"姓名:"*/ gets(stu[num].name);printf(" 班级:"); /* 显示" 班级:"*/ gets(stu[num].grade);printf(" 专业:"); /* 显示"专业:"*/ gets(stu[num].pro);printf(" 入学年:");/* 显示"入学年"*/ scanf("%d",&stu[num].year);printf("C 语言成绩:");/* 显示"C 语言成绩"*/ scanf("%f",&stu[num].score[0]); printf(" 高数成绩:");/* 显示"高数成绩"*/ scanf("%f",&stu[num].score[1]);printf(" 大物成绩:");/* 显示" 大物成绩"*/ scanf("%f",&stu[num].score[2]);printf(" 电路成绩:");/* 显示" 电路成绩"*/ scanf("%f",&stu[num].score[3]);printf(" 模电成绩:");/* 显示" 模电成绩"*/ scanf("%f",&stu[num].score[4]);num++; printf("\n======================================\n");"*/ printf(" 现有%d 个学生的成绩:\n",num); /* 显示"现有NUM 个学生的成绩:printf("======================================\n\n");output();}void xiugai() /* 修改学生成绩*/{char xg[11];int i;printf("\n 请输入要修改学生的学号 :\n\n"); gets(xg);for(i=0;i<num;i++)if(strcmp(stu[i].no,xg)==0)break; if(i==num){printf("\n 数据文件无该生信息 !\n\n 请重新输入学号 .\n\n"); stop(); return;}xgcj(i);} void xgcj(int x)/* 修改成绩 */{ char xueke[5][10]={"C 语言","高数 ","物理","电路","模电"}; char (*p)[10],c; int j,k; p=xueke; for(;;){**\n\n"); printf("\t\t\t 成绩 printf("\t\t\t 1.C 语言 printf("\t\t\t 2.高数printf("\t\t\t 3.物理 printf("\t\t\t 4.电路 printf("\t\t\t5.模电 printf("\t\t\t9.返回printf("\n");printf("\t\t\t** ******************************** printf("\t\t\t** ******************************** \n");\n"); /*C 语言 */ \n"); /*高数 */\n"); /* 大学物理 */ \n"); /*电路 */ \n"); /*模电 */ \n\n"); /* 返回上级 */**\n\n"); printf("\t 请选择要修改的成绩 (按 1.2.3.4.5.9):\n"); c=getchar(); getchar();if(c=='9')break; else if (c>='1'&&c<='5'){k=c-49;printf("\n 请输入 %s 成绩 :\n",p+k); scanf("%f",&stu[x].score[k]); printf("\n 修 息为 :\n");printf(" 学号 姓名 班级 专业 入学年 C 语言 高数 大物电路模电printf("===================================================================\n");printf("%s %s %s %s %d",stu[x].no,stu[x].name,stu[x].grade,stu[x].pro,stu[x].ye ar);for(j=0;j<5;j++)printf(" %.1f",stu[x].score[j]);printf("\n");}else printf("\n 选择有误,请重选!\n\n");stop();}}int find(char sno[]) /* 按学号查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].no,sno)==0) /* 判断两个字符串相等*/return i;/* 查找成功*/return -1;/* 查找失败*/}void delete1() /* 删除学生信息函数*/{char cno[11];int i,j;printf(" 请输入要删除的学生学号:"); /*" 请输入要删除的学生学号"*/gets(cno);i=find(cno);if(i!=-1){for(j=i;j<num;j++)stu[j]=stu[j+1];num--;printf(" 现有%d 个学生的成绩:\n",num); /* 显示" 现有NUM 个学生的成绩:"*/ output();}else {printf(" 请输入正确的学号. \n");stop();}}void tongji(){int i;char c2; while(1) {printf("\t\t\t 请选择 :\n");/* 请选择: */ c2=getchar(); getchar(); if(c2=='9') break; switch(c2){case '1': tongji1();printf("\n\n 学生平均分为 :\n");printf("===========================================\n"); printf(" 学号 姓名 入学年 平均分 \n");printf("===========================================\n"); for(i=0;i<num;i++)printf("%s %s %d %.2f\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave); stop(); break; case '2': tongji2(); break; default:printf(" 选择有误,请重选 \n");/*" 选择有误,请重选! "*/ }} }void tongji1() /* 计算每个学生平均分 */ { int i,j;for(i=0;i<num;i++){stu[i].ave=0; for(j=0;j<5;j++)stu[i].ave+=stu[i].score[j]; stu[i].ave=stu[i].ave/5;}}void tongji2()/* 计算每门课程的平均分 */{int i,j; float sum;printf("\t\t\t* 统计 *\n");printf("\t\t\t*1. 学生平均分 *\n"); /* 计算学生平均分 */ printf("\t\t\t*2. 课程平均分 *\n"); /* 计算每门课程平均分 */ printf("\t\t\t*9. 返回*\n"); /* 返回 */printf("\n\n\n\t\t\t ***************************** **\n"); printf("\t\t\t* **************************** **\n"); /* 统计界面函数 */float avec[5]; /* 储存每门课的平均分*/ for(j=0;j<5;j++){sum=0;for(i=0;i<num;i++)sum+=stu[i].score[j];avec[j]=sum/num;}printf("\n\n 各科平均分:\n");/*" 各科平均分:"*/printf("===================================\n"); printf("C 语言高数大物电路模电\n"); printf("===================================\n"); for(i=0;i<5;i++)printf("%-7.1f",avec[i]);printf("\n");stop();}void paixu1() /* 排序界面*/{char c3;for(;;){printf("\n\n\n");printf("\t\t\t***********************************\n");printf("\t\t\t* 排序* \n");printf("\t\t\t* 1. 按学号排序* \n"); /* 按学号排序*/printf("\t\t\t* 2. 按平均分排序* \n"); /* 按平均分排序*/printf("\t\t\t* 3. 按单科成绩排序* \n"); /* 按单科成绩排序*/printf("\t\t\t* 9. 返回* \n"); /* 返回*/printf("\t\t\t***********************************\n\n");printf("\t 请选(按 1.2.3.9):\n");/* 请选择:*/c3=getchar();getchar();if(c3=='9') break;switch(c3){case '1':paino();break;case '2':paiave();break;case '3':paidkcj();break; default:printf("\n 选择有误,请重选!\n\n");/* 选择有误,请重选!*/ stop();}}}void paino() /* 按学号排序*/{ /* 按学号从低到高冒泡法排序*/int i,j;for(i=0;i<num;i++)for(j=0;j<num-1-i;j++)if(strcmp(stu[j].no,stu[j+1].no)>0) change(j,j+1);printf("\n 排序后为:\n"); /*" 排序后为:"*/output();}void paiave() /* 按平均分排序*/{ /* 按平均分从高到低冒泡法排序*/int i,j;tongji1(); /* 计算平均成绩*/ for(i=0;i<num;i++) for(j=0;j<num-i-1;j++)if(stu[j].ave<stu[j+1].ave) change(j,j+1);printf("\n\t 排序后为:\n"); /*" 排序后为:"*/printf("\t===============================================\n"); printf("\t 学号姓名入学年平均分排名\n");printf("\t===============================================\n"); for(i=0;i<num;i++) printf("\t%s %s %d %.2f %4d\n",stu[i].no,stu[i].name,stu[i].year,stu[i].ave,i+1); stop();void paidkcj() /* 按单科成绩排序*/ {char c;int i,j,k;while(1){printf("\n");printf("\t\t\t************************************\n\n");printf("\t\t\t 单科成绩\n");printf("\t\t\t 1.C 语言\n"); /*C 语言*/printf("\t\t\t 2.高数\n"); /*高数*/printf("\t\t\t 3.物理\n"); /* 大学物理*/printf("\t\t\t 4.电路\n"); /*电路*/printf("\t\t\t 5.模电\n"); /*模电*/printf("\t\t\t 9.返回\n\n"); /* 返回上级*/printf("\t\t\t************************************\n\n");( 按 1.2.3.4.5.9):\n");printf("\t 请选择:c=getchar();getchar();else if (c>='1'&&c<='5'){k=c-49;for(i=0;i<num;i++) for(j=0;j<num-1-i;j++) if(stu[j].score[k]<stu[j+1].score[k])change(j,j+1);outputx(k);}else printf("\n 选择有误,请重选!\n\n"); stop();}}void change(int i,int j)/* 交换结构体数组中的两个记录*/{struct student temp; temp=stu[i]; stu[i]=stu[j]; stu[j]=temp;}void outputx(int k) /* 选择输出单科成绩*/char xueke[5][10]={"C 语言","高数 ","物理","电路","模电"}; char (*p)[10]; /* 定义一个指向包含 10 个字符型元素的一维数组的指针变量 */int i;p=xueke;printf("\n\t 排序后为 :\n");printf("\t===============================================\n"); printf("\t 学号 姓名入学年 %s 排名 \n",p+k);printf("\t===============================================\n"); for(i=0;i<num;i++)printf("\t%-11s% -10s%-11d%-6.1f%5d\n",stu[i].no, stu[i].name,stu[i].year,stu[i].score[k],i+1);}void find1() /* 查找界面函数 */{char c4;char cno[11],cname[10]; int i,cyear; while(1){printf("\t\t\t* ************************************\n"); printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t* printf("\t\t\t请选择 :\n");/* 请选择:*/ c4=getchar();getchar(); if(c4==57) break; switch(c4){case '1':printf(" 输入学号 :\n");/*" 输入学号: "*/ gets(cno); i=find(cno); panduani(i); break; case '2':printf(" 输入姓名 :\n");/*" 输入姓名: "*/ gets(cname);i=findname(cname); panduani(i); break; case '3':printf(" 输入入学年 :\n");/*" 输入入学年 "*/ scanf("%d",&cyear);查找1. 按学号查找2. 按姓名查找3. 按入学年查找 9. 返回************************************\n");*\n");*\n"); /* 按学号查找 */ *\n"); /* 按姓名查找 */ *\n"); /* 按入学年查找 */findyear(cyear);stop();break;default:printf(" 选择有误,请重选!\n");/*" 选择有误,请重选!"*/}}} int findname(char cname[]) /* 按姓名查找*/{int i;for(i=0;i<num;i++)if(strcmp(stu[i].name,cname)==0) /* 判断两个字符串相等*/return i; /* 查找成功*/return -1; /* 查找失败*/}void findyear(int cyear){int i,j,flag=0;for(i=0;i<num;i++)if(stu[i].year==cyear){ flag=1;break;}if(flag==0){printf(" 要查找的学生不存在\n");stop(); }else{printf(" 查找到的学生信息为:\n");/*" 查找到的学生信息为:"*/printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("================================================================ ===\n");for(i=0;i<num;i++){if(stu[i].year==cyear) /* 判断两个数值相等*/{printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year); for(j=0;j<5;j++) printf(" %.1f",stu[i].score[j]); printf("\n");}}}}void panduani(int i) /* 通过i 的值,判断信息要查找的信息是否存在*/{int j;if(i==-1){printf(" 要查找的学生不存在\n");/* 要查找的学生不存在*/ stop();}else{printf(" 查找到的学生信息为:\n");/*" 查找到的学生信息为:"*/ printf(" 学号姓名班级专业入学年 C 语言高数大物电路模电\n");printf("================================================================ ===\n");printf("%s %s %s %s %d",stu[i].no,stu[i].name,stu[i].grade,stu[i].pro,stu[i].year)Jfor(j=0;j<5;j++)printf(" %.1f",stu[i].score[j]);printf("\n");stop();}}void save() /* 保存文件*/{int i;FILE *fp;if((fp=fopen("stu.dat","wb"))==NULL) /* 创建二进制文件*/{printf(" 创建文件失败,请重新运行程序.\n"); /* 显示" 创建文件失败,请重新运行程序"*/exit(0); /* 终止程序*/}for(i=0;i<num;i++)fwrite(&stu[i],1,sizeof(struct student),fp); /* 将I+1 名学生成绩写入文件*/ fclose(fp);}void main() /* 主控菜单*/{char c;init();while(1){printf("\t\t 请选择 :\n");/* 请选择: */ c=getchar(); getchar(); switch(c){case '1': weihu(); break; case '2': tongji(); break; case '3': paixu1(); break; case '4': find1(); break; case '9': save(); exit(0); break; default:printf(" 选择有误,请重选 !\n");/*" 选择有误,请重选! "*/printf("\n\t\t***制作:王清珍,陈超,路梓裕,卢诚知,****\n"); printf("\n\t\t*************************************************\n");printf("\t\t* 、 t t • I 、/, 主菜单*\n");printf("\t\t* 1. 维护 *\n"); /* 维护 */ printf("\t\t* 2. 统计 *\n"); /* 统计 */ printf("\t\t* 3. 排序 *\n"); /* 排序 */ printf("\t\t*4. 查找*\n"); /* 排序 */ printf("\t\t*9. 存盘退出*\n"); /* 存盘退出printf("\t\t************* 欢迎登陆学生成绩管理系统 ************\n"); printf("\t\t** ********************************************* **\n");。

C语言程序设计课程大作业--成绩管理系统

C语言程序设计课程大作业--成绩管理系统

《C语言程序设计》课程大作业——学生成绩管理系统一、任务与目的本大作业要求学生对《学生成绩管理系统》进行分析、设计及编程实现。

要求该系统实现部门级(或班级)成绩管理的常用功能,界面友好。

通过大作业,促使学生专业技能得到综合训练,让学生了解软件开发基本技术和工作过程。

通过本系统的开发,同学要了解软件开发的整个过程,掌握软件开发的基本方法,提前培养同学们从事软件行业应具备的基本素质和能力,为以后的学习作一个铺垫。

二、系统开发步骤软件开发一般有以下步骤:1。

问题定义2。

可行性研究3。

需求分析(需求分析阶段)4。

总体设计5. 详细设计6。

编码及单元测试7. 综合测试8. 软件维护(安装调试阶段)其中1、2、3步可以整合为调研分析阶段,4、5、6、7步可以整合为项目实施阶段.根据本次课程设计的实际情况,我们着重进行系统设计和编码实施.该阶段主要工作有:1。

系统结构的总体设计决定系统的总体结构,包括整个系统分哪些部分,各部分之间有什么联系以及已确定的需求对这些组成部分如何分配等方面。

2。

数据结构定义定义软件处理的对象——类,定义数据处理流程.3.详细设计对各功能模块的功能定义,说明模块之间的调用关系与接口(参数).4。

编码及调试根据详细设计的要求,按照统一的要求和编码规范,用JAVA语言编码实现,同时负责每个模块的独立调试。

5.综合测试软件开发的后期是软件装配和综合测试。

软件测试一般有专业的测试人员,同时通过发布使用试用版(体验版)等方式让用户体验、测试。

在多次测试改进后,才正式发布.三、系统功能需求描述管理内容包括:学号、姓名、班级、五门课成绩。

主要功能有:添加、修改、删除、读出、写入、查找、排序、计算总分、平均分、分类汇总等。

具体包括:1. 输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩;2. 显示全部学生各科成绩信息;3. 对各科成绩统计分析(总分、平均分、最高分、最低分、及格率等);4。

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

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

C语言程序设计报告 ---学生成绩管理系统一、背景学生的学习成绩是一起重要的信息,为了管理好学生的学习成绩,学校及老师在教学过程中,需要有一个对学生成绩进行统计与记录,用于注册成绩,查询发放证书等工作,需要一个学生成绩管理系统来进行辅助操作。

本文主要介绍我校用C语言实现的学生成绩管理系统。

二、系统概述学生成绩管理系统主要由三个模块组成,即:数据录入模块、数据处理模块和数据输出模块。

数据录入模块:将每个学生的个人资料、成绩数据及相关信息,用户图形用户界面录入进系统;数据处理模块:利用程序能实现学生的成绩,统一的处理成绩,例如排名、查找,等;数据输出模块:该模块是整个系统的核心模块,将输出内容包括:学生基本信息、每门课程的各项成绩、平均成绩、综合排名等相关信息,通过程序。

三、系统功能介绍1.数据录入:学生的基本信息及考试成绩等信息的输入,用于后续数据处理及学生成绩的查询。

2.成绩查询:具备基本的查询功能,可以根据学生的学号及姓名查询学生的成绩,以及详细的学生考试成绩。

3.信息统计:可以进行全体学生的各项考试成绩信息综合统计,统计分析每个班级、每个专业、每门课程的考试情况,以及学生的排名,让用户知道整体的学习情况及有效管理学生的学习。

4.安全设置:系统具备安全设置功能,确保用户的信息安全,保证用户的登录权限,为系统及用户提供足够的安全保障,确保系统的数据安全。

四、系统分析系统分析阶段主要包含了分析及设计的步骤,为了更好的实现学生成绩管理的功能,系统分析中分析出学生信息、班级信息、考试信息等相关信息,以便为系统设计提供理论依据。

系统设计是系统分析的一个重要环节,通过设计,能够实现系统的功能,系统设计中定义出系统的基本流程及外部接口,使得系统能够正常运行。

五、系统实现六、系统测试学生成绩管理系统在功能测试过程中,通过实际的操作来测试学生成绩管理系统,测试的主要内容是系统的基本功能及系统的数据安全性,通过实际的操作,测试员可以详细的检查系统是否符合预期的功能,以及系统的正确度,从而保证系统的可靠性及安全性。

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

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

c语言学生成绩管理系统课程设计一、课程目标知识目标:1. 学生能理解C语言在开发学生成绩管理系统中的应用和重要性。

2. 学生掌握C语言中的基本数据类型、运算符、控制结构等基础知识,并能运用到成绩管理系统的设计与实现中。

3. 学生能掌握文件操作、数组、结构体等C语言高级特性,用以存储、查询和管理学生成绩。

技能目标:1. 学生能够运用所学知识,设计并编写一个简单的学生成绩管理系统。

2. 学生通过实际操作,培养解决问题的能力,包括分析需求、设计算法、编写程序和测试代码。

3. 学生通过小组合作,提升团队协作能力和项目管理的实践技能。

情感态度价值观目标:1. 学生在学习过程中培养对编程的兴趣和热情,增强对信息技术的认同感。

2. 学生通过解决实际问题,体会编程带来的成就感,激发进一步学习的动力。

3. 学生在团队合作中学会相互尊重、倾听和沟通,培养积极向上的情感态度。

课程性质:本课程是计算机科学与技术学科的一门实践性课程,强调理论与实践相结合,注重培养学生的实际操作能力和创新思维。

学生特点:高年级学生对C语言有一定的基础知识,具备一定的编程能力和问题解决能力。

教学要求:课程要求学生在理解基本概念的基础上,通过项目驱动的教学方式,动手实践,将理论知识转化为实际应用。

通过课程学习,学生应达到以上设定的知识、技能和情感态度价值观目标,为后续的深入学习打下坚实基础。

二、教学内容本课程教学内容主要包括以下几部分:1. C语言基础知识回顾:数据类型、变量、运算符、控制结构等,确保学生具备扎实的编程基础。

2. 文件操作:文件打开、关闭、读写等操作,为成绩管理系统中的数据持久化提供支持。

3. 数组与字符串:数组的使用、字符串处理,用于存储和管理学生成绩信息。

4. 结构体:自定义结构体类型,用于表示学生信息和成绩。

5. 函数:模块化编程,提高代码可读性和可维护性。

6. 项目实践:设计并实现一个学生成绩管理系统,涵盖以下功能:- 录入学生信息- 修改学生信息- 删除学生信息- 查询学生信息- 成绩排名- 成绩统计分析7. 教学大纲:- 第一周:C语言基础知识回顾,数组与字符串操作- 第二周:结构体、函数,文件操作- 第三周:项目需求分析,设计系统框架- 第四周:编写代码,实现各功能模块- 第五周:系统测试,优化代码,撰写项目报告教学内容与教材关联性:本课程教学内容紧密结合教材中的相关章节,如数据类型、控制结构、文件操作等,确保学生所学知识的系统性和科学性。

C语言课程设计报告(学生成绩管理系统)

C语言课程设计报告(学生成绩管理系统)

C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。

二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。

同时也可以全部把各科的平均成绩,最高和最低分输出.三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来.四、输出全部学生信息和全部学生成绩。

五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。

总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。

2、查询模块:可用stu *lookdata(stu *p1)来实现。

找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。

3、插入模块:可用insert( )函数来实现。

其中通过学号的大小来比较的,并且以此来排序.4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。

5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。

二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。

主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h”#include"stddef.h"#include"stddef。

C语言课程设计-学生成绩管理系统报告书

C语言课程设计-学生成绩管理系统报告书

目录一课题意义 (3)1.1 成绩管理系统的背景分析 (3)1.2学生成绩管理系统设计的目标的分析 (5)二算法分析 (6)2.1学生成绩管理系统模块图 (6)2.2学生成绩管理功能介绍 (7)三学生成绩管理系统设计功能的实现 (8)3.1 成绩管理系统的登录页面 (8)3.2 学生成绩管理系统的录入 (10)3.3 学生成绩管理系统的显示 (12)3.4 学生成绩管理系统的删除 (13)3.5 学生成绩管理系统的查询 (16)3.6学生成绩管理系统的保存 (17)四程序测试 (20)五总结 (21)六参考文献 (22)一课题意义1.1成绩管理系统的背景分析当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。

计算机的最大好处在于利用它能够进行信息管理。

使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。

尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。

管理信息系统是进行信息的采集、存储、加工、维护和使用的系统,它是随着管理科学和技术科学的发展而形成的。

学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,对学生来说可以轻松的查阅自己在校的成绩以及信息等。

但是一直以来人们都是靠传统人工的方式管理学生成绩,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对学生成绩信息进行管理,有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高学生成绩管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。

C语言课程设计报告-学生成绩管理系统(vc)

C语言课程设计报告-学生成绩管理系统(vc)

一、实践的目的和要求加深对《C语言》课程所学知识的理解,进一步巩固C语言语法规则。

学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。

二、实践内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。

进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。

三、实践任务1.欢迎画面2.学生成绩管理系统(自己设计界面)3.异或加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容以字符形式读出,与密钥(用户从键盘输入)的对应字符进行异或操作即可,解密同样如此。

如:设原文为ab1234,密钥为56,则有ab1234565656按二进制进行异或操作即可得到密文(乱码)。

4.移位加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容(限于英文字母)以字符形式读出,根据密钥k(用户从键盘输入)将对应字符进行移位操作即可,解密时移动方向相反。

如:设原文为abcdef,密钥为5,则有abcdef 每个字母按字母表向后移动位(注:z后接a)fghijkl 可得到密文(乱码)。

5.辅助运算(1)整数N模m的乘法逆t要求:输入整数N和m,求出t,若t不存在,给出信息。

提示:这三个数满足:N*t%m=1,使用穷举法。

例如:当N为11,m为26时,由于(11×19)%26=1,所以11模26的乘法逆为19。

(2)统计字母个数要求:输入一段英文字母,统计各个字母的个数,并按个数从大到小排序输出。

提示:字母大小写等价。

输出格式为:字母:个数。

(3)OTP加密要求:输入同等长度的原文x和密钥k(英文字母),根据公式c=(x+k) %26 得到密文,并输出。

提示:将26个字母按0~25编号,将原文字母和对应位置的密钥字母的编号按上述公式进行计算后得到一个新的字母。

中南大学计算机课程设计--学生成绩管理系统

中南大学计算机课程设计--学生成绩管理系统

机电工程学院中南大学C++可视化程序设计实践题目学生成绩管理系统成员姓名班级: 学号:成员姓名班级: 学号:指导教师夏建芳学院机电工程学院完成时间年月日目录一、设计任务书--------------------------------------------------------二、总体设计方案------------------------------------------------------三、成员设计内容简介--------------------------------------------------四、使用说明及运行实例------------------------------------------------五、项目源程序代码----------------------------------------------------六、课程设计心得------------------------------------------------------七、成绩评定表--------------------------------------------------------一、设计任务书《面向对象程序设计课程设计》是计算机科学与技术专业和软件工程专业集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。

其目的在于加深对面向对象程序设计中基础理论和基本知识的理解,培养学生的实践能力,促进理论与实践的结合。

通过课程设计,让学生能够熟练运用C++进行面向对象编程,建立对象模型,降低软件的复杂性,改善软件的重用性和维护性,提高软件的生产效率,全面掌握面向对象编程技术。

任务要求1-3人一组(自由组合),明确分工。

(1)小组负责人一般进行总体设计(包括总体设计流程图、模块函数原型接口设计);(2)模块的程序设计由组长、成员分别完成,并独立调试自己的程序;(3)组长至少完成2个功能模块的设计,成员至少完成3个功能模块的设计;(4)模块组装调试共同完成。

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

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

学生成绩管理系统c语言课程设计一、课程目标知识目标:1. 让学生掌握C语言中结构体、数组、函数等基本知识点的综合运用,能够设计并实现一个学生成绩管理系统;2. 让学生了解并掌握文件操作在C语言中的实现方法,能够完成数据的存储与读取;3. 让学生理解模块化编程的思想,能够将复杂的程序分解为多个简单、独立的功能模块。

技能目标:1. 培养学生运用C语言解决实际问题的能力,提高编程技巧;2. 培养学生分析问题、设计算法、编写程序、调试程序的能力;3. 培养学生团队协作能力,能够与他人共同完成一个项目。

情感态度价值观目标:1. 培养学生对待编程的兴趣和热情,激发学生学习C语言的积极性;2. 培养学生认真负责、严谨细致的工作态度,养成良好的编程习惯;3. 培养学生善于思考、勇于创新的精神,提高学生的自主学习能力。

分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 能够独立设计并实现一个具备基本功能的学生成绩管理系统;2. 能够运用所学知识,完成对学生成绩的增、删、改、查等操作;3. 能够通过团队协作,优化系统功能,提高系统性能;4. 能够对编程过程中遇到的问题进行自主分析、解决,并在实践中不断总结经验,提高编程能力。

二、教学内容根据课程目标,本章节的教学内容主要包括以下几部分:1. C语言基础回顾:结构体、数组、函数的定义与使用;2. 文件操作:文件的打开、关闭、读写操作;3. 模块化编程:功能模块的划分、接口设计、实现与调用;4. 学生成绩管理系统需求分析:功能模块划分、数据结构设计;5. 学生成绩管理系统的设计与实现:各功能模块的具体实现;6. 团队协作与项目实践:项目分工、进度安排、协作沟通。

具体教学大纲安排如下:1. 复习C语言基础知识,明确课程所需掌握的基本概念(1课时);2. 讲解文件操作原理,并通过示例演示文件操作在C语言中的实现(2课时);3. 介绍模块化编程思想,分析学生成绩管理系统功能模块划分及接口设计(2课时);4. 分析学生成绩管理系统需求,引导学生进行数据结构设计(2课时);5. 指导学生进行学生成绩管理系统的设计与实现,分阶段完成各功能模块(6课时);6. 安排团队协作项目实践,确保学生在实践中掌握所学知识,提高编程能力(4课时)。

C语言程序课程设计--学生成绩管理系统

C语言程序课程设计--学生成绩管理系统

C语言程序课程设计--学生成绩管理系统
学生成绩管理系统是一种利用计算机程序来储存、处理和管理学生成绩信息的系统。

它可以收集、整理学生的相关成绩信息,如学生的学号、姓名、年级及其对应的期末考试
成绩,实现对这些成绩的存储、修改、查询和汇总统计等功能。

它可以不仅可以查询当前
成绩,还可以查询学生在不同学期的前若干学期的成绩状况,方便学校管理者和老师快速
了解到学生的学习状况。

首先,学生成绩管理系统需要建立学生信息数据库,储存学生的基本信息,以及课程、考试成绩的数据表,用以储存和查询学生的考试成绩。

比如有学生信息表:学号,姓名,
班级、学科成绩表:报考科目,期末考试成绩,考试时间等等。

接着,学生成绩管理系统需要实现一些基本功能用于操作这些数据表。

根据学校成绩
管理的需要,系统可以实现新增学生、新增科目成绩、查询学生成绩、修改学生成绩等功能,为学校提供必要的成绩管理支持。

其次,学生成绩管理系统还可以进行学生成绩的统计分析。

可以对学生在各科考试中
的情况进行统计分析,分析学生的表现,以便学校更方便、更全面地了解学生的学习状况。

最后,学生成绩管理系统为管理者和老师提供更便捷、高效的管理效率,减少管理者
管理工作时间,节约学校的人力资源,有助于改善学子的学习水平。

综上所述,学生成绩管理系统对于教育管理者而言,无疑是一个非常重要的系统,为
学校管理者和老师提供了快速准确的学生成绩信息,帮助他们更好地了解学生的成绩状况,进而提高教育管理的精准性和质量。

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

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

学生成绩管理系统c语言课程设计一、课程目标知识目标:1. 理解C语言在学生成绩管理系统中的应用和重要性;2. 掌握C语言的基本语法,如数据类型、运算符、控制结构等;3. 学会使用C语言数组、函数和文件操作实现学生成绩的存储、查询、修改和删除;4. 了解结构体在C语言中的应用,能够使用结构体表示和管理学生信息。

技能目标:1. 能够运用所学知识,独立设计和编写一个简单的学生成绩管理系统;2. 培养学生的编程思维和解决问题的能力,使其能够分析需求,提出解决方案;3. 提高学生的团队协作和沟通能力,能够在小组合作中发挥积极作用。

情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发其学习C语言的积极性;2. 培养学生的责任感和自信心,使其在学习过程中保持积极的心态;3. 培养学生尊重知识产权,遵循编程规范,养成良好的编程习惯。

本课程旨在通过学生成绩管理系统的设计与实现,使学生在掌握C语言基础知识的基础上,提高编程实践能力。

针对学生的年级特点,课程注重培养学生的学习兴趣、动手能力和团队协作精神,使其在完成课程任务的过程中,形成积极向上的情感态度价值观。

课程目标的设定既符合学科知识体系,又注重学生个体发展需求,为后续教学设计和评估提供明确的方向。

二、教学内容本课程教学内容依据课程目标,结合教材章节,进行以下安排:1. C语言基础知识回顾:- 数据类型、变量和常量- 运算符和表达式- 控制结构(顺序、选择、循环)2. 数组与函数:- 数组的概念及应用- 函数的定义、声明和调用- 递归函数3. 结构体与文件操作:- 结构体的定义和使用- 文件的打开、读写和关闭- 学生信息存储与读取4. 学生成绩管理系统设计与实现:- 系统需求分析- 功能模块划分- 编程实现(数据输入、查询、修改、删除、排序等)5. 团队协作与项目实践:- 小组分工与协作- 代码审查与优化- 项目测试与总结教学内容按照以上五个方面进行系统性地组织,确保学生能够逐步掌握C语言在学生成绩管理系统中的应用。

中南大学C语言课程设计-学生成绩管理系统

中南大学C语言课程设计-学生成绩管理系统

中南大学二○一三~二○一四学年第一学期信息科学与工程学院程序设计基础实践设计报告课程名称:程序设计基础实践班级:2013级物联网工程1302班学号:0919130205姓名:张晨指导教师:杨希二○一三年十二月目录/Contet课程设计题目 (1)题目初步分析 (1)程序总体设计 (2)程序具体设计 (10)程序调试测试 (12)心得与体会 (33)源代码 (33)课程设计题目学生成绩管理系统学生信息为:学号、姓名、年龄、性别、出生年月、地址、电话、各科成绩等,试设计一个学生信息管理系统,使之能提供以下功能。

1.学生信息录入;2.学生信息浏览;3.按学号、姓名查询;4.学生成绩排序;5.学生信息修改与删除.6.综合信息输出.题目初步分析对对象的处理1.由于每一个对象都包括多个成属性,所以要考虑数据的存储形式要用结构体类型来实现。

2.假如以数组的方式来存储,当然可以,但是定义一个数组,首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。

3.由于题目中的数据需要长期保存,用普通的函数来写已经不可以满足要求了,所以需要用到文件来存储.对过程的处理1。

输入学生信息(设计一个生成链表程序,并将链表中的数据保存到一个数据文件中);2。

插入(修改)学生信息(设计一个从数据文件中读数据的程序并将数据存放在链表中进行操作,最后将处理后链表中的数据再次保存到一个数据文件中);3。

删除学生信息(设计一个从数据文件中读数据的程序并将数据存放在链表中进行操作,最后按照要求将链表中的某个数据删除后再次保存到一个数据文件中);4。

浏览学生信息(设计一个从数据文件中读数据的程序并将数据存放在链表中进行操作,再将链表中的数据显示出来).5。

将学生总分排序(设计一个从数据文件中读数据的程序并将数据先存在链表中,后用一个数组记录总分,进行排序,在查找回相应信息,输出)。

c语言课程设计报告学生成绩管理系统

c语言课程设计报告学生成绩管理系统

c语言课程设计报告学生成绩管理系统一、课程目标知识目标:1. 学生能理解并掌握C语言基础,包括变量定义、数据类型、运算符、控制结构等。

2. 学生能运用C语言实现学生成绩管理系统的基本功能,如添加、删除、修改、查询学生成绩。

3. 学生了解并掌握文件操作在C语言中的应用,实现对数据的持久化存储。

技能目标:1. 学生能够运用结构体数组管理大量数据,培养数据组织和管理的实际操作能力。

2. 学生通过编程实践,掌握模块化编程方法,提高代码的复用性和可维护性。

3. 学生通过团队协作,培养沟通与协作能力,共同完成学生成绩管理系统的设计与实现。

情感态度价值观目标:1. 学生通过解决实际问题,培养对编程的兴趣,激发探究精神。

2. 学生在团队协作中,学会尊重他人意见,培养合作精神,提高解决问题的信心。

3. 学生认识到编程在生活中的实际应用,增强对计算机科学的认识和热爱。

课程性质:本课程为实践性较强的学科,结合C语言编程知识,以项目驱动的方式进行教学。

学生特点:学生为高中一年级学生,已具备一定的计算机操作能力,对编程有一定了解,但实际操作经验不足。

教学要求:教师需引导学生掌握C语言基础知识,注重实践操作,鼓励学生主动探究、团队协作,培养解决实际问题的能力。

在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。

二、教学内容根据课程目标,教学内容分为以下三个部分:1. C语言基础知识:- 变量定义、数据类型、常量与变量- 运算符、表达式、语句- 控制结构:顺序、选择、循环- 函数的定义与调用- 指针与数组2. 学生成绩管理系统功能实现:- 结构体的定义与使用- 结构体数组操作- 系统功能模块划分:添加、删除、修改、查询学生成绩- 函数调用关系分析,实现模块化编程3. 文件操作与数据持久化:- 文件打开、关闭、读写操作- 学生成绩数据的存储与读取- 文件错误处理与异常处理教学大纲安排:第一周:C语言基础知识复习,学习结构体和结构体数组第二周:学生成绩管理系统功能设计,编写添加、删除、修改、查询功能的代码第三周:文件操作学习,实现学生成绩数据的持久化存储,优化系统性能第四周:项目测试、调试与优化,总结交流教学内容与教材关联性:本教学内容与教材《C语言程序设计》相关章节紧密关联,涵盖第3章至第6章的知识点,以及第8章文件操作部分。

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

中南大学二○一三~二○一四学年第一学期信息科学与工程学院程序设计基础实践设计报告课程名称:程序设计基础实践班级:2013级物联网工程1302班学号:0919130205姓名:X晨指导教师:杨希二○一三年十二月目录/Contet课程设计题目 (1)题目初步分析 (1)程序总体设计 (2)程序具体设计………………………………………………………10程序调试测试………………………………………………………12心得与体会…………………………………………………………33源代码………………………………………………………………33课程设计题目学生成绩管理系统学生信息为:学号、XX、年龄、性别、出生年月、地址、、各科成绩等,试设计一个学生信息管理系统,使之能提供以下功能。

1.学生信息录入;2.学生信息浏览;3.按学号、XX查询;4.学生成绩排序;5.学生信息修改与删除。

6.综合信息输出。

题目初步分析对对象的处理1.由于每一个对象都包括多个成属性,所以要考虑数据的存储形式要用结构体类型来实现。

2.假如以数组的方式来存储,当然可以,但是定义一个数组,首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。

3.由于题目中的数据需要长期保存,用普通的函数来写已经不可以满足要求了,所以需要用到文件来存储。

对过程的处理1.输入学生信息(设计一个生成链表程序,并将链表中的数据保存到一个数据文件中);2.插入(修改)学生信息(设计一个从数据文件中读数据的程序并将数据存放在链表中进行操作,最后将处理后链表中的数据再次保存到一个数据文件中);3.删除学生信息(设计一个从数据文件中读数据的程序并将数据存放在链表中进行操作,最后按照要求将链表中的某个数据删除后再次保存到一个数据文件中);4.浏览学生信息(设计一个从数据文件中读数据的程序并将数据存放在链表中进行操作,再将链表中的数据显示出来)。

5.将学生总分排序(设计一个从数据文件中读数据的程序并将数据先存在链表中,后用一个数组记录总分,进行排序,在查找回相应信息,输出)。

程序总体设计主要函数程序框图2.修改函数。

4.显示函数。

5.排序函数。

程序具体设计1.p():为了方便输出图形。

2.wele():调用了p()函数,实现打印出欢迎界面的功能。

3.seletionpage():打印出选择界面;4.file_():用来在打开程序时,装载文件数据到链表。

该函数返回值是student类型的指针变量head;5.save():用来在每次修改或者输入学生基本信息之后实时保存数据。

保存采用删除再写入的方式进行的。

6.input():调用了save()函数,主要实现建立链表和确定链表头尾节点。

该函数具有判断输入数据是否重复功能。

用键入字符的方式获取用户需要的操作。

7.search():主要是用来根据或者XX来筛选,它服务于后面的其他函数。

它返回的值是要搜寻的链节的上一节点。

但是它在返回是头的时候要分情况讨论。

用键入字符的方式获取用户需要的操作。

8.modifyone():主要功能是修改某一个数据的值。

使用了search()函数来在链表中检索检索。

用键入字符的方式获取用户需要检索的方式。

选择并用select来区分当search返回值是头时的两种情况。

返回值用来判断用户的下一步操作。

9.revise():主要功能是来执行modifyone,给modifyone()传递参数。

打印出修改界面;调用modifyone();用键入字符来判断用户的选择并且将参数传给modifyone。

10.deleteone():主要功能是删除一个数据。

为deletee服务的函数。

调用了search()函数来选择要删除的方式。

使用save()来保存。

通过输入字符来判断筛选方式。

11.deleteall():用一个循环一次性删除所有的数据。

使用save()来保存。

12.delete_():主要功能是来实现deleteone和deleteall,并给出界面来让用户选择。

用户键入选择删除方式,并将它传给deleteone作为实参。

13.displayAll():主要功能是显示出所有学生的信息。

通过遍历读取链表中的数据并显示。

14.displayOne():主要功能是显示一个学生的信息。

通过search()函数查询数据。

通过键入的方式选择通过学号还是名字查找。

15.display():主要功能是输出显示界面并进行选择。

调用了displayOne()和displayAll()。

16.sort():主要功能是通过选择排序进行排序和数据的输出。

将链表中的数据存储在数组中,再通过查找返回链表综合输出相关信息。

17.exit():显示退出界面。

18.Start():通过用户输入信息执行相应语句。

执行到exit()时退出系统。

调用了input()、revise()、delete()、display()、sort()和exit()函数。

19.main():组合wele()和Start()函数(附图:本程序所有编写的函数)程序调试与测试程序调试在做好主界面后,对函数进行编写,每次写完一个小函数之后都会编译运行来测试函数是否可用,发现出错后找出问题所在再修改,以确保函数的准确性。

大题框架完成后进行调试。

多次调试把出现的小错误分别解决。

在调试中遇到的主要问题(1).原本编译器选用了Turbo C2.0,但是很多语法规则无法兼容,而且不允许输入中文会影响到用户体验,因此最后选用了C-Free编译器来编译代码。

同时TC中特有的clrscr()函数需要相应替换成system(“cls”)。

(2).定义结构体没有想到把函数加进去,使得程序更加累赘。

(3).调试程序的时候,函数运行一次之后自动闪退,后加人一死循环,在满足returnToMain为特定值的时候才停止循环。

这样程序不至于闪退。

(4).原设计的密码验证系统后因为密码安全性过低而被迫取消。

这说明我们还有很多要学习的东西,还有很大进步的空间。

(5).search()函数中若返回值是头指针需要单独讨论,开始的时候没有注意到特殊位置的特殊性,导致头指针一直返回NUULL。

(6).sort()函数中排序的时候因为没有注意到成绩排名的降序性,排名倒序。

(7).sort()函数中的头指针需要特殊讨论,而且因为没有注意循环的间套和并列关系,导致排序没有完成就开始寻找结点。

(8).由于小组合作,每个人变量名和编程风格不同,导致换行和变量名的不一致,最后通过报错查找错误,统一了变量名。

程序测试1.欢迎界面。

2.选择界面。

3.输入学生信息。

4.修改学生信息。

5.显示学生信息。

(5)学生成绩排名。

(6)学生信息删除。

心得与体会1.这次课程设计活动让我感受到了合作的重要力量。

和同学们的交流和沟通,让我们彼此的知识互通有无,增加了我们与人交流沟通的能力。

我们通过互相帮助修改这些错误,完善了很多漏洞,也更加牢固的掌握了c语言的基本原则,促进了我们C语言的学习。

2.文件和链表的知识在上课的时候并没有精讲,此次课程设计正好起到了很好的补充。

及时复习了刚学过的C语言相关知识。

3.增强了亲手动手设计的能力,开拓了我的编程思想,让我对结构体,链表,文件的存储与读取有了更深刻的了解,并且学到了很多在书本上没有的东西,比如说动手实践、从不断重复的调试中发现问题的能力。

4.短短一周,我们的程序并不成熟。

比如通过学号排序,单科成绩排序,以及密码系统都尚未成功,以后的课余时间还要继续研究。

5.这周的练习也让我明白了理论和实践的联系,很多代码自己感觉算法语法都没问题,但是上机调试了以后才真正会感觉到区别,毕竟人脑非电脑。

所以我们需要更多的实践,这样才能真正提高自己编程的水平。

6.此次课程设计也让我意识到了,有思路就有出路,只要我们有思路,一定可以用各种方法解决问题!源代码/*这个程序是基于C-Free写的*/#include"stdio.h"#include"stdlib.h"#include"conio.h"#include"string.h"#define clrscr() system("cls")struct student{char name[30];char schnum[11];char birthday[11];char sex[7];char address[30];char tel[12];int age;float English;float Math;float Programming;void displayinfo(){printf("\: %s",name);printf("\n2.school number: %s",schnum);printf("\n3.birthday: %s",birthday);printf("\n4.sex: %s",sex);printf("\n5.address: %s",address);printf("\n6.telephone: %s",tel);printf("\n7.age: %d",age);printf("\n8.English: %f",English);printf("\n9.Math: %f",Math);printf("\n10.Programming: %f",Programming);printf("\n11.Total: %f",English+Math+Programming);}/*把输出写到结构体里面,方便操作*/struct student *next;};struct student *flag=NULL,*head=NULL,*last=NULL;int StudentNumber=0;void p(){printf(" * *\n");}/*欢迎界面*/void wele(){printf("========================================================================= ====\n");p();p();p();printf(" * Student Grade Manage System *\n");p();p();printf(" * Made by * \n");printf(" * zhangchen * \n");printf(" * caoxuechun * \n");printf(" * weijianshuang *\n");printf(" * qianyuqi * \n");printf(" * zhangcaitian * \n");p();p();printf(" * press any keys to enter *\n");p();p();p();p();p();p();printf("========================================================================= ====\n");getch();}/*选择界面*/void selectionpage(){clrscr();printf("==================================================================\n");printf("\n\n\n\n Student Grade Manage System\n\n\n");printf(" 1.input student's information\n") ;printf(" 2.delete student's information\n") ;printf(" 3.change student's information\n");printf(" 4.show student's information\n");printf(" 5.sort of students' grades\n");printf(" 6.end\n\n\n\n\n\n\n");printf(" press a right key to enter\n\n");printf("=================================================================\n");}/*打开程序时,装载文件数据到链表*/struct student *file_(){FILE *fp;fp=fopen("student.dat","rb");if(fp==NULL){fp=fopen("student.dat","wt+");/*判断有没有文件,没有就建立一个*/ fclose(fp);return NULL;}flag=(struct student *)malloc(sizeof(struct student));while(fread(flag,sizeof(struct student)-sizeof(struct student *),1,fp)==1) {flag->next=NULL;if(head==NULL){head=flag;last=head;}else{last->next=flag;last=last->next;}StudentNumber++;flag=(struct student *)malloc(sizeof(struct student));}last->next=NULL;free(flag);fflush(stdin);flag=NULL;fclose(fp);return head;}struct student *save(){FILE *fp;int i;struct student *p1=head;fp=fopen("Student.dat","w");fclose(fp);fp=fopen("Student.dat","a+");for(i=0;i<StudentNumber;i++){fwrite(p1,sizeof(struct student)-sizeof(struct student*),1,fp);p1=p1->next;}fclose(fp);}/*输入函数*/void input(){student *p1;int i;bool mark;while(1){clrscr();p1=head;int select = 0;flag = (student *) malloc (sizeof(student));if(flag == NULL){printf("========================================================================= =======\n");printf(" Input new information\n\n");printf("\nIt cannot be written\n");printf("\npress any ket to return");getch();break;}else{printf("\tSchool Number:");scanf("%s",flag->schnum);printf("\n\tName:");scanf("%s",flag->name);printf("\n\tBirthday:");scanf("%s",flag->birthday);printf("\n\tSex:");scanf("%s",flag->sex);printf("\n\tAddress:");scanf("%s",flag->address);printf("\n\tTelephone:");scanf("%s",flag->tel);printf("\n\tAge:");scanf("%d",&flag->age);printf("\n\tEnglish:");scanf("%f",&flag->English);printf("\n\tMath:");scanf("%f",&flag->Math);printf("\n\tProgramming:");scanf("%f",&flag->Programming);mark=true;for(i=0;i<StudentNumber;i++){if(strcmp(p1->schnum,flag->schnum)==0){system("cls");printf("========================================================================= =======\n");printf(" Input new information\n\n");printf("\n\t\twrong!!%sExisted\n",flag->schnum);p1->displayinfo();printf("\n\t\tpress any key to continue");getch();mark=false;break;}p1=p1->next;}if(mark){StudentNumber++;if(StudentNumber == 1)head = flag;elselast->next = flag;last = flag;last->next=NULL;}}save();system("cls");if(mark)printf("========================================================================= =======\n");printf(" Input new information \n\n");printf("\n\n\t\tSaved!");printf("\n\n\t\t1.Add more students\n");printf("\t\t0.return\n\n");printf("\t\tpress the right ket to enter:");do{select=getch();select-=48;}while(select<0||select>1);if(select != 1) break;}}struct student *search(char target[20],int select) {student *p=head,*r=head;if(select==2){while(p!=NULL){if(strcmp(target,p->name)==0)return r;else{r=p;p=p->next;}}}else{while(p!=NULL){if(strcmp(target,p->schnum)==0)return r;else{r=p;p=p->next;}}}}int modifyOne(int select12){int select = select12 + 1,m=0;char select2;struct student *result=NULL;while(1){system("cls");printf("========================================================================= =======\n");printf(" Change the information\n\n");char target[20];if(select == 2)printf("Input the name:");elseprintf("Input the number:");scanf("%s", target);result = search(target,select);system("cls");printf("========================================================================= =======\n");printf(" change the information\n\n");if( result==NULL )printf("\n\n\n Not exist #404");else{if(result==head){printf("%s",result->name);if(result->next)printf("%s",result->name);if((result->next)&&(!strcmp(result->next->schnum,target)||!strcmp(result->next->name,target)) )result=result->next;}elseresult=result->next;for(;;){clrscr();printf("========================================================================= =======\n");printf(" Change theinformation\n\n");result->displayinfo();printf("\n0.end");printf("\nWhat you want to change?\n");select2=getch();printf("School number locked!");printf("0 for 10");printf("2 for exit!");switch(select2){case '1':printf("name: ");scanf("%s", result->name);break;case '4':printf("sex: ");scanf("%s", result->sex); break;case '7':printf("age: ");scanf("%d", &result->age);break;case '8':printf("English: ");scanf("%f", &result->English);break;case '9':printf("Math: ");scanf("%f", &result->Math);break;case '0':printf("Programming: ");scanf("%f", &result->Programming);break;case '3':printf("birthday: ");scanf("%s", result->birthday);break;case '5':printf("address: ");scanf("%s", result->address);break;case'6':printf("telephone: ");scanf("%s",result->tel);break;case '2':m=1;break;}if(m==1)break;}}printf("\n\n\t\t Now you want to :");printf("\n\n\t\t1.Modify another student's information according to school number");printf("\n\t\t2.Modify another student's information according to school number");printf("\n\t\t3.return to edit");printf("\n\t\t4.return to menu");printf("\n\n\t\tpress the right key to enter ");do{select=getch();select-=48;}while(select<1||select>4);save();if(select > 2) {return select - 2; break;}}}/*修改函数*/void revise(){char select;int returnToMain = 0;while(1){clrscr();printf("========================================================================= =======\n");printf(" Change the information\n\n\n");printf(" 1.find out the student according to name\n");printf(" 2.find out the student according to school number\n");printf(" 0.return.\n\n\n\n\n");printf(" press the right key to enter...\n\n");printf("========================================================================= =======\n");select=getch();switch(select){case '1': returnToMain = modifyOne(1); break;case '2': returnToMain = modifyOne(2); break;case '0': returnToMain = 2; break;};if(returnToMain == 2) break;}}void deleteAll(){char deleteALL[10];clrscr();printf("========================================================================= =======\n");printf(" Delete the information\n\n\n\n");printf("\n\n\t\t!!Are you sure to delete all? !!!\n");printf("\t\tInpout delete to make sure\"delete\"\n\n\t\t");fflush(stdin);gets(deleteALL);if(!strcmp(deleteALL,"delete")){if(StudentNumber == 0)printf("\n\n\t\tNo more information already!\n");else if(StudentNumber == 1){free(head);head = NULL;}else{student *p1 = head, *p2 = head;for(int i = 0; i < StudentNumber - 1; i++){p1 = p1->next;free(p2);p2 = p1;}free(p1);head = NULL;}if(StudentNumber != 0)printf("\n\n\t\tAll deleted!\n");StudentNumber = 0;save();}}int deleteOne(int select23){int select = select23,m=select;while(1){system("cls");printf("========================================================================= =======\n");printf(" delete the information\n\n\n\n");char target[20];if(select == 2)printf("Input the name you want to delete:");elseprintf("Input the number you want to delete:");scanf("%s", target);student *result = search(target,select);system("cls");if( result==NULL )printf("\n\n\n\t\tNot exist!");else if(StudentNumber == 1){head = NULL;StudentNumber--;}else if(result==head){if(((m==1)&&(strcmp(result->next->schnum,target)==0))||((m==2)&&(strcmp(result->next->name ,target)==0))){result->next=result->next->next;StudentNumber--;}else{head=result->next ;StudentNumber--;}}else{result->next=result->next->next;StudentNumber--;}printf("\n\n\t\tDeleted!\n\t\tNow you want to:");printf("\n\n\t\t1.delete another student according to school number");printf("\n\t\t2.delete another student according to name");printf("\n\t\t3.Return to the delete menu");printf("\n\t\t4.Return to the main menu");printf("\n\n\t\tpress the right to enter\n");printf("=========================================================================do{select=getch();select-=48;}while(select<1||select>4);save();if(select > 2) return select - 2;}}/*删除函数*/void delete_(){char select;int returnToMain = 0;while(1){system("cls");printf("========================================================================= =======\n");printf(" Delete the information\n\n\n");printf(" 1.Delete all\n");printf(" 2.Delete one according to name\n");printf(" 3.Delete one according to school number\n");printf(" 0.Return\n\n\n\n");printf("Press the right key to enter...\n\n");printf("========================================================================= =======\n");select=getch();switch(select){case '1': deleteAll(); break;case '2': returnToMain = deleteOne(2); break;case '3': returnToMain = deleteOne(3); break;case '0': returnToMain = 2; break;};if(returnToMain == 2) break;}}{int select = 0;system("cls");int k = 1;student *p = head;printf("========================================================================= =======\n");printf(" Display the information\n\n");if(StudentNumber == 0) printf("\n\tNo more information.");while(k <= StudentNumber){printf("\nStudent %d\n",k++);p->displayinfo();p = p->next;}printf("\n\n\tNow: ");printf("\n\t1.Return the former page");printf("\n\t2.Return the main menu");printf("\n\n\tPress the right key to enter.\n");printf("========================================================================= =======\n");do{select=getch();select-=48;}while(select<1||select>2);return select;}int displayOne(int select23){int select = select23,m=select;while(1){system("cls");char target[20];printf("================================================================================\n");printf(" Show the information\n\n\n\n");if(StudentNumber == 0) printf("\n\n\tNot exist");else{if(select == 2) printf("\n\n\n\t\tInput name:\n\n");else printf("\n\n\n\t\tInput school number:\n\n");printf("\t\t");scanf("%s", target);system("cls");printf("========================================================================= =======\n");printf(" Show the information\n\n\n\n");student *result = search(target,select);if(result==NULL )printf("\n\n\n\t\tNot exist.");else if(StudentNumber == 1)result->displayinfo();elseif((result==head)&&!(((m==1)&&(strcmp(result->next->schnum,target)==0))||((m==2)&&(strcmp(r esult->next->name,target)==0)))){head->displayinfo();}else{result = result->next;result->displayinfo();}}printf("\n\n\t\tNow you can:");printf("\n\n\t\t1.Show another student according to name.");printf("\n\t\t2.Show another student according to school number.");printf("\n\t\t3.Return the former page");printf("\n\t\t4.Return the main menu");printf("\n\n\t\t press the right key to enter.");printf("========================================================================= =======\n");do{select=getch();select-=48;}while(select<1||select>4);if(select > 2) return select - 2;}}/*显示函数*/void display(){int select = 1;int returnToMain = 0;while(1){system("cls");printf("========================================================================= =======\n");printf(" Show the information\n\n\n");printf(" 1.Show all the students\n");printf(" 2.Show a student according to name\n");printf(" 3.Show a student according to school number\n");printf(" 0.return\n\n\n\n");printf(" press the right key to enter\n\n");printf("========================================================================= =======\n");select=getch();switch(select){case '1': returnToMain = displayAll(); break;case '2': returnToMain = displayOne(2); break;case '3': returnToMain = displayOne(3); break;case '0': returnToMain = 2; break;};if(returnToMain == 2) break;}}/*排序函数*/void sort(){int n=1,i,j,k,select=0;float total;student *p=head;float score[30],t;clrscr();printf("rank name school number score\n");printf("========================================================================= =======\n");if(StudentNumber==0)printf("\n\tNo more information can be sorted!!");while(n<=StudentNumber){total=p->English+p->Math+p->Programming;score[n-1]=total;p=p->next;n++;}p=head;for(i=0;i<StudentNumber;i++){k=i;for(j=i+1;j<StudentNumber;j++){if(score[k]>score[j]) k=j;if(k!=i){t=score[i];score[i]=score[k];score[k]=t;}}}for(i=0;i<(StudentNumber-1)/2;i++)t=score[i],score[i]=score[StudentNumber-1-i],score[StudentNumber-i-1]=t;for(i=0;i<StudentNumber;i++){p=head;t=score[i];while((p->English+p->Math+p->Programming)!=t){ p=p->next;}printf("%2d :",i+1);printf("\t%20.20s ",p->name);printf("\t%15.15s ",p->schnum);printf("\t%.2f ",p->English+p->Math+p->Programming);printf("\n");}printf("press any key to return...");getch();}/*退出函数*/void exit(){ printf("======================================================================= =========");printf("\n\n\n\n\n\n\n Thanks for your use\n\n\n\n\n\n\n\n\n");printf (" Wele to use agian\n\n\n\n\n\n\n\n");printf("========================================================================= =======\n");}void Start(){ head=file_();while(1){int select;selectionpage();scanf("%d",&select);switch(select){case 1: clrscr();input();break;case 2: clrscr();delete_();break;case 3: clrscr();revise();break;case 4: clrscr();display();break;case 5: clrscr();sort();。

相关文档
最新文档