学生成绩管理系统数据结构C语言版源代码Word下载.docx
《学生成绩管理系统数据结构C语言版源代码Word下载.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据结构C语言版源代码Word下载.docx(39页珍藏版)》请在冰点文库上搜索。
/*修改菜单*/
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(>
/*修改学生信息<
按编号修改)*/
{
printf("
\n\n"
>
***************************************************\n"
学生成绩管理系统\n"
---------------------------------------------------\n"
1-添加新同学2-浏览学生信息\n"
3-按学号查询4-按姓名查询\n"
5-按成绩排序6-修改学生信息\n"
7-删除学生信息0-退出系统\n"
___________________________________________________\n"
}
按成绩排序\n"
1-大学英语2-JAVA编程\n"
3-数据结构4-数字逻辑电路\n"
5-计算机组成原理0-返回上级菜单\n"
\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
1--修改学生姓名2--修改学生学号\n"
3--修改学生性别4--修改英语成绩\n"
5--修改JAVA成绩6--修改数据结构\n"
7--修改数字电路8--修改计算计\n"
0--返回上级菜单\n"
chara[20]。
**欢迎来到学生信息管理系统
进入系统前请先进行密码验证---"
"
do{
gets(a>
/*输入密码*/
system("
cls"
/*调用库函数清屏*/
printf("
对不起!
您输入的密码有误
请重新输入---"
}while(strcmp(a
"
0605"
!
=0>
/*单一密码"
*/
system("
structstudents*p1
*p2
*head。
/*建立辅助结点及头结点*/
charName。
intn=0
x。
\n请按对应项输入学生信息以#结束:
\n"
姓名学号性别英语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
Sex
English
Java
Sjjg
Szdl
Jsj>
Name='
#'
p1=(structstudents*>
p2->
next=p1。
p2=p1。
n++。
}while(1>
p1->
next=NULL。
学生信息输入结束!
getchar(>
是否保存学生信息?
<
1.是/2.否):
scanf("
%d"
x>
if(x==1>
fprint(head>
/*调用函数保存至文件*/
else
\n文件没有被保存!
returnhead。
/*返回头指针*/
structstudents*p1。
if((fp=fopen("
students_list.txt"
a"
==NULL>
{
Fileopenerror!
exit(0>
}
for(p1=head。
next!
=NULL。
p1=p1->
next>
/*遍历*/
fprintf(fp
%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n"
/*将学生信息写入文件*/
fclose(fp>
/*关闭文件*/
\n学生信息已成功保存到文件students_list.txt中!
w"
p1!
/*关闭文件*/。
a+"
-------------------------------------------------------------\n"
姓名学号性别英语Java数据结构数字电路计算机\n"
while(!
feof(fp>
/*读取并输出*/{
fscanf(fp
%s%s%s%lf%lf%lf%lf%lf"
Name
}。
if(fclose(fp>
Cannotclosethefile!
structstudents*create(structstudents*head
structstudents*p
*p1
*p2。
(*n>
++。
p=(structstudents*>
p->
p->
if(head==NULL>
{
head=p。
p1=p。
}
p1->
next=p。
p2=p1。
p2->
free(p>
(*n>
--。
voidFindofName(structstudents*head>
inti=0
n=0。
charb[20]。
structstudents*p。
head=create(head
n>
p=head。
\n请输入要查询的学生姓名:
b>
while(p!
=NULL>
if(strcmp(p->
{
printf("
p->
i++。
p=p->
next。
if(i==0>
\n对不起!
没有找到名为"
的学生信息!
n。
\n请输入要查询的学生学号:
没有找到学号为"
学生信息!
structstudents*p
*tail。
/*定义中间变量*/
intn。
while(head->
/*利用选择法排序*/
tail=NULL。
English=p->
English。
/*将链表中第一个成绩赋给English*/
if((p->
English>
/*比较*/
English=p->
tail=p。
p=head。
while(p->
if(p->
English==English>
printf("
p->
if(p==head>
head=head->
else
tail->
next=p->
}
p=p->
if(p->
{/*分数相同时无需比较*/
tail->
}
}
/*将链表赋给结构体指针*/
p->
/*浏览排序后的信息*/
按英语成绩排序后输出如上<
注:
此过程不保存至文件):
return。
/*按JAVA成绩排序*/
Java=p->
Java。
/*将链表中第一个成绩赋给Java*/
Java>
Java=p->
Java==Java>
{/*成绩相同时无需比较*/
按Java成绩排序后输出如上<
/*按数据结构排序*/
Sjjg=p->
Sjjg。
/*将链表中第一个成绩赋给Sjjg*/
Sjjg>
Sjjg=p->
Sjjg==Sjjg>