学生成绩管理系统Word文档格式.docx

上传人:b****2 文档编号:4280733 上传时间:2023-05-03 格式:DOCX 页数:27 大小:330KB
下载 相关 举报
学生成绩管理系统Word文档格式.docx_第1页
第1页 / 共27页
学生成绩管理系统Word文档格式.docx_第2页
第2页 / 共27页
学生成绩管理系统Word文档格式.docx_第3页
第3页 / 共27页
学生成绩管理系统Word文档格式.docx_第4页
第4页 / 共27页
学生成绩管理系统Word文档格式.docx_第5页
第5页 / 共27页
学生成绩管理系统Word文档格式.docx_第6页
第6页 / 共27页
学生成绩管理系统Word文档格式.docx_第7页
第7页 / 共27页
学生成绩管理系统Word文档格式.docx_第8页
第8页 / 共27页
学生成绩管理系统Word文档格式.docx_第9页
第9页 / 共27页
学生成绩管理系统Word文档格式.docx_第10页
第10页 / 共27页
学生成绩管理系统Word文档格式.docx_第11页
第11页 / 共27页
学生成绩管理系统Word文档格式.docx_第12页
第12页 / 共27页
学生成绩管理系统Word文档格式.docx_第13页
第13页 / 共27页
学生成绩管理系统Word文档格式.docx_第14页
第14页 / 共27页
学生成绩管理系统Word文档格式.docx_第15页
第15页 / 共27页
学生成绩管理系统Word文档格式.docx_第16页
第16页 / 共27页
学生成绩管理系统Word文档格式.docx_第17页
第17页 / 共27页
学生成绩管理系统Word文档格式.docx_第18页
第18页 / 共27页
学生成绩管理系统Word文档格式.docx_第19页
第19页 / 共27页
学生成绩管理系统Word文档格式.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生成绩管理系统Word文档格式.docx

《学生成绩管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统Word文档格式.docx(27页珍藏版)》请在冰点文库上搜索。

学生成绩管理系统Word文档格式.docx

8.按某一门课对学生成绩排序,

9.按姓名查找学生信息

四.详细设计

函数之间相互调用的示意图:

 

数据结构:

包括声明的数据类型(如结构体),程序中个变量的类型及其作用

typedefstructz1

{

charno[11];

charname[15];

intscore[N];

floatsum;

floataverage;

intorder;

structz1*next;

}STUDENT;

STUDENT*init();

STUDENT*create();

STUDENT*del(STUDENT*h);

voidprint(STUDENT*h);

voidsearch1(STUDENT*h);

voidsearch2(STUDENT*h);

voidsecret();

STUDENT*insert(STUDENT*h);

voidsort(STUDENT*h);

voidsave(STUDENT*h);

intmenu_select();

STUDENT*load();

五.测试数据及运行结果

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

(1).测试数据

|3|23|3|34|4|41.00|13.67|0|

|2|3|23|2|23|48.00|16.00|0|

|1|2|12|23|23|58.00|19.33|0|

运行结果

|3|23|3|34|4|41.00|13.67|1|

|2|3|23|2|23|48.00|16.00|2|

|1|2|12|23|23|58.00|19.33|3|

(2).测试数据

2.异常测试数据及运行结果

异常测试数据

|3|23|3|34|4|44.00|13.67|0|

|2|3|50|23|23|41.00|16.00|0|

|1|2|80|2|23|56.00|13.33|0|

|3|23|3|34|4|44.00|13.67|5|

|2|3|50|23|23|41.00|16.00|3|

|1|2|80|2|23|56.00|13.33|1|

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

1、对自己设计进行评价

基本写出所写的函数。

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

2)没有写登陆函数

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

写出登陆函数和密码函数,并多个角度调用函数。

2.调试程序时的体会:

程序是用数组实现的,调试过程中数组的有太多的变量很容易出现错误,因此定义一个宏数组和一个宏变量,在调用每一次函数时,数组的中元素个数和元素内容都会发上变化,因此,定义一个宏数组和宏变量,调用函数之后,自动的改变数组中的东西,因此,函数调用时不需要传递参数。

编写程序的时候,我每编写完一个模块,就编译一次,及时的将本模块内的语法等简单的错误改正,避免最后调试的时候出现麻烦。

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

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

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

在文件中的保存时,回车见不能随便加,否则,在下次录入文件里的东西是,会在录入完最后的信息时,继续往下录入,用空格代替字符串,用0代替数字。

导致多录入一空信息.

3.设计上得到的体会:

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

七.参考文献

《c语言程序设计》

八附录

#include"

stdio.h"

stdlib.h"

string.h"

#defineN3

voidinputs(char*prompt,char*s,intcount);

main()

inti;

STUDENT*head;

head=init();

secret();

for(;

;

{

switch(menu_select())

case0:

head=init();

break;

case1:

head=create();

case2:

save(head);

case3:

print(head);

case4:

search1(head);

case5:

head=del(head);

case6:

sort(head);

case7:

search2(head);

case8:

exit(0);

}

}

voidsecret()

while

(1)

inta;

charf;

charch[10];

charnum[20]={"

12345"

};

printf("

进入学生成绩管理系统需输入密码,谢谢合作!

\n"

);

请输入密码:

for(i=0;

i<

10;

i++)

ch[i]=getch();

if(ch[i]==13)

break;

putchar('

*'

ch[i]='

\0'

if(strcmp(num,ch)==0)

a=1;

if(a==1)

printf("

\n欢迎进入学生成绩管理系统!

f=getchar();

getchar();

break;

else

\n这个密码是错误的!

"

\n请输入正确的密码:

"

intmenu_select()

char*menu[]={"

************菜单************"

0.初始化链表"

1.输入学生成绩"

2.保存学生记录"

3.显示学生记录"

4.按学号查找学生信息"

5.删除指定学号的学生信息"

6.按某一门课对学生成绩排序"

7.按姓名查找学生信息"

8.退出系统"

chars[3];

intc,i;

=9;

%s\n"

menu[i]);

do

\n请选择0~10中的某一个选项\n"

scanf("

%s"

s);

c=atoi(s);

}while(c<

0||c>

8);

returnc;

STUDENT*init()

returnNULL;

STUDENT*create()

ints;

STUDENT*h=NULL,*info;

info=(STUDENT*)malloc(sizeof(STUDENT));

if(!

info)

\n内存不足"

inputs("

输入学号:

info->

no,11);

if(info->

no[0]=='

@'

)break;

输入姓名:

name,15);

开始输入%d门课的成绩\n"

N);

s=0;

N;

do{

第%d门分数:

i+1);

%d"

&

info->

score[i]);

score[i]>

100||info->

score[i]<

0)

输入成绩错误,请重新输入:

}while(info->

0);

s=s+info->

score[i];

info->

sum=s;

average=(float)s/N;

order=0;

next=h;

h=info;

returnh;

voidinputs(char*prompt,char*s,intcount)

charp[255];

printf(prompt);

p);

if(strlen(p)>

count)

\n太长了!

}while(strlen(p)>

count);

strcpy(s,p);

voidprint(STUDENT*h)

inti=0;

STUDENT*p;

p=h;

\n\n\n***********************学生***********************\n"

|序号|学号|姓名|数学|英语|计算机|总分|平均分|名次|\n"

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

while(p!

=NULL)

i++;

|%3d|%-7s|%-9s|%6d|%6d|%6d|%5.2f|%7.2f|%3d|\n"

i,p->

no,p->

name,p->

score[0],p->

score[1],p->

score[2],p->

sum,p->

average,p->

order);

p=p->

next;

***********************end***********************\n"

STUDENT*del(STUDENT*h)

STUDENT*p,*q;

chars[11];

请输入要删除的学生的学号\n"

q=p=h;

while(strcmp(p->

no,s)&

&

p!

q=p;

if(p==NULL)

\n链表中没有学号为%s的学生\n"

else

\n\n\n***********************找到了***********************\n"

|学号|姓名|数学|英语|计算机|总分|平均分|名次|\n"

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

|%-7s|%-9s|%6d|%6d|%6d|%6.2f|%6.2f|%3d|\n"

p->

请按任意键删除\n"

getchar();

if(p==h)

h=p->

elseq->

next=p->

free(p);

\n已经删除学号为%s的学生\n"

不要忘了保存数据\n"

voidsearch1(STUDENT*h)

请输入你要查找的同学的学号\n"

'

n没有学号为%s的学生\n"

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

voidsearch2(STUDENT*h)

请输入你要查找的同学的姓名\n"

name,s)&

\n没有姓名为%s的学生\n"

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

voidsave(STUDENT*h)

FILE*fp;

charoutfile[10];

请输入保存文件的文件名,例如c:

\\f1\\te.txt:

outfile);

if((fp=fopen(outfile,"

wt"

))==NULL)

不能打开文件\n"

exit

(1);

\n正在保存......\n"

fprintf(fp,"

|%-7s|%-9s|%4d|%4d|%4d|%5.2f|%5.2f|%3d|\n"

fclose(fp);

------保存成功!

!

------\n"

voidsort(STUDENT*h)

STUDENT*p,*q,*t;

intdata;

p=q=t=(STUDENT*)malloc(sizeof(STUDENT));

\n\n\n\n\n\t\t1.按数学排序\n\n\t\t2.按英语排序\n\n\t\t3.按计算机排序\n\n\t\t请选择:

data);

if(data==1)

for(p=h->

p->

next!

=NULL;

p=p->

next)

{

for(q=p->

q!

q=q->

{

if(q->

score[0]>

score[0])

{

*t=*q;

*q=*p;

*p=*t;

p->

next=q->

q->

next=t->

}

}

}

elseif(data==2)

for(p=h->

for(q=p->

if(q->

score[1]>

score[1])

{

*t=*q;

*q=*p;

*p=*t;

p->

q->

}

elseif(data==3)

for(p=h->

for(q=p->

if(q->

score[2]>

score[2])

{

*t=*q;

*q=*p;

*p=*t;

p->

q->

}

i=0;

p->

order=i;

print(h);

printf("

排序成功\n\n"

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2