学生成绩管理系统课程设计报告c
c语言学生成绩管理系统设计报告
c语言学生成绩管理系统设计报告C语言是计算机领域最为重要的编程语言之一,用于许多应用系统的开发。
这里我将围绕C语言学生成绩管理系统的设计报告,分步骤阐述该系统的设计与实现。
第一步:需求分析在进行设计之前,必须先进行需求分析,明确系统所需的功能和性能。
针对学生成绩管理系统,我们需要实现以下功能:1. 学生信息管理:包括学生姓名,学号等信息。
2. 成绩信息管理:包括课程分数,总分、平均分等信息。
3. 数据录入和修改:教师可以输入学生的成绩信息,并对已有的信息进行修改。
4. 成绩查询功能:学生可以查询自己的成绩情况。
第二步:系统设计根据需求分析,我们可以对系统进行具体设计。
该系统主要分为以下模块:1. 学生信息管理模块:用于录入和管理学生的信息。
2. 成绩信息管理模块:用于录入和管理学生的成绩信息。
3. 数据操作模块:用于操作学生和成绩信息的增删改查。
4. 用户管理模块:用于管理系统用户,包括学生和教师。
第三步:系统实现在进行系统实现时,我们需要注意以下几个方面:1. 界面设计:尽量简洁明了,易于使用。
2. 数据库设计:需要对数据进行分类储存,便于操作。
3. 数据库连接:需要通过C语言的数据库API来连接数据库。
4. 代码编写:需要根据设计要求进行代码编写,并进行测试调整,确保系统的稳定性和性能。
第四步:系统测试完成系统的设计和实现后,就需要对系统进行测试。
测试主要包括以下几个方面:1. 单元测试:对系统各个功能模块进行单独测试,确保每个模块的运行效果。
2. 集成测试:对系统各个模块进行集成测试,确保各个模块之间的相互交互正常。
3. 用户测试:邀请用户来测试系统,听取他们的反馈和建议,进行调整和改进。
总结:本文围绕C语言学生成绩管理系统的设计报告,分步骤阐述了系统的设计、实现和测试。
这对于开发人员在进行类似系统开发时具有一定的指导意义。
不过,由于每个系统都具有其独特性和特点,因此具体实现还需根据具体情况而定。
论文C语言001学生成绩管理系统
C语言程序设计报告目录———学生成绩管理程系题目要求 (3)需求分析 (3)总体设计 (4)详细设计 (4)上机操作 (11)源程序 (13)总结 (19)学生成绩管理程序一.题目要求1.问题描述:对在校学生几门课程的考试成绩进行统一管理.每个学生记录包括学号,姓名,年龄,数学,英语,物理成绩,默认以学号为序存放.2.要求:(1):一个文件按以班为单位存储学生记录.(2)将允许的操作分为四种,以A,B ,C,D,E,F为标志:A:插入一个学生记录;B:修改学生记录;C:删除一个学生记录;D:查找一个学生记录;E:浏览学生成绩:F:退出3.计算学生的总成绩.4.按学号排序输出全班学生成绩表.二.需求分析根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.三.总体设计根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删1.主函数:主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.流程图:[程序]:main(){while(1){clrscr();printf("*************welcome to use student manage******************\n"); printf("*************************menu********************************\n"); printf("* ========================================================= * \n"); printf("* A>shuru B>xiugai * \n");printf("* C>shanchu D>chazhao * \n");printf("*E>xianshi F>exit * \n");printf("* * \n");printf("* --------------------------------------------------------- * \n"); printf(" Please input which you want(A-F):");ch=getch();switch(ch){case 'A':shuru();break;case 'B':xiugai(); break;case 'C':shanchu(); break;case 'D':chazhao(); break;case 'E':xianshi(); break;case 'F':exit(0);default: continue;}}}2.输入模块:[分析]:单独看各数据信息,学号,姓名是字符型,可以采用字符型数组;分数为整数,采用整数;数据信息存放在文件中,一条记录对应一个学生,既符合习惯又方便信息管理.如果要存放若干学生信息就用结构体数组:struct score /*结构体score*/{int mingci;char xuehao[8];char mingzi[20];char nianling[3];float score[6];}data,info[1000];int i,j,k=0;char temp[20],ch;FILE *fp,*fp1;[程序]:void shuru(){if((fp=fopen("s_score.txt","ab+"))==NULL) /*以读写方式打开名为s_score的文件*/ {printf("cannot open this file.\n");getch();exit(0);}for(i=0;i<=1000;i++){printf("\nPlease shuru xuehao:");gets(data.xuehao);printf("Please shuru mingzi:");gets(data.mingzi);printf("please shuru nianling:");gets(data.nianling);printf("Please shuru shuxue score:");gets(temp);data.score[0]=atof(temp);printf("Please input yingyu score:");gets(temp);data.score[1]=atof(temp);printf("Please shuru wuli score:");gets(temp);data.score[2]=atof(temp);data.score[3]=data.score[0]+data.score[1]+data.score[2];fwrite(&data,sizeof(data),1,fp);printf("another?y/n");ch=getch();if(ch=='n'||ch=='N')break;} fclose(fp);}3.修改模块:[分析]:用户输入要修改学生的学号,根据学生的学号查找学生记录,并提示用户修改该记录的哪部分信息.根据用户选择修改相应的信息.[[程序]:{/*{}printf("\nPLease shuru xiugai xuehao:");scanf("%d",&i); getchar();while((fread(&data,sizeof(data),1,fp))==1){j=atoi(data.xuehao);if(j==i){printf("xuehao:%s\nmingzi:%s\nnianling:%s\n",data.xuehao,data.mingzi,data.nianl ing);printf("Please shuru mingzi:");gets(data.mingzi);printf("Please shuru shuxue score:");gets(temp);data.score[0]=atof(temp);printf("Please input yingyu score:");gets(temp);data.score[1]=atof(temp);printf("Please input wuli score:");gets(temp);data.score[2]=atof(temp);data.score[3]=data.score[0]+data.score[1]+data.score[2];} fwrite(&data,sizeof(data),1,fp1);}fseek(fp,0L,0); /*将位置指针移到离头文件0个字节处*/fseek(fp1,0L,0);while((fread(&data,sizeof(data),1,fp1))==1){fwrite(&data,sizeof(data),1,fp);}fclose(fp);fclose(fp1);}4.删除模块:[分析]:该模块的功能是,用户输入要删除的学生的学号,根据学生学号查找记录并删除.[流程图[程序]:{{}printf("\nPlease input ID which you want to del:");scanf("%d",&i);getchar();while((fread(&data,sizeof(data),1,fp))==1){j=atoi(data.xuehao);if(j==i){printf("Anykey will delet it.\n");getch();continue;}fwrite(&data,sizeof(data),1,fp1);}fclose(fp);fclose(fp1);remove("s_score.txt");rename("temp.txt","s_score.txt");printf("Data delet was succesful!\n");printf("Anykey will return to main.");getch();}5.查找模块:[需求分析]:该模块的功能是根据输入的学生的姓名查找对应的记录,找到以后,显示相应的学生信息.[流程图]:[{{}{{printf("xuehao:%s mingzi:%s\n nianling:%s\n shuxue:%f\n yingyu:%f\n wuli:%f\n zongfen:%f\n",data.xuehao,data.mingzi,data.nianling,data.score[0],data.score[1] ,data.score[2],data.score[3]);}getch();}}6.显示模块:[需求分析]:该模块的功能是显示所有学生记录信息.[程序]:void xianshi(){float s;int n;if((fp=fopen("s_score.txt","rb+"))==NULL) /*以读写方式打开名为s_score的文件*/ {printf("Cannot reading this file.\n"); /*先检查打开的操作是否出错*/exit(0);}for(i=0;i<=1000;i++){if((fread(&info[i],sizeof(info[i]),1,fp))!=1) /*检查是否出错*/break; /*指针要读写字节数要读写size字节的数据项文件型指针*/}printf("\nxuehao mingzi nianling shuxue yingyu wuli zongfen\n");for(j=0,k=1;j<i;j++,k++){info[j].mingci=k;printf("%6s %8s %3s %3.1f %3.1f %3.1f %3.1f \n",info[j].xuehao,info[j].mingzi,info[j].nianling,info[j].score[0],info[j].sco re[1],info[j].score[2],info[j].score[3]);}getch();fclose(fp);}五.上机操作下面是各个模块的界面图:(1): 主菜单函数:(2): 输入模块:(3): 显示模块:(包含了按学号排序功能)(4): 删除模块:(5): 查找模块:(6): 修改模块:六.源程序#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*其它说明*/#include "string.h" /*字符串函数*/#include "conio.h" /*屏幕操作函数*/#include "mem.h" /*内存操作函数*/#include "ctype.h" /*字符操作函数*/#include "alloc.h" /*动态地址分配函数*/struct score /*结构体score*/{int mingci;char xuehao[8];char mingzi[20];char nianling[3];float score[6];}data,info[1000];int i,j,k=0;char temp[20],ch;FILE *fp,*fp1;void shuru(){if((fp=fopen("s_score.txt","ab+"))==NULL) /*以读写方式打开名为s_score的文件*/{printf("cannot open this file.\n");getch();exit(0);}for(i=0;i<=1000;i++){printf("\nPlease shuru xuehao:");gets(data.xuehao);printf("Please shuru mingzi:");gets(data.mingzi);printf("please shuru nianling:");gets(data.nianling);printf("Please shuru shuxue score:");gets(temp);data.score[0]=atof(temp);printf("Please input yingyu score:");gets(temp);data.score[1]=atof(temp);printf("Please shuru wuli score:");gets(temp);data.score[2]=atof(temp);data.score[3]=data.score[0]+data.score[1]+data.score[2];fwrite(&data,sizeof(data),1,fp);printf("another?y/n");ch=getch();if(ch=='n'||ch=='N')break;} fclose(fp); /*读文件结束*/}void xianshi(){float s;int n;if((fp=fopen("s_score.txt","rb+"))==NULL) /*以读写方式打开名为s_score的文件*/ {printf("Cannot reading this file.\n"); /*先检查打开的操作是否出错*/exit(0);}for(i=0;i<=1000;i++){if((fread(&info[i],sizeof(info[i]),1,fp))!=1) /*检查是否出错*/break; /*指针要读写字节数要读写size字节的数据项文件型指针*/}printf("\nxuehao mingzi nianling shuxue yingyu wuli zongfen\n");for(j=0,k=1;j<i;j++,k++){info[j].mingci=k;printf("%6s %8s %3s %3.1f %3.1f %3.1f %3.1f \n",info[j].xuehao,info[j].mingzi,info[j].nianling,info[j].score[0],info[j].sco re[1],info[j].score[2],info[j].score[3]);}getch();fclose(fp);}void xiugai(){if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL) /*检查是否出错*/{printf("Cannot open this file.\n");exit(0);}printf("\nPLease shuru xiugai xuehao:");scanf("%d",&i); getchar();while((fread(&data,sizeof(data),1,fp))==1){j=atoi(data.xuehao);if(j==i){printf("xuehao:%s\nmingzi:%s\nnianling:%s\n",data.xuehao,data.mingzi,data.nianl ing);printf("Please shuru mingzi:");gets(data.mingzi);printf("Please shuru shuxue score:");gets(temp);data.score[0]=atof(temp);printf("Please input yingyu score:");gets(temp);data.score[1]=atof(temp);printf("Please input wuli score:");gets(temp);data.score[2]=atof(temp);data.score[3]=data.score[0]+data.score[1]+data.score[2];} fwrite(&data,sizeof(data),1,fp1);}fseek(fp,0L,0); /*将位置指针移到离头文件0个字节处*/fseek(fp1,0L,0);while((fread(&data,sizeof(data),1,fp1))==1){fwrite(&data,sizeof(data),1,fp);}fclose(fp);fclose(fp1);}void chazhao(){if((fp=fopen("s_score.txt","rb"))==NULL){printf("\nCannot open this file.\n");exit(0);}printf("\nPLease shuru xuehao chakan:");scanf("%d",&i);while(fread(&data,sizeof(data),1,fp)==1){j=atoi(data.xuehao);if(i==j){printf("xuehao:%s mingzi:%s\n nianling:%s\n shuxue:%f\n yingyu:%f\n wuli:%f\n zongfen:%f\n",data.xuehao,data.mingzi,data.nianling,data.score[0],data.score[1] ,data.score[2],data.score[3]);}getch();}}void shanchu(){if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL) {printf("\nopen score.txt was failed!");getch();exit(0);}printf("\nPlease input ID which you want to del:");scanf("%d",&i);getchar();while((fread(&data,sizeof(data),1,fp))==1){j=atoi(data.xuehao);if(j==i){printf("Anykey will delet it.\n");getch();continue;}fwrite(&data,sizeof(data),1,fp1);}fclose(fp);fclose(fp1);remove("s_score.txt");rename("temp.txt","s_score.txt");printf("Data delet was succesful!\n");printf("Anykey will return to main.");getch();}main(){while(1){clrscr();printf("*************welcome to use student manage******************\n"); printf("*************************menu********************************\n"); printf("* ========================================================= * \n"); printf("* A>shuru B>xiugai * \n");printf("* C>shanchu D>chazhao * \n");printf("*E>xianshi F>exit * \n");printf("* * \n");printf("* --------------------------------------------------------- * \n"); printf(" Please input which you want(A-F):");ch=getch();switch(ch){case 'A':shuru();break;case 'B':xiugai(); break;case 'C':shanchu(); break;case 'D':chazhao(); break;case 'E':xianshi(); break;case 'F':exit(0);default: continue;}}}···············································································。
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语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体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。
C语言课程设计报告学生成绩管理系统(广工)
一、课程设计题目:学生成绩管理二、需求分析给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名、性别以及各科成绩组成。
对学生的考试成绩进行有关统计:按总数高低次序,打印出名次表,分数相同的为同一名次;按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。
三、概要设计程序要有的功能:1。
输入记录2。
用指定格式显示全部记录3。
根据姓名查找记录4。
根据姓名删除记录5. 保存记录到文件6。
按序号显示记录7。
按姓名由小到大的顺序排序程序运行当中,通过选择对应的功能序号来实现所需功能。
对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:“您输入的数据有误,请核实!”。
再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。
在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。
最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分。
与及格成绩作比较,输出及格人数等相关信息。
流程图:四、详细设计源程序:#include ”stdio。
h”#include "stdlib.h”#include "string。
h”int shoudsave=0;/* */struct student{char num[10];/*学号*/char name[20];char sex[4];int cgrade;int mgrade;int egrade;int totle;int ave;char neartime[10];/*最近更新时间*/};typedef struct node{struct student data;struct node *next;}Node,*Link;void menu(){printf(”*********************************主菜单*****************************************”);printf(”\t1登记学生资料\t\t\t\t\t2删除学生资料\n”);printf(”\t3查询学生资料\t\t\t\t\t4修改学生资料\n”);printf(”\t5保存学生资料\t\t\t\t\t0退出系统\n”);printf(”********************************************************************************\n");}void printstart(){printf(”-————---—-——————--——----———-—-—-————--————--—--—--—-————---—-—————--———\n”);}void Wrong(){printf(”\n=====>提示:输入错误!\n”);}void Nofind(){printf("\n=====〉提示:没有找到该学生!\n");}void printc()/*本函数用于输出中文*/printf(”学号\t 姓名性别英语成绩数学成绩C语言成绩总分平均分\n”); }void printe(Node *p)/* 本函数用于输出英文*/{printf("%—12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p—〉data。
学生成绩管理系统c语言课程设计报告
学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。
通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。
本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。
二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。
2. 成绩信息管理:包括成绩的录入、修改和删除。
3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。
通过菜单选择,可以实现学生信息的录入、修改和删除功能。
2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。
通过菜单选择,可以实现成绩信息的录入、修改和删除功能。
3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。
2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。
3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。
五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。
2. 根据测试结果优化程序代码,提高系统性能和用户体验。
3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。
六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。
该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。
C语言程序设计学生成绩管理系统实验报告
移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",#switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。
成绩管理系统(c课程设计)
成绩管理系统(c 课程设计)一、教学目标本课程的教学目标是使学生掌握C语言程序设计的基本原理和方法,能够运用C语言设计简单的应用程序,培养学生的编程思维和解决问题的能力。
具体分为以下三个方面的目标:1.知识目标:使学生掌握C语言的基本语法、数据类型、运算符、控制结构、函数、数组和字符串等基本概念,了解C语言的编译和链接过程。
2.技能目标:培养学生具备使用C语言编写程序的能力,能够阅读和理解简单的C语言程序,学会使用调试工具对程序进行调试和优化。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,增强学生的自信心和自主学习能力,培养学生的团队合作精神和创新意识。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个部分:1.C语言的基本语法和数据类型:包括变量、常量、数据类型、运算符、表达式等基本概念。
2.控制结构:包括顺序结构、选择结构和循环结构,以及相关的函数调用和参数传递。
3.数组和字符串:包括一维数组、多维数组、字符串的基本操作和应用。
4.函数:包括函数的定义、声明、调用和返回值,以及函数的递归调用和静态局部变量。
5.指针:包括指针的概念、指针的运算、指针与数组、指针与函数的关系等。
6.结构体和文件:包括结构体的定义和应用,文件的打开、读写、关闭等操作。
三、教学方法为了实现教学目标,本课程将采用以下几种教学方法:1.讲授法:教师通过讲解和演示,向学生传授C语言的基本知识和编程技巧。
2.案例分析法:教师通过分析典型的案例,引导学生运用C语言解决实际问题。
3.实验法:学生通过上机实验,动手编写C语言程序,巩固所学知识,提高编程能力。
4.小组讨论法:学生分组讨论和合作完成项目,培养学生的团队合作精神和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将采用以下教学资源:1.教材:《C程序设计语言》(K&R)或《C Primer Plus》。
2.参考书:《C语言程序设计教程》(清华大学出版社)等。
c语言成绩管理系统课程设计报告
c语言成绩管理系统课程设计报告一、引言:成绩管理系统是一种可以有效管理学生课程成绩的工具。
通过该系统,教师可以方便地录入、修改和查询学生的成绩,而学生和家长也可以方便地查看自己的成绩情况。
本次课程设计旨在设计一个基于C语言的成绩管理系统,实现对学生课程成绩的录入、修改和查询等功能。
二、系统设计:1. 数据结构设计:为了实现成绩管理系统的各项功能,需要设计相关的数据结构。
对于学生信息,可以设计一个结构体,包含学号、姓名、性别等字段;对于课程成绩,可以设计一个结构体,包含学号、课程名称、成绩等字段。
2. 功能设计:(1) 学生信息录入功能: 教师可以通过输入学生的学号、姓名、性别等信息,将学生信息录入系统中。
(2) 成绩录入功能: 教师可以通过输入学生的学号和课程名称,将学生的课程成绩录入系统中。
(3) 成绩修改功能: 教师可以根据学生的学号和课程名称,修改学生的课程成绩。
(4) 成绩查询功能: 学生和家长可以通过输入学生的学号,查询学生的课程成绩。
三、系统实现:1. 用户界面设计:使用C语言中的控制台窗口,通过菜单的方式显示系统功能选项,用户可以通过键盘输入选择对应的功能。
2. 数据存储设计:使用文件存储学生信息和课程成绩。
通过读取和写入文件的方式,实现数据的持久化存储。
3. 功能实现:(1) 学生信息录入功能的实现: 用户输入学生的学号、姓名、性别等信息后,将学生信息写入文件。
(2) 成绩录入功能的实现: 用户输入学生的学号、课程名称和成绩后,将成绩信息写入文件。
(3) 成绩修改功能的实现: 用户输入学生的学号、课程名称和新的成绩后,根据学号和课程名称找到对应的成绩信息并修改。
(4) 成绩查询功能的实现: 用户输入学生的学号后,根据学号在文件中查找对应的成绩信息并显示在控制台窗口。
四、系统测试:对于每一个功能,设计相应的测试用例,验证系统的正确性和稳定性。
例如,录入一个学生信息后,查询该学生的信息是否正确;录入一门课程成绩后,修改该成绩并查询是否修改成功等。
学生成绩管理系统c语言课程设计报告
《学生成绩管理系统》课程设计报告专业:信息科学与工程学院班级:电气信息类0916班姓名:曹坤指导教师:汤哲学号: 02课程设计报告一、课程设计题目学生成绩管理系统1、需要处理的基础数据学生基本信息:如班级、学号、姓名、性别、年龄等。
学生选修课程的基本信息:课程编号、课程名称、学分、考试成绩、平时成绩、综合成绩(考试成绩*+平时成绩*)等。
主菜单2、系统的基本功能数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息;数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息;数据的插入:插入某个学生信息;数据的查询:如按学号查询、按姓名查询等;数据的删除:如删除指定学号、或者指定姓名的学生及其选修课程信息;平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息;列出不及格学生清单(学号、姓名、不及格的课程和成绩)。
考虑用文件把数据保存起来(可选)。
3、链表struct stu /*定义学生基本信息结构体*/{int i; /*以输入的顺序来确定的学生序号*/char num[11];char classnum[5];char name[128];char sex[32];int age;float ave;struct stu *next;};int n=0; /*学生人数*/struct stu *head=0;struct stu1 /*定义学生选修课信息结构体*/{char lessonnum[11];char lessonname[256];float score;float testgrade;float commongrade;float grade;struct stu1 *next;};int m;struct stu1 *a[max_num] ;/*定义一个指针数组来记住课程链表地址*/ /*---------------------- 数据的录入程序-----------------------*/void create(void) /*建立学生基本信息链表*/{n=0;struct stu *p1,*p2;char ch,ch1;struct stu1 *create1(void);do{n=n+1;a[n]=0;system("cls");p1=(struct stu *)malloc(LEN);printf("\n学号:");scanf("%s",p1->num);printf("\n班级:");scanf("%s",p1->classnum);printf("\n姓名:");scanf("%s",p1->name) ;printf("\n性别:");scanf("%s",p1->sex);printf("\n年龄:");scanf("%d",&p1->age);if(n==1)head=p1;else p2->next=p1;p2=p1;printf("\n是否输入选修课信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch1=getchar();if(ch1=='y'||ch1=='Y')a[n]=create1(); /*根据序号来记忆课程链表地址*/ p1->i=n;system("cls");printf("\n是否继续输入另一学生信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch=getchar();}while(ch=='y'||ch=='Y');p2->next=0;}struct stu1 *create1(void) /*建立课程链表*/{m=0;struct stu1 *p1,*p2;char ch;struct stu1 *head=0;do{m=m+1;system("cls");p1=(struct stu1 *)malloc(LEM);printf("\n课程编号:");scanf("%s",p1->lessonnum);printf("\n课程名称:");scanf("%s",p1->lessonname);printf("\n学分:");scanf("%f",&p1->score);printf("\n考试成绩:");scanf("%f",&p1->testgrade);printf("\n平时成绩:");scanf("%f",&p1->commongrade);p1->grade=p1->testgrade*+p1->commongrade*;printf("\n综合成绩:%-6.1f",p1->grade);if(m==1)head=p1;else p2->next=p1;p2=p1;printf("\n是否继续输入另一课程信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch=getchar();}while(ch=='y'||ch=='Y');p2->next=0;return(head);}二、设计思路界面:界面的显示由循环语句和switch语句来控制完成。
c语言课程设计学生成绩管理系统总结
c语言课程设计学生成绩管理系统总结
以下是一篇符合您要求的文档:
在这次C语言课程设计中,我们开发了一个学生成绩管理系统。
这个系统的主要目标是帮助教师更方便地管理学生成绩,包括输入、存储、查询和修改成绩等功能。
在设计这个系统时,我们首先分析了需求,明确了系统的基本功能和用户群体。
我们选择了合适的开发工具和技术,包括C语言和文件操作。
在系统开发过程中,我们遇到了许多问题,如内存管理、输入验证和算法优化等。
通过查阅资料和团队协作,我们逐一解决了这些问题。
在系统测试阶段,我们对各个功能进行了详细的测试,包括正常情况和异常情况。
测试结果表明,系统基本符合设计要求,但在一些细节方面仍需改进。
例如,在输入成绩时,系统没有对成绩的有效性进行验证,这可能导致错误的数据被存储。
这次课程设计让我们更深入地了解了C语言和软件开发的过程。
通过实际操作,我们学会了如何分析需求、设计系统、解决问题和测试软件等方面的技能。
虽然系统还存在一些问题,但这次课程设计对我们来说是一次非常有价值的实践经验。
c++学生成绩管理系统课程设计
C++学生成绩管理系统课程设计本课程设计旨在介绍如何使用 C++语言设计和实现一个学生成绩管理系统,包括学生信息管理、成绩管理、课程管理等功能。
下面是本店铺为大家精心编写的4篇《C++学生成绩管理系统课程设计》,供大家借鉴与参考,希望对大家有所帮助。
《C++学生成绩管理系统课程设计》篇1引言学生成绩管理系统是教育信息化建设的重要组成部分,它的自动化和信息化程度对于提高学校管理效率和教学质量具有重要意义。
本课程设计使用 C++语言设计和实现一个学生成绩管理系统,包括学生信息管理、成绩管理、课程管理等功能。
该系统可以方便地管理学生信息和成绩,为学校和教师提供高效的管理工具。
一、系统功能本系统主要包括以下功能:1. 学生信息管理:包括添加、删除、修改和查询学生信息 (如学号、姓名、性别、年龄、班级等)。
2. 成绩管理:包括添加、删除、修改和查询学生成绩 (如课程名称、成绩等)。
3. 课程管理:包括添加、删除、修改和查询课程信息 (如课程名称、学分等)。
二、系统设计1. 数据库设计本系统使用 MySQL 数据库存储学生和课程信息。
数据库包括以下表:- 学生表 (student):包括学号、姓名、性别、年龄、班级等字段。
- 成绩表 (score):包括学号、课程名称、成绩等字段。
- 课程表 (course):包括课程名称、学分等字段。
2. 界面设计本系统使用 Visual Studio 2017 开发,采用 Windows Forms 界面设计。
界面包括以下组件:- 菜单栏:包括“文件”、“学生信息管理”、“成绩管理”、“课程管理”、“帮助”等菜单项。
- 工具栏:包括“添加”、“删除”、“修改”、“查询”等按钮。
- 数据表格:用于显示学生和课程信息。
3. 功能实现本系统使用 C++语言实现,主要包括以下代码文件:- main.cpp:程序入口文件,负责启动程序和显示界面。
- student.cpp:学生信息管理模块,负责实现学生信息的添加、删除、修改和查询功能。
学生成绩管理系统C语言
【学生成绩管理系统】计算机程序编程课程设计实验报告实验地点:第一教学楼502室实验平台:Windows XP Microsoft Visual C++ 6.0实验用时:2013.8。
27——2013.8.30实验题目学生成绩管理系统一.实验目的使用标准C或C++实现一般管理系统的基本功能。
进一步巩固C语言的学习,培养一定的综合编程能力。
二.实验设计要求(一)需要处理的基础数据学生基本信息包括:➢学号(如2010级14班6号写作20101406)➢姓➢名➢性别➢出生年月日➢课程对应的考试成绩(外语SCORE[0]、高数SCORE[1]、C语言SCORE[2]、马哲SCORE[3])➢平均成绩和总成绩(二)系统功能1.学生基本情况录入.要求对输入的性别、出生年月日的合理性进行判断(如0代表“女”,1代表“男",输入其他值非法,年龄不能为负,月份不能大于13等)。
2.允许对已经录入的数据进行显示。
3.允许进行数据的插入。
4.删除基本数据的相关信息。
5.基于姓名的查询。
如:姓张的所有同学。
6.基于各种基本数据的统计计算。
如:①统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩)。
②列出90分及以上、80分及以上、70分及以上、60分及以上、不及格学生清单(学号、姓名、不及格的课程和成绩)。
③统计并输出各门功课的平均成绩和总平均成绩。
④按班级统计并输出总成绩(需对学号进行解析).(三)数据结构说明typedef struct St1{ char IDNumber[16]; /*学号*/char FamilyName[16];/*姓*/char GivenName[16]; /*名*/int sex;/*性别(0代表“女”,1代表“男”)*/int BirthYear;/*出生年*/int BirthMonth;/*出生月*/int BirthDay;/*出生日*/float score[4]; /*成绩*/float sum; /*总分*/float average;/*平均分*/struct St1 *next;}StudentNode;(四)菜单的样板模式为:1。
C语言课程设计—— 学生成绩管理系统
内蒙古科技大学本科生课程设计说明书题目:C语言课程设计——学生成绩管理系统学生姓名:郭**学号:**********专业:计算机科学与技术班级:计科-2指导教师:***日期:2015年 12月25日内蒙古科技大学课程设计说明书内蒙古科技大学课程设计任务书I内蒙古科技大学课程设计说明书目录内蒙古科技大学课程设计任务书 (I)第一章需求分析 (3)1.1引言 (3)1.2任务概述 (3)1.3数据描述 (3)1.4功能需求 (3)1.5性能需求 (3)1.6运行需求 (4)1.7任务计划 (4)第二章概要设计 (4)2.1总体设计 (4)2.2数据类型设计(或数据结构设计) (5)2.3接口设计 //函数声明 (5)2.4运行界面设计 (6)第三章详细设计 (7)3.1输入模块设计 (7)3.2输出模块设计 (7)3.3 查找模块设计 (8)3.4排序模块设计 (8)3.5保存及读取模块设计 (9)第四章测试分析 (10)4.1测试程序执行情况 (10)第五章课程设计总结 (14)附录:程序代码 (15)参考文献 (32)致谢 (32)II内蒙古科技大学课程设计说明书第一章需求分析1.1引言因学校中学生信息庞大,复杂,为了方便教师们管理学生信息,特编写了一个学生成绩管理系统。
1.2任务概述1.目标本学生成绩管理系统主要是为学校里的老师提供一个管理学生信息的平台。
根据系统界面的提示信息对学生信息进行添加、浏览、修改、保存等操作。
2.运行环境Windows系统3.用户特点懂得一些基本的电脑操作即可。
4.条件限制计算机一台1.3数据描述系统的数据类型有:整型int,实型float,字符型char,结构体struct;自己定义的数据类型有:STU;1.4功能需求❖从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里❖打开文件后,计算每个人的总分和平均分,排序并保存❖具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)❖具有插入、删除和修改功能具有输出文件数据信息的功能1.5性能需求无3内蒙古科技大学课程设计说明书1.6运行需求1.硬件环境普通的计算机2.软件环境支持的操作系统包括windows98/xp及及以上版本1.7任务计划本系统共分为一个主页面模块(主函数部分),五个功能模块(功能函数)分别为增加学生成绩信息、查看学生成绩信息、修改学生成绩信息、对学生信息进行排序、退出。
C语言课程设计报告 学生成绩管理系统
C语言课程设计报告院系:机械与电子信息学院姓名:王鹏飞班号:07310126学号:20101003558指导教师:龚文引日期:2011年7月学生成绩管理系统一、题目要求设计一个学生成绩管理程序,对在校某班学生几门课程的考试成绩进行统一管理。
每个学生记录包括学号、姓名、年龄、数学、英语、物理成绩,默认以学号为序存放。
(1)一个文件按以班为单位存储学生记录.(2)将允许的操作分为四种,以A、B、C、D、E、F为标志(若设置菜单操作更佳):A:插入一个新的学生记录(录入学生信息);B:修改学生记录;C:删除一个学生记录;D:登记成绩;E:修改成绩;F:浏览全班成绩。
(3)计算学生的总成绩。
(4)按学号排序输出全班成绩表。
二、需求分析根据题目要求,由于学生信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览学生的信息,应提供添加、修改、删除、排序等操作;另外还应提供键盘式选择菜单实现功能选择。
三、总体设计根据上面的需求分析,可以将这个系统的设计分为8个模块,数据输入,添加数据,修改数据,删除数据,修改成绩,学号排序,浏览成绩,退出模块。
四。
详细设计1、主函数【分析】将各个功能模块设置为菜单选项,方便调用,且执行完每部分功能模块后能够方便返回到系统界面.【流程图】:【程序代码】:menu() /*主界面*/{int w1;char n; /*。
变量n保存选择菜单数字,w1判断输入的数字是否在功能菜单对应数字范围内*/do{puts(”\t\t***************菜单****************\n\n”);puts(”\t\t\t\tA。
录入学生信息”);puts(”\t\t\t\tB.修改学生记录”);puts(”\t\t\t\tC。
删除一个学生记录”);puts(”\t\t\t\tD.登记成绩”);puts("\t\t\t\tE。
修改成绩");puts("\t\t\t\tF。
学生成绩管理系统c语言课程设计
学生成绩管理系统c语言课程设计一、引言学生成绩管理系统是一种可以帮助学校或教育机构管理学生的成绩、课程和考试信息的软件。
本文将介绍一个基于C语言的学生成绩管理系统的设计过程。
二、需求分析在设计一个学生成绩管理系统之前,我们需要先进行需求分析。
以下是该系统需要满足的基本需求:1. 学生信息管理:包括添加、删除和修改学生信息,如姓名、性别、年龄等;2. 课程信息管理:包括添加、删除和修改课程信息,如课程名称、授课教师等;3. 成绩录入:可以录入每个学生在每门课程中的成绩;4. 成绩查询:可以查询某个学生在某门课程中的成绩以及某门课程所有学生的成绩排名等;5. 成绩统计:可以统计某个班级或某门课程所有学生的平均分、最高分和最低分等。
三、系统设计1. 数据结构设计为了实现上述需求,我们需要定义一些数据结构来存储相关信息。
以下是我们所定义的数据结构:(1)Student结构体:用于存储每个学生的基本信息,包括姓名、性别、年龄等。
typedef struct {char name[20];char sex[10];int age;} Student;(2)Course结构体:用于存储每门课程的基本信息,包括课程名称、授课教师等。
typedef struct {char name[20];char teacher[20];} Course;(3)Score结构体:用于存储每个学生在每门课程中的成绩。
typedef struct {int student_id;int course_id;float score;} Score;(4)Class结构体:用于存储某个班级的所有学生和所选的所有课程。
typedef struct {Student students[MAX_STUDENT_NUM];int student_num;Course courses[MAX_COURSE_NUM];int course_num;} Class;2. 功能实现在上述数据结构定义完成之后,我们可以开始实现各个功能模块。
学生成绩管理系统c++课程设计报告
学生成绩管理系统c++课程设计报告一、引言学生成绩管理系统是一种在学校教学管理中广泛应用的软件系统,用于记录和管理学生的考试成绩、课程信息等。
本课程设计旨在利用C++语言设计并实现一个简单的学生成绩管理系统,以加深对C++编程语言的理解和应用。
二、系统设计1. 系统功能•添加学生信息:包括学生姓名、学号、班级等。
•删除学生信息:根据学号删除学生信息。
•查询学生成绩:输入学号查询学生的考试成绩。
•修改学生成绩:根据学号修改学生的考试成绩。
•显示所有学生信息:以表格形式展示所有学生的信息。
2. 类设计在设计学生成绩管理系统时,需要设计以下几个类:(1)学生类class Student {private:string name;int id;string className;float score;public:// 构造函数Student(string n, int i, string c, float s);// 获取学生信息void displayInfo();// 获取学生成绩float getScore();// 修改学生成绩void modifyScore(float s);};(2)学生管理类class StudentManager {private:vector<Student> students;public:// 添加学生信息void addStudent(Student s);// 删除学生信息void deleteStudent(int id);// 查询学生成绩void queryScore(int id);// 修改学生成绩void modifyScore(int id, float score);// 显示所有学生信息void displayAll();};三、系统实现1. 主函数主函数实现了与用户的基本交互,包括菜单的显示和选项的选择。
```cpp int main() { StudentManager sm; int choice; while (true) { // 显示菜单cout <<。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生成绩管理系统课程设计报告前言一、系统的设计需求1、整个系统均用C语言实现;2、利用指针、链表来实现学生成绩的数据结构设计;3、系统具有输入、显示、删除、排序、退出基本功能;4、系统的各个功能模块都用函数的形式来实现;5、可以将学生信息全部显示出来出来。
二、系统的功能模块划分每一条记录包括一个学生的姓名、成绩。
同时1、输入功能:一次可以完成一个学生成绩记录的输入。
2、显示功能:完成全部学生记录的显示。
3、删除功能:对指定学生的成绩进行删除。
4、排序功能:按学生从大到小进行排序。
5、修改功能:对学生的成绩进行修改。
三、系统的整体设计1.数据结构设计:A、输入功能的设计:void insert_func(void){char s_temp[4];ptr=(struct student *) malloc(sizeof(struct student));printf(" Student name : ");gets(ptr->name);// gets从标准输入设备读取字符串//printf(" Student score: ");gets(s_temp);ptr->score = atoi(s_temp);//把字符串转化为整数//B、删除功能的设计:void delete_func(void)//现在进入删除操作//{char del_name[20];printf(" Delete student name: ");gets(del_name);prev = head;current = head->next;while ((current != NULL) && (strcmp(current->name , del_name)!=0))//用到了strcmp 比较字符串{prev = current;current = current->next;}if (current != NULL){prev->next = current->next;free(current);//释放当前位置//printf(" %s student record deleted\n",del_name);//输出被删除的姓名//}elseprintf(" Student %s not found\n",del_name);//否则此学生不存在//C、排序功能的设计:void sort_func(void) //插入数据//{prev = head;//把头指针所指的值付给prev//current = head->next;//把头指针的下一个指针值付给当前指针所指的位置// while ((current != NULL) && (current->score > ptr->score)){prev = current;current = current->next;}ptr->next = current;prev->next = ptr;D、修改功能的设计:void modify_func(void){char n_temp[20],s_temp[4];//定义字符类型//printf(" Modify student name: ");gets(n_temp);//这样输入姓名current=head->next;while ((current != NULL) && (strcmp(current->name , n_temp)!=0)){prev = current;current = current->next;}if (current != NULL){printf(" **************************\n");printf(" Student name : %s\n",current->name);printf(" Student score: %d\n",current->score);printf(" **************************\n");printf(" Please enter new score: ");gets(s_temp);current->score = atoi(s_temp);printf(" %s student record modified\n",n_temp);}//输出被修改的成绩//elseprintf(" Student %s not found\n",n_temp);//否则此学生不存在//anykey_func();E、显示功能的设计:void display_func(void)//定义显示//{int count=0;system("cls");if(head->next == NULL)//如果头指针所指数为空//{printf(" No student record\n");//则输出学生记录为空//}else//否则输出学生姓名和成绩//{printf(" NAME SCORE\n");printf(" ---------------------------\n");current=head->next;while(current != NULL){printf(" %-20s %3d\n", current->name, current->score);count++;current=current->next;if(count % 20 == 0) getch();}printf(" ---------------------------\n");printf(" Total %d record(s) found\n", count);2.功能模块的具体设计整个系统除了主函数外,另外还有8个函数,实现5大功能:输入功能、显示功能、排序功能、删除功能、修改功能。
各个函数的详细设计说明分别如下:1、主函数main()利用while()循环和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。
2、输入记录函数getch(); insert_func();这是一个无参函数,用来执行第学生成绩记录的输入,当当没有学生纪录时就开始进行输入操作。
算法:先声明一个首节点head,并将head->next设为NULL。
然后用if((fptr=fopen(“slist.dat”,”r”))==NULL)对程序进行判断如果成立则进行输入,输入时运用getch()函数和insert_func()主导来完成。
最终效果图:3、显示记录函数void display_func(void)这是一个不返回值的有参函数,负责对全部学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。
算法:先用if语句对头指针的下一给位置进行判断看是否为空如果为空则不显示如果不为空则输出学生姓名及成绩。
算法:现将head->next赋值给当前位置current然后再用while 对current进行定义最后输出。
最终效果:4、删除记录函数void delete_func(void)这是一个有参函数,先输入要删除的学生记录的姓名,找到后显示该学生信息,等确认后便可进行删除。
算法:从p指向的第一个结点开始,检查该结点中的num值是否等于输入的要求删除的那个姓名。
如果相等就将该结点删除,如不相等,就将p后移一个结点,再如此进行下去,直到遇到表尾为止。
最终效果:5、排序函数void sort_func(void)这是一个有参函数,按学生成绩的大小进行排6、修改函数void modify_func(void)这是一个有参函数,先输入要修改的学生姓名找到后对其成绩进行修改。
算法:先将head->next赋值给当前位置current然后用while函数对其进行定义然后检查该节点中的姓名是不是p要找的如果相等就修改,如不相等,就将current –>next赋值给current在于p节点比较直到遇到表尾为止。
五、调试分析(1)刚开始没有那个初始化函数,程序运行后,没有输入任何数据就试得去执行显示功能,结果显示的是一些乱码!加入初始化函数后,这种现象也随之消失。
(2)刚开始执行输入函数,输入十个学生的成绩,输完后执行显示功能,学生成绩记录是按输入时的顺序显示的,试着在其中增加一些语句,希望能把学号按从大到小的顺序显示,但暂时没有成功,但最后还是按从大到小的顺序输出了。
(3)在输入函数中设了一个无限循环,可以输入无数个学生的成绩信息,但最后失败了只能一个一个输入。
(4)输入太多个学生的成绩时,屏幕显示不能控制为一页一页显示,所以为了方便起见,不要输入太多记录,十七左右为最佳。
六、总结经过一个多星期的C语言课程设计,感觉自己收获不少!首先是:链表本来上课是没有上的,但这个课程设计里面主要都是用链表,因为要达到这样的功能,使用链表相当方便,但不容易理解,所以在这方面我花了很多的时间看课本和参考课外书,使C语言的知识强化了不少。
其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:返回值函数和不返回值函数两者在主函数中的调用是不同的,这些内容虽然老师上课都讲过但没好好听加上时间长忘了不少但经过这次课程设计我对他们熟悉了很多…………更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。
这个学生成绩管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用!从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。
相信这次的课程设计为我以后继续从事计算机工作打了一个小小的开头。
由于这是第一次进行设计,写文档,难免会写得不好!希望老师不要嫌少。
附件:代码如下/* file name: slist.c *//* 单向键结链表,插入、删除使用排序*///学会对文件操作文件操作和单链表一起使用#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h>void read_func(void);void write_func(void);void insert_func(void);void sort_func(void);// sort意思为类型//void delete_func(void);void display_func(void); /*DSFGAFSHDGSJHDF*/void modify_func(void); /*DSFGAFSHDGSJHDF*/void anykey_func(void); /*DSFGAFSHDGSJHDF*/struct student{char name[20]; /*DSFGAFSHDGSJHDF*/int score;struct student *next;};struct student *ptr, *head, *current, *prev;//全部声明为全局变量int main(void){char option1;system("cls");//清屏read_func();//func意思为目前使用者定义函式的参数列的数目// while(1){printf("****************************************\n"); printf(" 1.插入\n");printf(" 2.删除\n");printf(" 3.显示\n");printf(" 4.修改\n");printf(" 5.退出\n");printf("****************************************\n"); printf(" Please enter your choice (1-5)...");option1=getche();printf("\n");/*DSFGAFSHDGSJHDF*/switch(option1){case '1':insert_func();break;case '2':delete_func();break;case '3':display_func();break;case '4':modify_func();break;case '5':// write_func();//写入参数数目//exit(0);//这里也处理的比较好}}}void read_func(void){FILE *fptr;// FILE意思为归档//head=(struct student *) malloc(sizeof(struct student));head->next = NULL;/* 开始时,若表中不存在数据,则要求输入第一笔数据*/if((fptr=fopen("slist.dat","r")) == NULL){printf(" Data file not exist\n");//数据文件不存在//printf(" Press any key to edit first record...\n");getch();//字符插入函数//insert_func();//不存在就实行插入操作}else{ptr=(struct student *) malloc(sizeof(struct student));while(fscanf(fptr, "%s %d", ptr->name, &ptr->score) != EOF){sort_func();ptr=(struct student *) malloc(sizeof(struct student));}fclose(fptr);//关闭fptr所指的文件释放缓冲区//}}void write_func(void){FILE *fptr;fptr=fopen("slist.dat","w");current=head->next;// current意思为当前的//while(current != NULL){fprintf(fptr, "%s %d\n", current->name, current->score);current = current->next;}fclose(fptr);}void insert_func(void) //一插入就比较字符串(想比较很简单)不是等到全部插完了才比较{char s_temp[4];ptr=(struct student *) malloc(sizeof(struct student));printf(" Student name : ");gets(ptr->name);// gets从标准输入设备读取字符串//printf(" Student score: ");gets(s_temp);ptr->score = atoi(s_temp);//把字符串转化为整数//sort_func();}/*以分数高低由大到小排列*/void sort_func(void) //插入数据//{prev = head;//把头指针所指的值付给prev//current = head->next;//把头指针的下一个指针值付给当前指针所指的位置// while ((current != NULL) && (current->score > ptr->score)){prev = current;current = current->next;}ptr->next = current;prev->next = ptr;}//前面是进行成绩排序操作//void delete_func(void)//现在进入删除操作//{char del_name[20];printf(" Delete student name: ");gets(del_name);prev = head;current = head->next;while ((current != NULL) && (strcmp(current->name , del_name)!=0))//用到了strcmp 比较字符串{prev = current;current = current->next;}if (current != NULL){prev->next = current->next;free(current);//释放当前位置//printf(" %s student record deleted\n",del_name);//输出被删除的姓名//}elseprintf(" Student %s not found\n",del_name);//否则此学生不存在////以上为删除操作//anykey_func();}//进入修改操作//void modify_func(void){char n_temp[20],s_temp[4];//定义字符类型//printf(" Modify student name: ");gets(n_temp);//这样输入姓名current=head->next;while ((current != NULL) && (strcmp(current->name , n_temp)!=0)){prev = current;current = current->next;}if (current != NULL){printf(" **************************\n");printf(" Student name : %s\n",current->name);printf(" Student score: %d\n",current->score);printf(" **************************\n");printf(" Please enter new score: ");gets(s_temp);current->score = atoi(s_temp);printf(" %s student record modified\n",n_temp);}//输出被修改的成绩//elseprintf(" Student %s not found\n",n_temp);//否则此学生不存在//anykey_func();}//进入显示操作//void display_func(void)//定义显示//{int count=0;system("cls");if(head->next == NULL)//如果头指针所指数为空// {printf(" No student record\n");//则输出学生记录为空// }else//否则输出学生姓名和成绩//{printf(" NAME SCORE\n");printf(" ---------------------------\n");current=head->next;while(current != NULL){printf(" %-20s %3d\n", current->name, current->score); count++;current=current->next;if(count % 20 == 0) getch();}printf(" ---------------------------\n");printf(" Total %d record(s) found\n", count);}anykey_func();}void anykey_func(void)//任何键继续{printf(" Press any key to continue...");getch();printf("\n");}。