学生成绩管理系统源程序

合集下载

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

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

数据结构课程设计报告题目:学生成绩管理系统学生姓名:学号:班级:指导教师:课程设计评分表学生姓名:班级:学号:课程设计题目:学生成绩管理任务:本题对学生的某门课程成绩管理做一个简单的模拟,设计一个学生成绩管理系统。

假设学生信息包括:学号、姓名、性别,课程的成绩信息有平时成绩、实验成绩、期未成绩、总评成绩,总评成绩=平时成绩*0.4+实验成绩*0.3+期未成绩*0.3,用菜单选择方式完成下列功能:(1)登记学生成绩;(2)插入学生成绩;(3)修改学生成绩;(4)删除学生成绩;(5)查询学生成绩;(5)对学生成绩进行排序;(6)输出学生成绩。

在完成上术基本要求的操作后,要应用功能(6)进行测试。

一、设计思路二、设计说明与调试分析三、源程序代码四、测试结果五、设计心得六、参考文献一、设计思路本系统是一个学生成绩管理系统,输入数据类型主要是string等数据类型,输入内容包括:学生学号、姓名、平时成绩、实验成绩、期末成绩等数据。

用户在输入学生数据时要保证输入数据格式的正确性,系统不会自动检测输入的数据是否正确。

输出形式与输入形式类似,根据需要可以选择显示输入的各项内容,显示内容包括:学生学号、姓名、平时成绩、实验成绩、期末成绩,总评成绩。

用户运行程序后进入系统主界面在主界面用户可以输入所有学生的数据并保存到文件中,也可以读取文件中已有的学生数据。

本系统同时只能对一个数据文件进行相关操作。

当用户读取学生数据后可对其进行显示、文件尾增加、删除、查询、排序、修改等相关操作。

用户在操作过程中可随时对当前文件进行保存到文件操作,以防止修改的数据丢失。

二、设计说明与调试分析主要编写部分学生成绩管理系统学生成绩管理系统内,共有两个类,分别为学生类和管理类。

学生对象用vector容器来存放。

管理类共包含了7个不同的函数,而每一个函数是一个模块,并对它们具体编写,使之具有不同的功能,能实行相应的操作。

2.1 本程序中定义的类及其函数:1.Student 类class Student//定义一个Student类//{public:Student(string nu = "0", string na = "0", int ping = 0, int shi = 0, int qi = 0);void set_student(const string &Nu, const string &Na, int Ping, int Shi, int Qi);void set_pingshi(int ping) { pingshi = ping; }//类成员函数set_pingshi,设置平时成绩//void set_shiyan(int shi) {shiyan = shi; }//类成员函数set_shiyan,设置实验成绩//void set_qimo(int qi) { qimo = qi; } //类成员函数set_qimo,设置期末成绩//bool search(const string &num) { return number == num; }void display();//声明display显示函数//bool operator<(const Student&);//运算符重载//Student& swap(Student&);public:string number; //定义学生的学号//string name; //定义学生的姓名//int pingshi/*平时成绩*/,shiyan/*实验成绩*/, qimo/*期末成绩*/;};2. Manage 主要功能类class Manage//主要功能类//{private:vector <Student> stu;public:Manage() {}void Add(Student&s);//声明添加学生信息的函数//void Add2(Student&s);//声明登记学生信息的函数//void Chaxun(); //声明查询学生信息的函数//void Paixu();//声明将学生的成绩的平均数进行排序的函数//void Revise(); //声明修改学生信息的函数//void Delete(); //声明删除学生信息的函数//void Save(); //声明存储学生信息的函数//void Load(); //声明读取学生信息的函数//void Play(); //声明显示学生信息的函数//};2.2 管理类中各模块功能分析1、登记学生信息,登记大量学生信息包括增添学生的姓名、学号、平时成绩、实验成绩、期末成绩等用void Add2(Student&s)函数去实现。

学生成绩管理系统,数据结构课程设计

学生成绩管理系统,数据结构课程设计

课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目:学生成绩管理系统已知技术参数和设计要求:现有学生成绩信息文件1(cj1。

txt),内容如下姓名学号语文数学英语张明明 01 67 78 82李成友 02 78 91 88张辉灿 03 68 82 56王露 04 56 45 77陈东明 05 67 38 47…. 。

. 。

…学生成绩信息文件2(cj2.txt),内容如下:姓名学号语文数学英语陈果 31 57 68 82李华明 32 88 90 68张明东 33 48 42 56李明国 34 50 45 87陈道亮 35 47 58 77…. 。

.. .. …试编写一管理系统,其基本功能要求:实现对两个文件数据进行合并,生成新文件cj3.txt抽取出三科成绩中有补考的学生并保存在一个新文件cj4.txt对合并后的文件3。

txt中的数据按总分降序排序(至少采用两种排序方法实现)输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)要求使用结构体,链或数组等实现上述要求。

采用多种方法且算法正确者,可适当加分。

要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)数据结构课程设计说明书一、需求分析1、问题描述现如今,学校人数的暴涨,对学生基本信息的录入,保存量越来越大,为了简化对工作人员的操作,故设计一个程序来完成对学生基本信息的录入,保存,编辑等简单操作。

2、基本任务(1)对学生信息表cj1和cj2进行合并;(2)把合并的信息生成cj3;(3)把cj3中有补考的学生信息生成cj4;(4)对合并后的文件3。

txt中的数据按总分降序排序;(5)输入一个学生姓名后,能查找到此学生的信息并输出结果。

二、概要设计为了完成需求分析的基本任务,主要从以下3个方面进行设计:1、主界面设计为了实现学生成绩管理系统的各项功能,设计了一个含有多个菜单项的主控菜单模块以链接系统的各项功能,以方便用户使用系统。

数据结构课程设计-学生成绩管理系统

数据结构课程设计-学生成绩管理系统

广东学院《数据结构课程设计》题目:学生成绩管理系统学号:姓名:年级:计算机科学与技术6班学院:智能制造学院专业:指导教师:目录一、问题描述与基本要求 (3)1.1问题描述 (3)1.2基本要求 (3)二、数据结构的设计 (3)2.1数据结构的选择 (3)2.2单链表的定义 (3)2.3重要函数的定义及说明 (4)三、软件模块结构图....................... 错误!未定义书签。

3.1大体模块关系图 (13)3.2各模块具体分析..................... 错误!未定义书签。

四、程序流程图 (15)五、源程序 (17)六、调试分析............................. 错误!未定义书签。

6.1程序错误修改及完善的过程 (37)6.2最终程序所有功能运行结果........... 错误!未定义书签。

6.3测试数据 (39)七、用户使用手册 (40)八、心得体会............................. 错误!未定义书签。

一、问题描述与基本要求1.1问题描述设计一个学生管理系统,建立初始学生成绩,添加/插入,查找,修改,删除学生成绩。

1.2基本要求系统设计要求:1、能比较迅速地实现添加学生的学号,姓名和成绩2、能比较迅速地通过学生的学号或姓名查询、修改或删除学生成绩3、当有学生时,输出所有学生的成绩信息,包括语文,数学,英语的成绩二、数据结构的设计2.1数据结构的选择课程设计题目的要求是,要较简单迅速地实现添加、查询、修改、删除学生成绩的的功能,于是我很自然地想到了可以用单链表的结构,通过编写相应功能函数来实现建立新结点、删除结点、修改结点中数据域的内容、输出结点数据域中的内容等功能,即可满足课程设计题目的要求。

2.2单链表的定义先定义单链表结点的数据域,数据域包括学生姓名、学生学号、学生成绩等学生信息,然后再定义链表结点,链表结点包括结点数据域和结点链域,最后再定义指向链表结点的指针。

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

学生成绩管理系统源代码

学生成绩管理系统源代码

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dos.h>#include<ctype.h>#include<conio.h>#include<stddef.h>#include<time.h>#define PRINT1 textcolor(12); cprintf("\r 请按任意键返回主菜单\n\r");textcolor(10); getch();clrscr(); break;int shoudsave=0;struct student /* 学生信息结构体定义*/{char num[10],name[20],cla[4];int score1,score2,score3,total,ave;};typedef struct node{struct student data;struct node *next;}Node,*L;void print1(){cprintf("\r======================================================================= =========");}void print2(){cprintf("\n\r 1.输入学生成绩信息在这里你可以按照提示输入学生的班级,学号,姓名及各科成绩.\n");cprintf("\n\r 2.注销学生成绩信息在这里你可以按照学号或姓名将某名学生的信息从本系统中删除.\n");cprintf("\n\r 3.查询学生成绩信息在这里你可以按照学号或姓名查询某一名学生的信息.\n");cprintf("\n\r 4.修改学生成绩信息在这里你可以按照提示修改某一名学生的学号,姓名及各科成绩.");cprintf("\n\r 5.学生成绩信息排序在这里你可以看到所有学生的各科成绩.\n"); cprintf("\n\r 6.学生成绩信息统计在这里本系统将为你显示所有科目的最高分及最低分所得学生.\n");cprintf("\n\r 7.显示学生成绩信息在这里你可以看到系统中所有学生的信息.\n"); cprintf("\n\r 8.保存学生成绩信息在这里你可以将学生你信息保存到内存中.\n"); cprintf("\n\r 9.帮助学生成绩信息在这里你可以获得帮助信息.\n");cprintf("\n\r 0.退出系统在这里选择是否保存后,你可以安全的退出本系统.\n\n\r ");}void menu(){cprintf("\n\r\xc9\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xc d\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcb\xcd\xcd\xcd\xcd\ xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xc d\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xbb");cprintf("\r\xba 学生信息导入\xba 学生信息处理\xba");cprintf("\r\xba____________________________________\xba___________________________ _______________\xba");cprintf("\r\xba 1-->输入学生成绩信息\xba 6-->学生成绩信息统计\xba");cprintf("\r\xba 2-->注销学生成绩信息\xba 7-->显示学生成绩信息\xba");cprintf("\r\xba 3-->查询学生成绩信息\xba 8-->保存学生成绩信息\xba");cprintf("\r\xba 4-->修改学生成绩信息\xba 9-->帮助学生成绩信息\xba");cprintf("\r\xba 5-->学生成绩信息排序\xba 0-->退出系统\xba");cprintf("\r\xc8\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\ xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xca\xcd\xcd\xcd\xcd\xc d\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\ xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xbc");}void wrong(){cprintf("\n\r输入错误!请验证后重新输入.\n");}void notfind(){cprintf("\n\r该学生信息不存在!请验证后重新输入.\n");}void printc() /* 此函数用于输出中文格式*/{cprintf("\r学号姓名班级英语数学C语言总分平均分\n ");}void printe(Node *p) /* 此函数用于输出英文格式*/{cprintf("\r%-4s%-4s%4s%5d%5d%8d%5d%7d\n\r",p->data.num,p->,p->data.cla,p->dat a.score3,p->data.score2,p->data.score1,p->data.total,p->data.ave);}Node* Locate(L l,char findinfo[],char nameornum[]) /* 该函数用于定位连表中符合要求的接点,并返回该指针*/{Node *r;if(strcmp(nameornum,"num")==0)/* 按学号查询*/{r=l->next;while(r!=NULL){if(strcmp(r->data.num,findinfo)==0)return r;r=r->next;}}else if(strcmp(nameornum,"name")==0) /* 按姓名查询*/{r=l->next;while(r!=NULL){if(strcmp(r->,findinfo)==0)return r;r=r->next;}}return 0;}void input(L l) /* 增加学生*/{Node *p,*r,*s;char num[10];r=l;s=l->next;while(r->next!=NULL)r=r->next;/* 将指针置于最末尾*/while(1){ cprintf("\r如果输入完毕,请按任意键返回主菜单\n");cprintf("\r如果你还想输入,请按y(yes)继续\n\r");scanf("%s",num);if(strcmp(num,"y")==0){ cprintf("请你输入学号:");scanf("%s",num); } else break;while(s){if(strcmp(s->data.num,num)==0){printf("\t学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\n",num);print1();printc();printe(s);print1();printf("\n");getch();return;}s=s->next;}p=(Node *)malloc(sizeof(Node));strcpy(p->data.num,num);cprintf("\r请你输入姓名:");scanf("%s",p->);getchar();cprintf("\r请你输入班级:");scanf("%s",p->data.cla);getchar();cprintf("\r请你输入c语言成绩(0-100):");scanf("%d",&p->data.score1);getchar();cprintf("\r请你输入数学成绩(0-100):");scanf("%d",&p->data.score2);getchar();cprintf("\r请你输入英语成绩(0-100):");scanf("%d",&p->data.score3);getchar();p->data.total=p->data.score3+p->data.score1+p->data.score2;p->data.ave=p->data.total / 3; /* 信息输入已经完成*/p->next=NULL;r=p;shoudsave=1;}}void query(L l) /* 查询学生信息*/{int select;char findinfo[20];Node *p;if(!l->next){cprintf("\n 没有信息可以查询!\n");return;}cprintf("\n1==>按学号查找\n\r2==>按姓名查找\n\r");scanf("%d",&select);if(select==1) /* 学号*/{cprintf("\r请你输入要查找的学号:");scanf("%s",findinfo);p=Locate(l,findinfo,"num");if(p){cprintf(" 查找结果\n\r");print1();printc();printe(p);print1();}elsenotfind();}else if(select==2) /* 姓名*/{cprintf("\r请你输入要查找的姓名:");scanf("%s",findinfo);p=Locate(l,findinfo,"name");if(p){cprintf(" 查找结果\n\r");print1();printc();print1();}elsenotfind();}elsewrong();}void Delete(L l) /* 删除学生信息*/{int select;Node *p,*r;char findinfo[20];if(!l->next){cprintf("\n 没有信息可以删除!\n");return;}cprintf("\n1==>按学号删除\n\r2==>按姓名删除\n\r");scanf("%d",&select);if(select==1){cprintf("\r请你输入要删除的学号:");scanf("%s",findinfo);p=Locate(l,findinfo,"num");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);cprintf("\n\r该学生已经成功删除!\n");shoudsave=1;}elsenotfind();}else if(select==2){cprintf("\r请你输入要删除的姓名:");scanf("%s",findinfo);p=Locate(l,findinfo,"name");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);cprintf("\n\r该学生已经成功删除!\n");shoudsave=1;}elsenotfind();}else wrong();}void modify(L l) /*修改学生信息*/{Node *p;char findinfo[20];if(!l->next){cprintf("\n\r没有信息可以修改!\n");return;}cprintf("\r请你输入要修改的学生学号:");scanf("%s",findinfo);p=Locate(l,findinfo,"num");if(p){cprintf("\r请你输入新学号(原来是%s):",p->data.num);scanf("%s",p->data.num);cprintf("\r请你输入新姓名(原来是%s):",p->);scanf("%s",p->);getchar();cprintf("\r请你输入新班级(原来是%s):",p->data.cla);scanf("%s",p->data.cla);cprintf("\r请你输入新的c语言成绩(原来是%d分):",p->data.score1);scanf("%d",&p->data.score1);getchar();cprintf("\r请你输入新的数学成绩(原来是%d分):",p->data.score2);scanf("%d",&p->data.score2);getchar();cprintf("\r请你输入新的英语成绩(原来是%d分):",p->data.score3);scanf("%d",&p->data.score3);p->data.total=p->data.score3+p->data.score1+p->data.score2;p->data.ave=p->data.total/3;cprintf("\n\r信息修改成功!\n");shoudsave=1;}elsenotfind();}void display(L l){/*显示全部学生信息*/int count=0;Node *p;p=l->next;if(!p){cprintf("\n\r 没有信息可以显示!\n");return;}cprintf(" 显示结果");print1();printc();while(p){ if(count%5==0) getch();printe(p);p=p->next;count++;}print1();cprintf("\n");}void Statistic(L l) /*统计学生信息*/{Node *pm_max,*pe_max,*pc_max,*pt_max,*pa_max; /* 用于指向分数最高的接点*/ Node *pm_min,*pe_min,*pc_min,*pt_min,*pa_min;Node *r=l->next;if(!r){cprintf("\n\r 没有信息可以统计!\n");return ;}pm_max=pe_max=pc_max=pt_max=pa_max=pm_min=pe_min=pc_min=pt_min=pa_min=r; while(r!=NULL){if(r->data.score1>=pc_max->data.score1)pc_max=r;if(r->data.score1<=pc_min->data.score1)pc_min=r;if(r->data.score2>=pm_max->data.score2)pm_max=r;if(r->data.score2<=pm_min->data.score2)pm_min=r;if(r->data.score3>=pe_max->data.score3)pe_max=r;if(r->data.score3<=pe_min->data.score3)pe_min=r;if(r->data.total>=pt_max->data.total)pt_max=r;if(r->data.total<=pt_min->data.total)pt_min=r;if(r->data.ave>=pa_max->data.ave)pa_max=r;if(r->data.ave<=pa_min->data.ave)pa_min=r;r=r->next;}cprintf("====================================统计结果====================================\n");cprintf("\r总分最高者: %-16s %d分\n",pt_max->,pt_max->data.total); cprintf("\r平均分最高者: %-16s %d分\n",pa_max->,pa_max->data.ave); cprintf("\r英语最高者: %-16s %d分\n",pe_max->,pe_max->data.score3); cprintf("\r数学最高者: %-16s %d分\n",pm_max->,pm_max->data.score2); cprintf("\rc语言最高者: %-16s %d分\n\r",pc_max->,pc_max->data.score1); cprintf("\r总分最低者: %-16s %d分\n",pt_min->,pt_min->data.total); cprintf("\r平均分最低者: %-16s %d分\n",pa_min->,pa_min->data.ave); cprintf("\r英语最低者: %-16s %d分\n",pe_min->,pe_min->data.score3); cprintf("\r数学最低者: %-16s %d分\n",pm_min->,pm_min->data.score2); cprintf("\rc语言最低者: %-16s %d分\n\r",pc_min->,pc_min->data.score1); print1();}void Sort(L l){L ll;Node *p,*rr,*s;ll=(L)malloc(sizeof(Node)); /* 用于做新的连表*/ll->next=NULL;if(l->next==NULL){cprintf("\n\r 没有信息可以排序!\n");return ;}p=l->next;while(p){s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息*/s->data=p->data;s->next=NULL;rr=ll;while(rr->next!=NULL && rr->next->data.total>=p->data.total)rr=rr->next;if(rr->next==NULL)rr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}free(l);l->next=ll->next;cprintf("\n\r 排序已经完成!\n");}void Save(L l) /* */{FILE* fp;Node *p;int flag=1,count=0;fp=fopen("c:\\student","wb");if(fp==NULL){cprintf("\n\r 重新打开文件时发生错误!\n");exit(1);}p=l->next;while(p){if(fwrite(p,sizeof(Node),1,fp)==1){p=p->next;count++;}else{flag=0;break;}}if(flag){cprintf("\n\r 文件保存成功.(有%d条信息已经保存.)\n\r",count);shoudsave=0;}fclose(fp);}void main() /* */{L l; /* 链表*/FILE *fp; /* 文件指针*/int count=0 ,i,menu_select; /*菜单选择*/char ch ,creat;Node *p,*r;time_t it;clrscr();textmode(C80);window(1,1,80,25);textbackground(1); clrscr();textcolor(10);printf("\r 学生成绩管理系统");printf("\r -------扬州大学信息工程学院软件0902班") ;printf("\r 设计人员:李天鹏");l=(Node*)malloc(sizeof(Node));l->next=NULL;r=l;fp=fopen("c:\\student","rb");if(fp==NULL){cprintf("\n\r 该文件还未存在,是否需要创建?(y/n,Y/N)\n\r");scanf("%c",&creat);if(creat=='y'||creat=='Y'){fp=fopen("c:\\student","wb");}elseexit(0);}gotoxy(9,11); textcolor(12);cprintf("\n\r 文件已经打开,系统正在导入信息");for(i=0;i<6;i++){ cprintf(".");sleep(1);}textcolor(10);gotoxy(9,11); cprintf("\n ");while(!feof(fp)){p=(Node*)malloc(sizeof(Node));if(fread(p,sizeof(Node),1,fp)) /* 将文件的内容放入接点中*/{p->next=NULL;r->next=p;r=p; /* 将该接点挂入连中*/count++;}}fclose(fp);/* 关闭文件*/gotoxy(1,3);cprintf("\n\r信息导入完毕,系统共导入%d条信息",count);sleep(1);while(1){ menu();textcolor(12);cprintf("\r现在时间: "); it=time(NULL);cprintf(ctime(&it));cprintf("\r左边数字对应功能选择,请按0--9选择操作:\n\r");textcolor(10) ;scanf("%d",&menu_select);if(menu_select==0){if(shoudsave==1){ getchar(); textcolor(128+12);cprintf("\n\r 信息已经改动,是否将改动保存到文件中(y/n Y/N)?\n\r"); scanf("%c",&ch);if(ch=='y'||ch=='Y')Save(l);}cprintf("\n\r 你已经成功退出学生成绩信息系统,欢迎下次继续使用!\n"); break;}switch(menu_select){case 1: clrscr(); input(l); clrscr(); break; /* 输入学生*/case 2: clrscr(); Delete(l); PRINT1 /* 删除学生*/case 3: clrscr(); query(l); PRINT1 /* 查询学生*/case 4: clrscr(); modify(l); PRINT1 /* 修改学生*/case 5: clrscr(); Sort(l); PRINT1case 6: clrscr(); Statistic(l); PRINT1case 7: clrscr(); display(l); PRINT1case 8: clrscr(); Save(l); PRINT1 /* 保存学生*/case 9: clrscr(); cprintf(" ==========帮助信息==========\n");print2(); PRINT1 ;default: wrong(); getchar(); break;}}}。

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

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

课程设计说明书设计名称: C语言课程设计题目:学生成绩管理系统学生姓名:专业:网络工程班级: 12级1班学号: 2012394108指导教师:日期:年月日课程设计任务书网络工程专业 12 年级 1 班孙璐一、设计题目学生成绩管理系统二、主要内容数据库的数据项主要数据包括:学号、姓名、年级、专业、成绩1、成绩2、成绩3、平均成绩、总成绩。

要求具有以下功能:(1)系统以菜单方式工作。

(2)显示、保存记录;添加、删除、修改任意个记录。

(3)排序功能:打开学生数据库,计算每个学生的平均成绩和总成绩,用冒泡法或选择排序法将平均成绩和总成绩排序后生成两个新文件(从大到小),存盘并显示这两个文件的全部记录。

(4)查询功能:打开总成绩排序文件,用折半查找法统计出给定分数的人数并显示。

并能按学号或姓名查找并显示某个学生的各科成绩。

(5)统计功能:对各科成绩统计分析(平均分、最高分、最低分、及格率等);统计各科各分数段人数。

三、具体要求围绕课程设计的目的和意义,基本要求如下:1、认真阅读《C语言课程设计》指导书,明确课程设计的目的、意义和要求;2、快速总结C程序设计语言的精髓,如:函数的概念、函数的设计和函数的调用;3、快速熟悉Tuber C 或C++的上机环境。

能熟练进行高级编辑操作(特别是字块操作);熟悉步进式、断点跟踪的程序调试方法,提高工作效率。

4、根据“课程设计题目”,采用结构化的程序设计思想,确定系统的总体设计方案、确"定时间进度。

如果是多人共一题,则要首先完成小组内的人员分工及安排,不允许重题现象。

5.学习并了解良好的程序设计风格。

按质、按量、并按时间完成课程设计的任务。

6.提供可运行的课程设计系统,参加上机面试答辩。

本次课程设计的重点是:学会设计并编写函数,掌握好各函数之间的调用关系;利用文件操作函数,建立数据库并完成对数据库的各种操作;掌握几种典型算法的应用(如:冒泡法、选择排序法和折半查找法)。

vf学生成绩管理系统流程图+组织结构设计图+管理职能图-课程设计

vf学生成绩管理系统流程图+组织结构设计图+管理职能图-课程设计

vf学生成绩管理系统流程图+组织结构设计图+管理职能图-课程设计目录第1章可行性分析 (4)1.1 成绩管理信息系统开发的必要性 (4)1.2 开发的可行性调查 (4)1.2.1技术方面 (4)1.2.2管理方面 (4)1.2.3经济方面 (4)1.3 可行性调查结果分析 (4)第2章系统分析 (6)2.1 组织机构 (6)2.2 管理职能分析 (6)2.2.1 管理职能图 (6)2.2.2 相关部门的管理职能 (7)2.3 业务流程分析 (7)2.4 数据流程分析 (8)2.5 现行系统评价 (9)2.6 系统优化 (10)2.7 数据字典 (12)2.8 本系统的运行环境 (17)第3章系统设计 (18)3.1 系统目标设计 (18)3.2 新系统功能模块设计 (18)3.2.1 系统主模块 (19)3.2.2 查询模块 (19)3.2.3 维护模块 (19)3.2.4 统计模块 (19)3.2.5 打印模块 (19)3.3 数据库设计 (19)3.3.1 数据库需求分析 (19)3.3.2 数据库概念设计 (19)3.3.3 数据可逻辑设计 (21)3.3.4 数据库结构的实现 (22)3.4 输入设计 (22)3.5 输出设计 (22)3.6 代码设计 (24)3.6.1 学生学号的代码设计 (24)3.6.2 课程号的代码设计 (24)第4章系统实施 (25)4.1 系统源程序 (25)4.2 试运行及结果分析 (27)第5章设计心得 (30)参考文献 (31)《学生成绩管理信息系统》学生成绩管理系统简介:学生成绩管理信息系统是针对学校教务处的大量业务处理工作而开发的管理软件,是典型的管理信息系统(Management Information System)。

它是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。

能有效的帮助学校和老师掌握学生的情况,为学生提供成绩跟课程方面的查询。

学生成绩管理系统源代码

学生成绩管理系统源代码

学生成绩管理系统源代码#include<stdio.h>#include<stdlib.h>int main(){typedef struct LNode{char name[6];int no;int yw;int sx;int yy;struct LNode *next;}LinkList;struct NameNo{int no;int yw;int sx;int total;char name[6];}st[10];FILE *fp,*fp1;char ch,sname[6];int x,i,j;NameNo tmp;LinkList *p,*s;printf("\n");printf("-------------------------------");printf("学生成绩管理系统");printf("--------------------------------");printf("\n\n");printf("在您的C盘根目录下是否有cj1.txt和cj2.txt文件?如果有请输入,1");printf("否则输入0;如果没有,那么程序将终止!1 or 0?");scanf("%d",&i);if(i==0) return 0;printf("\n\n");printf("对cj1.txt和cj2.txt进行合成请按‘1’");scanf("%d",&i);if(i!=1) return 0;printf("正在把cj1.txt和cj2.txt中的数据进行合并\n");printf("......\n.....\n....\n...\n..\n.\n");if((fp=fopen("c:\\cj1.txt","rt"))==NULL){printf("无cj1.txt文本文件,程序结束。

C语言 学生成绩管理系统实验报告

C语言 学生成绩管理系统实验报告

HUNAN UNIVERSITY程序设计训练报告题目学生成绩管理系统学生姓名学生学号专业班级指导老师湖南大学程序设计训练报告目录一程序功能简介…………………………………………………………………………….。

.。

.3二本人完成的主要工作……………………………………………………………………..。

3三设计方案……………………………………………………………………………。

...。

.。

3 1)设计分析……………………………………………………………………………。

.。

.。

.。

32)模块的功能及程序分析…………………………………………………………....。

43)核心算法流程图……………………………………………………………………。

...。

74) 核心源程序模块………………………………………………………………………。

.85)操作方法简介………………………………………………………………………….。

86)实验结果……………………………………………………………………………。

.。

.。

.。

.98)设计体会…………………………………………………………………………….。

11四附录……………………………………………………………………………。

..。

.。

12 一、程序功能简介;本程序作为一个学生成绩管理系统,用户可以首先使用管理员模式初始化该系统.初始化完成之后,用户可以选择使用成绩记录人模式进入系统,对学生成绩进行记录。

系统自动储存所记录的学生成绩,然后用户可根据不同需要来选择不同的功能来使用程序,其中包括成绩查询与增减,成绩排序,成绩分析等功能. 二、本人完成的主要工作;程序设计分析,绘制程序流程图,写出大体结构算法以及各个核心算法模块,写出核心源程序,对源程序进行算法优化,对源代码进行多次试验验证其正确性,完成源代码的测试以及代码书写规范检测。

三、设计方案;1)设计分析;首先拿到这个题目,我就开始思考如何将这个看似简单的系统做的较为完善,而不是简简单单的学生成绩管理系统,学生管理系统自然是这个题目的核心,从中发散思维,我想到了几个比较细小的地方。

c语言课程设计报告+学生成绩信息管理系统+源代码

c语言课程设计报告+学生成绩信息管理系统+源代码

实验报告一、问题陈述及其需求分析(一)问题陈述学生信息管理系统是对学生信息的基本管理,其中包括以下及模块:(1)增加一个学生的信息(需输入要增加学生的所有信息);(2)统计本班学生总人数及男女生人数。

(3)分别按照学号查找学生的信息;若找到则输出该学生全部信息,否则输出查找不到的提示信息。

(4)按学号对所有学生信息排序,并输出结果;(5)删除一个学生的信息(需指定要删除学生的学号);同时显示删除后的结果。

(二)功能需求分析学生信息管理系统设计学生信息包括:学号,姓名,性别,出生年月,电话使之提供以下功能:1、系统以菜单方式工作2、建立链表并显示3、插入新的学生信息4、删除某学号的学生信息5、查找某学号的学生信息6、对学生信息排序7、统计学生人数8、输出学生信息二总体设计(一)模块依据程序的数据结构,描述该程序的层次结构,如下图:1、建立链表并显示voidcreatelist(structstucode**r);2、插入新的学生信息voidinsert(structstucode**r);3、删除某学号的学生信息voiddel(structstucode**r);4、查找某学号的学生信息voidsearch1(structstucode*r);5、对学生信息排序voidsort(structstucode**r);6、统计学生人数voidsearch2(structstucode*r);7、输出学生信息voidout(structstucode*r);(二)程序总体框架模块层次结构,只确定了模块之间的关系和函数原型,不是程序的执行步骤。

程序总体框架是该程序的总体流程图。

改程序不是顺序连续地执行全部功能,而是在某一时刻有选择地执行一种或多种功能。

因此选用菜单方式是较佳的方案,程序总体框架如下图:(三)运行环境(软,硬件环境)硬件:CPU,内存,主板,硬盘,显卡,键盘,显示器等等。

软件:WindowsXPtruboc应用软件。

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

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

我是电大的学生,这是struct 类型的c 语言学生成绩管理系统代码,大家交流一下#include<stdio.h>#include<string.h> #include<stdlib.h>#define MAXN 100 //#define MAXN 100 //一个班最多的人数一个班最多的人数#define MAXM 2 //#define MAXM 2 //成绩的课程门数成绩的课程门数int R;void input(); //1.void input(); //1.学生成绩新建学生成绩新建void sort(); //2.void sort(); //2.学生成绩插入学生成绩插入void load(); //3.void load(); //3.学生成绩修改学生成绩修改void print(); //4.void print(); //4.学生成绩删除学生成绩删除void total(); //5.void total(); //5.学生成绩统计学生成绩统计void search(); //6.void search(); //6.学生成绩查询学生成绩查询void save(); //7.void save(); //7.学生成绩保存学生成绩保存void end(); //8.void end(); //8.结束结束struct student{char name[20]; //char name[20]; //保存全班姓名保存全班姓名保存全班姓名char num[12]; // char num[12]; //保存全班学号保存全班学号保存全班学号char man[20]; //char man[20]; //保存全班性别保存全班性别保存全班性别float score[MAXM]; //float score[MAXM]; //保存全班所有课程成绩保存全班所有课程成绩保存全班所有课程成绩 float sum; //float sum; //保存全班每个人的总成绩保存全班每个人的总成绩保存全班每个人的总成绩float avg; // float avg; //保存每个人的平均成绩保存每个人的平均成绩保存每个人的平均成绩};struct student s[MAXN];struct http{char subject[20]; //char subject[20]; //保存全班所有课程保存全班所有课程保存全班所有课程};struct http c[MAXM];void main() //void main() //欢迎首界面欢迎首界面欢迎首界面{ int select,l;system("color fC");printf("\n");printf("\n");printf("\n");printf("\n");printf(" printf(" ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n"); \n"); printf(" * *\n"); printf(" * *\n"); printf(" * printf(" * 欢迎进入终极一班学生管理系统欢迎进入终极一班学生管理系统欢迎进入终极一班学生管理系统 *\n"); *\n"); printf(" * *\n"); printf(" * ︻┳═一︻┳═一︻┳═一 cf ... *\n"); cf ... *\n"); printf(" * printf(" * ┈━═☆甘总管的多塔生活∝╬══→┈━═☆甘总管的多塔生活∝╬══→┈━═☆甘总管的多塔生活∝╬══→ *\n"); *\n"); printf(" * *\n"); printf(" * printf(" * 凸凸^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸 *\n"); printf(" printf(" ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n"); \n"); printf(" printf(" ╭ ╭ ╭ v v v╮╮ ╔══╗╔╗╔══╗╔╗ ╔╗╔╗╔╗╔╗╔╗╔╗ ╭╭''''''╮╮\n");printf(" (@ ^o^ @)╚╗╔╝║║╔═╦╦╦═╗║╚╝╠═╦╦╗(~ : : ~~)\n");printf(" (~) : (~)╔╝╚╗║╚╣║║║║╠╣╚╗╔╣║║║║(~) v (~)\n");printf(" ╚══╝╚═╩═╩═╩═╝ ╚╝╚═╩═╝ \n");printf("\n");printf("\n");printf(" printf(" 请按任意键进入下一界面请按任意键进入下一界面请按任意键进入下一界面\n"); \n");printf("------------------------------------------------------------------\n"); system("pause");system("color f2");system("color f1");system("color f3"); system("color fE");system("color fB");system("color f5");system("color f9");system("color f6");system("color f1");system("color f3");system("color fE");system("color fB");system("color f5");system("color f9"); system("color f6");system("color f1");system("color f3");system("color f5");system("color f9");system("color f6");system("color fD");system("pause");system("color fC");system("cls"); // system("cls"); //上面是第一个界面上面是第一个界面上面是第一个界面while(1){system("cls");printf(" ****************欢迎进入终极一班学生管理系统****************\n");printf(" ******************************************************\n");printf(" * ∝╬══→ 1.学生成绩新建 囧rz 欢 *\n");printf(" * ::======>> 2. 2.学生成绩插入学生成绩插入学生成绩插入 迎迎 *\n"); printf(" * printf(" * ┈━═☆┈━═☆┈━═☆ 3. 3.学生成绩修改学生成绩修改学生成绩修改 来来 *\n"); printf(" * printf(" * ∝╬══→∝╬══→∝╬══→ 4. 4.学生成绩删除学生成绩删除学生成绩删除 到到 *\n"); printf(" * ∝╬══→∝╬══→ 5. 5.学生成绩统计学生成绩统计学生成绩统计 英英 *\n"); printf(" * printf(" * ∝╬══→∝╬══→∝╬══→ 6. 6.学生成绩查询学生成绩查询学生成绩查询 雄雄 *\n"); printf(" * printf(" * ▄︻┻═┳▄︻┻═┳▄︻┻═┳ 7. 7.学生成绩保存学生成绩保存学生成绩保存 联联 *\n"); printf(" * printf(" * ∝╬══→∝╬══→∝╬══→ 8. 8.退出退出退出//撒拉嘿撒拉嘿 盟盟 *\n"); printf(" * ( printf(" * (⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙) *\n"); ) *\n");printf(" ******************************************************\n"); printf("\n"); printf("\n printf("\n"); printf("\n 请输入您的选择编号请输入您的选择编号请输入您的选择编号,,回车键继续:回车键继续:\n"); \n");printf("---------------------------------------------------------------------------\n"); scanf("%d",&select);do {if(select<1||select>8){printf(" printf(" 您输入有误,请重新输入,谢谢!您输入有误,请重新输入,谢谢!!!\n"); scanf("%d",&select);}l=select;}while(l<1||l>8);switch(select) {case 1:input();break; //1. case 1:input();break; //1.学生成绩新建学生成绩新建学生成绩新建case 2:sort(); break; //2. case 2:sort(); break; //2.学生成绩插入学生成绩插入学生成绩插入case 3:load(); break; //3. case 3:load(); break; //3.学生成绩修改学生成绩修改学生成绩修改case 4:print(); break; //4. case 4:print(); break; //4.学生成绩删除学生成绩删除学生成绩删除case 5:total();break; //5. case 5:total();break; //5.学生成绩统计学生成绩统计学生成绩统计case 6:search();break; //6. case 6:search();break; //6.学生成绩查询学生成绩查询学生成绩查询case 7:save();break; //7. case 7:save();break; //7.学生成绩保存学生成绩保存学生成绩保存case 8: end();break; //8. case 8: end();break; //8.结束结束结束default:printf(" default:printf(" 请按相应数学选择系统功能:请按相应数学选择系统功能:请按相应数学选择系统功能:"); ");}}}void input() //1学生成绩输入成绩模块成绩输入成绩模块{int i,j,b;float a=0;printf(" printf(" 请输入该班同学的人数:请输入该班同学的人数:请输入该班同学的人数:\n"); \n");printf(" printf(" 班同学的人数在班同学的人数在1~%d 之间:之间:\n",MAXN); \n",MAXN);scanf("%d",&R);do{if(R<1||R>100){printf(" printf(" 您输入有误,请重新输入,谢谢!您输入有误,请重新输入,谢谢!!!\n"); scanf("%d",&R);}b=R;} while(b<1||b>100);for(i=0;i<MAXM;i++){printf(" printf(" 请输入该班同学的第请输入该班同学的第请输入该班同学的第%d %d 门课程名称为:门课程名称为:\n",(i+1)); \n",(i+1));scanf("%s", &c[i].subject);}for(i=0;i<R;i++){printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的姓名:个同学的姓名:\n",(i+1)); \n",(i+1)); scanf("%s",&s[i].name);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的学号:个同学的学号:\n",(i+1)); \n",(i+1));scanf("%s",&s[i].num);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的性别(注:可以不详):\n",(i+1)); scanf("%s",&s[i].man);printf(" printf(" 请依次输入请依次输入请依次输入%d %d 门学科的成绩:门学科的成绩:\n",MAXM); \n",MAXM);for(j=0;j<MAXM;j++){printf(" printf(" 请输入课程请输入课程请输入课程%s %s 的成绩为:的成绩为:\n",c[j].subject); \n",c[j].subject);scanf("%f",&s[i].score[j]);a=a+s[i].score[j];}s[i].sum=a;s[i].avg=s[i].sum/MAXM;a=0;}}void sort() //2学生成绩插入成绩模块模块{int i,j,k,b;float a=0;printf(" printf(" 请输入要插入的学生的位置请输入要插入的学生的位置1~%d 号:号:\n",R); \n",R);printf(" printf(" 第几个学生的位置之后:第几个学生的位置之后:第几个学生的位置之后:\n"); \n");scanf("%d",&k);do{if(k<1||k>R){printf(" printf(" 您输入有误,请重新输入,谢谢!您输入有误,请重新输入,谢谢!!!\n"); scanf("%d",&k);}b=k;}while(b<1||b>R);R=R+1;for(i=R;i>k;i--){strcpy(s[i].name,s[i-1].name);strcpy(s[i].num,s[i-1].num);strcpy(s[i].man,s[i-1].man);s[i].sum=s[i-1].sum;s[i].avg=s[i-1].avg;for(j=0;j<MAXM;j++) {s[i].score[j]=s[i-1].score[j];}}printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的姓名:个同学的姓名:\n",(k+1)); \n",(k+1));scanf("%s",&s[k].name);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的学号:个同学的学号:\n",(k+1)); \n",(k+1));scanf("%s",&s[k].num);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的性别(注:可以不详):\n",(k+1)); scanf("%s",&s[k].man);printf(" printf(" 请依次输入请依次输入请依次输入%d %d 门学科的成绩:门学科的成绩:\n",MAXM); \n",MAXM);for(j=0;j<MAXM;j++){printf(" printf(" 请输入课程请输入课程请输入课程%s %s 的成绩为:的成绩为:\n",&c[j].subject); \n",&c[j].subject);scanf("%f", &s[k].score[j]);a=a+s[k].score[j];}s[k].sum=a;s[k].avg=s[k].sum/MAXM;}void load() //3学生成绩修改学生成绩修改 {int load1(); int load2();int select,index,b;while(1){printf("*************************************************************\n");printf(" * 1.按学号修改按学号修改 * * \n");printf(" * 2.按姓名修改按姓名修改 * * \n"); printf(" * 0.返回返回 * * \n");printf(" * 请输入您的选择编号:请输入您的选择编号: * * \n");printf("*************************************************************\n");scanf("%d",&select);do{if(select<0||select>2){printf(" printf(" 您输入有误,请重新输入,谢谢!您输入有误,请重新输入,谢谢!!!\n"); scanf("%d",&select);}b=select;}while(b<0||b>2);switch(select){case 1:index=load1(); break;case 2:index=load2();break;case 0:return;}if(index!=-1){int i,j;float a=0,h[MAXM];i=index;printf(" printf(" 请输入请输入请输入%d %d 号的新学号:号的新学号: \n",i+1); \n",i+1);scanf("%s",&s[i].name);printf(" printf(" 请输入请输入请输入%d %d 号的新姓名:号的新姓名: \n",i+1); \n",i+1); scanf("%s",&s[i].num);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的性别(注:可以不详):\n",(i+1)); scanf("%s",&s[i].man);for(j=0;j<MAXM;j++){printf(" printf(" 请输入课程请输入课程请输入课程%s %s 的成绩为:的成绩为:\n",&c[j].subject); \n",&c[j].subject);scanf("%f",&h[j]);s[i].score[j] =h[j];a=a+s[i].score[j];}s[i].sum=a;s[i].avg=s[i].sum/MAXM;printf(" printf(" 修改成功。

学生成绩管理系统的设计与实现代码

学生成绩管理系统的设计与实现代码

学生成绩管理系统的设计与实现代码本系统有增加学生记录、修改学生记录、删除学生记录、按姓名查询学生记录、按C语言成绩对学生进行排序、退出系统6大功能。

能够对学生的姓名,学号,c语言成绩做相应的操作。

在检测到输入成绩大于55时,会自动加上5。

该管理系统设计功能模块图:下面是源代码:#include "stdio.h"#include "string.h"/*定义学生结构体*/struct Student{char ID[20]; //学号char Name[20]; //姓名float C_Mark; //C语言成绩};/*声明学生数组及学生数量*/struct Student students[1000];int num=0;/*通过学号返回数组下标*/int Student_SearchByIndex(char id[]) {int i;for (i=0;i<num;i++){if (strcmp(students[i].ID,id)==0) {return i;}}return -1;}/*通过姓名返回数组下标*/int Student_SearchByName(char name[]) {int i;for (i=0;i<num;i++){if (strcmp(students[i].Name,name)==0){return i;}}return -1;}/*显示单条学生记录*/void Student_DisplaySingle(int index){printf("%10s%10s%8s\n","学号","姓名","C语言成绩");printf("-------------------------------------------------------------\n");printf("%10s%10s%8.2f\n",students[index].ID,students[index] .Name,students[index].C_Mark);}/****1、增加学生记录*****/void Student_Insert(){while(1){printf("请输入学号:");scanf("%s",&students[num].ID);getchar();printf("请输入姓名:");scanf("%s",&students[num].Name);getchar();printf("请输入C语言成绩:");scanf("%f",&students[num].C_Mark);getchar();if (54<students[num].C_Mark && students[num].C_Mark< 60) //把55~59分之间的成绩都加上5分{students[num].C_Mark += 5;}num++;printf("是否继续?(Y/N),继续请按任意键,否则输入N:");if (getchar()=='N'){break;}}}/******2、修改学生信息**********/void Student_Modify(){while(1){char id[20];int index;printf("请输入要修改的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index==-1){printf("该学生不存在!\n");}else{printf("你要修改的学生信息为:\n");Student_DisplaySingle(index);printf("-- 请输入新值--\n");printf("请输入学号:");scanf("%s",&students[index].ID);getchar();printf("请输入姓名:");scanf("%s",&students[index].Name);getchar();printf("请输入C语言成绩:");scanf("%f",&students[index].C_Mark);getchar();}printf("是否继续?(Y/N),继续请按任意键,否则输入N:");if (getchar()=='N'){break;}}}/****3、删除学生信息****/void Student_Delete(){int i;while(1){char id[20];int index;printf("请输入要删除的学生的学号:");scanf("%s",&id);getchar();index=Student_SearchByIndex(id);if (index==-1){printf("学生不存在!\n");}else{printf("你要删除的学生信息为:\n");Student_DisplaySingle(index);printf("是否真的要删除?(Y/N)");if (getchar()=='Y'){for (i=index;i<num-1;i++){students[i]=students[i+1];//把后边的对象都向前移动}num--;}getchar();printf("已删除\n");}printf("是否继续删除?(Y/N),继续请按任意键,否则输入N:");if (getchar()=='N'){break;}}}/****4、按姓名查询******/void Student_Select(){while(1){char name[20];int index;printf("请输入要查询的学生的姓名:");scanf("%s",&name);getchar();index=Student_SearchByName(name);if (index==-1){printf("学生不存在!\n");}else{printf("你要查询的学生信息为:\n");Student_DisplaySingle(index);}printf("是否继续?(Y/N),继续请按任意键,否则输入N:");if (getchar()=='N'){break;}}}/******5、按C语言成绩排序*******/void Student_SortByAverage(){int i,j;struct Student tmp;for (i=0;i<num;i++){for (j=1;j<num-i;j++){if (students[j-1].C_Mark<students[j].C_Mark){tmp=students[j-1];students[j-1]=students[j];students[j]=tmp;}}}}/*显示学生信息*/void Student_Display(){int i;printf("%10s%10s%8s\n","学号","姓名","成绩");printf("-------------------------------------------------------------\n");for (i=0;i<num;i++){printf("%10s%10s%8.2f\n",students[i].ID,students[i].Name ,students[i].C_Mark);}}/*将学生信息从文件(Database.txt)中读出*/void IO_ReadInfo(){FILE *fp;int i;if ((fp=fopen("Database.txt","rb"))==NULL){printf("不能打开文件!\n");return;}if (fread(&num,sizeof(int),1,fp)!=1){num=-1;}else{for(i=0;i<num;i++){fread(&students[i],sizeof(struct Student),1,fp);}}fclose(fp);}/*将学生信息写入文件(Database.txt)*/void IO_WriteInfo(){FILE *fp;int i;if ((fp=fopen("Database.txt","wb"))==NULL){printf("不能打开文件!\n");return;}if (fwrite(&num,sizeof(int),1,fp)!=1){printf("写入文件错误!\n");}for (i=0;i<num;i++){if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1){printf("写入文件错误!\n");}}fclose(fp);}/***********主程序*********/void main(){int choice;IO_ReadInfo(); //读取文件while(1){/*主菜单*/printf("\n------ 学生成绩管理系统------\n");printf("1. 增加学生记录\n");printf("2. 修改学生记录\n");printf("3. 删除学生记录\n");printf("4. 按姓名查询学生记录\n");printf("5. 按C语言成绩排序\n");printf("6. 退出\n");printf("请选择(1-6):");scanf("%d",&choice);getchar();switch(choice){case 1:Student_Insert();break;case 2:Student_Modify();break;case 3:Student_Delete();break;case 4:Student_Select();break;case 5:Student_SortByAverage();Student_Display();break;case 6:exit(0);break;}IO_WriteInfo();}}1234567891011121415161718192021222324252627282930313233343637383940414243444546474849505152535455565859606162636465666768697071727374757677788081828384858687888990919293949596979899 100102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320322323324325326327328329330331332333334335336337338运行结果:测试第一个功能,输入四个学生的成绩:测试第二个功能,修改学生记录:测试第三个功能,删除学生记录:测试第四个功能,按姓名查询学生记录:测试第五个功能,显示所有学生的成绩,按照C语言成绩由高到底排序:我们可以看到,各项功能的实现,在第2个步骤中,将赵的成绩改为80,而第3个步骤删除了李的成绩。

学生成绩管理系统(JAVA课程设计)

学生成绩管理系统(JAVA课程设计)

Java课程设计课题:学生成绩管理系统一、问题及功能分析1、身份验证,和使用系统的权限设置、判定。

2、实现同学的学号、性别、成绩等信息的录入、编辑3、提供对学号或姓名,进行成绩或所有信息的查询.4、计算学生平均成绩,显示最高成绩学生信息5、能实现按成绩、学号、姓名排序列出学生信息.6、能统计学生成绩分数段的分布(60以下、60~70、70~80、80~90、90~100)情况,并输出。

7、用文件保存数据,以便反复使用.二、概要设计import java。

lang.*;import java.io。

*;class Mytest{public static void main(String[]args)throws IOException{{int select;select = 1;Student stu[]= new Student[10];StudentMis mis=new StudentMis();Scanner sc = new Scanner(System.in);System。

out.println();System.out。

println(”—---—-—-————————-——-——-——-—---—--———-——");System.out。

println(”* *");System。

out.println(”欢迎进入学生成绩管理系统");System。

out。

println(”**”);System。

out.println(”-————--——-—-—---——-——--———-—-—----——--—");while(true){System。

out.println( );System。

out.println(" 请选择您的操作:");System.out.println(” 1.录入学生成绩信息;”);System.out.println(" 2.显示学生成绩信息;”);System。

C语言学生管理系统(绍兴文理学院可用)

C语言学生管理系统(绍兴文理学院可用)

上机内容:学生成绩管理姓名:陈雯学号:11101105姓名:吴立立学号:11101129一、上机内容:w1.有5个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号、姓名、三门课成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件“stud”中。

w2.将上题“stud”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件“stu-sort”中。

w3.将上题已排序的学生成绩文件进行插入处理。

插入一个学生的三门课成绩。

程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。

w学生的原有数据为:w91101 Wang 89,98,67.5w91103 Li 60,80,90w91106 Fun 75.5,91.5,99w91110 Ling 100,50,62.5w91113 Yuan 58,68,71w要插入的学生数据为:w91108 Xin 90,95,60利用printf( )函数和switch( )函数来分别输出学生的学号、班级和各科成绩和及格情况。

在做学生的排名和成绩平均值时要用到自定义函数和数组的知识。

在学生管理系统中插入一个学生然后再进行排名(冒泡法、选择法), 可以用折半查找的方法来完成二、源程序#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include<iostream>#include<iomanip>#include<windows.h>using namespace std;int COUNT[100];struct Student //定义学生结构体{int xuehao;char name[20];int age;int computer;int math;int english;}students[100];int geshu=0; //学生的个数void inter_face(char *menu_item){system("color F0");system("cls");printf(" oooooooooooooooooooooooooooooooooooo\n");printf(" ******** 欢迎来到数理信息学院学生成绩管理系统 ********\n");printf(" oooooooooooooooooooooooooooooooooooo\n");printf("\n \t\t<< %s >>\n\n",menu_item);}void return_tip(){printf("\n\t按任意键可返回系统最初界面……!!\n");getch();}void student_information() //输入学生的基本信息(学号、姓名、年龄){inter_face("录入学生基本信息");for(;;){printf("\t学生学号、姓名、年龄 :");scanf("%d%s%d",&students[geshu].xuehao,students[geshu].name,&students[geshu].age);cout<<"\t****************************************"<<endl;cout<<"\t 亲,返回可继续插入哦! "<<endl;cout<<"\t****************************************"<<endl;geshu++;if(students[geshu].xuehao==0) break;printf("\n");}return_tip();}int search_xuehao(){int n,i;printf("请输入学生的学号:");scanf("%d",&i);for(n=0;n<geshu;n++){if(students[n].xuehao==i&&students[n].xuehao!=0){printf("学号:%d\n",students[n].xuehao);printf("姓名:%s\n",students[n].name);printf("年龄:%d\n",students[n].age);return n;}}printf("\n您输入学号不存在或重复错误.\n");system("color 40");return -1;}void input_score(){int n;inter_face("输入学生成绩");printf("\n请分别输入学生的计算机、数学、英语成绩:\n"); //输入学生的成绩for(n=0;n<geshu;n++){if(students[n].xuehao!=0){printf("学号:%d 姓名:%s 成绩:",students[n].xuehao,students[n].name);scanf("%d%d%d",&students[n].computer,&students[n].math,&students[n].english);cout<<"~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~"<<endl;}}return_tip();}void modify_score(){int n;inter_face("修改学生成绩");if((n=search_xuehao())!=-1){printf("计算机:%d 数学:%d 英语:%d\n",students[n].computer,students[n].math,students[n].english);printf("\n请重新输入成绩:\n计算机:");scanf("%d",&students[n].computer);printf("数学:");scanf("%d",&students[n].math);printf("英语:");scanf("%d",&students[n].english);cout<<" O(∩_∩)O~ 恭喜你成功修改学生成绩!"<<endl;}return_tip();}void Insert_score(Student students[]) //插入一条学生信息。

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

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

学生成绩管理系统(数据结构C语言版源代码)-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII#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 *head,int *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 * head,char 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=0,x;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->Num,p1->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->Name,p1->Num,p1->Sex,p1->English,p1->Java,p1->Sjjg,p1->Szdl,p1->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->Name,p1->Num,p1->Sex,p1->English,p1->Java,p1->Sjjg,p1->Szdl,p1->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",Name,Num,Sex,&English,&Java,&Sjjg,&Sz dl,&Jsj);printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",Name,Num,Sex,English,Java,Sjjg,Szdl,Jsj);};if(fclose(fp)){printf("Can not close the file!\n");exit(0);}}/*从tushu_list中读取数据构建链表*/struct students * create(struct students * head,int *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->Name,p->Num,p->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=0,n=0;char b[20];struct students *p;head=create(head,&n);p=head;printf("\n请输入要查询的学生姓名:");scanf("%s",b);while(p!=NULL){if(strcmp(p->Name,b)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);i++;}p=p->next;}if(i==0)printf("\n对不起!没有找到名为“%s”的学生信息!\n",b);}/*按学号查询学生信息*/void FindofNum(struct students *head){int i=0,n;char b[20];struct students *p;head=create(head,&n);p=head;printf("\n请输入要查询的学生学号:");scanf("%s",b);while(p!=NULL){if(strcmp(p->Num,b)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->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->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->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->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->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->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->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->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->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->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->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->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->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->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->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->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->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->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->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->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按计算机组成原理成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按学号删除学生成绩信息*/struct students * Delete(struct students * head,char 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->Num,m)==0)&&head!=NULL){ptr2=head;head=head->next;free(ptr2);}if(strcmp(head->Num,m)!=0){ptr1=head;ptr2=head->next;while(ptr2!=NULL){if(strcmp(ptr2->Num,m)==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=0,t;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->Num,num)==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->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);while(1){printf("请选择需要修改的信息:");scanf("%d",&t);switch(t){case 1:printf("请输入新姓名:");scanf("%s",Name);strcpy(p->Name,Name);break;case 2:printf("请输入新学号:");scanf("%s",&Num);strcpy(p->Num,Num);break;case 3:printf("请输入新性别:");scanf("%s",Sex);strcpy(p->Sex,Sex);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 choice,ch;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(head,m);break;case 0:system("cls");printf("\t\t欢迎下次再来!");exit(0);default:printf("对不起,输入有误!");break;}}return ;}。

学生录入成绩C语言代码,学生成绩管理系统C语言源代码.doc

学生录入成绩C语言代码,学生成绩管理系统C语言源代码.doc

学⽣录⼊成绩C语⾔代码,学⽣成绩管理系统C语⾔源代码.doc 学⽣成绩管理系统C语⾔源代码#include"stdio.h"#include#include#include"process.h"#include"ctype.h"typedef struct{char num[10];char name[10];int c;int math;int English;double aver;}Student;Student stu[99];int shuru(Student stud[],int n)/*输⼊若⼲条记录*/{int i=0;char sign,x[10];double a=0.0;while(sign!='n'&&sign!='N'){printf("输⼊学⽣学号:");scanf("%s",stu[n+i].num);printf("输⼊学⽣姓名:");scanf("%s",stu[n+i].name);printf("输⼊学⽣的C、数学、英语");scanf("%d%d%d",&stu[n+i].c,&stu[n+i].math,&stu[n+i].English);a=1.0*(stu[n+i].c+stu[n+i].math+stu[n+i].English/3);stu[n+i].aver=a;gets(x); /*清除多余的输⼊*/printf("是否继续输⼊?(Y/N):\n");scanf("%c",&sign);i++;}return(n+i);}void xianshi(Student stud[],int n) /*显⽰所有记录*/{int i ;printf("----------------------------------------------------------\n"); /*格式头*/printf("学号 姓名 C 数学 英语 平均成绩 \n");printf("----------------------------------------------------------\n");for(i=0;i{printf("%-10s%-10s%-10d%-10d%-10d%-10.2lf\n",stu[i].num,stu[i].name,stu[i].c,stu[i].math,stu[i].English,stu[i].aver); }}void xiugai(Student stud[],int n) /*修改*/{int i=0,choice=1;char x[10];while(choice!=0){printf("请输⼊您要修改的学⽣的学号:\n");scanf("%s",x);for(i=0;;i++){if(strcmp(stu[i].num,x)==0)break;}printf("请选择您要修改的内容:\n");printf(" ---------------------- \n");printf("| 姓名 请按 1 |\n");printf("| c 请按 2 |\n");printf("| 数学分数 请按 3 |\n");printf("| 英语分数 请按 4 |\n"); printf("| 退出 请按 0|\n"); printf("+-----。

学生成绩管理系统ER图+流程图+组织结构图-课程设计

学生成绩管理系统ER图+流程图+组织结构图-课程设计

学生成绩管理系统ER图+流程图+组织结构图—课程设计学生成绩管理系统分析与设计一、系统概述1。

1、现状分析目前在中小学中,学生的成绩管理主要以班级为单位,由各班班主任以表格的形式直接输入电脑中,故就整个学校而言对于学生成绩的管理较为分散,涉及的人员较多且不利于相关的统计工作,学生的成绩信息也得不到长久的保存。

现行系统业务流程图如下:1。

2、系统目标总体目标:实现学校对所有班级、学生的成绩信息进行系统的管理,便于操作, 便于查询。

具体目标:1、管理员能够方便地对信息进行添加、编辑、删除、查询等操作。

2、教务人员可以方便地查询所需的成绩信息,并得到相应的统计报表.3、简化现有系统的流程,使之更加便捷、高效. 1.3、系统开发方法客户端采用Visual Basic。

NET,后台采用SQL server 2000. 1。

4、开发计划1、初步调查:以询问、查询资料的形式,对学校现行的学生成绩管理方式进行调查,确定现行方式所存在的问题以及相关需求并进行分析。

2、可行性分析:根据初步调查的情况,从技术上、经济上、管理上进行开发的可能性和必要性分析.3、详细调查:详细了解情况并绘制组织结构图和业务流程图。

4、系统的设计:根据对所调查情况的分析,进行系统的各种设计。

二、系统分析2。

1、系统需求分析功能需求简述:为了掌握学生的各门课程的成绩情况,将信息保存在一个本地的数据库中,并通过一定的统计功能,实现对全部学生成绩的统计分析,满足教务人员对成绩信息的管理和查询需求,提供一个电子化的成绩管理平台。

系统目标:对于本系统,我们需要实现以下一些基本功能:1、掌握每位学生每一门课程的成绩信息,并记录在数据库中。

2、可以按不同的方式对成绩进行管理(1)、按课程,对学习每门课程的每位学生进行添加、删除和修改。

(2)、按学生,对每位学生学习的每门课程的成绩进行添加、删除和修改。

3、可以针对不同的需求,提供相关的报表打印功能. 2。

学生成绩管理程序

学生成绩管理程序

合肥学院计算机科学与技术系课程设计报告2012~2013学年第二学期课程JA V A语言课程设计课程设计名称学生成绩管理程序学生姓名高昌发学号1104013036专业班级11级计本3班指导教师谭明、张艳明2 0 13 年1 月一、设计目的通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《JAVA语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

(3)利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

(5)熟练掌握JAVA语言的事件处理、图形界面、数据库操作等方面的知识。

一、课程设计名称及内容课程设计名称:学生成绩管理程序设计内容:设计一个程序来使用数据库存储学生成绩,进行学生成绩管理程序。

二、任务和要求这是一个简单的使用数据库存储学生成绩的学生成绩管理程序。

数据库中的每条记录包括学号、姓名、生日、分数等信息。

要求能够:(1)有较好的图形界面(2)按照学号查找学生及成绩、能显示全部记录。

(3)能增加、删除、修改记录。

三、详细设计过程该程序使用JDBC-ODBC桥与数据库连接,主要定义:主类和操作类。

主类的主要功能是提供等待用户的操作的主界面(菜单)。

操作类中定义与数据库的连接、提供各种操作界面(增、删、改及统计等操作)。

1、设计的是学生成绩管理程序的界面,如下所示:这个登陆界面的登陆号和密码都已经设计好了,只需要点击登陆则可以进入具体的管理程序。

如果登陆号和密码发生改变则会显示错误提示,具体的子程序代码如下:public class chengjiguanli {public static void main(String[] args) {new denglu();}}/** *登录界面*/@SuppressWarnings("serial")class denglu extends JFrame implements ActionListener {JFrame frame = new JFrame("登陆界面");JPanel imagePanel;ImageIcon bg;JButton button1, button2;Label l1, l2, l3;TextField a1, a2;Box b1, b2, b3, b4, b5;denglu() {Toolkit kit = Toolkit.getDefaultToolkit();Image img = kit.getImage("tubiao.jpg");frame.setIconImage(img);button1 = new JButton("登陆");button2 = new JButton("退出");Panel p1 = new Panel();l1 = new Label("学生成绩管理系统", Label.CENTER);l1.setFont(new Font("隶书", Font.BOLD, 40));l1.setBackground(Color.pink);p1.add(l1);l2 = new Label("登录名");l3 = new Label("密码");a1 = new TextField(10);a2 = new TextField(10);a2.setEchoChar('*');b1 = Box.createVerticalBox();b1.add(l2);b1.add(Box.createVerticalStrut(8));b1.add(l3);b2 = Box.createVerticalBox();b2.add(a1);b2.add(Box.createVerticalStrut(8));b2.add(a2);b3 = Box.createHorizontalBox();b3.add(b1);b3.add(Box.createHorizontalStrut(10));b3.add(b2);b4 = Box.createHorizontalBox();b4.add(button1);b4.add(Box.createHorizontalStrut(10));b4.add(button2);b5 = Box.createVerticalBox();b5.add(b3);b5.add(Box.createVerticalStrut(8));b5.add(b4);button1.addActionListener(this);button2.addActionListener(this);a1.setText("shanshan");a2.setText("shanshan");addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {dispose();}});bg = new ImageIcon("dlu.jpg");JLabel label = new JLabel(bg);label.setBounds(0, 0, bg.getIconWidth(), bg.getIconHeight());imagePanel = (JPanel) frame.getContentPane();imagePanel.setOpaque(false);imagePanel.setLayout(new FlowLayout());imagePanel.add(p1, BorderLayout.NORTH);imagePanel.add(b5, BorderLayout.CENTER);frame.getLayeredPane().setLayout(null);frame.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(bg.getIconWidth(), bg.getIconHeight());frame.setBounds(200, 150, 510, 340);frame.setResizable(false);//设置窗口大小不可改变frame.setVisible(true);validate();}public void actionPerformed(ActionEvent e) {if (e.getSource() == button2) {System.exit(0);}if (e.getSource() == button1) {if (a1.getText().equals("shanshan") &&a2.getText().equals("shanshan")) {new chuangkou();frame.dispose();} else {JOptionPane.showMessageDialog(this, "账户密码错误,请重新输入!");}}}}2、点击界面的登陆按钮后会出现选择窗口,分别有六个功能:添加、删除、修改、查询、返回、退出。

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

#include <stdio.h>#include <stdlib.h>#include <string.h>#define PF printf#include "time.h "#define LEN sizeof(struct St1)//定义结构体//typedef struct St1{char IDNumber[16];/*学号*/char FamilyName[16]; /*姓*/char GivenName[16]; /*名*/int sex; /*性别(0代表"女",1代表"男")*/int BirthYear; /*出生年*/int BirthMonth; /*出生月*/int BirthDay; /*出生日*/float score0,score1,score2,score3; /*成绩*/float sum; /*总分*/float average; /*平均分*/struct St1 *next;}StudentNode;int time(){struct tm* ptm;long ts;int y,m,d,h,n,s;ts = time(NULL);ptm = localtime(&ts);y = ptm-> tm_year+1900; //年m = ptm-> tm_mon+1; //月d = ptm-> tm_mday; //日h = ptm-> tm_hour; //时n = ptm-> tm_min; //分s = ptm-> tm_sec; //秒return(y);}StudentNode *head=NULL; //全局指针int n,i=0,c=0,d=0,j=0; //全局变量j在函数中作数组下标或循环变量c为总分数组中元素个数d为平均分数组元素个数float English=0.0,Math=0.0,C=0.0,Mazhe=0.0,Sum[100],Avr[100]; //全局变量//自定义函数//void show_menu(); //显示菜单void menu(); //执行菜单void creat_stu(); //建立链表void input_stu(); //输入学生信息void print_stu(); //显示链表中所有记录信息void search_NO(); //以学号方式查询信息void search_name(); //以姓方式查询信息void arrage_stu(); //学生成绩排名void del_stu(); //删除学生信息void revise_stu(); //修改学生信息void save(); //保存信息void jisuan(); //计算所有学生的以及各科总分和均分void search_clas(); //按班级查询显示学生信息void insert_stu(); //插入学生记录到表中void sort(float x[],int n); //对学生按总分进行从高到底排序void search_allscore(); //按学生总成绩查询,用来输出排名信息void jieduan(); //用来输出按平均分阶段输出信息,其中用了按平均分输出信息的程序。

void Loadf(); //从文件中读出所有学生记录void main(){ printf("********************************************************************* ***********");printf("\n");printf(" 欢迎来到学生管理系统!");printf("\n");printf("\n");printf(" 制作人:陈志52101610");creat_stu();menu();}//**************************************创建链表**************************************void creat_stu(){FILE *fp;long size;StudentNode *p1,*p2;head=(StudentNode *)malloc(sizeof(StudentNode));head->next=NULL;if((fp=fopen("fname.txt","r"))==NULL){printf("这是新表\n");return;}fseek(fp,0L,2);size=ftell(fp);if(!size){printf("这是空表\n");return;} //开始创建链表rewind(fp); //移动到文件首p2=head->next; //找到当前位置while(!feof(fp)){p1=(StudentNode *)malloc(sizeof(StudentNode));fscanf(fp,"%s %s %s %d %d %d %d %f %f %f %f %f %f\n",p1->IDNumber,p1->FamilyName,p1 ->GivenName,\&p1->sex,&p1->BirthYear,&p1->BirthMonth,&p1->BirthDay,&p1->score0,&p1->score1,&p1->s core2,&p1->score3,&p1->sum, &p1->average);p1->next=NULL;//创建节点完if(head->next==NULL)head->next=p1;elsep2->next=p1;p2=p1;n++;}p2->next=NULL;fclose(fp);}//******************************************执行菜单******************************************void menu(){int c;show_menu();while(1){scanf("%d",&c);switch(c){getchar();case 1:input_stu();break;case 2:del_stu(); break;case 3:print_stu();break;case 4:search_name(); break;case 5:save();break;case 6:Loadf();break;case 7:jisuan(); break;case 8:search_clas(); break;case 9:insert_stu() ; break;case 10:search_NO(); break;case 11:arrage_stu();break;case 12:revise_stu(); break;case 13:jieduan();break;case 0:exit(0);} //执行菜单选项show_menu();}}//******************************************显示菜单******************************************void show_menu(){PF("\n");PF("\n**************************************菜单**************************************\n");PF("\t\t* 1.输入学生信息*\n");PF("\t\t* 2.删除学生信息*\n");PF("\t\t* 3.显示链表中所有记录信息*\n");PF("\t\t* 4.按照学生的姓查找记录*\n");PF("\t\t* 5.将链表中记录保存到文件中*\n");PF("\t\t* 6.从文件中读入记录*\n");PF("\t\t* 7.计算所有学生以及各科总分和均分*\n");PF("\t\t* 8.按班级查询显示学生信息*\n");PF("\t\t* 9.插入记录到表中*\n");PF("\t\t* 10.按学号查询学生信息*\n");PF("\t\t* 11.学生成绩排名*\n");PF("\t\t* 12.修改学生信息*\n");PF("\t\t* 13.按平均分阶段输出学生信息*\n");PF("\t\t* 0. 退出*\n");PF("*************************************************************************** *****\n");PF("\n请选择\n");}//******************************************输入学生信息******************************************void input_stu() //输入学生信息{float a,b; //a,b分别用来存放该生的各科总成绩和平均成绩int y,j;y=time();n=0;StudentNode *p1=NULL,*p2=NULL;p1=( StudentNode *)malloc(sizeof(StudentNode));PF("\n**********************************输入学生信息**********************************\n"); //输入学生信息PF("\t\t输入学生学号:\t");scanf("%s",p1->IDNumber); //学号PF("\t\t输入学生的姓:\t");scanf("%s",p1->FamilyName); //姓PF("\t\t输入学生的名:\t");scanf("%s",p1->GivenName); //名PF("\t\t输入学生性别(0代表女,1代表男):\t");scanf("%d",&p1->sex); //性别for(j=0;;j++) //判断输入年份是否合理,假设人年龄在0-100岁之间为正常{PF("\t\t输入学生出生年:\t");scanf("%d",&p1->BirthYear); //出生年if((y-p1->BirthYear)>100||(p1->BirthYear>y))PF("\t\t年份输入错误不符合要求,请重新输入出生年份:\t");elsebreak;}for(j=0;;j++) //判断输入月份是否合理{PF("\t\t输入学生出生月:\t");scanf("%d",&p1->BirthMonth); //出生月if(p1->BirthMonth<1||p1->BirthMonth>12)PF("\t\t月份输入错误不符合要求,请重新输入出生月份:\t");elsebreak;}for(j=0;;j++) // 判断输入出生日是否合理{ PF("\t\t输入学生出生日:\t");scanf("%d",&p1->BirthDay); //出生日if(p1->BirthDay<1||p1->BirthDay>31)PF("\t\t出生日输入错误不符合要求,请重新输入出生日:\t");elsebreak;}PF("\t\t输入学生的外语成绩:\t");scanf("%f",&p1->score0); //各科成绩PF("\t\t输入学生的数学成绩:\t");scanf("%f",&p1->score1);PF("\t\t输入学生的C语言成绩:\t");scanf("%f",&p1->score2);PF("\t\t输入学生的马哲成绩:\t");scanf("%f",&p1->score3);a=p1->score0+p1->score1+p1->score2+p1->score3; //求该生的各科总成绩b=(a/4); //求该生的平均成绩p1->sum=a;p1->average=b;English=English+p1->score0; //求学生英语总分Math=Math+p1->score1; //求学生数学总分C=C+p1->score2; //求学生C语言总分Mazhe=Mazhe+p1->score3; //求学生马哲总分Sum[c++]=a; //将各学生的总成绩输入到一个全局数组当中,方便按成绩排序Avr[d++]=b; //将个学生的平均分输入到一个全局数组中存放n++;if(head->next==NULL){head=(StudentNode *)malloc(LEN);head->next=p1;}else{for(p2=head;p2->next!=NULL;p2=p2->next); /*找到最后的结点,然后将增加的结点挂在它上面*/p2->next=p1;}p1->next=NULL;save();//保存到文件}//******************************************显示链表中所有记录学生信息******************************************void print_stu() //学生信息浏览{StudentNode *p=NULL;if(head==NULL) //判断链表是否为空{PF("文档中无记录!\n");return;}for(p=head->next;p!=NULL;p=p->next) //读出信息{PF("**************************************查看链表中所有记录学生信息**************************************\n");PF("\t学生学号:\t%s\n",p->IDNumber);PF("\t学生姓:\t%s\n",p->FamilyName);PF("\t学生名:\t%s\n",p->GivenName);PF("\t学生性别:\t%d\n",p->sex);PF("\t学生出生年:\t%d\n",p->BirthYear);PF("\t学生出生月:\t%d\n",p->BirthMonth);PF("\t学生出生日:\t%d\n",p->BirthDay);PF("\t学生英语成绩:\t%f\n",p->score0);PF("\t学生数学成绩:\t%f\n",p->score1);PF("\t学生C语言成绩:\t%f\n",p->score2);PF("\t学生马哲成绩:\t%f\n",p->score3);PF("\t学生总成绩:\t%f\n",p->sum);PF("\t学生平均成绩:\t%f\n",p->average);PF("\n");} //输出信息PF("\t各个学生总分分别为:");for(n=0;n<c;n++)PF("%f\t",Sum[n]);PF("\n");PF("\t各个学生平均分分别为:");for(n=0;n<d;n++)PF("%f\t",Avr[n]);}//******************************************按照学生姓查找记录******************************************void search_name() //按照学生姓查找记录{int i=0;StudentNode *p=NULL;char FamilyName[20];if(head==NULL) //判断链表是否为空{PF("文档中无记录!\n");return;}PF("输入学生姓:");scanf("%s", FamilyName);for(p=head->next;p!=NULL;p=p->next) //读出信息{if(!strcmp(p->FamilyName, FamilyName)){PF("\t\t您查找的学生有:\n");PF("\n");PF("\t\t学生学号:\t%s\n",p->IDNumber);PF("\t\t学生姓:\t%s\n",p->FamilyName);PF("\t\t学生名:\t%s\n",p->GivenName);PF("\t\t学生性别:\t%d\n",p->sex);PF("\t\t学生出生年:\t%d\n",p->BirthYear);PF("\t\t学生出生月:\t%d\n",p->BirthMonth);PF("\t\t学生出生日:\t%d\n",p->BirthDay);PF("\t\t学生英语成绩:\t%f\n",p->score0);PF("\t\t学生数学成绩:\t%f\n",p->score1);PF("\t\t学生C语言成绩:\t%f\n",p->score2);PF("\t\t学生马哲成绩:\t%f\n",p->score3);PF("\t\t学生总成绩:\t%f\n",p->sum);PF("\t\t学生平均成绩:\t%f\n",p->average);PF("\n");i=1;}} //输出信息if(i!=1){PF("无该姓氏学生信息!请查证:"); } //没找到信息时的处理}//******************************************按照学生学号信息查找******************************************void search_NO() //学生学号信息查找{int i=0;StudentNode *p=NULL;char IDNumber[20];if(head==NULL) //判断链表是否为空{PF("文档中无记录!\n");return;}PF("请输入学生学号:");scanf("%s",IDNumber);for(p=head->next;p!=NULL;p=p->next) //读出信息{if(!strcmp(p->IDNumber,IDNumber)){PF("\t\t您查找的学生是:\n");PF("\n");PF("\t\t学生学号:\t%s\n",p->IDNumber);PF("\t\t学生姓:\t%s\n",p->FamilyName);PF("\t\t学生名:\t%s\n",p->GivenName);PF("\t\t学生性别:\t%d\n",p->sex);PF("\t\t学生出生年:\t%d\n",p->BirthYear);PF("\t\t学生出生月:\t%d\n",p->BirthMonth);PF("\t\t学生出生日:\t%d\n",p->BirthDay);PF("\t\t学生英语成绩:\t%f\n",p->score0);PF("\t\t学生数学成绩:\t%f\n",p->score1);PF("\t\t学生C语言成绩:\t%f\n",p->score2);PF("\t\t学生马哲成绩:\t%f\n",p->score3);PF("\t\t学生总成绩:\t%f\n",p->sum);PF("\t\t学生平均成绩:\t%f\n",p->average);PF("\n");i=1;}} //输出信息if(!i){PF("无该生信息!请查证:"); } //没找到信息时的处理}//******************************************按照学生班级统计并输出总成绩******************************************void search_clas() //学生学号信息查找{int i=0,j=0;StudentNode *p=NULL;char a[6],b[6];if(head==NULL) //判断链表是否为空{PF("文档中无记录!\n");return;}PF("请输入学生班级:");scanf("%s",a);for(p=head->next;p!=NULL;p=p->next) //读出信息{for(j=0;j<6;j++)b[j]=p->IDNumber[j];if(a[0]==b[0]&&a[1]==b[1]&&a[2]==b[2]&&a[3]==b[3]&&a[4]==b[4]&&a[5]==b[5]) {PF("\t\t您查找的班级学生有:\n");PF("\n");PF("\t\t学生学号:\t%s\n",p->IDNumber);PF("\t\t学生姓:\t%s\n",p->FamilyName);PF("\t\t学生名:\t%s\n",p->GivenName);PF("\t\t学生性别:\t%d\n",p->sex);PF("\t\t学生出生年:\t%d\n",p->BirthYear);PF("\t\t学生出生月:\t%d\n",p->BirthMonth);PF("\t\t学生出生日:\t%d\n",p->BirthDay);PF("\t\t学生英语成绩:\t%f\n",p->score0);PF("\t\t学生数学成绩:\t%f\n",p->score1);PF("\t\t学生C语言成绩:\t%f\n",p->score2);PF("\t\t学生马哲成绩:\t%f\n",p->score3);PF("\t\t学生总成绩:\t%f\n",p->sum);PF("\t\t学生平均成绩:\t%f\n",p->average);PF("\n");i=1;}} //输出信息if(!i){PF("无该班级信息!请查证:"); } //没找到信息时的处理}//******************************************修改学生信息******************************************void revise_stu(){int y,j,k=0,m=0;int i=0;float a,b;y=time();StudentNode *p=NULL;if(head==NULL) //判断链表是否为空{PF("文档中无记录!\n");return;}char IDNumber[20];PF("请输入学生的学号:\t");scanf("%s",IDNumber);for(p=head->next;p!=NULL;p=p->next){if(!strcmp(p->IDNumber,IDNumber)) //验证信息是否正确{PF("\t\t你要修改的学生是:\n");PF("\n");PF("\t\t学生学号:\t%s\n",p->IDNumber);PF("\t\t学生姓:\t%s\n",p->FamilyName);PF("\t\t学生名:\t%s\n",p->GivenName);PF("\t\t学生性别(0代表女,1代表男):\t%d\n",p->sex);PF("\t\t学生出生年:\t%d\n",p->BirthYear);PF("\t\t学生出生月:\t%d\n",p->BirthMonth);PF("\t\t学生出生日:\t%d\n",p->BirthDay);PF("\t\t学生英语成绩:\t%f\n",p->score0);PF("\t\t学生数学成绩:\t%f\n",p->score1);PF("\t\t学生C语言成绩:\t%f\n",p->score2);PF("\t\t学生马哲成绩:\t%f\n",p->score3);PF("\t\t学生总成绩:\t%f\n",p->sum);PF("\t\t学生平均成绩:\t%f\n",p->average);PF("\n");//输出要修改信息i=1;for(k=0;k<c;k++) //记录被修改学生总分在数组中的位子{ if(p->sum==Sum[k])break;}for(m=0;m<d;m++) //记录被修改学生平均分在数组中的位子{ if(p->average==Avr[m])break;}English=English-p->score0; //修改学生英语总分Math=Math-p->score1; //修改学生数学总分C=C-p->score2; //修改学生C语言总分Mazhe=Mazhe-p->score3; //修改学生马哲总分PF("\t\t您修改学号为%s的学生:\n",IDNumber);PF("\n");strcpy(p->IDNumber,IDNumber);PF("\t\t输入修改学生姓:\t");scanf("%s",p->FamilyName);PF("\t\t输入修改学生名:\t");scanf("%s",p->GivenName);PF("\t\t输入修改学生性别(0代表女,1代表男):\t");scanf("%d",&p->sex);for(j=0;;j++) //判断输入年份是否合理,假设人年龄在0-100岁之间为正常{PF("\t\t输入学生出生年:\t");scanf("%d",&p->BirthYear); //出生年if((y-p->BirthYear)>100||(p->BirthYear>y))PF("\t\t年份输入错误不符合要求,请重新输入出生年份:\t");elsebreak;}for(j=0;;j++) //判断输入月份是否合理{PF("\t\t输入学生出生月:\t");scanf("%d",&p->BirthMonth); //出生月if(p->BirthMonth<1||p->BirthMonth>12)PF("\t\t月份输入错误不符合要求,请重新输入出生月份:\t");elsebreak;}for(j=0;;j++) // 判断输入出生日是否合理{ PF("\t\t输入学生出生日:\t");scanf("%d",&p->BirthDay); //出生日if(p->BirthDay<1||p->BirthDay>31)PF("\t\t出生日输入错误不符合要求,请重新输入出生日:\t");elsebreak;}PF("\t\t输入学生的外语成绩:\t");scanf("%f",&p->score0); //修改的各科成绩PF("\t\t输入学生的数学成绩:\t");scanf("%f",&p->score1);PF("\t\t输入学生的C语言成绩:\t");scanf("%f",&p->score2);PF("\t\t输入学生的马哲成绩:\t");scanf("%f",&p->score3);a=p->score0+p->score1+p->score2+p->score3; //求该生的各科总成绩b=(a/4); //求该生的平均成绩p->sum=a;p->average=b;Sum[k]=p->sum; //将新的总分修改原总分Avr[m]=p->average; //将新的平均分修改原平均分English=English+p->score0; //修改学生英语总分Math=Math+p->score1; //修改学生数学总分C=C+p->score2; //修改学生C语言总分Mazhe=Mazhe+p->score3; //修改学生马哲总分PF("\n"); //输入修改信息save();}}if(!i){PF("无该生信息!请查证:");} /*没找到信息时的处理*/}//******************************************删除学生信息******************************************void del_stu(){ int i=0;StudentNode *p=NULL;if(head==NULL) //判断链表是否为空{PF("文档中无记录!\n");return;}else{char IDNumber[20];PF("请输入学生的学号:\t");scanf("%s",IDNumber);for(p=head;p!=NULL;p=p->next){if(!strcmp(p->next->IDNumber,IDNumber)) //验证信息是否正确{ PF("%s\n",IDNumber);PF("\t\t您要删除的学生是:\n");PF("\n");PF("\t\t学生学号:\t%s\n",p->next->IDNumber);PF("\t\t学生姓:\t%s\n",p->next->FamilyName);PF("\t\t学生名:\t%s\n",p->next->GivenName);PF("\t\t学生性别:\t%d\n",p->next->sex);PF("\t\t学生出生年:\t%d\n",p->next->BirthYear);PF("\t\t学生出生月:\t%d\n",p->next->BirthMonth);PF("\t\t学生出生日:\t%d\n",p->next->BirthDay);PF("\t\t学生英语成绩:\t%f\n",p->next->score0);PF("\t\t学生数学成绩:\t%f\n",p->next->score1);PF("\t\t学生C语言成绩:\t%f\n",p->next->score2);PF("\t\t学生马哲成绩:\t%f\n",p->next->score3);PF("\t\t学生总成绩:\t%f\n",p->next->sum);PF("\t\t学生平均成绩:\t%f\n",p->next->average);PF("\n"); //输出要删除的信息English=English-(p->next->score0); //修改学生英语总分Math=Math-(p->score1); //修改学生数学总分C=C-(p->next->score2); //修改学生C语言总分Mazhe=Mazhe-(p->next->score3); //修改学生马哲总分for(n=0;n<c;n++) //删除记录总分数组中该生记录,并且后面数据往前移一位{if(p->next->sum==Sum[n])for(j=n;j<c;j++)Sum[j]=Sum[j+1];break;}c--; //数据总数减一for(n=0;n<d;n++) //删除记录总平均分组中该生记录,并且后面数据往前移一位{if(p->next->average==Avr[n])for(j=n;j<d;j++)Avr[j]=Avr[j+1];break;}d--; //数据总数减一i=1;if(p->next->next){printf("第一个\n");p->next=p->next->next;}elsep->next=NULL;n--;save();return;} //if的括号} //大for循环的if(!i){PF("无该生信息!请查证:"); //没找到信息时的处理return;}} //else的括号save();}//******************************************将链表中记录保存到文件中******************************************void save(){printf("**************************************保存信息并结束**************************************\n");StudentNode *p=NULL;FILE *fp;char *filename="fname.txt";if((fp=fopen("fname.txt","w"))==NULL) //出错检测{printf("\n打不开文件!\n");return;}if(head->next==NULL){printf("\n信息为空!\n");return;}elsep=head->next;while(p!=NULL){fprintf(fp,"%s %s %s %d %d %d %d %f %f %f %f %f %f \n",p->IDNumber,p->FamilyName,p->GivenName,p->sex,p->BirthYear,p->BirthMonth,p->BirthDay,p->score0,p->score1,p->score2,p->score3,p->su m,p->average);//存入文件p=p->next;}printf("保存完毕!\n");fclose(fp);}//计算所有学生以及各科总分和均分,可评估学校教学质量void jisuan(){float sum=0,avr;int j;for(j=0;j<c;j++)sum=sum+Sum[j];avr=sum/c;PF("全部学生总成绩为:%f",sum);PF("\n");PF("\n");PF("全部学生平均成绩为:%f",avr);PF("\n");PF("\n");PF("所有学生英语成绩总和为:%f",English);PF("\n");PF("\n");PF("全校学生英语平均成绩为:%f",English/c);PF("\n");PF("\n");PF("所有学生数学成绩总和为:%f",Math);PF("\n");PF("\n");PF("全校学生数学平均成绩为:%f",Math/c);PF("\n");PF("\n");PF("所有学生C语言成绩总和为:%f",C);PF("\n");PF("\n");PF("全校学生C语言平均成绩为:%f",C/c);PF("\n");PF("\n");PF("所有学生马哲成绩总和为:%f",Mazhe);PF("\n");PF("\n");PF("全校学生马哲平均成绩为:%f",Mazhe/c);PF("\n");}//******************************************从文件中读出所有学生记录信息******************************************void Loadf() //读出学生信息{StudentNode *p=NULL;if(head==NULL) //判断链表是否为空{PF("文档中无记录!\n");return;}for(p=head->next;p!=NULL;p=p->next) //读出信息{PF("**************************************读出链表中所有记录学生信息**************************************\n");PF("\t学生学号:\t%s\n",p->IDNumber);PF("\t学生姓:\t%s\n",p->FamilyName);PF("\t学生名:\t%s\n",p->GivenName);PF("\t学生性别:\t%d\n",p->sex);PF("\t学生出生年:\t%d\n",p->BirthYear);PF("\t学生出生月:\t%d\n",p->BirthMonth);PF("\t学生出生日:\t%d\n",p->BirthDay);PF("\t学生英语成绩:\t%f\n",p->score0);PF("\t学生数学成绩:\t%f\n",p->score1);PF("\t学生C语言成绩:\t%f\n",p->score2);PF("\t学生马哲成绩:\t%f\n",p->score3);PF("\t学生总成绩:\t%f\n",p->sum);PF("\t学生平均成绩:\t%f\n",p->average);PF("\n");} //输出信息PF("\t各个学生总分分别为:");for(n=0;n<c;n++)PF("%f\t",Sum[n]);PF("\n");PF("\t各个学生平均分分别为:");for(n=0;n<d;n++)PF("%f\t",Avr[n]);}//******************************************插入学生信息******************************************void insert_stu() //插入学生信息{float a,b; //a,b分别用来存放该生的各科总成绩和平均成绩int y,j;y=time();n=0;StudentNode *p1=NULL,*p2=NULL;p1=( StudentNode *)malloc(sizeof(StudentNode));PF("\n**************************************插入学生信息**************************************\n"); //输入学生信息PF("\t\t输入插入学生学号:\t");scanf("%s",p1->IDNumber); //学号PF("\t\t输入插入学生的姓:\t");scanf("%s",p1->FamilyName); //姓PF("\t\t输入插入学生的名:\t");scanf("%s",p1->GivenName); //名PF("\t\t输入插入学生性别(0代表女,1代表男):\t");scanf("%d",&p1->sex); //性别for(j=0;;j++) //判断输入年份是否合理,假设人年龄在0-100岁之间为正常{PF("\t\t输入插入学生出生年:\t");scanf("%d",&p1->BirthYear); //出生年if((y-p1->BirthYear)>100||(p1->BirthYear>y))PF("\t\t年份输入错误不符合要求,请重新输入出生年份:\t");elsebreak;}for(j=0;;j++) //判断输入月份是否合理{PF("\t\t输入插入学生出生月:\t");scanf("%d",&p1->BirthMonth); //出生月if(p1->BirthMonth<1||p1->BirthMonth>12)PF("\t\t月份输入错误不符合要求,请重新输入出生月份:\t");elsebreak;}for(j=0;;j++) // 判断输入出生日是否合理{ PF("\t\t输入插入学生出生日:\t");scanf("%d",&p1->BirthDay); //出生日if(p1->BirthDay<1||p1->BirthDay>31)PF("\t\t出生日输入错误不符合要求,请重新输入出生日:\t");elsebreak;}PF("\t\t输入插入学生的外语成绩:\t");scanf("%f",&p1->score0); //各科成绩PF("\t\t输入插入学生的数学成绩:\t");scanf("%f",&p1->score1);PF("\t\t输入插入学生的C语言成绩:\t");scanf("%f",&p1->score2);PF("\t\t输入插入学生的马哲成绩:\t");scanf("%f",&p1->score3);a=p1->score0+p1->score1+p1->score2+p1->score3; //求该生的各科总成绩b=(a/4); //求该生的平均成绩p1->sum=a;p1->average=b;English=English+p1->score0; //求学生英语总分Math=Math+p1->score1; //求学生数学总分C=C+p1->score2; //求学生C语言总分Mazhe=Mazhe+p1->score3; //求学生马哲总分Sum[c++]=a; //将各学生的总成绩输入到一个全局数组当中,方便按成绩排序Avr[d++]=b; //将各学生的平均分输入到一个全局数组当中,方便按平均成绩阶段输出n++;if(head->next==NULL){head=(StudentNode *)malloc(LEN);head->next=p1;}else{for(p2=head;p2->next!=NULL;p2=p2->next); /*找到最后的结点,然后将增加的结点挂在它上面*/p2->next=p1;}p1->next=NULL;save();//保存到文件}//******************************************学生成绩排名及基本数据的统计计算******************************************void sort(float x[],int n) //数组排序函数{int i,j,k;float t;for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(x[j]>x[k])k=j;if(k!=i){t=x[i];x[i]=x[k];x[k]=t;}}}void search_allscore() //按学生总分查找,用来输出排名。

相关文档
最新文档