学籍管理系统C语言程序设计华丽版+详细注共20页文档.docx

上传人:b****4 文档编号:12134413 上传时间:2023-04-17 格式:DOCX 页数:28 大小:282.66KB
下载 相关 举报
学籍管理系统C语言程序设计华丽版+详细注共20页文档.docx_第1页
第1页 / 共28页
学籍管理系统C语言程序设计华丽版+详细注共20页文档.docx_第2页
第2页 / 共28页
学籍管理系统C语言程序设计华丽版+详细注共20页文档.docx_第3页
第3页 / 共28页
学籍管理系统C语言程序设计华丽版+详细注共20页文档.docx_第4页
第4页 / 共28页
学籍管理系统C语言程序设计华丽版+详细注共20页文档.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

学籍管理系统C语言程序设计华丽版+详细注共20页文档.docx

《学籍管理系统C语言程序设计华丽版+详细注共20页文档.docx》由会员分享,可在线阅读,更多相关《学籍管理系统C语言程序设计华丽版+详细注共20页文档.docx(28页珍藏版)》请在冰豆网上搜索。

学籍管理系统C语言程序设计华丽版+详细注共20页文档.docx

学籍管理系统C语言程序设计华丽版+详细注共20页文档

实验题目:

学籍管理系统

“教书先生”恐怕是市井百姓最为熟悉的一种称呼,从最初的门馆、私塾到晚清的学堂,“教书先生”那一行当怎么说也算是让国人景仰甚或敬畏的一种社会职业。

只是更早的“先生”概念并非源于教书,最初出现的“先生”一词也并非有传授知识那般的含义。

《孟子》中的“先生何为出此言也?

”;《论语》中的“有酒食,先生馔”;《国策》中的“先生坐,何至于此?

”等等,均指“先生”为父兄或有学问、有德行的长辈。

其实《国策》中本身就有“先生长者,有德之称”的说法。

可见“先生”之原意非真正的“教师”之意,倒是与当今“先生”的称呼更接近。

看来,“先生”之本源含义在于礼貌和尊称,并非具学问者的专称。

称“老师”为“先生”的记载,首见于《礼记?

曲礼》,有“从于先生,不越礼而与人言”,其中之“先生”意为“年长、资深之传授知识者”,与教师、老师之意基本一致。

一、实验目的

教师范读的是阅读教学中不可缺少的部分,我常采用范读,让幼儿学习、模仿。

如领读,我读一句,让幼儿读一句,边读边记;第二通读,我大声读,我大声读,幼儿小声读,边学边仿;第三赏读,我借用录好配朗读磁带,一边放录音,一边幼儿反复倾听,在反复倾听中体验、品味。

综合应用所学的C语言程序设计知识,自行设计并实现一个较为完整的小型管理信息系统。

通过系统分析、系统设计、编程实现,写实验报告等环节,初步掌握软件系统的设计方法和步骤,提高灵活运用程序语言进行软件开发的技能,提高程序设计水平和分析问题、解决问题的能力。

其实,任何一门学科都离不开死记硬背,关键是记忆有技巧,“死记”之后会“活用”。

不记住那些基础知识,怎么会向高层次进军?

尤其是语文学科涉猎的范围很广,要真正提高学生的写作水平,单靠分析文章的写作技巧是远远不够的,必须从基础知识抓起,每天挤一点时间让学生“死记”名篇佳句、名言警句,以及丰富的词语、新颖的材料等。

这样,就会在有限的时间、空间里给学生的脑海里注入无限的内容。

日积月累,积少成多,从而收到水滴石穿,绳锯木断的功效。

二、实验内容

1):

熟悉C语言的开发环境,按照给定的上机步骤练习完成;

2):

熟悉C程序的编辑,编译,链接和运行的过程。

3):

编译一个应用系统程序,形成一个软件系统。

三、详细设计及运行结果

1、算法设计

学籍管理系统程序采用了结构化程序设计的思想,将程序分解成许多模块,再由主函数调用这些模块,实现不同的功能。

1、学生信息结构体:

储存学生信息。

2、主菜单模块:

通过利用输出函数显示输出主菜单信息。

3、提示错误信息模块:

通过利用输出函数输出提示错误信息。

4、提示没有找到模块:

通过利用输出函数输出提示没有找到该学生。

5、输出中文、英文模块:

通过利用输出函数输出中文提示及学生数据。

6、定位模块:

定位连表中符要求合的接点,并返回该指针。

7、增加学生信息模块:

通过指针的不断后移逐个接受学生信息并将学生信息付给相应变量。

8、查询学生信息模块:

根据用户选择按学号或按姓名查询,分别按学号或姓名逐个比较输入的数据与结构体中的数据,有匹配的则输出,没有则提示没有找到。

9、删除信息模块:

根据用户选择按学号或按姓名删除,分别比对输入数据和结构体中的数据,有匹配的则删除,没有则提示无信息可删。

10、修改信息模块:

通过用户输入的学号找到相应学生,然后逐项修改学生信息,否则提示无此学生。

11、显示信息模块:

将学生信息输出。

12、保存信息模块:

将接受的结构体信息利用指针存入文件中。

13、排序模块:

按照学生的最高分进行排序,输出。

14、统计学生信息模块:

逐项比较相邻两项的成绩信息,得到每项最大值,并输出统计结果。

15、主函数:

通过调用各模块来实现学生信息的管理。

2、模块图设计

总分

3、流程图设计

1、主函数

2、增加学生信息模块:

3删除学生信息

4.查询学生信息

4、修改学生信息

6、显示学生信息

7、保存学生信息

8.按总分排序

9、统计学生最高分

四、调试情况,设计技巧及体会

1、本系统在VC6下编译调试通过,可顺利运行,各项功能达到设计要求

本系统采用分模块调试的方法进行编译,即完成一个函数功能模块就编译一个功能模块,最后再进行整体编译并生成可执行文件honest.exe。

在调试过程中主要碰到以下问题:

(1)输入函数中的取地址符即“&”不能正确使用,导致程序在输入数据时发生错误。

(2)在比较两个字符串时不能正确使用“strcmp”函数,导致比较结果不能输出。

(3)在应用指针时没有注意头结点中的数据域中是不存放数据,导致指针指向错误。

2、在这次课程设计中我充分体会到C语言作为一门编程的基本语言它的精妙。

通过这次课程设计使我了解到我有很多的不足,在程序调试的时候常常会因为几个错误而弄得心烦,这说明我对知识的掌握还不够牢,在程序设计的过程中也暴露出了我的诸多弊端,借这次课程设计的机会我会认真的加以改正,多多看书多去图书馆学习,同时应该增强自己的实践能力,为以后的学习打下坚实的基础。

五、源程序清单(略,详见电子版实验报告)

#include"stdio.h"

#include"conio.h"

#include"stdlib.h"/*包含后面使用的exit等函数*/

#include"string.h"/*包含号面使用的strcmp等函数*/

inthavesave=0;/*全集变量*/

structstudent

charnum[10];/*学号*/

charname[18];

charsex[3];

intclanguage;

intmath;

intenglish;

inttotle;

intaverage;

typedefstructnode/*使用typedef语句,简化程序后续声明定义的键盘输入*/

structstudentdata;

structnode*next;

}Node,*Link;

voidmenu()

printf("㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣\n");

printf("◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎\n");

printf("◎◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◎\n");

printf("◎◆◇◎\n");

printf("◎◆◇◎\n");

printf("◎◆\t1添加学生资料\t\t\t\t\t2删除学生资料◇◎\n");

printf("◎◆◇◎\n");

printf("◎◆\t3查询学生资料\t\t\t\t\t4修改学生资料◇◎\n");

printf("◎◆◇◎\n");

printf("◎◆\t5保存学生资料\t\t\t\t\t6统计最高分◇◎\n");

printf("◎◆◇◎\n");

printf("◎◆\t7按总分排名\t\t\t\t\t8打印学生成绩◇◎\n");

printf("◎◆◇◎\n");

printf("◎◆\t9帮助信息\t\t\t\t\t0退出系统◇◎\n");

printf("◎◆◇◎\n");

printf("◎◆◇◎\n");

printf("◎◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◎\n");

printf("◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎\n");

printf("\n");

printf("㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣\n");

voidprint_san()

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

voidWrong()

printf("\n=====>提示:

输入错误!

\n");

voidNofind()

printf("\n=====>提示:

没有找到该学生!

\n");

voidprintchinese()/*本函数用于输出中文*/

printf("\t学号\t姓名性别英语成绩数学成绩C语言成绩总分平均分\n");

voidprintenglish(Node*p)/*本函数用于输出英文*/

printf("\t%-9s%s\t%s\t%d\t%d\t%d\t%d\t%d\n",p->data.num,p->data.name,p->data.sex,p->data.english,p->data.math,p->data.clanguage,p->data.totle,p->data.average);

voidprinthelp()

printf("该程序为用C语言编写的学生管理程序,第一次进入该程序需要创建学生数据\n");

printf("以后进入可根据菜单栏显示实现各项功能,系统默认保存文件位置为D:

/学生管理\n");

printf("按任意键返回");

printf("\n");

getch();

Node*Locate(Linkl,charfindmess[],charnameornum[])/*该函数用于定位链表中符合要求的结点,并返回该指针*/

Node*r;

if(strcmp(nameornum,"num")==0)/*按学号查询*/

r=l->next;

while(r!

=NULL)

if(strcmp(r->data.num,findmess)==0)

returnr;

r=r->next;

elseif(strcmp(nameornum,"name")==0)/*按姓名查询*/

r=l->next;

while(r!

=NULL)

if(strcmp(r->data.name,findmess)==0)

returnr;

r=r->next;

return0;

voidAdd(Linkl)/*增加学生*/

Node*p,*r,*s;

charnum[10];

r=l;

s=l->next;

while(r->next!

=NULL)

r=r->next;/*将指针置于最末尾*/

while

(1)

printf("请你输入学号(以'0'返回上一级菜单:

)");

scanf("%s",num);

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

break;

while(s)

if(strcmp(s->data.num,num)==0)

printf("=====>提示:

学号为'%s'的学生已经存在,若要修改请你选择'4修改'!

\n",num);

print_san();

printchinese();

printenglish(s);

print_san();

printf("\n");

return;

s=s->next;

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

strcpy(p->data.num,num);

printf("请你输入姓名:

");

scanf("%s",p->data.name);

getchar();

printf("请你输入性别:

");

scanf("%s",p->data.sex);

getchar();

printf("请你输入c语言成绩:

");

scanf("%d",&p->data.clanguage);

getchar();

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

");

scanf("%d",&p->data.math);

getchar();

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

");

scanf("%d",&p->data.english);

getchar();

p->data.totle=p->data.english+p->data.clanguage+p->data.math;

p->data.average=p->data.totle/3;

/*信息输入已经完成*/

p->next=NULL;

r->next=p;

r=p;

havesave=1;

voidSeek(Linkl)/*查询学生*/

intsel;

charfindmess[20];

Node*p;

if(!

l->next)

printf("\n=====>提示:

没有资料可以查询!

\n");

return;

printf("\n=====>1按学号查找\n=====>2按姓名查找\n");

scanf("%d",&sel);

if(sel==1)/*学号*/

printf("请你输入要查找的学号:

");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

printf("\t\t\t\t查找结果\n");

print_san();

printf("\n");

printchinese();

printenglish(p);

printf("\n");

print_san();

printf("按任意键返回");

getch();

else

Nofind();

elseif(sel==2)/*姓名*/

printf("请您输入要查找的姓名:

");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

printf("\t\t\t\t查找结果\n");

print_san();

printf("\n");

printchinese();

printenglish(p);

printf("\n");

print_san();

printf("按任意键返回");

getch();

else

Nofind();

else

Wrong();

voidDel(Linkl)/*删除*/

intsel;

Node*p,*r;

charfindmess[20];

if(!

l->next)

printf("\n=====>提示:

没有资料可以删除!

\n");

return;

printf("\n=====>1按学号删除\n=====>2按姓名删除\n");

scanf("%d",&sel);

if(sel==1)

printf("请您输入要删除的学号:

");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

r=l;

while(r->next!

=p)

r=r->next;

r->next=p->next;

free(p);

printf("\n=====>提示:

该学生已经成功删除!

\n");

havesave=1;

else

Nofind();

elseif(sel==2)

printf("请你输入要删除的姓名:

");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

r=l;

while(r->next!

=p)

r=r->next;

r->next=p->next;

free(p);

printf("\n=====>提示:

该学生已经成功删除!

\n");

havesave=1;

else

Nofind();

else

Wrong();

voidModify(Linkl)

Node*p;

charfindmess[20];

if(!

l->next)

printf("\n=====>提示:

没有资料可以修改!

\n");

return;

printf("请您输入要修改的学生学号:

");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

printf("请你输入新学号(原来是%s):

",p->data.num);

scanf("%s",p->data.num);

printf("请你输入新姓名(原来是%s):

",p->data.name);

scanf("%s",p->data.name);

getchar();

printf("请你输入新性别(原来是%s):

",p->data.sex);

scanf("%s",p->data.sex);

printf("请你输入新的c语言成绩(原来是%d分):

",p->data.clanguage);

scanf("%d",&p->data.clanguage);

getchar();

printf("请你输入新的数学成绩(原来是%d分):

",p->data.math);

getchar();

scanf("%d",&p->data.math);

printf("请你输入新的英语成绩(原来是%d分):

",p->data.english);

scanf("%d",&p->data.english);

p->data.totle=p->data.english+p->data.clanguage+p->data.math;

p->data.average=p->data.totle/3;

printf("\n=====>提示:

资料修改成功!

\n");

havesave=1;

else

Nofind();

voidScoreone(Linkl)

Node*pm,*pe,*pc,*pt,*pa;/*用于指向分数最高的接点*/

Node*r=l->next;

if(!

r)

printf("\n=====>提示:

没有资料可以统计!

\n");

return;

pm=pe=pc=pt=pa=r;

while(r!

=NULL)

if(r->data.clanguage>=pc->data.clanguage)

pc=r;

if(r->data.math>=pm->data.math)

pm=r;

if(r->data.english>=pe->data.english)

pe=r;

if(r->data.totle>=pt->data.totle)

pt=r;

if(r->data.average>=pa->data.average)

pa=r;

r=r->next;

printf("------------------------------统计结果--------------------------------\n");

printf("总分最高者:

\t%s\t%s\t%d分\n",pt->data.num,pt->data.name,pt->data.totle);

printf("平均分最高者:

\t%s\t%s\t%d分\n",pa->data.num,pa->data.name,pa->data.average);

printf("英语最高者:

\t%s\t%s\t%d分\n",pe->data.num,pe->data.name,pe->data.english);

printf("数学最高者:

\t%s\t%s\t%d分\n",pm->data.num,pm->data.name,pm->data.math);

printf("c语言最高者:

\t%s\t%s\t%d分\n",pc->data.num,pc->data.name,pc->data.clanguage);

print_san();

printf("按任意键返回\n");

getch();

voidScoretow(Linkl)

Linkll;

Node*p,*rr,*s;

ll=(Link)malloc(sizeof(Node));/*用于做新的连表*/

ll->next=NULL;

if(l->next==NULL)

printf("\n=====>提示:

没有资料可以排序!

\n");

return;

p=l->next;

while(p)

s=(Node*)malloc(sizeof(Node));/*新建接点用于保存信息*/

s->data=p->data;

s->next=NULL;

rr=ll;

while(rr->next!

=NULL&&rr->next->data.totle>=p->data.totle)

rr=rr->next;

if(rr->next==NULL)

rr->next=s;

else

s->next=rr->next;

rr->next=s;

p=p->next;

free(l);

l->next=ll->next;

printf("\n=====>提示:

排序已经完成!

\n");

voidprintscore(Linkl)//打印成绩信息

Node*p;

p=l;

if(l!

=NULL)

printf("\n全部成绩为:

\n\n");

printf("学号\t姓名\t数学\t英语\tC语言\t平均分\t总分\n\n");

p=p->next;

do

printf("%s\t%s\t%d\t%d\t%d\t%d\t%d\n",p->data.num,p->data.name,p->data.math,p->data.english,p->data.clanguage,p->data.average,p->data.totle);

p=p->next;

}while(p!

=NULL);

printf("\n");

printf("按任意键返回");

printf("\n");

getch();

else

printf("\n目前数据为空,还没有任何信息,请先创建成绩信息!

\n\n");

voidSave(Linkl)

FILE*fp;

Node*p;

intflag=1,count=0;

fp=fopen("D:

\\学生管理","wb");

if(fp==NULL)

printf("\n=====>提示:

重新打开文件时发生错误!

\n");

exit

(1);

p=l->next;

while(p)

if(fwrite(p,sizeof(Node),1,fp)==1)

p=p->next;

count++;

else

flag=0;

break;

if(flag)

printf("\n=====>提示

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

当前位置:首页 > 工程科技 > 能源化工

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

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