C语言学生成绩管理系统课程设计报告文档格式.docx

上传人:b****7 文档编号:21874710 上传时间:2023-02-01 格式:DOCX 页数:26 大小:65.55KB
下载 相关 举报
C语言学生成绩管理系统课程设计报告文档格式.docx_第1页
第1页 / 共26页
C语言学生成绩管理系统课程设计报告文档格式.docx_第2页
第2页 / 共26页
C语言学生成绩管理系统课程设计报告文档格式.docx_第3页
第3页 / 共26页
C语言学生成绩管理系统课程设计报告文档格式.docx_第4页
第4页 / 共26页
C语言学生成绩管理系统课程设计报告文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C语言学生成绩管理系统课程设计报告文档格式.docx

《C语言学生成绩管理系统课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩管理系统课程设计报告文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

C语言学生成绩管理系统课程设计报告文档格式.docx

统计

学生

信息

2.各个模块详细的功能描述。

1、密码登录:

进入系统前需输入密码口令,此处的密码分为管理员登录密码“abcde”,学生登录密码“12345”;

2、输入信息:

输入学生信息,包括:

学号、姓名、成绩;

3、显示信息:

显示输入的信息或者经过处理后的信息

4、查找信息:

查找学生信息,可以按学号查找,也可以按姓名查找;

5、修改信息:

修改学生的任何信息;

6、删除信息:

通过查找学生姓名删除该学生信息;

7、排序信息:

将输入的学生信息排序,按总分成绩降序排列;

8、统计信息:

统计出所有信息中的最高分成绩的学生的信息和学生人数。

四.详细设计

1.功能函数的调用关系图

按2键退出系统

2.各功能函数的数据流程图

1、主函数模块

密码正确

2、输入模块

返回

2、输出与排序模块

结束

3、删除与修改信息模块

4、统计信息模块

4、查找信息模块

3.重点设计及编码

此程序的重点是既能把学生信息保存到文件中,又能保存到磁盘中,方便实用与读取,代码如下:

structstudent*creat(structstudent*p)//创建链表

{

structstudent*p1=NULL;

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

p->

next=p1;

p1->

next=NULL;

printf("

请输入要添加的学生的信息\n"

);

学号:

"

scanf("

%s"

p1->

num);

姓名:

"

name);

数学成绩:

%d"

&

p1->

scorem);

英语成绩:

scoree);

C成绩:

scorec);

sum=0;

sum=p1->

scorem+p1->

scorec+p1->

scoree;

总分:

sum);

returnp1;

}

voidsave1(structstudent*p)//将链表从内存保存到文件中

FILE*fp;

if((fp=fopen("

d:

\\学生成绩管理系统.txt"

"

ab+"

))==NULL)

printf("

创建失败!

\n"

while(p!

=NULL)

{

fwrite(p,sizeof(structstudent),1,fp);

p=p->

next;

}

fclose(fp);

保存成功!

voidsave2(structstudent*p)//将以变动的链表信息存入到文件中

wb"

structstudent*read()//把文件中的数据读到链表中

structstudent*head=NULL,*p1=NULL,*p2=NULL;

if((fp=fopen("

rb+"

))==NULL)

{

printf("

读取时,文件打开失败!

returnNULL;

head=p1=(structstudent*)malloc(sizeof(structstudent));

while(fp!

=NULL)

{

if(fread(p1,sizeof(structstudent),1,fp)!

=1)break;

p1->

next=(structstudent*)malloc(sizeof(structstudent));

p2=p1;

p1=p1->

p2->

next=NULL;

fclose(fp);

returnhead;

}

五.测试数据及运行结果

1.正常测试数据和运行结果

1.按总分排序

2.删除某个学生信息

3.查找学生信息

2.异常测试数据及运行

1.删除信息出现异常

2.修改学生信息出现异常

六.调试情况,设计技巧及体会

1、对自己设计进行评价

1)不够细心,开始的时候出现很多错误

2)没有写登录函数

3)写的过于简短,且大部分都是书上照抄的

2.调试上得到的体会:

在最后的调试过程中,发现有时候系统报错,指出了错误所在的具体位置,可是检查的时候发现该位置并未出错,这样的错误首先要查找前后几行,如果还未检查出错误,那就很有可能在该函数的首部或是主函数的调用语句中出现错误。

发现该部分并未出现语法错误,即编译不报错,程序运行后,有时候会出现意想不到的结果,会在想不到的地方跳出程序,甚至不知道程序的什么地方就跳出了,用在不同的地方加不必要的printf语句!

以检查是否运行到printf语句。

3.设计上得到的体会:

在初步设计时要明确要使用的数据结构和类型,明确设计的基本思想,清楚所写程序的逻辑结构和执行顺序,在调试时才能在出现问题时及时的找到问题的所在.在完成了初步的设计并调试完成后,要进一步优化程序的结构,使程序更简洁,执行效率更高.

总之,第一次完成比较正式的程序,在开始的时候遇到了不少问题,包括怎么排序,怎么添加,怎么查找,怎么删除等一系列问题,但我并没有慌张,而是由一个问题入手,最后将它们一一攻破,顺利而又艰难的完成了这次任务;

通过这次实习,我的编程能力得到了很大的提高,算法思路也比以前清晰多了,基本上掌握了C语言的课程内容,虽然只有为期两周的实习,但是我的C语言还是得到了进一步的提高。

不过要想使自己的水平提高,还有待练习。

虽然实习结束了,但是以后在工作中可能会经常使用,这次的实习的确是一个很好的锻炼机会,它一定会使我受益终身的!

七.参考文献

《C语言程序设计》(第二版),

《数据结构(C语言)》清华大学出版社

八.附录:

源代码(电子版)

#include<

stdio.h>

stdlib.h>

string.h>

structstudent

charnum[9];

charname[9];

intscorem;

intscoree;

intscorec;

intsum;

structstudent*next;

};

structstudent*input()//添加函数

charch;

structstudent*p=NULL,*head=NULL;

head=p=(structstudent*)malloc(sizeof(structstudent));

p->

p->

p->

sum=p->

scorem+p->

scorec+p->

for(;

;

{

\n是否继续输入学生信息?

(y/n):

getchar();

ch=getchar();

if(ch=='

y'

||ch=='

Y'

p=creat(p);

elseif(ch=='

n'

||ch=='

N'

save1(head);

break;

}

else

printf("

您的输入有误,请重新输入,"

returnp->

next;

structstudent*output()//输出函数,查看全部学生信息

structstudent*p;

p=read();

if(read==NULL)

exit

(1);

\n*************************STUDENT***********************\n"

-------------------------------------------------------\n"

|学号|姓名|数学|英语|C语言|总分|\n"

while(p!

p->

p->

scoree+p->

scorec;

|%4s|%-4s|%3d|%3d|%3d|%3d|\n"

p->

num,

p->

name,p->

scorem,p->

scoree,p->

scorec,p->

sum);

returnp;

structstudent*search()//查找函数

intn;

chara[9],b[9];

structstudent*p=NULL,*head=NULL;

请您选择要查找的方式:

1按姓名2按学号\n"

n);

if(n==1)

请输入您要查找的学生的姓名:

scanf("

a);

p=head=read();

while(p!

=NULL)

if(p==NULL)

{

printf("

对不起,没有您要找的人。

}

if(strcmp(p->

name,a)==0)

p=p->

if(n==2)

请输入您要查找的学生的学号:

b);

while(p!

num,b)==0)

structstudent*dele()//删除函数

structstudent*p1=NULL,*p2=NULL,*head=NULL;

chara[9];

output();

printf("

请输入需要删除信息的人的姓名:

scanf("

p1=head=read();

if(head==NULL)

对不起,暂时没有信息,无法删除。

while(head!

if(strcmp(a,head->

name)!

=0&

&

p1->

next!

=NULL)

p2=head;

head=head->

next;

if(head==NULL)break;

if(strcmp(a,head->

name)==0&

p1==head)

p1=head->

if(strcmp(a,head->

name)==0)

p2->

next=head->

save2(p1);

printf("

该学生的信息删除成功!

break;

对不起,没有该学生的信息。

structstudent*change()//修改函数

inta;

charx[9];

structstudent*p=NULL,*head=NULL,*q=NULL;

p=head=read();

请输入要修改的人的姓名:

x);

if(p==NULL)

没有这个人!

while(p!

if(strcmp(p->

name,x)==0)

q=p;

break;

if(p!

请选择修改的内容:

1.姓名\n"

2.学号\n"

3.数学成绩\n"

4.英语成绩\n"

5.C成绩\n"

do

scanf("

a);

if(a<

0||a>

6)

您输入的数字有误,请重新输入:

}while(a<

=0||a>

=6);

switch(a)

case1:

请输入更改后的姓名:

break;

case2:

请输入更改后的学号:

case3:

请输入更改后的数学成绩:

scanf("

break;

case4:

请输入更改后的英语成绩:

case5:

请输入更改后的C成绩:

p->

sum=0;

sum=p->

scorem+p->

scoree+p->

scorec;

更改后的总分:

save2(head);

ou

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

当前位置:首页 > 教学研究 > 教学案例设计

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

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