C语言实现学生成绩管理系统

合集下载

C语言大作业——学生成绩管理系统v2.0

C语言大作业——学生成绩管理系统v2.0

//成绩管理系统v2.0#include <stdio.h>#include <stdlib.h>#define N 30void Input (long num[],int score[],int n);void Totalave (int score[],int n);void Scoredes (long num[],int score[],int n,int (*compare)(int a,int b)); int Ascending (int a,int b);void Numas (long num[],int score[],int n);void Search (long num[],int score[],int n,int x);void statistis (long num[],int score[],int n);void List (long num[],int score[],int n);int main(){int n,score[N],c,x,i;long num[N];printf("输入学生人数");scanf("%d",&n);printf("1.Input record\n");printf("2.Caculate totel and average score of course\n");printf("3.Sort in descending order by score\n");printf("4.Sort in ascending order by number\n");printf("5.Search by number\n");printf("6.Statistic analysis\n");printf("7.List record\n");printf("0.Exit\n");printf("Please enter your choice:\n");printf("\n");for(;;){scanf("%d",&c);switch(c){case 1:Input (num,score,n);printf("Please enter your choice:\n");break;case 2:Totalave (score,n);printf("Please enter your choice:\n");break;case 3:Scoredes (num,score,n,Ascending);for(i=0;i<n;i++)printf("ID:%10ld,score:%d\n",num[i],score[i]);//以长整形打印用%ld printf("Please enter your choice:\n");break;case 4:Numas (num,score,n);printf("Please enter your choice:\n");break;case 5:printf("请输入查找学号\n");scanf("%d",&x);Search (num,score,n,x);printf("Please enter your choice:\n");break;case 6:statistis (num,score,n);printf("Please enter your choice:\n");break;case 7:List (num,score,n);Totalave (score,n);printf("Please enter your choice:\n");break;case 0:exit(0);}}return 0;}void Input (long num[],int score[],int n){int i;for(i=0;i<n;i++){printf("Input student's ID and score");scanf("%ld%d",&num[i],&score[i]);}}void Totalave (int score[],int n){int i,sum=0;double ave;for(i=0;i<n;i++)sum=sum+score[i];ave=(double)sum/n;printf("Caculate total=%d,average score of course=%f\n",sum,ave); }void Scoredes (long num[],int score[],int n,int(*compare)(int a,int b)){int i,j,k,t,h;for(i=0;i<n;i++){k=i;for(j=i+1;j<n;j++){if ((*compare)(score[j],score[k]))k=j;}if(i!=k){t=score[k],h=num[k];score[k]=score[i],num[k]=num[i];score[i]=t,num[i]=h;}}}int Ascending (int a,int b){return a<b;}void Numas (long num[],int score[],int n){int i,j,k,t,h;for(i=0;i<n;i++){k=i;for(j=i+1;j<n;j++){if (num[j]<num[k])k=j;}if(i!=k){t=score[k],h=num[k];score[k]=score[i],num[k]=num[i];score[i]=t,num[i]=h;}}for(i=0;i<n;i++)printf("ID:%10ld,score:%d\n",num[i],score[i]);//以长整形打印用%ld }void Search (long num[],int score[],int n,int x){int high=n-1,low=0,mid,c=0,pos,find=0,i,j,k,t,h;for(i=0;i<n;i++){k=i;for(j=i+1;j<n;j++){if (num[j]<num[k])k=j;}if(i!=k){t=score[k],h=num[k];score[k]=score[i],num[k]=num[i];score[i]=t,num[i]=h;}}while(find==0&&low<=high){mid=(high+low)/2;if(x>num[mid])low=mid+1;else if(x<num[mid])high=mid-1;else{pos=mid;find=1;}}if(find==0)printf("not find\n");else{for(i=0;i<n;i++){if(score[i]>score[pos])c++;}printf("ID:%10ld,order:%d,score:%d\n",num[pos],c+1,score[pos]);}}void statistis (long num[],int score[],int n){int a=0,b=0,c=0,d=0,e=0,i;double A,B,C,D,E;for(i=0;i<n;i++){if(score[i]>=90)a++;else if(score[i]>=80)b++;else if(score[i]>=70)c++;else if(score[i]>=60)d++;elsee++;}A=(double)a/n*100;B=(double)b/n*100;C=(double)c/n*100;D=(double)d/n*100;E=(double)e/n*100;printf("优秀人数%d,百分比:%f%%\n",a,A);printf("良好人数%d,百分比:%f%%\n",b,B);printf("中等人数%d,百分比:%f%%\n",c,C);printf("及格人数%d,百分比:%f%%\n",d,D);printf("不及格人数%d,百分比:%f%%\n",e,E); }void List (long num[],int score[],int n){int i;for(i=0;i<n;i++){printf("ID:%10ld,score:%d\n",num[i],score[i]);}}。

学生成绩管理系统C语言源程序

学生成绩管理系统C语言源程序
{
for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);
if (!p)
{
printf("\n\n找不到你要查询的姓名,请重新输入,输入0表\
示结束:");
scanf("%s",tem);
}
else if (!strcmp(p->name,tem))
n=0;
head=(Student *)malloc(LEN);
p2=head;
printf("\n请输入第%d名学生的学号,学号为0表示结束输入:",n+1);
scanf("%d",&flag);
while(getchar()!='\n');
for(;flag;)
{
n++;
p1=(Student *)malloc(LEN);
char xueqi[20];
int score[4];
int sum;
struct student *next;
}Student;
int n;
Student *cin(void);
Student *sort_1(Student *head,int);
void sort_2(Student *head);
max_3=min_3=p->score[2];max_2=min_2=p->score[3];
max_sum=min_sum=p->sum;
for(;p;p=p->next)
{
if (max_1<p->score[0]) max_1=p->score[0];

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

学生成绩管理系统c语言代码(供参考)

学生成绩管理系统c语言代码(供参考)

C程序学生管理系统以下是用C语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include”stdlib。

h"#include"string。

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

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

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语言-学生成绩管理系统

在TC环境下吧,界面是一片的黑。

可以实现成绩的录入、查询、排序、物理删除、永久删除……记不太清楚了,当时我们的报告要求手写的,也没留下什么电子资料。

C语言还是很好学很好用的,希望对大家有帮助!#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>struct student{int id;char name[10];int age;char sex[10];char birthady[20];char address[50];char tel[15];char E_mail[30];}st[50];int i=0;void shuru() {char a;do{printf("\ninput num:");scanf("%d",&st[i].id);fflush(stdin);printf("\ninput name:");gets(st[i].name);printf("\ninput age:");scanf("%d",&st[i].age);fflush(stdin);printf("\ninput sex:");gets(st[i].sex);fflush(stdin);printf("\ninput birth:");gets(st[i].birthady);fflush(stdin);printf("\ninput address:");gets(st[i].address);printf("\ninput tell:");scanf("%s",&st[i].tel);printf("\ninput E_mail:");scanf("%s",&st[i].E_mail);printf("\nWhether input another student's information ?(y/n)");fflush(stdin);a=getchar();i++;}while(a=='y' && i<=50);}void xianshi(){int j;printf("======================XUESHENGXINXIGUANLIXITONG=============================\n");printf("num\tname\tage\tsex\tbirth\taddr tell E_mail\n");for(j=0;j<i;j++)printf("%d\t%s\t%d\t%s\t%s\t%s%12s%18s\n",st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].address,st[j].tel,st[j].E_mail);printf("============================================ZHI ZUO REN:sunqi=========\n");}void clearscreen(){getchar();system("cls");}void paixu(){int j,k;int temp;for(j=0;j<i;j++){for(k=0;k<i-1-j;k++){if(st[k].age<st[k+1].age){temp=st[k].age;st[k].age=st[k+1].age;st[k+1].age=temp;}}}xianshi();}void chazhao(){int m=0;char name[20],b;do{printf("\ninput name of student:");fflush(stdin);gets(name);for(m=0;m<20;m++){if(strcmp(name,st[m].name)==0){printf("\n\tThe student is found in %d\n",m+1);break;}}if(m>=20)printf("\n\tCan not find this student\n");else{printf("num\tname\tage\tsex\tbirth\taddr tell E_mail\n");printf("%d\t%s\t%d\t%s\t%s\t%s%12s%18s\n",st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].address,st[m].tel,st[m].E_mail); }printf("\nFind another student?(y/n)");fflush(stdin);b=getchar();}while(b=='y');}void shanchu(){char name[20],c;int a,b;do{printf("\nInput the name of delet student:\n");fflush(stdin);gets(name);for(a=0;a<i;a++){if(strcmp(name,st[a].name)==0)break;}for(b=a;b<i;b++)st[b]=st[b+1];if(a>i)printf("\tCan not find this student\n");else{i--;xianshi();}printf("\nContinue delet a student?(y/n) ");fflush(stdin);c=getchar();}while(c=='y');}void charu(){shuru();paixu();}void main(){int change;do{system("cls");printf("*****************XUESHENG XINXI GUANLIXITONG *****************\n"); printf(" 1: shuru xuesheng xingxi\n");printf(" 2: xianshi xuesheng xinxi\n");printf(" 3: chazhao xuesheng xinxi\n");printf(" 4: shanchu xuesheng xinxi\n");printf(" 5: charu xuesheng xinxi\n");printf(" 6: paixu xuesheng xinxi\n");printf(" 7: tuichu chengxu\n");printf("***************************************************************\n"); fflush(stdin);printf("shuru gongneng xuanxiang:");scanf("%d",&change);switch(change){case 1:shuru(); break;case 2:xianshi(); break;case 3:chazhao(); break;case 4:shanchu(); break; case 5:charu(); break; case 6:paixu();break; case 7:break;}getch();}while(change!=7); }。

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

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

武汉理工大学华夏学院课程设计报告书课程名称:数据结构题目:用C语言实现成绩统计程序的设计系名:信息工程系专业班级:软件工程1121姓名:****:***2013 年 6月 28日课程设计任务书设计题目:用C语言实现成绩统计程序的设计设计目的1.巩固和加深课堂所学知识、学会分析研究数据对象的特性及数据的组织方法;2.选择合适的数据的逻辑结构和存储结构以及相应操作,实现一个班的成绩统计3. 提高程序设计能力、加强查阅、运用资料的能力、算法分析与程序设计素质培养;设计任务(在规定的时间内完成下列任务)〔问题描述〕给出n个学生的m门课程的考试成绩信息,每条信息由姓名、课程代号与分数组成,要求设计算法:(1)输入每个人的各门课程的成绩,计算每人的平均成绩;(2)按平均成绩的高低次序,打印出出个人的名次,平均成绩相同的为同一名次;(3)按名次列出每个学生的姓名和各科成绩;〔基本要求〕学生的考试成绩必须通过键盘输入,且需对输出进行格式控制;〔算法提示〕可以用选择排序、冒泡排序等多种排序算法求解;具体要完成的任务是:A. 编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。

B. 写出规范的课程设计报告书;时间安排:6月24日---28日第一天布置题目,确定任务、查找相关资料第二天~第四天功能分析,编写程序,调试程序、运行系统;第五天程序验收、答辩;撰写设计报告。

具体要求1. 课程设计报告按统一通用格式书写,具体内容如下:①设计任务与要求②总体方案与说明③软件主要模块的流程图④源程序清单与注释⑤问题分析与解决方案(包括调式报告,即在调式过程中遇到的主要问题、解决方法及改进设想);⑥小结与体会附录:①源程序(必须有简单注释)②使用说明③参考资料2.每位学生应独立完成各自的任务且每天至少在设计室工作半天;指导教师签名: 2013 年 6月 22日教研室主任(或责任教师)签名: 2013年 6月 24日1.设计题目及要求1.1设计题目用C语言实现成绩统计程序的设计。

1.2具体任务对学生信息(包括学号、语文、数学、英语、平均分)进行管理,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出.将学生的成绩信息进行记录,信息内容包含:(1)学生的学号(2)学生的姓名(3)学生的成绩。

假设,现收集到了一个班学生的所有成绩信息,要求用C语言编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。

学习相关开发工具和应用软件,熟悉系统建设过程。

2.系统设计思想2.1 系统设计思想在编写成绩统计管理系统程序的过程中运用结构体,把问题中所涉及的变量定义在结构体中,利用函数来管理学生成绩,循环语句控制所选择的选择界面,case语句进行选择。

然后利用相关变量函数把学生成绩记录下来,利用循环语句再回到选择界面,利用查找函数,统计函数来查找统计学生成绩,利用冒泡排序法来对学生平均成绩进行排序。

然后按成绩高低对学生进行排名。

2.2 系统算法设计2.2.1系统模块结构图系统结构如图2-1所示2.2.2主函数流程图主函数如图2-2所示图2-2 主函数流程图3.系统调试与运行3.1开发环境Visual C++6.0,Microsoft Windows XP3.2程序调试3.2.1主界面调试选择界面如图3-1所示图3-1 选择界面截图3.2.2成绩录入模块成绩录入界面录入界面如图3-2所示图3-2 成绩录入模块3.2.3成绩查询模块成绩查询界面如图3-3所示图3-3 成绩查询模块3.2.4成绩统计模块成绩统计界面如图3-4所示图3-4 成绩统计模块4.设计评价与修改在数据结构课程设计过程中,许多知识点都没有学过,都要靠自己到课外的资料中去查找。

在用的时候难免出现这样那样的错误。

如开始设计出来的菜单不是预想的那样,而是窗中出现混乱,要经过自己一遍遍的调试与修改,和老师同学的帮助下逐渐改进完善,最后才渐渐的成型。

运行的也基本达到所需要的运算要求。

5.心得与体会回顾起此次课程设计,我感慨颇多,从拿到题目到完成整个编程,从理论到实践,在整整一个礼拜的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体。

通过这次课程设计之后,一定把以前所学过的知识熟悉了,本次课程设计结束了,我们通过这次实践学到了许多知识。

学到了设计一个简单的系统。

要注意哪些方面。

也使我们知道自己哪些方面做得还不够。

这不仅是程序设计,更是锻炼我们处理问题的能力,同时也使我们了解到团队合作的可贵.编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!在编写程序的过程中,错误不断出现,不同的类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,不能半途而废。

每一次的课程设计都是一次对自己曾经学习知识的检验,通过每次的实践,使自己认识之前的不足与缺点,利于以后的改正与今后学习的发展方向,希望每一次的课程设计都能有一个很好的提高参考文献[1]詹春华李小艳黄启荃•《计算机应用基础》•科学出版社 2011.5[2]詹春华杨沙•《C语言程序设计》•科学出版社2011.8[3]谭浩强·C语言程序设计·北京·清华大学出版社,2000年1月。

[4]徐孝凯魏荣•《数据结构》•机械工业出版社•1996年[5]徐孝凯•《数据结构简明教程》•清华大学出版社•1995年[6]陈文博朱青•《数据结构与算法》•机械工业出版社•1996年附录:程序代码#include <stdlib.h>#include <stdio.h>#include <string.h>#define MAXN 35#define MAX_NAME 256typedef struct student //学生信息{int no;char name[MAX_NAME];double Chinese;double math;double English;double mark_ave;double mark_tot;} STUDENT;/*-----------输入信息子程序---------*/void input(STUDENT *data, int *len){int no;putchar('\n');printf("%s\n", "请输入新的记录,如果需要退出当前菜单请输入-1.");printf("%s\n", "格式:\n学号\n");printf("%s\n", "姓名语文数学英语");putchar('\n');printf("如:\n");printf("1\n");printf("小明 93 95 89\n");scanf("%d", &no);while(no != -1) {data[*len].no = no;scanf("%s %lf %lf %lf", data[*len].name,&data[*len].Chinese, &data[*len].math,&data[*len].English);data[*len].mark_ave=(data[*len].Chinese+data[*len].math+data[*len ].English)/3.0;data[*len].mark_tot=data[*len].Chinese+data[*len].math+data[*len] .English;(*len)++;scanf("%d", &no);}}/*---------------输出信息子程序---------------*/void output(STUDENT *data, int len){int i;system("cls");printf("%8s", "学号");printf("%8s", "姓名");printf("%8s", "语文");printf("%8s", "数学");printf("%10s", "英语");printf("%12s", "平均分");printf("%10s", "总分");putchar('\n');for (i =0; i < 80; i++)putchar('=');putchar('\n');for (i = 0; i< len; i++){printf("%8d", data[i].no);printf("%8s", data[i].name);printf("%8.1lf", data[i].Chinese);printf("%8.1lf", data[i].math);printf("%10.1lf", data[i].English);printf("%12.1lf", data[i].mark_ave);printf("%10.1lf", data[i].mark_tot);putchar('\n');}for (i =0; i < 80; i++)putchar('=');putchar('\n');printf("按回车键继续.");getchar();getchar();}/*--------------排序子程序------------*/void sort(STUDENT *data, int len){int i,j,k;STUDENT temp;for (i=0; i<len-1; i++) {for (k=i, j=i+1; j<len; j++)if (data[k].mark_ave > data[j].mark_ave) k=j;if (k != i) {temp = data[i];data[i] = data[k];data[k] = temp;}}}/*--------------------搜索子程序-----------------------*/void find(STUDENT *data, int len){int find_no, result ;int i;lab: result=0;printf("%s\n", "请输入需要查找的学生的学号,退出当前菜单请输入 -1.");scanf("%d", &find_no);if (find_no == -1) return; /*exit the fine sub program*/while( data[result].no != find_no && result < len) result ++;if (result >= len ) {printf("%s\n", "未查询到相关信息");goto lab;}else {system("cls");printf("%s\n", "查询信息如下:");for (i =0; i < 80; i++)putchar('=');putchar('\n');printf("%8s", "学号");printf("%8s", "姓名");printf("%8s", "语文");printf("%8s", "数学");printf("%10s", "英语");printf("%12s", "平均分");printf("%10s", "总分");putchar('\n');printf("%8d", data[result].no);printf("%8s", data[result].name);printf("%8.1lf", data[result].Chinese);printf("%8.1lf", data[result].math);printf("%10.1lf", data[result].English);printf("%12.1lf", data[result].mark_ave);printf("%10.1lf", data[result].mark_tot);putchar('\n');for (i =0; i < 80; i++)putchar('=');putchar('\n');goto lab;}}/*-----------------插入子程序-------------*/void insert(STUDENT *data, int *len){int no, pos;double Chinese, math, English, mark_ave, mark_tot;int i;char name[MAX_NAME];lab: printf("%s\n", "输入新的记录,退出当前菜单请输入-1.");printf("%s\n", "格式:学号");printf("%s\n", " 姓名语文数学英语");scanf("%d", &no);if (no == -1) return;data[*len].no = no;scanf("%s %lf %lf %lf", name, &Chinese, &math, &English);mark_ave=(Chinese+math+English)/3.0;mark_tot=Chinese+math+English;pos = 0;while ((data[pos].mark_ave < mark_ave) && (pos < *len) ) pos ++;for (i = *len-1; i >= pos; i--)data[i+1] = data[i];data[pos].no = no;strcpy(data[pos].name, name);data[pos].Chinese = Chinese;data[pos].math = math;data[pos].English = English;data[pos].mark_ave = mark_ave;data[pos].mark_tot = mark_tot;(*len)++;goto lab;}/*-------------删除子程序--------------*/void delete_item(STUDENT *data, int *len){int no, i, pos;lab: pos=0;printf("%s\n", "输入需要删除的学生的学号,退出当前菜单请输入-1.");scanf("%d", &no);if (no == -1) return;while( (data[pos].no != no) && (pos < *len) ) pos = pos +1;if (pos >= *len) {printf("%s\n", "未找到需要删除的学生");goto lab;}else {for (i = pos+1;i < *len; i++)data[i-1] = data[i];*len = *len -1;if (*len == 0) {printf("%s\n", "没有任何记录,请按回车键返回.");getchar();getchar();return;}goto lab;}}/*---------------统计子程序------------*/void stat(STUDENT *data, int len){int no_59=0, no_69=0, no_79=0, no_89=0, no_100=0;int i;for (i = 0;i < len; i++) {if (data[i].mark_ave <=59) no_59++;else if (data[i].mark_ave <=69) no_69++;else if (data[i].mark_ave <=79) no_79++;else if (data[i].mark_ave <= 89) no_89++;else no_100++;}system("cls");for (i =0; i < 80; i++)putchar('=');putchar('\n');printf("%10s", "分数");printf("%10s", "0--59");printf("%10s", "60--69");printf("%10s", "70--79");printf("%10s", "80--89");printf("%10s", "90--100");putchar('\n');putchar('\n');printf("%10s", "学生");printf("%10d", no_59);printf("%10d", no_69);printf("%10d", no_79);printf("%10d", no_89);printf("%10d", no_100);putchar('\n');for (i =0; i < 80; i++)putchar('=');putchar('\n');printf("按回车键返回");getchar();getchar();}/*---------------显示信息子程序------------*/void paint(){int i;system("cls");printf("%55s\n", "武汉理工大学华夏学院学生成绩管理系统\n");printf(" 制作者:武汉理工大学华夏学院软件1121班钟伟 \n");for (i = 0; i < 80; i++)putchar('=');putchar('\n');printf(" 1 输入信息 2 输出信息\n");printf(" 3 按平均分排序 4 按学号查找\n");printf(" 5 插入 6 按学号删除\n");printf(" 7 按平均分输出统计信息 8 保存到文件\n");printf(" 0 退出\n");for (i = 0; i<= 79; i++)putchar('=');putchar('\n');printf("%s\n", "请输入各操作对应的序号:");}void save(STUDENT *data, int len)//将数据保存到文件{int i;FILE *fp;fp=fopen("成绩统计表.txt","w");fprintf(fp,"%8s", "学号");fprintf(fp,"%8s", "姓名");fprintf(fp,"%8s", "语文");fprintf(fp,"%8s", "数学");fprintf(fp,"%10s", "英语");fprintf(fp,"%12s", "平均分");fprintf(fp,"%10s\n", "总分");fprintf(fp,"========================================================= ===============\n");putchar('\n');for (i = 0; i< len; i++){fprintf(fp,"%8d", data[i].no);fprintf(fp,"%8s", data[i].name);fprintf(fp,"%8.1lf", data[i].Chinese);fprintf(fp,"%8.1lf", data[i].math);fprintf(fp,"%10.1lf", data[i].English);fprintf(fp,"%12.1lf", data[i].mark_ave);fprintf(fp,"%10.1lf\n", data[i].mark_tot);}fprintf(fp,"========================================================= ===============\n");fclose(fp);printf("文件已保存到\"成绩统计表.txt\"");getchar();getchar();}/*-----------主程序--------------*/void main(){STUDENT data[MAXN];int len = 0;char ctrl_ch;paint();scanf("%c", &ctrl_ch);while (ctrl_ch != '0') {switch(ctrl_ch) {case '1':input(data, &len);break;case '2':output(data, len);break;case '3':sort(data, len);break;case '4':find(data, len);break;case '5':insert(data, &len);break;case '6':delete_item(data, &len);break;case '7':stat(data, len);break;case '8':save(data, len);break;default:if (ctrl_ch != '\n') printf("%s\n", "输入错误!");break;}if (ctrl_ch != '\n') paint();scanf("%c", &ctrl_ch);}}。

相关文档
最新文档