最新C++学生成绩管理系统-源程序
c语言学生成绩管理系统含源代码
C 语言程序设计作业一设计项目:学生成绩管理系统二总体设计:1 程序设计组成框图:2:模块功能说明:1 输入功能:输入学生姓名学号及成绩。
2 查看功能:输出姓名学号及各科成绩。
3 查询功能:通过学号查询学生姓名及各科成绩。
4 统计功能:统计班级学生及格率,优秀率,各个学生成绩方差等。
5 修改功能:通过输入学号修改指定学生的错误信息。
6添加功能:添加学生信息。
7删除功能:通过输入学号输入指定学生信息。
8保存功能:将学生信息保存。
9 退出系统。
3:主要函数之间的调用关系及各自功能:主要函数的函数原型void inputscore(void);void savescore(void);void avergescore(void);void modifyscore(void);void lookscore(void);void searchscore(void);void statistic(void);void add(void);void modify(void);void delscore(void);void menu(void);i.在菜单界面输入1,调用函数inputscore( )实现输入学生成绩信息功能。
ii.在菜单界面2,调用函数lookscore( )实现学生成绩按平均分高低排序输。
出,同时lookscore()函数调用avergescore()函数实现各个学生平均分的计算。
iii.在菜单界面输入3,调用searchscore()函数实现通过学号查找学生成绩信息功能。
iv.在菜单界面输入4,调用statistic()函数输出班级及格率,优秀率,学生成绩方差,不及格学生名单。
v.在菜单界面输入5,调用modify()函数实现通过学号修改学生成绩的功能vi.在菜单界面输入6,调用add()函数实现添加学生成绩。
vii.在菜单界面输入7,调用delscore()函数实现删除指定学生成绩。
viii.在菜单界面输入8,调用savescore()函数将学生成绩信息保存。
C语言 学生成绩管理系统源程序
short told;
float score[k];
char name[10],g;
head2=p4=p1=head; //p4临时指针变量
p2=(TYPE*) malloc(LEN);
printf("请输入学号: ");
scanf("%d",&num);
for(i=1;i<=N;i++)
{
if(p4->num==(unsigned)num)
num=0; //标记使程序进入出错提示
printf("******************输入y或Y继续***按任意键退出*******************\n");
g=getche();
switch(g)
{
case 'y':case 'Y':
p4=head;
i=0;
m=0;
scanf("%d",&num);
p1->num=num;
if(num<=NULL) //学号小于等于0出错
{
getchar();
printf("*********************输入错误************************\n");
char name[10]; //姓名
short old;
float score[k 学号");
printf(" 姓名");
printf(" 年龄 ");
学生成绩管理系统C语言源程序
for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);
if (!p)
{
printf("\n\n找不到你要查询的姓名,请重新输入,输入0表\
示结束:");
scanf("%s",tem);
}
else if (!strcmp(p->name,tem))
n=0;
head=(Student *)malloc(LEN);
p2=head;
printf("\n请输入第%d名学生的学号,学号为0表示结束输入:",n+1);
scanf("%d",&flag);
while(getchar()!='\n');
for(;flag;)
{
n++;
p1=(Student *)malloc(LEN);
char xueqi[20];
int score[4];
int sum;
struct student *next;
}Student;
int n;
Student *cin(void);
Student *sort_1(Student *head,int);
void sort_2(Student *head);
max_3=min_3=p->score[2];max_2=min_2=p->score[3];
max_sum=min_sum=p->sum;
for(;p;p=p->next)
{
if (max_1<p->score[0]) max_1=p->score[0];
学生成绩管理系统c语言源代码
学生成绩管理系统c语言源代码介绍学生成绩管理系统是一个能够帮助学校、教师和学生管理和查询学生成绩的软件系统。
通过该系统,教师可以录入学生的考试成绩,并进行统计和分析;学生可以查询自己的成绩和排名;学校可以通过系统生成各种报表和分析数据。
本文将介绍一个使用C语言编写的学生成绩管理系统的源代码实现。
功能设计学生成绩管理系统的功能设计可以分为以下几个主要模块:登录模块1.输入用户名和密码;2.验证用户名和密码是否匹配;3.登录成功后进入主菜单。
学生管理模块1.输入学生信息(学号、姓名、性别、年龄等);2.添加学生信息到系统中;3.删除指定学号的学生信息;4.修改指定学号的学生信息;5.查询指定学号的学生信息;6.显示所有学生的信息。
课程管理模块1.输入课程信息(课程号、课程名称、授课教师等);2.添加课程信息到系统中;3.删除指定课程号的课程信息;4.修改指定课程号的课程信息;5.查询指定课程号的课程信息;6.显示所有课程的信息。
成绩管理模块1.输入学号和课程号;2.输入成绩信息(平时成绩、期末成绩、总评成绩等);3.添加成绩信息到系统中;4.修改指定学号和课程号的成绩信息;5.查询指定学号和课程号的成绩信息;6.统计指定课程的平均成绩、最高成绩和最低成绩;7.统计指定学生的平均成绩、最高成绩和最低成绩。
数据导入与导出模块1.从文件导入学生信息和成绩信息;2.将学生信息和成绩信息导出到文件。
源代码实现以下是一个使用C语言实现的学生成绩管理系统的源代码实例:#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义学生结构体typedef struct {int id;char name[100];char gender[10];int age;} Student;// 定义课程结构体typedef struct {int id;char name[100];char teacher[100];} Course;// 定义成绩结构体typedef struct {int studentId;int courseId;float ordinaryGrade;float finalGrade;float totalGrade;} Grade;// 学生管理函数void addStudent(Student *students, int *studentCount) {// 添加学生信息到系统}void deleteStudent(Student *students, int *studentCount, int studentId) { // 删除指定学号的学生信息}void modifyStudent(Student *students, int studentId) {// 修改指定学号的学生信息}void queryStudent(Student *students, int studentId) {// 查询指定学号的学生信息}void displayAllStudents(Student *students, int studentCount) { // 显示所有学生的信息}// 课程管理函数void addCourse(Course *courses, int *courseCount) {// 添加课程信息到系统}void deleteCourse(Course *courses, int *courseCount, int courseId) { // 删除指定课程号的课程信息}void modifyCourse(Course *courses, int courseId) {// 修改指定课程号的课程信息}void queryCourse(Course *courses, int courseId) {// 查询指定课程号的课程信息}void displayAllCourses(Course *courses, int courseCount) {// 显示所有课程的信息}// 成绩管理函数void addGrade(Grade *grades, int *gradeCount) {// 添加成绩信息到系统}void modifyGrade(Grade *grades, int gradeCount, int studentId, int courseId) { // 修改指定学号和课程号的成绩信息}void queryGrade(Grade *grades, int gradeCount, int studentId, int courseId) { // 查询指定学号和课程号的成绩信息}void calculateCourseStatistics(Grade *grades, int gradeCount, int courseId) { // 统计指定课程的平均成绩、最高成绩和最低成绩}void calculateStudentStatistics(Grade *grades, int gradeCount, int studentId) {// 统计指定学生的平均成绩、最高成绩和最低成绩}// 数据导入与导出函数void importData() {// 从文件导入学生信息和成绩信息}void exportData() {// 将学生信息和成绩信息导出到文件}int main() {// 主程序菜单return 0;}总结学生成绩管理系统是一个非常有用的工具,可以帮助学校、教师和学生高效地管理和查询学生成绩。
学生成绩管理系统(数据结构C语言版源代码)
让结局不留遗憾,让过程更加完美。
#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 ;}。
C语言学生成绩管理系统源代码
C语言学生成绩管理系统源代码程序代码:#include;#include;#include;#define SIZE 3 /*定义常量SIZE便于以后的修改*/ struct student /*定义一个结构体数组存放学生的信息*/{int number; /*学号*/char name[20];/*名字*/char xueyuan[20];/*学院*/int cla;/*班级*/int score[3];/*分数*/int sum;/*总分*/int average;/*平均分*/}stu[SIZE];void menu();/*调用菜单函数*/void write();/*读入信息*/void save(int x);/*保存stud.dat文件函数*/void SaveOneStudent(int i);/*保存一个学生信息*/ void SaveAllStudent(int n);/*保存全部学生信息*/ void inturn (struct student c[]);/*用于对学生的信息按学号排序的函数*/void save2();/*将排序后的信息存入student.dat文件中*/int AddStudent(int n);/*增加学生信息*/void InputOnestudent(int i);/*输入一个同学信息*/ int DelStudent(int n);/*删除学生信息*/void ModifyStudent(int n);/*修改学生信息*/void OutputOneStudent(int i);/*查询一个学生信息*/ void SearchMenu(int n);/*查询学生信息操作*/void SearchNumber(int n);/*按学号查询学生信息*/ void SearchName(int n);/*按姓名查询学生信息*/ void SearchXueyuan(int n);/*按所在学院查询学生信息*/void SearchCla(int n);/*按所在班级查询学生信息*/ void tongji();/*学生信息统计操作*/void tongji2();/*统计不及格率操作*/void zfsc();/*总分排序操作*/void avecz();/*按平均分统计人数操作*/void avecz();/*按平均分统计人数操作*/void search();/*查找最高成绩操作*/void tongji2();/*统计不及格率操作*/void read();/*读取student.dat文件文件中学生的信息*//*主函数************************************************* ***********************************/void main(){int n=SIZE;int choice;/*用户选择变量*/printf("************************************ *******************************************\n&quo t;);printf("* *\n");printf("* Hwadee &学生成绩文件管理& Hwadee *\n");printf("* *\n");printf("*******************************************************************************\n\n\n");printf("******************************●●欢迎使用●●*********************************");while (1){menu();/*调用菜单函数形成操作界面*/printf("请选择:");scanf("%d", &choice);if ( choice==0 ){printf("\t\t\t\t谢谢使用!!!");break;}switch(choice) /*多重选择实现功能不同的功能*/ {case 1:write();inturn(stu);save(SIZE);break;case 2:AddStudent(n);break;case 3:DelStudent(n);break;case 4:ModifyStudent(n);break;case 5:SearchMenu(n);break;case 6:tongji();break;case 0:printf("\n谢谢使用!再见!\n");default:printf("\n按键错误!请重新选择!\n"); }/*结束switch*/}/*结束while*/}部分程序清单/*菜单函数************************************************* ************************************/void menu(){printf("************请输入所需操作***********\n");/*选择功能菜单*/printf("************************************ *\n");printf("1.学生成绩写入及排序\n"); printf("2.增加学生信息\n");printf("3.删除学生信息\n");printf("4.修改学生信息\n");printf("5.查询学生信息\n");printf("6.学生成绩统计操作\n"); printf("0.退出系统\n");printf("**************************************\n");}/*写入函数*************************************************************************************/void write(){int i;/*计数变量*/for(i=0;i;m[j].number){temp=m[i];m[i]=m[j];m[j]=temp;}}printf("\n排序后的学生信息:\n\n"); for(i=0;i;0&&x;59&&stu[i].average;69&&stu[i].average;79&&stu[i].average;89&&stu[i].average;stu[k].score[0])i=k;}printf("高数成绩最高学生信息如下:\n");OutputOneStudent(k);printf(" 输出结束\n");printf("************************************************* *********");}if(x==2){for(i=0;i;stu[k].score[1])i=k;}printf("英语成绩最高学生信息如下:\n");OutputOneStudent(k);printf(" 输出结束\n");printf("************************************************* *********");}if(x==3){for(i=0;i;stu[k].score[2])i=k;}printf("C语言成绩最高学生信息如下:\n");OutputOneStudent(k);printf(" 输出结束\n");printf("************************************************* *********");}}/*统计不及格率操作************************************************* ****************************/void tongji2(){int x,i,k;printf("********************输入统计选项**********************\n"); /*选择功能菜单*/ printf("统计高数成绩不及格率请按:1\n");printf("统计英语成绩不及格率请按:2\n");printf("统计C语言成绩不及格率请按:3\n");scanf("%d",&x);/*用户选择变量 */ if(x==1){for(i=0;i。
C语言-学生成绩管理系统
在TC环境下吧,界面是一片的黑。
可以实现成绩的录入、查询、排序、物理删除、永久删除……记不太清楚了,当时我们的报告要求手写的,也没留下什么电子资料。
C语言还是很好学很好用的,希望对大家有帮助!#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>struct student{int id;char name[10];int age;char sex[10];char birthady[20];char address[50];char tel[15];char E_mail[30];}st[50];int i=0;void shuru() {char a;do{printf("\ninput num:");scanf("%d",&st[i].id);fflush(stdin);printf("\ninput name:");gets(st[i].name);printf("\ninput age:");scanf("%d",&st[i].age);fflush(stdin);printf("\ninput sex:");gets(st[i].sex);fflush(stdin);printf("\ninput birth:");gets(st[i].birthady);fflush(stdin);printf("\ninput address:");gets(st[i].address);printf("\ninput tell:");scanf("%s",&st[i].tel);printf("\ninput E_mail:");scanf("%s",&st[i].E_mail);printf("\nWhether input another student's information ?(y/n)");fflush(stdin);a=getchar();i++;}while(a=='y' && i<=50);}void xianshi(){int j;printf("======================XUESHENGXINXIGUANLIXITONG=============================\n");printf("num\tname\tage\tsex\tbirth\taddr tell E_mail\n");for(j=0;j<i;j++)printf("%d\t%s\t%d\t%s\t%s\t%s%12s%18s\n",st[j].id,st[j].name,st[j].age,st[j].sex,st[j].birthady,st[j].address,st[j].tel,st[j].E_mail);printf("============================================ZHI ZUO REN:sunqi=========\n");}void clearscreen(){getchar();system("cls");}void paixu(){int j,k;int temp;for(j=0;j<i;j++){for(k=0;k<i-1-j;k++){if(st[k].age<st[k+1].age){temp=st[k].age;st[k].age=st[k+1].age;st[k+1].age=temp;}}}xianshi();}void chazhao(){int m=0;char name[20],b;do{printf("\ninput name of student:");fflush(stdin);gets(name);for(m=0;m<20;m++){if(strcmp(name,st[m].name)==0){printf("\n\tThe student is found in %d\n",m+1);break;}}if(m>=20)printf("\n\tCan not find this student\n");else{printf("num\tname\tage\tsex\tbirth\taddr tell E_mail\n");printf("%d\t%s\t%d\t%s\t%s\t%s%12s%18s\n",st[m].id,st[m].name,st[m].age,st[m].sex,st[m].birthady,st[m].address,st[m].tel,st[m].E_mail); }printf("\nFind another student?(y/n)");fflush(stdin);b=getchar();}while(b=='y');}void shanchu(){char name[20],c;int a,b;do{printf("\nInput the name of delet student:\n");fflush(stdin);gets(name);for(a=0;a<i;a++){if(strcmp(name,st[a].name)==0)break;}for(b=a;b<i;b++)st[b]=st[b+1];if(a>i)printf("\tCan not find this student\n");else{i--;xianshi();}printf("\nContinue delet a student?(y/n) ");fflush(stdin);c=getchar();}while(c=='y');}void charu(){shuru();paixu();}void main(){int change;do{system("cls");printf("*****************XUESHENG XINXI GUANLIXITONG *****************\n"); printf(" 1: shuru xuesheng xingxi\n");printf(" 2: xianshi xuesheng xinxi\n");printf(" 3: chazhao xuesheng xinxi\n");printf(" 4: shanchu xuesheng xinxi\n");printf(" 5: charu xuesheng xinxi\n");printf(" 6: paixu xuesheng xinxi\n");printf(" 7: tuichu chengxu\n");printf("***************************************************************\n"); fflush(stdin);printf("shuru gongneng xuanxiang:");scanf("%d",&change);switch(change){case 1:shuru(); break;case 2:xianshi(); break;case 3:chazhao(); break;case 4:shanchu(); break; case 5:charu(); break; case 6:paixu();break; case 7:break;}getch();}while(change!=7); }。
c语言学生成绩信息管理系统源代码
C语言学生成绩信息管理系统源代码一、概述在学校教学管理工作中,学生成绩信息管理是一个至关重要的环节。
为了方便高效地进行学生成绩信息的录入、查询和管理,我们可以利用C语言编写一个学生成绩信息管理系统。
本文将介绍该系统的源代码,并对其进行详细的解释和讲解。
二、系统功能需求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 语言程序设计作业一设计项目:学生成绩管理系统二总体设计:1 程序设计组成框图:2:模块功能说明:1 输入功能:输入学生姓名学号及成绩。
2 查看功能:输出姓名学号及各科成绩。
3 查询功能:通过学号查询学生姓名及各科成绩。
4 统计功能:统计班级学生及格率,优秀率,各个学生成绩方差等。
5 修改功能:通过输入学号修改指定学生的错误信息。
6添加功能:添加学生信息。
7删除功能:通过输入学号输入指定学生信息。
8保存功能:将学生信息保存。
9 退出系统。
3:主要函数之间的调用关系及各自功能:主要函数的函数原型void inputscore(void);void savescore(void);void avergescore(void);void modifyscore(void);void lookscore(void);void searchscore(void);void statistic(void);void add(void);void modify(void);void delscore(void);void menu(void);i.在菜单界面输入1,调用函数inputscore( )实现输入学生成绩信息功能。
ii.在菜单界面2,调用函数lookscore( )实现学生成绩按平均分高低排序输。
出,同时lookscore()函数调用avergescore()函数实现各个学生平均分的计算。
iii.在菜单界面输入3,调用searchscore()函数实现通过学号查找学生成绩信息功能。
iv.在菜单界面输入4,调用statistic()函数输出班级及格率,优秀率,学生成绩方差,不及格学生名单。
v.在菜单界面输入5,调用modify()函数实现通过学号修改学生成绩的功能vi.在菜单界面输入6,调用add()函数实现添加学生成绩。
vii.在菜单界面输入7,调用delscore()函数实现删除指定学生成绩。
viii.在菜单界面输入8,调用savescore()函数将学生成绩信息保存。
学生成绩管理系统C语言课程设计源代码
#include<stdio.h>#include<string.h>#include<math.h>#include<conio.h>#include<stdlib.h>struct chengji /* 成绩结构体*/ {int point;char subject[20];};struct student /* 学生结构体*/ { int w;char name[20];int number;struct chengji cheng[30];float sum;float average;}stu[40];void pjun(); /*按平均分排序*/void pfen(); /*按总分排序*/ void addnew(); /*录入学生成绩*/void pall(); /*显示所有成绩*/ void check(); /*查询菜单*/ void pnum(); /*按学号排序*/ void pjing(); /*精确查找*//****************************************************************************** *************************//*主菜单*/main(){char choose;while(1){printf("\n\t\t**************************************");printf("\n\t\t* 欢迎使用成绩管理系统*");printf("\n\t\t* *");printf("\n\t\t* 请选择*");printf("\n\t\t* 1. 录入学生成绩*");printf("\n\t\t* 2. 查询学生成绩*");printf("\n\t\t* 3. 清屏*");printf("\n\t\t* 0. 退出程序*");printf("\n\t\t* *");printf("\n\t\t**************************************");printf("\n\n");printf("请选择:");scanf("%c",&choose);getchar();switch(choose){ case '1': addnew(); break;case '2': check(); break;case '3': system("cls"); break;case '0': exit(0); break;default: printf("输入错误,请从新输入!\n\n");}}}/****************************************************************************** **********************//*录入学生成绩*/void addnew(){int n,m,i,p;float sum;float average;FILE *file;sum=0.00000;average=0.00000;if((file=fopen("c:\\student.dat","rb"))==NULL){file = fopen("c:\\student.dat", "wb+"); /* 创建一个文件*/}printf("请输入需要录入的学生人数: ");scanf("%d",&n);for(i=0;i<n;i++){printf("输入第%d个同学信息:\n",i+1);printf("姓名:");scanf("%s",&stu[i].name);printf("学号:");scanf("%d",&stu[i].number);printf("输入科目个数:");scanf("%d",&m);stu[i].w=m;printf("按科目(回车)成绩(回车)……的顺序输入:\n"); /* 录入成绩*/for(p=0;p<m;p++){scanf("%s",&stu[i].cheng[p].subject);scanf("%d",&stu[i].cheng[p].point);stu[i].sum=stu[i].sum+stu[i].cheng[p].point;stu[i].average=stu[i].sum/m;}/* printf("总分%f , 平均分%f\n ",stu[i].sum,stu[i].average);*/fwrite(&stu[i],sizeof(stu),1,file); /* 把stu写入文件*/}fclose(file); /* 关闭文件*/fflush(stdin);system("cls");}/****************************************************************************** **********************//*查询菜单*/void check(){while(1){ char choose;printf("\n\t\t**************************************");printf("\n\t\t* 查询菜单*");printf("\n\t\t* *");printf("\n\t\t* 请选择*");printf("\n\t\t* 1. 按学号排列*");printf("\n\t\t* 2. 按总分排列*");printf("\n\t\t* 3. 按平均分排列*");printf("\n\t\t* 4. 精确查询*");printf("\n\t\t* 5. 显示所有学生成绩*");printf("\n\t\t* 6. 清屏*");printf("\n\t\t* 0. 返回*");printf("\n\t\t**************************************");printf("\n\n");printf("请选择:");scanf("%c",&choose);getchar();switch(choose){ case '1': pnum(); break;case '2': pfen(); break;case '3': pjun(); break;case '4': pjing(); break;case '5': pall(); break;case '6': system("cls"); break;case '0': main(); break;}}}/****************************************************************************** **********************//*显示所有成绩*/void pall(){int i=0,m;FILE *file;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error!!\n");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0)/* 循环整个文件*/{ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++)/*显示各科成绩*/{printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}i++;fread(&stu[i],sizeof(stu),1,file);}fclose(file);}/****************************************************************************** *************************//*按学号排序*/void pnum(){ FILE *file;int j;int i=0;int n=0;int m=0;struct student bm; /*创建一个‘中间’结构体,用于交换*/if((file=fopen("c:\\student.dat","rb"))==NULL) /* 打开文件*/ { printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].number>stu[i+1].number) /*对比学号,对换stu*/{ bm=stu[i]; /*交换位置*/stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++)/* 交换后从新排序*/{ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/****************************************************************************** *************************//*按总分排序*/void pfen(){ FILE *file;int j;int i=0;int n=0;int m;struct student bm;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].sum<stu[i+1].sum){ bm=stu[i];stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++){ printf("姓名----学号----总分----平均分\n"); /*显示到屏幕*/printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/*******************************************************************************************************//*按平均分排序*/void pjun(){ FILE *file;int j;struct student bm;int i=0;int n=0;int m;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].average<stu[i+1].average){ bm=stu[i];stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++){ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/****************************************************************************** *************************//*精确查找*/void pjing(){int n;int i=0;int m;FILE *file;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}printf("请输入要查询的学生的学号:");scanf("%d",&n);getchar();fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){ if(n==stu[i].number) /*输出对应的学号的学生成绩*/{printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}break;}i++;fread(&stu[i],sizeof(stu),1,file);}fclose(file);fflush(stdin);}/******************************************结束*******************************************************/。
学生成绩管理系统(C语言源码)
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#define N 1000 /*链表导入数组的长度,可以说是记录数*/#define LEN sizeof(struct student) /*用LEN代替结构体的长度*/#define IFORM "%s%s%d%d%d%d%d" /*输入数据的格式*/#define IFORM2 p1->number,p1->name,&p1->grade[0],&p1->grade[1],&p1->grade[2],&p1->grade[3],&p1->grad e[4] /*输入数据存放到链表的格式*/#define OFORM "%s %s %d %d %d %d %d" /*将数据输出到文件的格式*/#define OFORM1 "%-10s %-6s %-4d %-4d %-4d %-4d %-4d"/*将数据打印到屏幕上的格式*/#define OFORM2 p1->number,p1->name,p1->grade[0],p1->grade[1],p1->grade[2],p1->grade[3],p1->grade[4] /*输出引用结构体得格式*/#define SINFO "请输入学号、姓名、大学英语、高等数学、线性代数、政治、计算机导论\n" /*输入数据的提示符*/#define SINFO2 "学号\t 姓名大学英语高等数学线性代数政治计算机导论\n" /*打印在屏幕上的各数据项的属性*/struct student{char number[12];char name[10];int grade[5];struct student * next;}; /*定义存放学生基本信息的结构体*/FILE *fp; /*定义文件的指针*/int open=0; /*用于表示是否有文件处于打开状态*/struct student * head; /*定义链表的头*/struct student * p1,* p2; /*定义用于链表输入输出的两个变量*/char name[100],ch; /*name用于存放打开的文件名,ch用于销毁回车符。
c课程设计学生成绩管理系统源代码
#include <stdio.h>#include <stdlib.h>#include <string.h>int n=5;/*全局变量*/ struct student /*定义结构体数组*/ { char num[10];char name[10];int score;}stu[3];int menu_select() /*菜单选择函数*/ { char a;do{system("cls");printf("\t************学生成绩管理系统****************\n");printf("\t\t1.输入学生成绩\n");printf("\t\t2.显示学生成绩\n");printf("\t\t3.学生成绩排序\n");printf("\t\t4.插入学生记录\n");printf("\t\t5.删除学生记录\n");printf("\t\t6.查询学生成绩\n");printf("\t\t7.修改学生成绩\n");printf("\t\t0.退出\n");printf("\t*********************************************\n");printf("\n");printf("给出你的选择(0-7):");a=getchar();}while(a<'0'||a>'7');return(a);}void input() /*定义输入函数*/char c;void menu();FILE *fp;if((fp=fopen("student message","w"))==NULL){printf("cannot open the file\n");exit(0);}printf("学号姓名分数(需要终止输入时请在该行结尾输入n)\n");for(i=0;;i++){ scanf("%s %s %d",stu[i].num,stu[i].name,&stu[i].score);fwrite(&stu[i],sizeof(struct student),1,fp);c=getchar();if(c=='n')break;}n=i+1;fclose(fp);system("pause");menu();}void display() /*定义显示函数*/ { int i;void menu();FILE *fp;if((fp=fopen("student message","r"))==NULL){printf("cannot open the file\n");exit(0);}printf("\t学号\t姓名\t分数\n");for(i=0;i<n;i++){ fread(&stu[i],sizeof(struct student),1,fp);printf("\t%s\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score); }fclose(fp);system("pause");}void sort() /*定义排序函数*/ { int i,j;struct student temp;void menu();FILE *fp;if((fp=fopen("student message","r"))==NULL){ printf("cannot open the file:\n");exit(0);}for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);for(j=0;j<n-1;j++)for(i=0;i<n-1-j;i++)if(stu[i].score<stu[i+1].score){temp=stu[i];stu[i]=stu[i+1];stu[i+1]=temp;}for(i=0;i<n;i++)printf("\t%s\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score);fclose(fp);system("pause");menu();}void insert() /*定义插入函数*/ { int i;struct student st;void menu();FILE *fp;if((fp=fopen("student message","a"))==NULL){ printf("cannot open the file:\n");exit(0);}for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);printf("输入要插入学生的信息:\n");printf("学号:");scanf("%s",st.num);printf("姓名:");scanf("%s",);printf("分数:");scanf("%d",&st.score);n++;fwrite(&st,sizeof(struct student),1,fp);fclose(fp);system("pause");menu();}void delet() /*定义删除函数*/ { int i,t;char name[10];void menu();FILE *fp,*fp1;if ((fp=fopen("student message","r"))==NULL){ printf("can not open file!\n");exit(0); }for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);if ((fp1=fopen("student message","w"))==NULL){ printf("can not open file!\n");exit(0); }printf("请输入要删除学生的姓名:");scanf("%s",name);for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0)for(i=0;i<t;i++)fwrite(&stu[i],sizeof(struct student),1,fp1);for(i=t+1;i<n;i++)fwrite(&stu[i],sizeof(struct student),1,fp1);printf("该学生信息已删除!\n\n");fclose(fp);fclose(fp1);system("pause");menu();}void query() /*定义查询函数*/ { int i;char a[10];void menu();FILE *fp;if((fp=fopen("student message","r"))==NULL){ printf("cannot open file\n");exit(0); }for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);printf("输入要查询学生的姓名:");scanf("%s",a);for(i=0;i<n;i++)if(strcmp(stu[i].name,a)==0)printf("\t%s\t%s\t%d\n",stu[i].num,stu[i].name,stu[i].score);fclose(fp);system("pause");menu();}void revise() /*定义修改函数*/char name[10];void menu();FILE *fp,*fp1;if((fp=fopen("student message","r"))==NULL){ printf("cannot open file\n");exit(0); }for(i=0;i<n;i++)fread(&stu[i],sizeof(struct student),1,fp);if ((fp1=fopen("student message","w"))==NULL){ printf("can not open file!\n");exit(0); }printf("请输入要修改学生的姓名:");scanf("%s",name);for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0)t=i;printf("依次输入要修改学生的学号、姓名、分数:");scanf("%s %s %d",stu[t].num,stu[t].name,&stu[t].score);for(i=0;i<n;i++)fwrite(&stu[i],sizeof(struct student),1,fp1);printf("该学生信息已修改成功!");fclose(fp);fclose(fp1);system("pause");menu();}void quite() /*退出*/ {printf("再见!!!\n\n");}void menu() /*定义菜单函数*/{ switch(menu_select()){ case '1': input();break;case '2': display();break;case '3': sort();break;case '4': insert();break;case '5': delet();break;case '6': query();break;case '7': revise();break;case '0': quite();break;}}void main() /*主函数*/ {menu();}。
学生成绩管理系统(数据结构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语言源代码)
while(1) /*一次可输入多条记录,直至输入学号为0的记录结点添加操作*/
{
while(1) /*输入学号,保证该学号没有被使用,若输入学号为0,则退出添加记录操作*/
{
stringinput(num,10,"input number(press '0'return menu):"); /*格式化输入学号并检验*/
{
printf("\n=====>Not student record!\n");
getchar();
return;
}
printf("\n\n");
printheader(); /*输出表格头部*/
while(p) /*逐条输出链表中存储的学生信息*/
{
printdata(p);
{
Node *r;
if(strcmp(nameornum,"num")==0) /*按学号查询*/
{
r=l->next;
while(r)
{
if(strcmp(r->data.num,findmess)==0) /*若找到findmess值的学号*/
return r;
Hale Waihona Puke { flag=1; break;
}
s=s->next;
}
if(flag==1) /*提示用户是否重新输入*/
{ getchar();
printf("=====>The number %s is existing,try again?(y/n):",num);
C语言程序设计-学生成绩管理系统源码
#include〈stdio.h>#include<conio。
h>#include<malloc.h>#include<string.h>struct STUDENT{char studentNumber[10];/*学生学号*/char studentName[20];/*学生姓名*/char className[20];/*班级名称*/float mark1;/*第1门成绩*/float mark2;/*第2门成绩*/float mark3;/*第3门成绩*/struct STUDENT *next;};struct STUDENT *headLink;/*链表表头指针*//*以下是函数声明*/void ReadInfoFormFile(void);/*读入信息形成文件*/void DisplayMenu(void);void CreateHeadLink(void);struct STUDENT *MallocNode(void);void GetInformation(struct STUDENT *t);void OutputInformation(void);void DisplayInfoBystudentName(void);void DisplayInfoBystudentNumber(void);void DisplayOneNode(struct STUDENT *t);void InsertOneNode(struct STUDENT *t);void DeleteNodeBystudentNumber(void);void ChangeMarkByName(void);void ChangeMarkByNumber(void);void SaveLinkToFile(void);void DisplayMarkSegment(void);/*显示各分数段的学生成绩*/ void CompositorByTotalMark(void);/*按总成绩排序*/int choose;/*用于接受用户的选择*//*主函数*/int main(){CreateHeadLink();ReadInfoFormFile();DisplayMenu();return 0;}/************************************函数功能:从文件中读学生信息到链表中************************************/void ReadInfoFormFile(void){FILE *fp;STUDENT *p;fp=fopen(”student。
c语言成绩管理系统源代码+流程图
#include<stdio.h>#include<string.h>#include<stdlib.h>void frist_print(){printf("\t\t********************************\n\n"); //欢迎信息printf("\t\t\t欢迎进入学生成绩系统\n");printf("\t\t\t\t\t\t\t\t 此程序合作完成由");printf("\n\t\t\t\t\t\t\t\t * * * * \n");printf("\t\t\t\t\t\t\t\t * * * * \n");printf("\t\t\t\t\t\t\t\t * * * \n");printf("\t\t\t\t\t\t\t\t * 王杨* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * 李淼鑫* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * 孙天顺* \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * * \n");printf("\t\t\t\t\t\t\t\t * \n");}//***********************************************************************************************************************************************************************************void menu(){printf("\n\t\t***********************************\n"); //管理菜单printf("\n\t\t==========1.录入学生成绩===========\n\t\t+\n");printf("\t\t==========2.显示学生成绩===========\n\t\t+\n");printf("\t\t==========3.查询学生成绩===========\n\t\t+\n");printf("\t\t==========4.添加学生成绩===========\n\t\t+\n");printf("\t\t==========5.修改学生成绩===========\n\t\t+\n");printf("\t\t==========6.删除学生成绩===========\n\t\t+\n");printf("\t\t==========7.清空页面===========\n\t\t+\n");printf("\t\t==========8.退出系统===========\n");printf("\n\t\t***********************************\n");printf("please choise 1--8:\t");putchar(10);}//******************************************************************************************************* ****************************************************************************struct MM // 结构体定义变量{char num[20];char name[10];float sco,sco2,sco3,sco4;int many;}mm;//******************************************************************************************************* ****************************************************************************void scanf_1() //第一次输入信息并保存在文件中{char ch;FILE *fp;if((fp=fopen("dd.dat","wb+"))==NULL){printf("cannot open file\n");exit(0);}do{printf("请输入学生的--编号:\t");getchar();gets(mm.num);printf("姓名:\t");gets();printf("总成绩:\t");scanf("%f",&mm.sco);printf("平时成绩:\t");scanf("%f",&mm.sco2);printf("作业成绩:\t");scanf("%f",&mm.sco3);printf("考试成绩:\t");scanf("%f",&mm.sco4);printf("学号:\t");scanf("%d",&mm.many);if(fwrite(&mm,sizeof(struct MM),1,fp)!=1){printf("file write error\n");exit(0);}printf("是否继续输入y or n ?\t");getchar();ch=getchar();}while(ch=='y'||c h=='Y');fclose(fp);}//******************************************************************************************************* ****************************************************************************void find() //查询成绩的信息{ int a,b=0;char ch[20];FILE *fp;if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要查询的成绩的方式\n\t1.编号 2.姓名:\n\t请选择 1 or 2 \t"); scanf("%d",&a);if(a==1){ getchar();printf("请输入学生的编号:\t");gets(ch);while(fread(&mm,sizeof(struct MM),1,fp)==1)if(strcmp(mm.num,ch)==0){b++;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);}if(b==0) printf("对不起!没有找到相关信息:\n");}else if(a==2){ printf("请输入学生的姓名:\t");getchar();gets(ch);while(fread(&mm,sizeof(struct MM),1,fp)==1)if(strcmp(,ch)==0){b++;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);}if(b==0) printf("input error!\n");}fclose(fp);}//******************************************************************************************************* ****************************************************************************void scanf_2() //第二次输入信息并保存在文件中{char ch;FILE *fp;if((fp=fopen("dd.dat","ab"))==NULL){printf("cannot open file\n");exit(0);}do{printf("请输入要添加成绩的--编号:\t");getchar();gets(mm.num);printf("姓名:\t");gets();printf("成绩:\t");scanf("%f",&mm.sco);printf("学号:\t");scanf("%d",&mm.many);if(fwrite(&mm,sizeof(struct MM),1,fp)!=1){printf("file write error\n");exit(0);}printf("是否继续输入y or n ?\t");getchar();ch=getchar();}while(ch=='y'||c h=='Y');fclose(fp);}//******************************************************************************************************* ****************************************************************************void print() //输出文档中的信息{FILE *fp;if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");return ;}printf("编号\t姓名\t成绩\t\t学号\n");while(fread(&mm,sizeof(struct MM),1,fp)==1)printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);fclose(fp);}//******************************************************************************************************* ****************************************************************************void change(){ //修改信息的函数,定义另一个文件,把要修改的信息放到该文件中struct XX //然后把其余的信息复制到该文件中;并把该文件从新命名为原来的名{ //把原来的文件移除;char num[20];char name[10];float sco;int many;}xx;FILE *fp2;int a,b=0,c=0,n=0;char ch[20],ck;FILE *fp;do{if((fp=fopen("dd.dat","rb"))==NULL){printf("cannot open file\n");exit(0);}if((fp2=fopen("temp.dat","wb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要修改成绩的编号:\t");scanf("%s",ch);n++;while(fread(&mm,sizeof(struct MM),1,fp)==1){if((strcmp(mm.num,ch)==0)){b++;//b的值如果一直没有改变说明,没有找到相关的信息;printf("编号\t姓名\t成绩\t\t学号\n");printf("%s\t%s\t%.3f\t\t%d\n",mm.num,,mm.sco,mm.many);getchar();printf("请输入成绩的新编号:\t");gets(xx.num);printf("请输入成绩的新姓名:\t");gets();printf("请输入成绩的新成绩:\t");scanf("%f",&xx.sco);printf("请输入成绩新学号:\t");scanf("%d",&xx.many);getchar();fwrite(&xx,sizeof(struct XX),1,fp2);}if(strcmp(mm.num,ch)!=0)fwrite(&mm,sizeof(struct MM),1,fp2);}if(b==0){printf("\t没有找到相关信息!\n");getchar();}rewind(fp); //如果要继续修改的话,要把标记返回到文件的开头;printf("是否继续修改?enter 'y' or 'n' \t");ck=getchar();fclose(fp);fclose(fp2);remove("dd.dat");rename("temp.dat","dd.dat");}while(ck=='y'||c k=='Y');if(b!=0)//如果没有找到相关信息就不能输出printf("\t修改成功:\n");}//***********************************************************************************************************************************************************************************void del(){ //删除函数(和修改很相似)FILE *fp2;int a,b=0,c=0,n=0;char ch[20],ck;FILE *fp;do {if((fp=fopen("dd.dat","rb"))==NULL) //判断以读二进制的方式打开文件dd.dat,文件句柄保存到fp,fp是否为空如果为空,就是打开文件失败,否则打开文件成功{printf("cannot open file\n");exit(0);}if((fp2=fopen("temp.dat","wb"))==NULL){printf("cannot open file\n");exit(0);}printf("请输入要删除成绩的编号:\t");scanf("%s",ch);n++;while(fread(&mm,sizeof(struct MM),1,fp)==1) //fread()成功的返回值就是参数里读取的数据块个数,这里就是1; sizeof中是每一项的长度,{if((strcmp(mm.num,ch)==0)) //设这两个字符串为str1,str2,若str1==str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。
C语言学生成绩管理系统源程序
附录程序#include"stdio.h"#include<stdlib.h>#include<string.h>#include"process.h"#include"ctype.h"typedef struct{char num[10];char name[10];int chinese;int math;int english;int dianlu;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(" 输入学生的语文、数学、英语、电路分数:");scanf("%d%d%d%d",&stu[n+i].chinese,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu);a=1."0*(stu[n+i].chinese+stu[n+i].math+stu[n+i].english+stu[n+i].dianlu)/4;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(" 学号姓名语文数学英语电路均匀成绩\n");printf("----------------------------------------------------------\n");for(i=0;i<n;i++){printf("%-10s%-10s%-10d%-10d%-10d%-10d%-10."2lf\n",stu[i].num,stu[i].name,stu[i].chinese,stu[i].math,stu[i].english,stu[i].di anlu,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("|语文请按 2|\n");printf("|数学分数请按 3|\n");printf("|英语分数请按 4|\n");printf("|电路请按 5|\n");printf("|退出请按 0|\n");printf("+----------------------+\n");printf(" 请输入您的选择:");scanf("%d", &choice);switch(choice){case 0:break;case 1:printf(" 请输入新姓名:");scanf("%s", stu[i].name); break;case 2:printf(" 请输入新的语文分数:");scanf("%d", &stu[i].chinese); break;case 3:printf(" 请输入新的数学分数:");scanf("%d",&stu[i].math); break;case 4:printf(" 请输入新的英语分数:");scanf("%d", &stu[i].english); break;case 5:printf(" 请输入新的电路分数:");scanf("%d", &stu[i].dianlu);break;default:printf("\n 无效选项 !");break;} break;}return;}int shanchu(Student stud[],int n) /* 按姓名查找,删除一条记录*/{ char s[20];int i;int j;i=0;printf(" 输入要删除记录的姓名 :");scanf("%s",s);while(strcmp(stu[i].name,s)!=0&&i<n) i++;if(i==n){printf("not find!\n");return(n); }for(j=i;j<n-1;j++) /* 删除操作 */{strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j].name,stu[j+1].name);stu[j].chinese=stu[j+1].chinese;stu[j].math=stu[j+1].math;stu[j].english=stu[j+1].english;stu[j].dianlu=stu[j+1].dianlu;stu[j].aver=stu[j+1].aver;}printf("Delete Successed!\n");return(n-1);}void chaxun_xingming(Student stud[],int n) /* 按姓名查找并显示一个记录 */{ char s[20];int i=0;printf(" 输入姓名 :"); scanf("%s",s);while(strcmp(stu[i].name,s)!=0&&i<n) i++; /* 查找判断 */if(i==n){printf("not find!\n"); /*输入失败信息*/return;}printf(" 他的姓名、学号是 :%s%s\n",stu[i].name,stu[i].num); /* 输出该学生信息 */printf(" 语文高数英语电路均匀成是 :%d,%d,%d,%d,%lf\n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].a ver);}void chaxun_pingjun(Student stud[],int n) /* 按均匀成绩查找并显示一个记录*/{ double s;int i=0;printf(" 输入均匀成绩 :");scanf("%lf",&s);while(stu[i].aver!=s && i<n) i++;if(i==n){ printf("not find!\n"); /*输入失败信息*/return;}printf(" 他的学号是 :%s\n",stu[i].num); /* 输出该学生信息 */printf(" 他的姓名是 :%s\n",stu[i].name);printf(" 他的语文、数学、英语、电路分数是:%d%d%d\n",stu[i].chinese,stu[i].math,stu[i].english,stu[i].dianlu);}void paixu_xuehao(Student stud[],int n) /* 按学号排序 */{ int i,j,p,q,r,w;double y;绩%dchar x[20],t[10];for(i=0;i<n-1;i++) /* 冒泡法排序 */for(j=0;j<n-1-i;j++)if(strcmp(stud[j].num,stud[j+1].num)>0){ strcpy(t,stud[j].num);strcpy(stud[j].num,stud[j+1].num);strcpy(stud[j+1].num,t);strcpy(x,stud[j].name);strcpy(stud[j].name,stud[j+1].name);strcpy(stud[j+1].name,x);y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;}return;}void paixu_pingjun(Student stud[],int n) /* 按均匀成绩排序 */{ int i,j,p,q,r,w;double y; charx[20],t[10];for(i=0;i<n-1;i++) /* 冒泡法排序 */for(j=0;j<n-1-i;j++)if(stu[j].aver>stu[j+1].aver){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void paixu_chinese(Student stud[],int n) /* 按语文成绩排序 */{ int i,j,p,q,r,w;double y; charx[20],t[10];for(i=0;i<n-1;i++) /* 冒泡法排序 */for(j=0;j<n-1-i;j++)if(stu[j].chinese>stu[j+1].chinese){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1]. aver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void paixu_english(Student stud[],int n) /* 按英语成绩排序 */{ int i,j,p,q,r,w;double y; charx[20],t[10];for(i=0;i<n-1;i++) /* 冒泡法排序 */for(j=0;j<n-1-i;j++)if(stu[j].english>stu[j+1].english){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].a ver=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void paixu_math(Student stud[],int n) /* 按数学成绩排序 */{ int i,j,p,q,r,w;double y;char x[20],t[10];for(i=0;i<n-1;i++) /* 冒泡法排序 */for(j=0;j<n-1-i;j++)if(stu[j].math>stu[j+1].math){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].aver =y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void paixu_dianlu(Student stud[],int n) /* 按电路成绩排序 */{ int i,j,p,q,r,w;double y; charx[20],t[10];for(i=0;i<n-1;i++) /* 冒泡法排序 */for(j=0;j<n-1-i;j++)if(stu[j].dianlu>stu[j+1].dianlu){y=stu[j].aver;stu[j].aver=stu[j+1].aver;stu[j+1].av er=y;p=stu[j].chinese;stu[j].chinese=stu[j+1].chinese;stu[j+1].chinese=p;q=stu[j].math;stu[j].math=stu[j+1].math;stu[j+1].math=q;r=stu[j].english;stu[j].english=stu[j+1].english;stu[j+1].english=r;w=stu[j].dianlu;stu[j].dianlu=stu[j+1].dianlu;stu[j+1].dianlu=w;strcpy(x,stu[j].name);strcpy(stu[j].name,stu[j+1].name);strcpy(stu[j+1].name,x);strcpy(t,stu[j].num);strcpy(stu[j].num,stu[j+1].num);strcpy(stu[j+1].num,t);}return;}void tongji(Student stud[],int n)//按分数段统计人数{int i,j,a,max,min,k,l,q,p,w;k=0,l=0,p=0,q=0,w=0;printf(" 你想统计哪科成绩 :1 语文2 数学3 英语4 电路5 均匀 \n");scanf("%d",&j);printf("input 2 score:\n");scanf("%d%d",&max,&min);if(max<min){a=max;max=min;min=a;}if(j==1){for(i=0;i<99;i++){if(stu[i].chinese> min&&stu[i].chinese<max)k++;}printf(" 分数段的人数为 :%d",k);}elseif(j==2){for(i=0;i<99;i++){if(stu[i].math>min&&stu[i].math<max)l++;}printf(" 分数段的人数为 :%d",l);}elseif(j==3){for(i=0;i<99;i++){if(stu[i].english>min&&stu[i].english<max)p++;}printf(" 分数段的人数为 :%d",p);}else if(j==4){for(i=0;i<99;i++){if(stu[i].dianlu>min&&stu[i].dianlu<max)w++;}printf(" 分数段的人数为 :%d",w);}elseif(j==5){for(i=0;i<99;i++){if(stu[i].aver>min&&stu[i].aver<max)q++;}printf(" 分数段的人数为 :%d",q);}return;}int wenjian2(Student stud[],int n) /* 从文件中读入数据 */{ int i=0,num;FILE *fp; /*定义文件指针 */char filename[20]; /* 定义文件名 */printf("\t\t\tInput the filename:");scanf("\t\t\t%s",filename); /*输入文件名*/if((fp=fopen(filename,"rb"))==NULL) /* 翻开文件 */{ printf("\t\t\tcann't open the file\n"); /* 翻开失败信息 */printf("\t\t\t");system("pause");return(n);}fscanf(fp,"%d",&num); /* 读入总记录量 */while(i<num) /* 循环读入数据*/{fscanf(fp,"%s %s %d %d %d %d %lf\n",stu[n+i].num,stu[n+i].name,&stu[n+i].chines e,&stu[n+i].math,&stu[n+i].english,&stu[n+i].dianlu,&stu[n+i].aver);i++;}n+=num;fclose(fp); /* 封闭文件 */printf("\t\t\tSuccessed!\n");printf("\t\t\t");system("pause");return(n);}void wenjian1(Student stud[],int n)/* 将全部记录写入文件 */{int i=0;FILE *fp;/* 定义文件指针 */char filename[20];/* 定义文件名 */printf("Input the filename:");/* 输入文件名 */scanf("%s",filename);if((fp=fopen(filename,"w"))==NULL)/* 翻开文件 */{printf("cann't openthe file\n");return;}fprintf(fp,"%d\n",n);/*循环写入数据*/while(i<n){fprintf(fp,"%s %s %d %d %d %d %lf\n",stu[i].num,stu[i].name,stu[i].ch inese,stu[i].math,stu[i].english,stu[i].dianlu,stu[i].aver);i++;}fclose(fp);/* 封闭文件 */printf("Successed!\n");/* 返回成功信息 */}int menu()/* 菜单函数 */{int c;do{printf("\t\t**** 学生信息管理系统菜单 ****\n");printf("\t\t1."编写 \n");printf("\t\t2."显示 \n");printf("\t\t3."查问 \n");printf("\t\t4."排序 \n");printf("\t\t5."统计 \n");printf("\t\t6."文件 \n");printf("\t\t0."退出 \n");printf("************************************************************\n");printf("\t\t\t 请选择 (0-6):");scanf("%d",&c);}while(c<0||c>6);return(c-0); /* 返回选择 */}int bianji(){printf("\t\t 1."录入 \n");printf("\t\t 2 . 改正 \n");printf("\t\t3."删除 \n");printf("\t\t 按其余数字键退出 \n");int i;scanf("%d",&i);return i;}int chaxun(){printf("\t\t1."按姓名查问 \n");printf("\t\t 2 . 按均匀成绩查问 \n");printf("\t\t 按其余数字键退出 \n");int i;scanf("%d",&i);return i;}int paixu(){printf("\t\t1."按学号 \n");printf("\t\t 2 . 按语文成绩 \n");printf("\t\t 3 . 按数学成绩 \n");printf("\t\t 4 . 按英语成绩 \n");printf("\t\t 5 . 按电路成绩 \n");printf("\t\t 6 . 按均匀成绩 \n");printf("\t\t 按其余数字键退出 \n");int i;scanf("%d",&i);return i;}int wenjian(){printf("\t\t1."从文件中读入数据 \n");printf("\t\t 2 . 将全部记录写入文件 \n");printf("\t\t 按其余数字键退出 \n");int i;scanf("%d",&i);return i;}void main()/* 主函数 */{int n=0;for(;;){for(;;){switch(menu()){case 1:switch(bianji()){case 1:n=shuru(stu,n);xianshi(stu,n); break;case 2:xiugai(stu ,n);xianshi(stu,n); break;case 3:shanchu(stu ,n);xianshi(stu,n);break; } break;case 2:xianshi(stu,n);break;case 3:switch(chaxun()){case 1:chaxun_xingming(stu,n);break;case 2:chaxun_pingjun(stu ,n);break;} break;case 4:switch(paixu()){case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ; case 2:paixu_chinese(stu ,n);xianshi(stu,n);break;case 3:paixu_math(stu ,n);xianshi(stu,n); break;case 4:paixu_english(stu ,n);xianshi(stu,n); break;case 5:paixu_dianlu(stu ,n);xianshi(stu,n); break;case 6:paixu_pingjun(stu ,n);xianshi(stu,n); break;} break;case 5:tongji(stu,n);break;case 6:switch(wenjian()){case 1:n=wenjian2(stu,n);break;case 2:wenjian1(stu ,n);break;} break;case 0:exit(0);/* 结束程序 */}}}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//#include <iostream.h>#include <string.h>#include <process.h>#include<fstream.h>int i=0;class CPerson{public:char IDNO[20];char name[20];char addr[20];char tel[20];};class CStudent:public CPerson {public:char StudNo[20];double Math;double English;double Average;};class CClass{public:char ClassName[20];CStudent *stu[50];CClass(){for(int i=0;i<50;i++)stu[i]=new CStudent();}~CClass(){for(int i=0;i<50;i++)delete stu[i];}void createclass();void printclass();void get();void xiugai();void delect();void print();void write();void read();void chazhao();};void CClass::createclass()//创建班级{cout<<"请输入班级名称:";cin>>ClassName;}void CClass::printclass(){ cout<<"班级名称:"<<ClassName<<"班级人数:"<<i<<endl;cout<<"******************************\n";}void CClass::get()//输入学生信息{int k;cout<<"请输入18位的学生身份证号码:";cin>>stu[i]->IDNO;/* while(strlen(stu[i]->IDNO)!=18){cout<<"请输入18位数:";cin>>stu[i]->IDNO;}*/for( k=0;k<i;k++){while(strcmp(stu[i]->IDNO,stu[k]->IDNO)==0){ cout<<"错误,身份证号码相同,请重新输入";cin>>stu[i]->IDNO;}}cout<<"请输入学生名字:";cin>>stu[i]->name;cout<<"请输入学生地址:";cin>>stu[i]->addr;cout<<"请输入学生电话号码:";cin>>stu[i]->tel;cout<<"请输入学生学号:";cin>>stu[i]->StudNo;for( k=0;k<i;k++){while(strcmp(stu[i]->StudNo,stu[k]->StudNo)==0){ cout<<"错误,学号相同,请重新输入";cin>>stu[i]->StudNo;}}cout<<"请输入学生数学成绩:";cin>>stu[i]->Math;while (stu[i]->Math<0 || stu[i]->Math>100){cout<<"Error data!"<<endl<<endl;cout<<" 请再次输入数学成绩: ";cin>>stu[i]->Math;}cout<<"请输入学生英语成绩:";cin>>stu[i]->English;while (stu[i]->English<0 ||stu[i]->English>100){cout<<"Error data!"<<endl<<endl;cout<<" 请再次输入英语成绩: ";cin>>stu[i]->English;}}void CClass::xiugai() //修改学生信息{int a=1;char x[10];int j;int choice;while(i!=0){ cout<<"请输入您要修改的学生的学号:\n";cin>>x;for(j=0;j<50;j++)if(strcmp(stu[j]->StudNo,x)==0){a=0;cout<<"******************************\n";cout<<" 请选择所要修改的内容: \n";cout<<" 1 - 修改地址\n";cout<<" 2 - 修改电话号码\n";cout<<" 3 - 修改数学成绩\n";cout<<" 4 - 修改英语成绩\n";cout<<" 5 - 返回\n";cout<<"******************************\n";cin>>choice;while(choice>5||choice<0||choice==0){cout<<"请在1~5中选择:";cin>>choice;}switch (choice){case 1:{cout<<"请输入学生新的地址\n";cin>>stu[j]->addr;}break;case 2:{cout<<"请输入学生新的电话号码\n";cin>>stu[j]->tel;}break;case 3:{cout<<"请输入学生新的数学成绩\n";cin>>stu[j]->Math;while (stu[j]->Math<0 || stu[j]->Math>100){cout<<"Error data!"<<endl<<endl;cout<<" 请再次输入数学成绩: ";cin>>stu[j]->Math;}}break;case 4:{cout<<"请输入学生新的英语成绩\n";cin>>stu[j]->English;while (stu[j]->English<0 ||stu[j]->English>100){cout<<"Error data!"<<endl<<endl;cout<<" 请再次输入英语成绩: ";cin>>stu[j]->English;}}break;case 5: break;break;}}for(j=0;j<50;j++)if(strcmp(stu[j]->StudNo,x)!=0&&a==1){ a=0;cout<<"没有你要修改的学号!"<<endl;}break; }}void CClass::print()//输出学生信息{for(int j=0;j<i;j++){cout<<"姓名:"<<stu[j]->name<<" ";cout<<"身份证号码:"<<stu[j]->IDNO <<" " ;cout<<"地址:"<<stu[j]->addr<<" " ;cout<<"电话:"<<stu[j]->tel <<" ";cout<<"学号:"<<stu[j]->StudNo <<" ";cout<<"数学成绩:"<<stu[j]->Math <<" " ;cout<<"英语成绩:"<<stu[j]->English <<" " ;stu[j]->Average=(stu[j]->Math+stu[j]->English)/2 ;cout<<"平均成绩:"<<stu[j]->Average<<endl ;}}void CClass::delect(){char ss[20];cout<<"输入要删除记录的姓名:";cin>>ss;if(i==0){ cout<<"没有记录!"<<endl;cout<<"请先输入记录!";system("pause");return;}for(int k=0;k<i;k++){while(strcmp(stu[k]->name,ss)==0){for(int o=k;o<i;o++){strcpy(stu[o]->IDNO,stu[o+1]->IDNO);strcpy(stu[o]->name,stu[o+1]->name);strcpy(stu[o]->addr,stu[o+1]->addr);strcpy(stu[o]->tel,stu[o+1]->tel);strcpy(stu[o]->StudNo,stu[o+1]->StudNo);stu[o]->Math=stu[o+1]->Math;stu[o]->English=stu[o+1]->English;stu[o]->Average=stu[o+1]->Average;}i--;cout<<"已成功删除该记录!\n";return;}}cout<<"抱歉,没有您要删除的姓名"<<endl;}void CClass::chazhao(){char s[20];int j;int a=1;int choice;while(choice!=0){cout<<"******************************\n";cout<<" 1 - 按姓名查找\n";cout<<" 2 - 按学号查找\n";cout<<" 3 - 返回\n";cout<<"******************************\n";cin>>choice;while(choice>3||choice<0||choice==0){cout<<"请在1~3中选择:";cin>>choice;}switch (choice){case 1:{cout<<"请输入该学生的姓名:";cin>>s;for(j=0;j<i;j++){if(strcmp(stu[j]->name,s)==0&&a==1){ cout<<"姓名:"<<stu[j]->name;cout<<"身份证号码:"<<stu[j]->IDNO;cout<<"地址:"<<stu[j]->addr;cout<<"电话:"<<stu[j]->tel;cout<<"学号:"<<stu[j]->StudNo;cout<<"数学成绩:"<<stu[j]->Math;cout<<"英语成绩:"<<stu[j]->English;cout<<"平均成绩:"<<stu[j]->Average<<endl;a=0;}}for(j=0;j<i;j++){if(strcmp(stu[j]->name,s)!=0&&a==1){ cout<<"抱歉,没有您要找的姓名!"<<endl;a=0; }}}break;case 2:{cout<<"请输入该学生的学号:";cin>>s;for(j=0;j<i;j++){if(strcmp(stu[j]->StudNo,s)==0&&a==1){ cout<<"姓名:"<<stu[j]->name;cout<<"身份证号码:"<<stu[j]->IDNO;cout<<"地址:"<<stu[j]->addr;cout<<"电话:"<<stu[j]->tel;cout<<"学号:"<<stu[j]->StudNo;cout<<"数学成绩:"<<stu[j]->Math;cout<<"英语成绩:"<<stu[j]->English;cout<<"平均成绩:"<<stu[j]->Average<<endl;a=0;}}for(j=0;j<i;j++){if(strcmp(stu[j]->StudNo,s)!=0&&a==1){ cout<<"抱歉,没有您要找的学号!"<<endl;a=0; }}}break;case 3: break;break;}break;}}void CClass::write() //将所有记录写入文件{ system("cls");int j;char filename[20]; //定义文件名cout<<"请输入文件名:";cin>>filename;ofstream fout(filename);if(!fout){cout<<"cann't open file\n";return;}fout<<ClassName<<" "<<i<<endl;for(j=0;j<i;j++){fout<<stu[j]->IDNO<<" "<<stu[j]->name<<" "<<stu[j]->addr<<" "<<stu[j]->tel<<" "<<stu[j]->StudNo<<" "<<stu[j]->Math<<" "<<stu[j]->English<<" "<<stu[j]->Average<<endl;}fout.close(); //关闭文件cout<<"写入文件成功!\n"; // 返回成功信息}void CClass::read() //从文件中读入数据{int j;char filename[20]; //定义文件名cout<<"请输入文件名:";cin>>filename; //输入文件名if(strcmp(filename,"rb")==0){cout<<"没有此文件!"<<endl;}ifstream fin(filename);if(!fin){ cout<<"cann't open file\n"; //打开失败信息cout<<"\t\t\t";}fin>>ClassName>>i;for(j=0;j<i;j++){fin>>stu[j]->IDNO>>stu[j]->name>>stu[j]->addr>>stu[j]->tel>>stu[j]->StudNo>>stu[j]->Math> >stu[j]->English>>stu[j]->Average;}fin.close(); //关闭文件cout<<"读入班级信息成功!\n";}void main(){CClass obj;system("cls");int choice;while( choice!=0){cout<<"***************************************\n";cout<<" 请选择服务\n";cout<<" 1 - 创建班级\n";cout<<" 2 - 添加学生信息\n";cout<<" 3 - 修改学生信息\n";cout<<" 4 - 删除学生信息\n";cout<<" 5 - 打印学生信息\n";cout<<" 6 - 查找学生信息\n";cout<<" 7 - 将学生信息写入文件\n";cout<<" 8 - 从文件读入学生信息\n";cout<<" 0 - 退出\n";cout<<"***************************************\n";cin>>choice;while(choice>8||choice<0){cout<<"请在0~8中选择:";cin>>choice;}switch (choice){ case 0:break;case 1:{obj.createclass();}break;case 2:{obj. get();i=i++;}break;case 3:{obj.xiugai();}break;case 4:{obj.delect();}break;case 5:{if(i==0){cout<<"没有记录,请先输入记录!"<<endl;}if(i!=0){ s ystem("cls");obj.printclass();obj.print();}break;};case 6:{obj.chazhao();break;}case 7:{obj.write();break;}case 8:{obj.read();break;}}}}。