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

上传人:b****2 文档编号:12639758 上传时间:2023-04-21 格式:DOCX 页数:38 大小:19.90KB
下载 相关 举报
学生成绩管理系统数据结构C语言版源代码.docx_第1页
第1页 / 共38页
学生成绩管理系统数据结构C语言版源代码.docx_第2页
第2页 / 共38页
学生成绩管理系统数据结构C语言版源代码.docx_第3页
第3页 / 共38页
学生成绩管理系统数据结构C语言版源代码.docx_第4页
第4页 / 共38页
学生成绩管理系统数据结构C语言版源代码.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

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

《学生成绩管理系统数据结构C语言版源代码.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据结构C语言版源代码.docx(38页珍藏版)》请在冰豆网上搜索。

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

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

相信自己,世界上没有不可攀越的高峰。

#include

#include

#include

structstudents{

charNum[10];/*字符型学生学号*/

charName[20];/*字符型学生姓名*/

charSex[3];/*字符型学生性别*/

doubleEnglish;/*双精度实型英语成绩*/

doubleJava;/*双精度实型Java成绩*/

doubleSjjg;/*双精度实数据结构*/

doubleSzdl;/*双精度实型数字电路*/

doubleJsj;/*计算机组成原理*/

structstudents*next;/*用与构建连表指向下一结点*/

};

FILE*fp;/*定义全局变量fp*/

voidRevisemenu();/*修改菜单*/

voidSortmenu();/*排序菜单*/

voidmenu();/*主菜单*/

voidsecret();/*安全验证*/

structstudents*Input();/*新建学生信息*/

voidfprint(structstudents*head);/*将信息导入文件可追加*/

voidfprint_(structstudents*head);/*将信息导入文件并覆盖*/

voidBrowse(structstudents*head);/*浏览全部学生信息*/

structstudents*create(structstudents*head

int*n);/*从tushu_list中读取数据构建链表*/

voidFindofNum(structstudents*head);/*按学号查询学生信息*/

voidFindofNname(structstudents*head);/*按姓名查询学生信息*/

voidSortEnglish(structstudents*head);/*按英语成绩排序*/

voidSortJava(structstudents*head);/*按Java成绩排序*/

voidSortSjjg(structstudents*head);/*按数据结构成绩排序*/

voidSortSzdl(structstudents*head);/*按数字逻辑电路成绩排序*/

voidSortJsj(structstudents*head);/*按计算机组成原理成绩排序*/

structstudents*Delete(structstudents*head

charm[15]);/*按学号删除学生成绩信息*/

structstudents*Revise();/*修改学生信息(按编号修改)*/

/*主菜单*/

voidmenu()

{

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");

}

/*排序菜单*/

voidSortmenu()

{

printf("\n\n");

printf("***************************************************\n");

printf("按成绩排序\n");

printf("1-大学英语2-JAVA编程\n");

printf("3-数据结构4-数字逻辑电路\n");

printf("5-计算机组成原理0-返回上级菜单\n");

printf("***************************************************\n");

}

/*修改菜单*/

voidRevisemenu()

{

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");

}

/*安全验证*/

voidsecret()

{

chara[20];

printf("**欢迎来到学生信息管理系统

进入系统前请先进行密码验证---");

printf("");

do{

gets(a);/*输入密码*/

system("cls");/*调用库函数清屏*/

printf("对不起!

您输入的密码有误

请重新输入---");

}while(strcmp(a

"0605")!

=0);/*单一密码"0605"*/

system("cls");

}

/*新建学生信息*/

structstudents*Input()

{

structstudents*p1

*p2

*head;/*建立辅助结点及头结点*/

charName;

intn=0

x;

printf("\n请按对应项输入学生信息以#结束:

\n");

printf("姓名学号性别英语Java数据结构数字电路计算机组成原理\n");

p1=(structstudents*)malloc(sizeof(structstudents));

head=p2=p1;

do{/*使用dowhile语句输入学生信息*/

scanf("%s"

&p1->Name);

if(strcmp(p1->Name

"#")==0)break;/*判断结束符*/

else

scanf("%s%s%lf%lf%lf%lf%lf"

p1->Num

p1->Sex

&p1->English

&p1->Java

&p1->Sjjg

&p1->Szdl

&p1->Jsj);

Name='#';

p1=(structstudents*)malloc(sizeof(structstudents));

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);/*调用函数保存至文件*/

else

printf("\n文件没有被保存!

\n");

returnhead;/*返回头指针*/

}

/*将信息导入文件可追加*/

voidfprint(structstudents*head)

{

structstudents*p1;

if((fp=fopen("students_list.txt"

"a"))==NULL)

{

printf("Fileopenerror!

\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();

}

/*将信息导入文件并覆盖*/

voidfprint_(structstudents*head)

{

structstudents*p1;

if((fp=fopen("students_list.txt"

"w"))==NULL)

{

printf("Fileopenerror!

\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();

}

/*浏览全部学生信息*/

voidBrowse(structstudents*head)

{

charNum[10];/*字符型学生学号*/

charName[20];/*字符型学生姓名*/

charSex[3];/*字符型学生性别*/

doubleEnglish;/*双精度实型英语成绩*/

doubleJava;/*双精度实型Java成绩*/

doubleSjjg;/*双精度实数据结构*/

doubleSzdl;/*双精度实型数字电路*/

doubleJsj;/*计算机组成原理*/

if((fp=fopen("students_list.txt"

"a+"))==NULL)

{

printf("Fileopenerror!

\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

&Szdl

&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("Cannotclosethefile!

\n");

exit(0);

}

}

/*从tushu_list中读取数据构建链表*/

structstudents*create(structstudents*head

int*n)

{

FILE*fp;

structstudents*p

*p1

*p2;

if((fp=fopen("students_list.txt"

"a+"))==NULL)

{

printf("Fileopenerror!

\n");

exit(0);

}

while(!

feof(fp))

{

(*n)++;

p=(structstudents*)malloc(sizeof(structstudents));

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);

returnhead;

}

/*按姓名查询学生信息*/

voidFindofName(structstudents*head)

{

inti=0

n=0;

charb[20];

structstudents*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);

}

/*按学号查询学生信息*/

voidFindofNum(structstudents*head)

{

inti=0

n;

charb[20];

structstudents*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);

}

/*按英语成绩排序*/

voidSortEnglish(structstudents*head)

{

structstudents*p

*tail;/*定义中间变量*/

intn;

doubleEnglish;

p=(structstudents*)malloc(sizeof(structstudents));

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;

else

tail->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成绩排序*/

voidSortJava(structstudents*head)

{

structstudents*p

*tail;/*定义中间变量*/

intn;

doubleJava;

p=(structstudents*)malloc(sizeof(structstudents));

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;

else

tail->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;

}

/*按数据结构排序*/

voidSortSjjg(structstudents*head)

{

structstudents*p

*tail;/*定义中间变量*/

intn;

doubleSjjg;

p=(structstudents*)malloc(sizeof(structstudents));

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->Eng

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1