学生成绩管理系统报告.docx

上传人:b****6 文档编号:3880851 上传时间:2022-11-26 格式:DOCX 页数:22 大小:181.92KB
下载 相关 举报
学生成绩管理系统报告.docx_第1页
第1页 / 共22页
学生成绩管理系统报告.docx_第2页
第2页 / 共22页
学生成绩管理系统报告.docx_第3页
第3页 / 共22页
学生成绩管理系统报告.docx_第4页
第4页 / 共22页
学生成绩管理系统报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统报告.docx

《学生成绩管理系统报告.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统报告.docx(22页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统报告.docx

学生成绩管理系统报告

课程设计报告

 

课程名称:

数据结构课程设计

设计题目:

学生成绩管理系统

学院:

信息科学与工程学院

专业:

计算机科学与技术

姓名:

指导教师:

 

二零一三年十二月二十七日

一、设计内容及要求

设计内容:

利用线性链表实现学生成绩管理系统

具体要求:

(1)可以对所有学生的信息输入,并保存在文件中。

可以输出显示学生信息。

(2)可以插入、删除、查找、追加学生信息。

二、算法设计

程序的总体框架

 

二、算法实现

#include

#include

#include

structstudents

{

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

charName[20];/*学生姓名*/

charSex[3];/*学生性别*/

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

doubleriyu;/*日语成绩*/

doubleSjjg;/*数据结构成绩*/

doubletiyu;/*体育成绩*/

doubleshuxue;/*离散数学成绩*/

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

};

voidmenu();/*主菜单*/

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

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

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

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

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

structstudents*create(structstudents*head);/*从文件读取数据构建链表*/

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

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

structstudents*Insert(structstudents*head);/*根据姓名插入学生信息*/

structstudents*Delete(structstudents*head);/*按学号删除学生成绩信息*/

structstudents*Xiugai();/*修改学生信息*/

/*主菜单*/

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

}

/*修改菜单*/

voidXiugaimenu()

{

printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");

printf("1--修改学生姓名2--修改学生学号\n");

printf("3--修改学生性别4--修改英语成绩\n");

printf("5--修改日语成绩6--修改数据结构\n");

printf("7--修改体育成绩8--修改数学成绩\n");

printf("0--返回上级菜单\n");

printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");

}

/*新建学生信息*/

structstudents*Input()

{

structstudents*p1,*p2,*head;/*建立结点及头结点*/

charName;

intx;

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

\n");

printf("姓名学号性别英语日语数据结构体育成绩离散数学成绩\n");

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

head=p2=p1;

do{/*输入学生信息*/

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->riyu,&p1->Sjjg,&p1->tiyu,&p1->shuxue);

}

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

p2->next=p1;

p2=p1;

}while

(1);

p1->next=NULL;

printf("学生信息输入结束!

\n");

printf("是否保存学生信息?

(1.是/2.否):

");

scanf("%d",&x);

if(x==1)

fprint(head);/*调用函数保存至文件*/

else

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

\n");

returnhead;/*返回头指针*/

}

/*将信息导入文件*/

voidfprint(structstudents*head)

{

structstudents*p1;

FILE*fp;

if((fp=fopen("h:

\\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->riyu,p1->Sjjg,p1->tiyu,p1->shuxue);/*将学生信息写入文件*/

fclose(fp);/*关闭文件*/

printf("\n学生信息已成功保存到文件students_list.txt中!

\n");

}

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

voidfprint_(structstudents*head)

{

structstudents*p1;

FILE*fp;

if((fp=fopen("h:

\\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->riyu,p1->Sjjg,p1->tiyu,p1->shuxue);/*将学生信息写入文件*/

fclose(fp);/*关闭文件*/;

}

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

voidXianshi(structstudents*head)

{

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

charName[20];/*学生姓名*/

charSex[3];/*学生性别*/

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

doubleriyu;/*日语成绩*/

doubleSjjg;/*数据结构成绩*/

doubletiyu;/*体育成绩*/

doubleshuxue;/*离散数学成绩*/

FILE*fp;

if((fp=fopen("h:

\\students_list.txt","r"))==NULL)

{

printf("Fileopenerror!

\n");

exit(0);

}

printf("-------------------------------------------------------------\n");

printf("姓名学号性别英语日语数据结构体育成绩离散数学\n");

while(!

feof(fp))/*当源文件未结束时进行循环*/

{

fscanf(fp,"%s%s%s%lf%lf%lf%lf%lf",Name,Num,Sex,&English,&riyu,&Sjjg,&tiyu,&shuxue);

printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",Name,Num,Sex,English,riyu,Sjjg,tiyu,shuxue);

};

fclose(fp);

}

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

structstudents*create(structstudents*head)

{

FILE*fp;

structstudents*p,*p1,*p2;

if((fp=fopen("h:

\\students_list.txt","a+"))==NULL)

{

printf("Fileopenerror!

\n");

exit(0);

}

while(!

feof(fp))//当源文件未结束时进行循环

{

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

fscanf(fp,"%s%s%s%lf%lf%lf%lf%lf",p->Name,p->Num,p->Sex,&p->English,&p->riyu,&p->Sjjg,&p->tiyu,&p->shuxue);

if(head==NULL)

{

head=p;

p1=p;

}

else

{

p1->next=p;

p2=p1;

p1=p;

}

}

p2->next=NULL;

free(p);

fclose(fp);

returnhead;

}

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

voidFindofName(structstudents*head)

{

inti=0;

charb[20];

structstudents*p;

head=create(head);

p=head;

printf("\n请输入要查询的学生姓名:

");

scanf("%s",b);

while(p!

=NULL)

{

if(strcmp(p->Name,b)==0)

{

printf("姓名学号性别英语日语数据结构体育成绩离散数学\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->riyu,p->Sjjg,p->tiyu,p->shuxue);

i++;

}

p=p->next;

}

if(i==0)

printf("\n对不起!

没有找到名为%s的学生信息!

\n",b);

}

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

voidFindofNum(structstudents*head)

{

inti=0;

charb[20];

structstudents*p;

head=create(head);

p=head;

printf("\n请输入要查询的学生学号:

");

scanf("%s",b);

while(p!

=NULL){

if(strcmp(p->Num,b)==0){

printf("姓名学号性别英语日语数据结构体育成绩离散数学\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->riyu,p->Sjjg,p->tiyu,p->shuxue);

i++;

}

p=p->next;

}

if(i==0)

printf("\n对不起!

没有找到学号为%s学生信息!

\n",b);

}

/*插入学生信息*/

structstudents*Insert(structstudents*head)

{

structstudents*p0,*p1,*p2;

charb[20];

Xianshi(head);

head=create(head);

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

p0->next=NULL;

printf("插入指定姓名前面:

");

scanf("%s",b);

printf("姓名学号性别英语日语数据结构体育成绩离散数学\n");

scanf("%s%s%s%lf%lf%lf%lf%lf",p0->Name,p0->Num,p0->Sex,&p0->English,&p0->riyu,&p0->Sjjg,&p0->tiyu,&p0->shuxue);//将学生信息写入文件

getchar();

if(head==NULL)head=p0;

else

{

p1=head;

while((strcmp(p1->Name,b)!

=0)&&(p1->next!

=NULL))

{

p2=p1;

p1=p1->next;

}

if(strcmp(p1->Name,b)==0)

{

p2->next=p0;

p0->next=p1;

}

else

p1->next=p0;

}

fprint_(head);

printf("\n姓名为'%s'学生信息已被插入指定姓名前,并保存至文件!

\n",p0->Name);

returnhead;

}

/*按学号删除学生成绩信息*/

structstudents*Delete(structstudents*head)

{

structstudents*p1,*p2;

charm[15];

printf("\n所有学生信息如下:

\n");

Xianshi(head);

printf("\n请输入想要删除的学生学号:

");

scanf("%s",m);

head=create(head);

if(head==NULL)

{

printf("无学生信息!

\n");

returnhead;

}

if(strcmp(head->Num,m)!

=0)

{

p1=head;

p2=head->next;

while(p2!

=NULL)

{

if(strcmp(p2->Num,m)==0)

{

p1->next=p2->next;

free(p2);

}

else

p1=p2;

p2=p1->next;

}

}

fprint_(head);

printf("\n学号为'%s'学生信息已被删除,并保存至文件!

\n",m);

returnhead;

}

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

structstudents*Xiugai()

{

intt;

charnum[10];

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

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

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

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

doubleriyu;/*双精度实型日语成绩*/

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

doubletiyu;/*双精度实型体育成绩*/

doubleshuxue;/*离散数学*/

structstudents*head=NULL;

structstudents*p;

printf("\n所有学生信息如下:

\n");

Xianshi(head);

head=create(head);

printf("\n输入需要修改的学生的学号:

");

scanf("%s",num);

p=head;

while(head!

=NULL)

{

if(strcmp(p->Num,num)==0)

{

system("cls");

Xiugaimenu();

printf("编号为%s的学生信息如下:

\n",num);

printf("姓名学号性别英语日语数据结构体育成绩离散数学\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->riyu,p->Sjjg,p->tiyu,p->shuxue);

while

(1)

{

printf("请选择需要修改的信息:

");

scanf("%d",&t);

switch(t)

{

case1:

printf("请输入新姓名:

");

scanf("%s",Name);

strcpy(p->Name,Name);

break;

case2:

printf("请输入新学号:

");

scanf("%s",&Num);

strcpy(p->Num,Num);

break;

case3:

printf("请输入新性别:

");

scanf("%s",Sex);

strcpy(p->Sex,Sex);

break;

case4:

printf("请输入新英语成绩:

");

scanf("%lf",&English);

p->English=English;

break;

case5:

printf("请输入新日语成绩:

");

scanf("%lf",&riyu);

p->riyu=riyu;

break;

case6:

printf("请输入新数据结构成绩:

");

scanf("%lf",&Sjjg);

p->Sjjg=Sjjg;

break;

case7:

printf("请输入新体育成绩:

");

scanf("%lf",&tiyu);

p->tiyu=tiyu;

break;

case8:

printf("请输入新数学成绩:

");

scanf("%lf",&shuxue);

p->shuxue=shuxue;

break;

case0:

system("cls");

menu();

gotolab;

break;

default:

printf("对不起,输入有误!

");

break;

}

}

}

else

p=p->next;

}

lab:

fprint_(head);

printf("修改完成,并储存至文件!

\n");

returnhead;

}

/*主函数*/

voidmain()

{

intchoice,ch;

charm[15];

structstudents*head=NULL;

menu();

while

(1)

{

printf("请输入选项:

");

scanf("%d",&choice);

switch(choice)

{

case1:

Input();break;

case2:

system("cls");

menu();

Xianshi(head);break;

case3:

system("cls");

menu();

FindofNum(head);

break;

case4:

system("cls");

menu();

FindofName(head);

break;

case5:

system("cls");

menu();

Insert(head);

break;

case6:

system("cls");

menu();

Xiugai();

break;

case7:

system("cls");

menu();

head=Delete(head);

break;

case0:

system("cls");

printf("\t\t欢迎下次再来!

");

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

当前位置:首页 > 高中教育 > 语文

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

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