c语言实现设计一个学生成绩管理系统课程

作者&投稿:岛敬 (若有异议请与网页底部的电邮联系)
用c语言设计一个学生成绩管理系统 该系统要实现的功能为:成绩录入:输入学生的学号、姓名及三门课成绩~

我只有差不多的 你可以自己改一改  /* ************************************************************************
  * Filename: student_system.c
  * Description:
  * Version: 1.0
  * Created: 2016年03月30日 17时27分11秒
  * Revision: none
  * Compiler: gcc
  * Author: YOUR NAME (),
  * Company:
  * ************************************************************************/

  #include
  #include
  typedef struct stu
  {
  int num;
  char name[20];
  int score;
  struct stu *next;
  }STU;
  void link_add_end(STU **head,STU *p_new)
  {
  p_new->next = *head;
  *head = p_new;
  }
  void link_print(STU **head)
  {
  if(*head == NULL)
  {
  return;
  }
  STU *p_mov = *head;
  while(p_mov != NULL)
  {
  printf("num==%d score==%d name==%s
",p_mov->num,p_mov->score,p_mov->name);
  p_mov=p_mov->next;
  }
  }
  void link_find_num(STU **head,int num)
  {
  STU *p_mov = *head;
  while(p_mov != NULL)
  {
  if(p_mov->num == num)
  {
  printf("num==%d score==%d name==%s
",p_mov->num,p_mov->score,p_mov->name);
  }
  p_mov=p_mov->next;
  }

  }
  void link_find_name(STU **head,char name[])
  {
  STU *p_mov = *head;
  while(p_mov != NULL)
  {
  if(strcmp(p_mov->name,name)==0)
  {
  printf("num==%d score==%d name==%s
",p_mov->num,p_mov->score,p_mov->name);
  }
  p_mov=p_mov->next;
  }

  }
  void link_delete_num(STU **head,int num)
  {
  STU *p_mov = *head;
  STU *p_sav = p_mov;
  while(p_mov != NULL)
  {
  if(p_mov->num == num)
  {
  if(p_mov == *head)
  {
  *head = p_mov->next;
  free(p_mov);
  }else if(p_mov->next == NULL)
  {
  p_sav->next=NULL;
  free(p_mov);
  }else
  {
  p_sav->next=p_mov->next;
  free(p_mov);
  }
  }
  p_sav=p_mov;
  p_mov=p_mov->next;
  }
  }
  void add(STU **head)
  {
  STU *p_new;
  p_new = (STU *)malloc(sizeof(STU));

  printf("请输入 学号 分数 姓名
");
  printf("例如 1 99 张三
");

  scanf("%d %d %s",&p_new->num,&p_new->score,p_new->name);
  getchar();
  link_add_end(head,p_new);

  }
  void prin(STU **head)
  {
  link_print(head);
  }
  void find(STU **head)
  {
  int num;
  char name[20];
  char cmd[20];
  printf("1 find for num
");
  printf("2 find for name
");

  gets(cmd);
  if(strcmp("1",cmd) == 0)
  {
  printf("please input find for num");
  scanf("%d",&num);
  getchar();
  link_find_num(head,num);
  }else if(strcmp("2",cmd)==0)
  {
  printf("please input find for name
");
  gets(name);
  link_find_name(head,name);
  }else
  {
  printf("error!!");
  return;
  }
  }
  void delete(STU **head)
  {
  int num;
  printf("please input delete for num
");
  scanf("%d",&num);
  getchar();
  link_delete_num(head,num);
  }
  void help()
  {
  printf("************************
");
  printf("*add add link *
");
  printf("*prt print link *
");
  printf("*fid find link *
");
  printf("*del delete link *
");
  printf("*help print help *
");
  printf("************************
");
  }

  int main(int argc, char *argv[])
  {
  char cmd_key[20];
  STU *head=NULL;
  int i;
  typedef void (*FUN)(STU **);
  typedef struct cmd_fun
  {
  char key_cmd[20];
  FUN fun;
  }CMD;
  CMD cmd[]={{"add",add},
  {"prt",prin},
  {"fid",find},
  {"del",delete}};
  help();
  while(1)
  {
  gets(cmd_key);
  if(strcmp(cmd_key,"help")==0)
  {
  help();
  }
  for(i=0; i<4; i++)
  {
  if(strcmp(cmd[i].key_cmd,cmd_key)==0)
  {
  cmd[i].fun(&head);
  }
  }
  }

  return 0;
  }

#include #include #include #includetypedef struct student{char num[16];char name[20];float score[4];struct student *next;} stu;stu *head; // 链头指针stu* create()// 创建链表,从文件读取信息 { printf("Reading student information:
");stu *p=NULL;// 指针,指向个待插入的结点stu *q=NULL;// 指针,用于在其后插入结点head = NULL;// 一开始链表为空FILE * r =fopen("input.dat","r"); p = (stu*)malloc(sizeof(stu));while(fscanf(r,"%s%s%f%f%f",p->num,p->name,&p->score[0],&p->score[1],&p->score[2])!=EOF){ p->score[3]=(p->score[0]+p->score[1]+p->score[2])/3.0; fprintf(stdout,"%s%s%g%g%g%.2f
",p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3]); p->next=NULL;if (head == NULL)// head为空,要插入第一个 { head = p; } // 结点,让头指针指向结点pelse {// 否则不是头结点,应将p结点q->next = p;// 插入到q结点的后面} q = p;// q指向当前最后一个结点 p = (stu*)malloc(sizeof(stu));} fclose(r);if (head != NULL) { q->next = NULL;// 让q所指的最后一个结点的指针域为空说明这已是链尾了} return head;// 返回头指针} void sort(stu **head,int n) { FILE *w=NULL; if(n==0) { w = fopen("sortByMath.dat","w"); } else if(n==1) { w = fopen("sortByEnglish.dat","w"); } else if(n==2) { w = fopen("sortByComputer.dat","w"); } else if(n==3) { w = fopen("sortByAvg.dat","w"); } stu *q,*t,*p; stu * new_head = new stu; new_head->next=*head; p=new_head; t=NULL; while(t!=new_head->next) { p=new_head; q=p->next; while(q->next!=t) { if((p->next->score[n]) next->score[n])) { p->next=q->next; q->next=q->next->next; p->next->next=q; } p=p->next; q=p->next; } t=q; } *head = new_head->next; p = *head; q = p->next; printf("学号姓名数学英语计算机平均成绩
"); int grade = 1; while(p!=NULL) { fprintf(w,"%s%s%g%g%g%.2f%d
", p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],grade); fprintf(stdout,"%s%s%g%g%g%.2f%d
", p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],grade); if(q!=NULL && q->score[3] score[3]) grade += 1; p=p->next; if(q!=NULL) q=q->next; } printf("
"); fclose(w);} void count(stu* head){ float cnt[4][8]; int i,j; for(i=0;inext; }}int main( ) { head=create(); printf("Sorting by average score:
"); sort(&head,3); system("pause"); return 0;}

参考代码如下,不过还是建议自己写一写比较好:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct student //结构体
{
char name[20]; //姓名
char number[20]; //学号
double math; //数学
double english; //英语
double chinese; //语文
double program; //程序
}s[50];

void head() //界面
{
printf(
"**********************************************************************\n"
"** **\n"
"** **\n"
"** 学生成绩管理系统 **\n"
"** **\n"
"** 1.信息录入 **\n"
"** 2.信息统计 **\n"
"** 3.信息浏览 **\n"
"** 4.信息查询 **\n"
"** 5.信息排序 **\n"
"** 6.信息删除 **\n"
"** 0.退出系统 **\n"
"** **\n"
"**********************************************************************\n"
);
}
void daoru(struct student s[], int* n) //文件导入函数
{
FILE *p;
int i=*n;
if((p=fopen("数据.txt", "r"))==NULL)
{
n=n;
}
else
{
while(!feof(p))
{
fscanf(p, "%s%s%lf%lf%lf%lf\n", s[i].name, s[i].number, &s[i].math, &s[i].english, &s[i].chinese, &s[i].program);
i++;
*n=*n+1;
}
}
fclose(p);
}
void daochu(struct student s[], int n)
{
FILE *p;
int i=0;
if((p=fopen("数据.txt", "w"))==NULL)
{
printf("无法打开此文件!");
}
else
{
while(i<n-1)
{
fprintf(p, "%s %s %lf %lf %lf %lf\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
i++;
}
fprintf(p, "%s %s %lf %lf %lf %lf", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
}
fclose(p);
}
void dayin(struct student s[], int n) //显示所有信息
{
int i;
double all=0.0;
printf("\n姓名\t\t学号\t\t数学\t英语\t语文\t程序\t总分\n");
for (i=0; i<n; i++)
{
all=s[i].math+s[i].english+s[i].chinese+s[i].program;
printf("%s\t\t%s\t\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program, all);
}
}
void shuru(struct student s[], int* n) //信息输入函数
{
int i=*n, j, k, m;
printf("请输入学生姓名:");
scanf("%s", s[i].name);
printf("请输入学生学号:");
for (j=0; ; j++)
{
m=0;
scanf("%s", s[i].number);
for (k=0; k<i; k++)
{
if (strcmp(s[i].number, s[k].number)==0)
{
m=m+1;
printf("学号重复,请重新输入学号:");
break;
}
}
if (m==0)
{
break;
}
}
printf("请输入数学成绩:");
scanf("%lf", &s[i].math);
printf("请输入英语成绩:");
scanf("%lf", &s[i].english);
printf("请输入语文成绩:");
scanf("%lf", &s[i].chinese);
printf("请输入程序成绩:") ;
scanf("%lf", &s[i].program);
printf("添加信息成功!\n");
*n=*n+1;
daochu(s, *n);
}
void paixu(struct student s[], int n) //排序函数
{
int i, j;
double all1, all2;
struct student stu;
for (i=0; i<n-1; i++)
{
for (j=i+1; j<n; j++)
{
all1=s[i].math+s[i].english+s[i].chinese+s[i].program;
all2=s[j].math+s[j].english+s[j].chinese+s[j].program;
if (all1<all2)
{
stu=s[i];
s[i]=s[j];
s[j]=stu;
}
}
}
printf("排序后的数据:\n");
dayin(s, n);
}
void chazhao(struct student s[], int n) //查找函数
{
char name[20], num[20];
int m1, m2=0, i, j;
printf("1.按姓名查找\n2.按学号查找\n选择查询方式(1或2):");
scanf("%d", &m1);
if (m1==1)
{
printf("请输入您要查找的学生姓名:");
scanf("%s", name);
for (i=0; i<n; i++)
{
if (strcmp(s[i].name, name)==0)
{
m2=m2+1;
if (m2==1)
{
printf("\n姓名\t\t学号\t数学\t英语\t语文\t程序\n");
}
printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
}
}
if (m2==0)
{
printf("没有此学生信息!\n");
}
}
else if (m1==2)
{
printf("请输入您要查找的学生学号:");
scanf("%s", num);
j=0;
for (i=0; i<n; i++)
{
if (strcmp(s[i].number, num)==0)
{
m2=m2+1;
if (m2==1)
{
printf("\n姓名\t\t学号\t数学\t英语\t语文\t程序\n");
}
printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
}
}
if (m2==0)
{
printf("没有此学生信息!\n");
}
}
}
void shanchu(struct student s[], int* n) //删除函数
{
char num[20];
int m=0, i, j;
printf("请输入您要删除的学生学号:");
scanf("%s", num);
for (i=0; i<=*n; i++)
{
if (strcmp(s[i].number, num)==0)
{
m=m+1;
for (j=i; j<*n; j++)
{
s[j]=s[j+1];
}
*n=*n-1;
}
}
if (m==0)
{
printf("没有此学生信息!\n");
}
else
{
daochu(s, *n);
printf("删除完毕!\n");
}
}
void allAndAver(struct student s[], int n)
{
int i ;
double all=0.0, aver=0.0;
for (i=0; i<n; i++)
{
all=s[i].math+s[i].english+s[i].chinese+s[i].program;
aver=all/4;
printf("%s\t\t%s\t\t%.1lf\t%.1lf\n", s[i].name, s[i].number, all, aver);
}
}
void Fail(struct student s[], int n) //统计单科不及格人数
{
int i, fail[4]={0};
for (i=0; i<n; i++)
{
if (s[i].math<60)
{
fail[0]++;
}
if (s[i].english<60)
{
fail[1]++;
}
if (s[i].chinese<60)
{
fail[2]++;
}
if (s[i].program<60)
{
fail[3]++;
}
}
printf("\n不及格信息:\n");
printf("数学不及格的人数为:%d人\n", fail[0]);
printf("英语不及格的人数为:%d人\n", fail[1]);
printf("语文不及格的人数为:%d人\n", fail[2]);
printf("程序不及格的人数为:%d人\n", fail[3]);
}
void Max(struct student s[], int n) //统计单科最高分人数
{
int i, counter[4]={0};
double max[4]={s[0].math, s[0].english, s[0].chinese, s[0].program};
for (i=0; i<n; i++)
{
if (s[i].math>max[0])
{
max[0]=s[i].math;
}
if (s[i].math>max[1])
{
max[1]=s[i].math;
}
if (s[i].math>max[2])
{
max[2]=s[i].math;
}
if (s[i].math>max[3])
{
max[3]=s[i].math;
}
}
for (i=0; i<n; i++)
{
if (s[i].math==max[0])
{
counter[0]++;
}
if (s[i].math==max[1])
{
counter[1]++;
}
if (s[i].math==max[2])
{
counter[2]++;
}
if (s[i].math==max[3])
{
counter[3]++;
}
}
printf("\n最高分信息:\n");
printf("数学最高分为:%.1lf, 人数为:%d人\n", max[0], counter[0]);
printf("英语最高分为:%.1lf, 人数为:%d人\n", max[1], counter[1]);
printf("语文最高分为:%.1lf, 人数为:%d人\n", max[2], counter[2]);
printf("程序最高分为:%.1lf, 人数为:%d人\n", max[3], counter[3]);
}
void Min(struct student s[], int n) //统计单科最低分人数
{
int i, counter[4]={0};
double min[4]={s[0].math, s[0].english, s[0].chinese, s[0].program};
for (i=0; i<n; i++)
{
if (s[i].math<min[0])
{
min[0]=s[i].math;
}
if (s[i].math<min[1])
{
min[1]=s[i].math;
}
if (s[i].math<min[2])
{
min[2]=s[i].math;
}
if (s[i].math<min[3])
{
min[3]=s[i].math;
}
}
for (i=0; i<n; i++)
{
if (s[i].math==min[0])
{
counter[0]++;
}
if (s[i].math==min[1])
{
counter[1]++;
}
if (s[i].math==min[2])
{
counter[2]++;
}
if (s[i].math==min[3])
{
counter[3]++;
}
}
printf("\n最低分信息:\n");
printf("数学最低分为:%.1lf, 人数为:%d人\n", min[0], counter[0]);
printf("英语最低分为:%.1lf, 人数为:%d人\n", min[1], counter[1]);
printf("语文最低分为:%.1lf, 人数为:%d人\n", min[2], counter[2]);
printf("程序最低分为:%.1lf, 人数为:%d人\n", min[3], counter[3]);
}
void tongji(struct student s[], int n) //统计函数
{
printf("统计信息如下:\n");
printf("\n姓名\t\t学号\t\t总分\t平均分\n");
allAndAver(s, n);
Max(s, n);
Min(s, n) ;
Fail(s, n);
}
int main() //主函数
{
int k, n=0;
daoru(s, &n);
daochu(s, n);
while (1)
{
head();
printf("\n请按对应的键选择相应的功能:");
scanf("%d",&k);
switch (k)
{
case 1:
shuru(s, &n);
break;
case 2:
tongji(s, n);
break;
case 3:
dayin(s, n);
break;
case 4:
chazhao(s, n);
break;
case 5:
paixu(s, n);
break;
case 6:
shanchu(s, &n);
break;
case 0:
exit(1);
break;
default : printf("请输入正确的命令!\n");
}
system("pause");
system("cls");
}
return 0;
}


c语言实现设计一个学生成绩管理系统课程
printf("数学最高分为:%.1lf, 人数为:%d人\\n", max[0], counter[0]); printf("英语最高分为:%.1lf, 人数为:%d人\\n", max[1], counter[1]); printf("语文最高分为:%.1lf, 人数为:%d人\\n", max[2], counter[2]); printf("程序最高分为:%.1lf, 人数为:%d人\\n", max[3], cou...

用c语言程序设计一个学生通讯录系统
3)要求:建立两个结构体数组(或链表、文件),包括至少5个用户的必要信息,能对数据进行补充、修改。执行一个具体的功能之后,程序将重新显示菜单。3、要求:1)用C语言实现系统;2)函数功能要划分好(结构化程序设计);3)界面友好(良好的人机交互),加必要的注释;4)提供程序测试方案。 展开  我来答 2个回答 #...

用c语言设计一个学生信息管理系统,急啊.谢谢
nbsp;nbsp;nbsp;nbsp;floatnbsp;avr;nbsp;nbsp;}nbsp;stu[SIZE];\/*nbsp;1--Inputnbsp;*\/voidnbsp;fin(){nbsp;intnbsp;i,j,s;charnbsp;f;nbsp;nbsp;FILEnbsp;*fp;nbsp;nbsp;printf(“nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;Warring!nbsp...

用C语言编写一个学生管理系统。
for(i=result; i<n-1; ++i) \/\/最后在main函数中,要将n的值减1 { num[i] = num[i+1]; strcpy(names[i],names[i+1]); math[i] = math[i+1]; english[i] = english[i+1]; computer[i] = computer[i+1]; sum[i] = sum[i+1]; } } return 1; } 已赞过 已踩过<...

课程设计用C语言做一个学生寝室安排系统,一个地方不懂
首先你要分析,床位和学生本人是关联的,那学生信息结构体中就要有这个成员。其次,寝室会有很多个,你可以创建一个寝室的结构体,STRU_ROOM,比如,男生寝室有10个寝室,女生寝室有5个寝室,那么:typedef struct boy_building { STRU_ROOM ROOM1;...STRU_ROOM ROOM10;}BOY_BUILDING;typedef...

求用C语言编写一个简单的学生信息管理程序和课程设计报告
求用C语言编写一个简单的学生信息管理程序,能实现对学生信息的简单管理。要求:建立一个4个学生的信息登记表,每个学生的信息包括:学号,姓名,和3门课程的成绩(FOX,C,ENGLISH)。程序运行时显示一个简单的菜单,例如:(1)信息输入:对4个学生的信息进行输入(2)总分统计:对每个学生的3门课程统计总分(3)总分排序:对4...

C语言课程设计大作业 设计一个实用的小型学生成绩管理程序
cout<<"1.输入学生信息"<<endl;cout<<endl;cout<<"2.显示学生信息"<<endl;cout<<endl;cout<<"3.删除学生信息"<<endl;cout<<endl;cout<<"4.增加学生信息"<<endl;cout<<endl;cout<<"5.退出学生管理系统"<<endl;cout<<"***"<<endl;int choice=0;cout<<" 请输入您的选择 "<<endl;...

设计一个C语言学生成绩管理系统
给你一个参考;记住学习永远是自己的,要学会自己思考,真学实用 \/*用链表实现学生成绩信息的管理*\/ include<stdio.h> include<stdlib.h> include<string.h> struct stud_node { int num;char name[20];int score;struct stud_node *next;};struct stud_node *Create_Stu_Doc();\/*新建链表*\/...

C语言课程设计《学生选课系统》的设计与实现
1、整个系统均用C语言实现;2、利用结构体数组来实现课程信息的数据结构设计;3、系统具有输入、显示、查询、删除、排序、插入,保存、读取等基本功能;4、系统的各个功能模块都用函数的形式来实现;5、可以将课程信息保存在文件中。6、可以将课程信息从文件中读取出来。设计参数1、假定有n门课程,每门课程有课程编号、...

怎么用C语言编一个学生成绩记录簿?
return -1;} void save2File(SeqList L){ fp = fopen(filePath, "w");for (int i = 0; i < L.length; i++)fprintf(fp, "%s\\t%s\\t%d\\n", L.arr[i].id, L.arr[i].name, L.arr[i].score);} void showMenu(SeqList L);void addInfo(SeqList L){ StudentInfo info;in...

辽中县15834626365: c语言 学生成绩管理系统设计学生成绩信息包括:学号,姓名,三门课程成绩(数学、英语和计算机)等.主要功能:(1) 计算各个学生的总分及平均分,... -
茹肺盐酸:[答案] 希望对你有所帮助.#include"stdio.h"#include"stdlib.h"#include"string.h"#define N 3typedef struct z1{ char no[11]; char name[15]; int score[N]; float sum; float average; int order; ...

辽中县15834626365: 编程如何用C语言编写一个学生成绩管理系统程序 -
茹肺盐酸: 我们才做了这个作业... #include <malloc.h> #include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct scorenode) #define DEBUG #include <string.h> struct scorenode { int number;/*学号*/ char name[8];/*姓名*/ float cj1;/*成绩1*/ ...

辽中县15834626365: 如何用C语言编一个学生成绩管理系统 -
茹肺盐酸: #include "stdio.h"#include "stdlib.h"#include "string.h"#define NULL 0 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 { ...

辽中县15834626365: c语言设计学生成绩管理系统 -
茹肺盐酸: #include<iostream> #include<cstdio> #include<cmath> #include<vector> #include<list> #include<cstring> #include<map> #include<set> #include<algorithm> #include<queue> using namespace std; int n; struct birth {int year,month,day; };struct ...

辽中县15834626365: 怎么用c语言编写一个学生成绩管理系统啊?急…… -
茹肺盐酸: C语言课程设计报告-------学生成绩简单管理程序 一、系统菜单的主要功能 (1)输入若干条记录 (2)显示所有记录 (3)按学号排序 (4)插入一条记录 (5)按姓名查找,删除一条记录 (6)查找并显示一条记录 (7)输出统计信息 (新增)...

辽中县15834626365: 用C语言完成学生成绩管理系统 -
茹肺盐酸: #include<stdio.h> #include<conio.h> #include <stdlib.h> #include<string.h> #define MAX 100void input(); void sort(); void show(); void del(); void quit(); int i=0; int k,j; char ch;struct student {int no;char name[20];float score1;float score2;float ...

辽中县15834626365: 求怎么用C语言做一个学生成绩管理系统 -
茹肺盐酸: 去年写的,你稍微改下加个成绩就行#include#include#include FILE *fp; struct student{ char name[10]; char number[12]; char age[3]; struct student *next; }; struct student *creat(); //手动创建链表 struct student *build_list(); //从文件读取信息...

辽中县15834626365: C语言:学生成绩管理系统 -
茹肺盐酸: /*该源码包括11个函数(包含main函数)①student_new②student_del③student_edit④score_input⑤score_edit⑥browser⑦page_title(main函数调用)⑧return_confirm(前五个函数调用)⑨search_id(第2/3/5个函数调用)⑩sort_it(browser函数调...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网