C语言写的学生成绩管理系统(链表)

合集下载

学生个人信息成绩管理系统(c语言动态链表不限定输入学生人数可查询保存的信息)

学生个人信息成绩管理系统(c语言动态链表不限定输入学生人数可查询保存的信息)

struct stu *creat(void) //创建链表的函数,并输入学生信息
{
n=0;
head=NULL;
do
{ p1=(struct stu * ) malloc(LEN);
if(n==1) a=head;
else a=a->next;
if (strcmp (x,a->college)==0)
printf("输出:%12d%10s%18s%10s%10s%5.1f\n",a->num,a->name,a->college,a->Class,a->subject,a->score);
n=i=0;
if (head2!=NULL)
do
{ n=n+1;
i=i+1;
if(n==1) a=head2;
else a=a->next;
if(i==1) sumnum=a->score;
//主模块
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <malloc.h>
#include <string.h>
#define LEN sizeof(struct stu)
struct stu
printf("输出:%12d%10s%18s%10s%10s%5.1f\n",a->num,a->name,a->college,a->Class,a->subject,a->score);

学生成绩管理系统(数据结构C语言版源代码)

学生成绩管理系统(数据结构C语言版源代码)

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

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

用链表与文件实现学生成绩管理系统

用链表与文件实现学生成绩管理系统
};
class Student
{
public:
Student();
void Ofile(ofstream &of);
void Infile(ifstream &f);
void Out();
void Set(char *name,int no,Class score);
char *GetName();
Student_First=new Student;
Read();
}
Function::~Function()
{
delete Student_First;
}
void Function::Add() //录入学生成绩信息函数
{
char name[20];
int no;
Class score;
char choose;
#include <iostream>
#include <fstream>
#include<cstring>
#include<conio.h>
#include <ctime>
using namespace std;
struct Class
{
int Chinese;
int Math;
int English;
do
{
cout<<"输入查询方式:\n1.按姓名查询\n2.按学号查询\n";
cin>>choose;
if(choose=='1')
{ cout<<"请输入您要查询的姓名:";

学生成绩管理系统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语言学生成绩管理系统(链表版)

#include <stdio.h> #include <stdlib.h>#include <string.h>#include <conio.h>#include <windows.h>#include <ctype.h>#define YES 1#define NO 0typedef struct{int num;float math_score;float engl_score;float chin_score;float phy_score;float chem_score;double aver_score;double sum_score;char sex;}StudentDate;//学生基本信息typedef struct student{char name[20];//学生姓名StudentDate one;//学生其他信息int rank;//成绩排名struct student *next;}Student, *List;Student *startCheck(void);//开始检查Student *createListHead(void);//创建链表的头void menu(void);//主菜单void sortList(Student *pHead);//排序链表void readListWithFile(Student *pHead, char *file_name);//从文件中读取数据,并保存在链表中void sorttList(Student *pHead);//排序链表int userChioce(Student *pHead);//用户选择int sortMenu(void);//打印选择菜单void passwordCheck(void);//密码检测void correctWord(void);//修改密码void addStudentInfo(Student *pHead);//向链表的末尾添加数据int scanMenu(void);//浏览菜单void findStudentInfo(Student *pHead);//查找学生信息void delStudentInfo(Student *pHead);//删除某一个学生信息void alterStudentInfo(Student *pHead);//修改学生信息void saveList(Student *pHead);//将链表保存在文件里void printList(Student *pHead);//打印链表void statisStudentInfo(Student *pHead);//查看学生信息int statisMenu(void);//查看菜单void gotoxy(int x, int y);//改变光标位置函数void inputData(Student *pHead, Student *node);//输入信息,并检测是否合法int main(void){Student *pHead;HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//得到窗口句柄SMALL_RECT rc = { 0, 0, 94 - 1, 30 - 1 }; //{Y位置,X位置,宽,高} SetConsoleWindowInfo(hOut, true, &rc);// 重置窗口位置和大小system("color 5B");//设置控制台颜色pHead = startCheck();//读取信息while (1){if (9 == userChioce(pHead)) //按9时退出系统{break;}}return 0;}void menu(void){system("CLS");//清屏printf("\n\n\n\t\t\t\t┌─────────────────┐\n"); printf("\t\t\t\t│学生成绩统计系统│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│ 1 增加学生记录│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│ 2 删除学生记录│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│ 3 修改学生记录│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│ 4 查找学生信息│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│ 5 统计学生成绩│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│ 6 查看学生成绩│\n");printf("\t\t\t\t├─────────────────┤\n");printf("\t\t\t\t│7 修改登陆密码│\n");printf("\t\t\t\t├─────────────────┤\n"); printf("\t\t\t\t│8 关于│\n");printf("\t\t\t\t├─────────────────┤\n"); printf("\t\t\t\t│9 退出系统│\n");printf("\t\t\t\t└─────────────────┘\n"); }void gotoxy(int x, int y)//x为列坐标,y为行坐标{COORD pos = { x, y };HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hOut, pos);}Student *startCheck(void){Student *pHead;FILE *fp1;char password[20] = "123456";int i;if ((fp1 = fopen("password.dat", "rb")) == NULL)//若密码文件不存在,新建密码文件{fp1 = fopen("password.dat", "wb");fwrite(password, 20, 1, fp1);fclose(fp1);printf("密码初始化完成!(默认密码为:123456)");passwordCheck();}else{passwordCheck();}//读条system("CLS");system("title 学生成绩统计系统-载入中");//将标题栏命名为“学生成绩统计系统”printf("\n\n\t\t\t欢迎进入本系统!正在载入.....");printf("\n\n\n\n\t\t\t┏━━━━━━━━━━┓\n"); printf("\t\t\t┃┃\n");printf("\t\t\t┗━━━━━━━━━━┛\n");gotoxy(26, 7);for ( i = 0; i < 10; i++){printf("█");Sleep(100);}pHead = createListHead();readListWithFile(pHead, "stud.dat");return pHead;}Student *createListHead(void){Student *pHead;pHead = (List)malloc(sizeof(Student));pHead->next = NULL;return pHead;}void readListWithFile(Student *pHead, char *file_name) { FILE *fp;Student *p1, *p2;int count, rank = 0;StudentDate dat;char stu_name[20];fp = fopen(file_name, "r");if (fp == NULL){fp = fopen(file_name, "w");fclose(fp);return;}fseek(fp, 0L, 2);count = ftell(fp);p1 = pHead;fp = fopen(file_name, "r");while (!feof(fp)){p2 = (List)malloc(sizeof(Student));fscanf(fp, "%d%s %c%f%f%f%f%f\n", &p2->one.num, p2->name, &p2->one.sex, &p2->one.chin_score,&p2->one.math_score, &p2->one.engl_score, &p2->one.chem_score, &p2->one.phy_score);p2->one.sum_score = (double)(p2->one.chin_score + p2->one.chin_score + p2->one.engl_score +p2->one.chem_score + p2->one.phy_score);p2->one.aver_score = p2->one.sum_score / 5;p2->next = NULL;p1->next = p2;p1 = p2;if (ftell(fp) == count){break;}}//将链表排序,并初始化排名for (p1 = pHead->next; p1 != NULL; p1 = p1->next) {for (p2 = p1->next; p2 != NULL; p2 = p2->next) {if (p2->one.aver_score > p1->one.aver_score){dat = p2->one;strcpy(stu_name, p2->name);p2->one = p1->one;strcpy(p2->name, p1->name);p1->one = dat;strcpy(p1->name, stu_name);}}p1->rank = ++rank;}fclose(fp);}void sortList(Student *pHead) {Student *p1, *p2; StudentDate dat;char stu_name[20];int bum, count = 0, rank;。

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

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

C语言学生成绩信息管理系统源代码一、概述在学校教学管理工作中,学生成绩信息管理是一个至关重要的环节。

为了方便高效地进行学生成绩信息的录入、查询和管理,我们可以利用C语言编写一个学生成绩信息管理系统。

本文将介绍该系统的源代码,并对其进行详细的解释和讲解。

二、系统功能需求1. 录入学生成绩信息2. 查询学生成绩信息3. 修改学生成绩信息4. 删除学生成绩信息5. 显示所有学生成绩信息三、系统源代码实现```c#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义学生结构体typedef struct student {int id; // 学号char name[20]; // 尊称float score; // 成绩} Student;// 全局变量int count = 0; // 记录学生数量Student students[100]; // 学生数组// 录入学生成绩信息void inputStudentInfo() {printf("请输入学生学号:");scanf("d", students[count].id);printf("请输入学生尊称:");scanf("s", students[count].name); printf("请输入学生成绩:");scanf("f", students[count].score); count++;}// 查询学生成绩信息void queryStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {printf("学生信息如下:\n");printf("学号:d\n", students[i].id);printf("尊称:s\n", students[i].name);printf("成绩:.2f\n", students[i].score);return;}}printf("未找到该学生信息!\n");}// 修改学生成绩信息void modifyStudentInfo(int id, char *name, float score) { for (int i = 0; i < count; i++) {if (students[i].id == id) {strcpy(students[i].name, name);students[i].score = score;printf("修改成功!\n");return;}}printf("未找到该学生信息!\n");}// 删除学生成绩信息void deleteStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {for (int j = i; j < count - 1; j++) { students[j] = students[j + 1]; }count--;printf("删除成功!\n");return;}}printf("未找到该学生信息!\n");}// 显示所有学生成绩信息void displayAllStudentInfo() {if (count == 0) {printf("暂无学生信息!\n");return;}printf("学生成绩信息如下:\n");for (int i = 0; i < count; i++) {printf("学号:d,尊称:s,成绩:.2f\n", students[i].id, students[i].name, students[i].score);}}int m本人n() {int choice, id;char name[20];float score;while (1) {printf("欢迎使用学生成绩信息管理系统!\n");printf("1. 录入学生成绩信息\n");printf("2. 查询学生成绩信息\n");printf("3. 修改学生成绩信息\n");printf("4. 删除学生成绩信息\n");printf("5. 显示所有学生成绩信息\n");printf("6. 退出系统\n");printf("请选择操作:");scanf("d", choice);switch (choice) {case 1: // 录入学生成绩信息inputStudentInfo();break;case 2: // 查询学生成绩信息printf("请输入要查询的学生学号:"); scanf("d", id);queryStudentInfo(id);break;case 3: // 修改学生成绩信息printf("请输入要修改的学生学号:"); scanf("d", id);printf("请输入修改后的尊称:");scanf("s", name);printf("请输入修改后的成绩:");scanf("f", score);modifyStudentInfo(id, name, score); break;case 4: // 删除学生成绩信息printf("请输入要删除的学生学号:"); scanf("d", id);deleteStudentInfo(id);break;case 5: // 显示所有学生成绩信息displayAllStudentInfo();break;case 6: // 退出系统printf("感谢使用学生成绩信息管理系统!\n");exit(0);default:printf("请输入正确的操作!\n");}}return 0;}```四、系统运行效果1. 运行系统后,会出现一个菜单,根据需求选择相应的操作。

学生成绩管理链表C代码

学生成绩管理链表C代码

学生成绩管理#include <stdio.h>#include <stdlib.h>#include <Windows.h>#include <string.h>#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;typedef struct{char num[10]; // 学号char name[20]; // 姓名float score; // 成绩}student;typedef student ElemType;typedef struct LNode{ElemType data;struct LNode *next;}LNode,*LinkList;typedef LinkList Sta;//创建一个空表Sta CreateList_L(LinkList L){L=(LinkList)malloc(sizeof(LNode));if(!L) return OVERFLOW;L->next=NULL;return L;}Status ListInsert_L(LinkList L,int i,ElemType e)//在带头结点的单链表L中第i个位置前插入某个学生的信息{LinkList p,s;p=L;int j=0;while(p&&j<i-1){p=p->next;++j;}if(!p||j>i-1) return ERROR;s=(LinkList)malloc(sizeof(LNode));s->data=e;s->next=p->next;p->next=s;return OK;}//删除学生信息Status ListDelete_L(LinkList L,int i,ElemType *e) {LinkList p=L;int j=0;while(p->next&&j<i-1){p=p->next;++j;}if(!(p->next)||j>i-1)return ERROR;LinkList q=NULL;q=p->next;p->next=q->next;*e=q->data;free(q);return OK;}Status LocateElem_L(LinkList L,student e){if(L==NULL)printf("OK");LinkList p=L->next;if(p==NULL)printf("OK");int i=1;while(p){if(strcmp(p->data.num,e.num)==0) return i;p=p->next;i++;}return 0;}Status GetElem(LinkList L,int i,ElemType *e) // 访问链表,找到i位置的数据域,返回给e {LinkList p;p=L->next;int j=1;while(p&&j<i){p=p->next;++j;}if(!p||j>i) return ERROR;*e=p->data;return OK;}Status ListLength(LinkList L){int i=0;LinkList p=L->next;while(p){i++;p=p->next;}return i;}Status input(char *stu,LinkList L){int n;student s;FILE *fp;fp=fopen(stu,"w");if(fp == NULL){perror("fopen"); // 文件打开失败,打印错误信息return -1;}printf("\n\t请输入学生人数:");scanf("%d",&n);printf("\n\t请输入学生学号、姓名和成绩\n");for(int i=1;i<=n;i++){printf("\n\t学号:");scanf("%s",s.num);printf("\t姓名:");scanf("%s",);printf("\t成绩:");scanf("%f",&s.score);printf("\n");fprintf(fp,"%s %s %f\n",s.num,,s.score);ListInsert_L(L,i,s);}printf("\n\t输入完毕!\n\t");system("pause");fclose(fp);return OK;}void load(char *stu,LinkList L){student s;int i=1;FILE *fp;fp=fopen(stu,"r");if(fp == NULL){printf("can't open file!") ; // 文件打开失败,打印错误信息exit(0);}printf("\n\t\t----学生成绩信息表----\n\n");printf("\n\t\t学号\t姓名\t成绩\n");while(fscanf(fp,"%s%s%f",s.num,,&s.score)!=EOF){ListInsert_L(L,i,s);printf("\n\t\t%s\t%s\t%f\n",s.num,,s.score);i++;}fclose(fp);}//保存Status save(char *stu,LinkList L){LinkList p=L->next;FILE *fp;fp=fopen(stu,"w");if(fp == NULL){perror("fopen"); // 文件打开失败,打印错误信息return -1;}while(p){fprintf(fp,"%s\t%s\t%f\n",p->data.num,p->,p->data.score);p=p->next;}fclose(fp);return OK;}//输出单个学生信息Status Single_Out(student *e){printf("\n\t%s\t%s\t%f",e->num,e->name,e->score);return OK;}//遍历链表并输出void Listtraverse(LinkList L){int i=1;LinkList s=L->next;if(s==NULL)printf("\n用户尚未录入任何数据!!\n");else{printf("\n\t\t--当前全部学生信息如下--\n");printf("\n\t\t学号\t姓名\t成绩\n");while(s){printf("\n\t%d\t",i);printf(s->data.num);printf("\t");printf(s->);printf("\t");printf("%f",s->data.score);printf("\n");s=s->next;i++;}}}int main(){int ID;int keywords;printf("\n\n\t用户名:");scanf("%d",&ID);printf("\n\n\t用户密码:");scanf("%d",&keywords);if(ID==123&&keywords==123){fun();}else{printf("\n\n\t用户名或密码输入错误,系统拒绝访问\n\t请按任意键退出");}system("pause");return 0;}void fun(){system("cls");student s;LinkList L=CreateList_L(L);int i,a;char c;int flag=1;char addlist[30];printf("\n\n\t请输入成绩表的文件名:");scanf("%s",addlist);FILE *fp;fp=fopen(addlist,"r");if(fp == NULL){printf("\n\n\t成绩表不存在,建立一个新的成绩表(Y/N)?");scanf(" %c",&c);if(c=='Y'||c=='y'){fclose(fp);input(addlist,L);}}else{fclose(fp);load(addlist,L);printf("\t\t\n");system("pause");}while(flag){system("cls"); //清屏printf("\n\t---\t 欢迎使用学生管理系统\t---\t\n\n");printf("\n\t\t -------------------- \t\t\n\n");printf("\t|*\t 1 输入学生信息\n\n");printf("\t|*\t 2 删除学生信息\n\n");printf("\t|*\t 3 修改学生信息\n\n");printf("\t|*\t 4 按学号查找学生\n\n");printf("\t|*\t 5 输出成绩表\n\n");printf("\t|*\t 6 保存\n\n");printf("\t|*\t 7 退出\n\n");printf("\t请输入序号选择功能:");scanf("%d",&a);switch(a){case 1:system("cls");printf("\n\t请输入插入位置:");scanf("%d",&i);printf("\n\t请输入学生信息");printf("\n\t学号:");scanf("%s",s.num);printf("\n\t姓名:");scanf("%s",);printf("\n\t成绩:");scanf("%f",&s.score);if(ListInsert_L(L,i,s)){printf("\n\t插入成功\n");}else printf("\n\t插入失败\n");system("pause");break;case 2:system("cls");printf("\n\t请输入要删除的学生学号:");scanf("%s",s.num);i=LocateElem_L(L,s);if(i){if(ListDelete_L(L,i,&s))printf("\n\n\t删除成功!");else printf("\n\n\t删除失败!");}else printf("\n\n\t学号不存在,请核对后输入!");system("pause");break;case 3:system("cls");printf("\n\t请输入要修改的学生学号:");scanf("%s",s.num);i=LocateElem_L(L,s);if(i){printf("\n\n\t确实要修改么Y/N?");scanf(" %c",&c);if(c=='y'||c=='Y'){ListDelete_L(L,i,&s);printf("\n\n\t请输入修改后的信息:\n");printf("\n\t学号:");scanf("%s",s.num);printf("\t姓名:");scanf("%s",);printf("\t成绩:");scanf("%f",&s.score);ListInsert_L(L,i,s);printf("\n\t修改成功!\n\t");}}else printf("\n\n\t学号为%s的学生不存在!!\n",s.num);system("pause");break;case 4:system("cls");printf("\n\n\t请输入要查找的学生学号:");scanf("%s",s.num);i=LocateElem_L(L,s);GetElem(L,i,&s);if(i){Single_Out(&s);system("pause");}else{printf("\n\n\n\t学号为%s的学生不存在,请核对后输入!!\n",s.num);system("pause");}break;case 5:system("cls");Listtraverse(L);system("pause");break;case 6:system("cls");printf("\n\n\t请输入文件名称:");scanf("%s",addlist);save(addlist,L);printf("\n\n\t保存成功!\n\n\t");system("pause");break;case 7:flag=0;break;}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
while(p!=NULL){
if(p->student.num==x)
break;
default: printf("\n Wrong Selection !(选择错误,请重选)\n");
back();
}
}
}
void menu()
{
printf(" \n学生成绩统计与分析系统\n");
printf(" \n菜单\n\n");
printf(" \n 1.显示所有学生的信息\n");
};
struct studcode{
struct stud student;
struct studcode *next;
};
void menu();
void input(struct studcode **);
void output(struct studcode *);
void binsearch(struct studcode *);
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct stud{
long num;
char name[20];
float sx;
float dx;
float ts;
float dl;
float cx;
float zf;
float pj;
p->student.zf=p->student.sx+p->student.dx+p->student.ts+p->student.dl+p->student.cx;
p->student.pj=p->student.zf/5;
p->next=*headp;
*headp=p;
}
}
void output(struct studcode *head)
printf(" \n 2.查找某学号的学生信息\n");
printf(" \n 3.插入某学生的信息\n");
printf(" \n 4.删除某学号学生的信息\n");
printf(" \n 5.统计各门课程成绩在90分以上学生所占百分比\n");
printf(" \n 6.统计各门课程成绩在60分以下学生所占百分比\n");
void insert(struct studcode **);
void delet(struct studcode **);
void good(struct studcode *);
void fail(struct studcode *);
void sort(struct studcode *);
while (flag)
{
system("cls");
menu();
printf("请选择:");
getchar();
choose=getchar();
switch(choose)
{
case '1':
output(head);
back();
break;
case '2':
binsearch(head);
printf(" \n 7.按总分降序排序,依高低排出名次\n");
printf(" \n 0.退出\n\n");
}
void back()
{
int x;
printf("\n");
do{
printf("按1返回菜单界面:");
scanf("%d",&x);
}while(x!=1);
}
void input(struct studcode **headp)
{
struct studcode *p;
while(1)
{
p=(struct studcode *)malloc(sizeof(struct studcode));
scanf("%ld",&p->student.num);
if(p->student.num==0) break;
scanf("%s%f%f%f%f%f",&p->,&p->student.sx,&p->student.dx,&p->student.ts,&p->student.dl,&p->student.cx);
back();
break;
case '3':
insert(&head);
output(head);
back();
break;
case '4':
delet(&head);
output(head);
back();
break;
case '5':
good(head);
back();
break;
case '6':
p=pห้องสมุดไป่ตู้>next;
}
printf("\n");
}
void binsearch(struct studcode *head)
{
struct studcode *p;
int k=1;
long x;
p=head;
printf("请输入需要查找的学生的学号:");
scanf("%ld",&x);
printf("\n");
void back();
void main()
{
char choose;
int flag=1;
struct studcode *head;
head=NULL;
printf("请先录入学生成绩信息\n");
printf("输入学生学号姓名高数、英语读写、英语听说、计算机导论和程序设计的成绩\n");
input(&head);
{
struct studcode *p;
p=head;
printf("学号\t姓名\t高数\t读写\t听说\t导论\t程序\t总分\t平均分\n");
while(p!=NULL){
printf("%-ld\t%-4s\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\t%-0.2f\n",p->student.num,p->,p->student.sx,p->student.dx,p->student.ts,p->student.dl,p->student.cx,p->student.zf,p->student.pj);
fail(head);
back();
break;
case '7':
sort(head);
output(head);
back();
break;
case '0':
flag=0;
printf("\n *** The End! ***\n");
printf("\n ####感谢使用,欢迎再次登录,拜拜!####\n");
相关文档
最新文档