学生成绩管理系统11111115.docx
- 文档编号:27815721
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:8
- 大小:22.55KB
学生成绩管理系统11111115.docx
《学生成绩管理系统11111115.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统11111115.docx(8页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统11111115
学生成绩管理系统
课程设计报告课程名称C语言课程设计课题名称学生成绩管理系统专业工程管理班级学号姓名指导教师2019年6月17日-一、设计内容与设计要求1.设计内容:
设计一个简易学生成绩管理系统,包括学生成绩的信息输入、输出、查询、删除、排序、统计、退出,将学生的成绩信息进行记录,信息内容包含:
(1)学生学号
(2)学生姓名(3)学生成绩。
假如,收集到一个班的学生成绩信息,要编写一个简单的成绩管理系统,可进行录入、查询、修改和浏览等功能。
2.设计求要1).设计正确,方案合理。
2).界面友好,使用方便。
3).程序精炼,结构清晰。
4).设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。
5).实际操作过程中遇到的问题及解决方法:
设计总结及心得体会.6).上机演示。
3、进度安排第十七周周日下午14:
0018:
00第十八周周二晚上18:
3022:
30第十九周周一晚上18:
3022:
30-二、系统介绍本系统涉及的知识点:
单链表、结构体、函数、指针、选择系统环境:
Win-TC三、总体介绍(包含几大功能模块)1、成绩录入功能2、成绩输出功能3、成绩查询功能4、删除模快5、排序功能6、统计功能7、退出系统-流程图开始输入菜单输入输出排序查找插入删除统计保存退出根据菜单输入N的值选择程序结束-查询模块的执行流程:
开始设置int变量:
q,b,k,i,l,j,t设置char变量:
p[10]输出提示输入语句输入q判断q按学号查询按姓名查询q等于q等于输出提示输入语句并输入数据对输入数据进行处输出提示输入语句并输入数据对输入数据进行处q等于3判断jj等于0输出结果判断i输出结果结束i大于等于0-四、各个模块说明1、输入初始的学生信息:
输入的信息包括学生的姓名、学号及学生的成绩等相关信息;可用函数voidinput(STUDENT*data,int*len)来实现此操作。
2、成绩输出模块:
输出学生的信息以及成绩voidoutput(STUDENT*data,intlen);通过学生的姓名来查看学生的相关成绩,同时也可以分别通过caverage()、maverage()、eaverage()和comaverage()来输出成绩的平均分数、最高和最低分数。
3、成绩查询模块:
可用voidfind(STUDENT*data,intlen)来实现。
找到输出此学生全部信息。
4、删除模块:
用函数voiddelete_iten(STUDENT*data,intlen)来实现。
5、排序模块:
用函数voidsort(STUDENT*data,intlen)来实现。
6、统计功能:
用函数voidstat(STUDENT*data,intlen)来实现。
7、退出系统:
用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
五、程序调试--六、程序心得与体会忙碌了一个星期,在大家的共同努力之下,我们总算将此程序设计出来了。
尽管不是自己独立完成的,但仍然很高兴。
查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。
在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情开始编写修改和删除时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了。
困难之时,我们组的其他人,帮助了我,完成了修改和删除。
这样的话,整个程序基本上全部完成了,就剩下完善工作了。
虽然对着电脑做程序,有点累有点热,可是当看到劳动成果时,真是别有一番滋味在心头啊!
世上无难事,只怕有心人,的确如此。
做完这个程序最大的收获就是感受到了集体的力量,当然个人的智慧也是很重要的哦!
做完这个课程设计,我们的自信一下子提高了,我们也会写程序了;尽管对于有些人这种程序会很简单,可对我们C语言初学者来说,已经很不容易了。
这次体验为以后的学习计算机的我们增强了信心。
享受劳动成果的滋味实在很美妙啊!
有一开始的什么都不会,到最后通过各种方式将程序弄懂并做出来并完善,回头想想,其实也就这样。
只要认真,弄懂语句的含义其实还是容易的。
大学的教育模式和中学有很大不同,从平常的课程安排和教学就可以知道,但是独立完成课程设计和写论文这种任务对我们来说无疑是一个很大的挑战。
完成了整个程序设计,这次课程设计就接近尾声了,整个课程设计终于完成了,完成的好辛苦,好艰难,但还是顺利的完成了。
我们付出了很多心血和汗水,但我认为我们得到的更多。
如果没有同学们的互相帮助,这次课程设计就不会这么顺利,这种同舟共济的团队精神深深震撼了我。
-计算机与通信学院课程设计评分表课程名称:
项目评价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩教师签名:
日期:
-八、主要源程序代码/******头文件(.h)***********/#includestdio.h/*I/O函数*/#includestdlib.h/*其它说明*/#includestring.h/*字符串函数*/#includeconio.h/*屏幕操作函数*/#includemem.h/*内存操作函数*/#includectype.h/*字符操作函数*/#includealloc.h/*动态地址分配函数*/#defineN3/*定义常数*/typedefstructz1/*定义数据结构*/{charno[11];charname[15];intscore[N];floatsum;floataverage;intorder;structz1*next;}STUDENT;/*以下是函数原型*/STUDENT*init();/*初始化函数*/STUDENT*create();/*创建链表*/STUDENT*delete(STUDENT*h);/*删除记录*/voidprint(STUDENT*h);/*显示所有记录*/voidsearch(STUDENT*h);/*查找*/voidsave(STUDENT*h);/*保存*/STUDENT*load();/*读入记录*/voidcomputer(STUDENT*h);/*计算总分和均分*/-STUDENT*insert(STUDENT*h);/*插入记录*/voidappend();/*追加记录*/STUDENT*sort(STUDENT*h);/*排序*/intmenu_select();/*菜单函数*//******主函数开始*******/main(){inti;STUDENT*head;/*链表定义头指针*/head=init();/*初始化链表*/clrscr();/*清屏*/for(;;)/*无限循环*/{switch(menu_select())/*调用主菜单函数,返回值整数作开关语句的条件*/{/*值不同,执行的函数不同,break不能省略*/case0:
head=init();break;/*执行初始化*/case1:
head=create();break;/*创建链表*/case2:
head=delete(head);break;/*删除记录*/case3:
print(head);break;/*显示全部记录*/case4:
search(head);break;/*查找记录*/case5:
save(head);break;/*保存文件*/case6:
head=load();break;/*读文件*/case7:
computer(head);break;/*计算总分和均分*/case8:
head=insert(head);break;/*插入记录*/case9:
head=sort(head);break;/*排序*/case10:
append();break;/*追加记录*/case11:
exit(0);/*如菜单返回值为14程序结束*/}}}/*菜单函数,返回值为整数*/-menu_select(){char*menu[]={***************MENU***************,/*定义菜单字符串数组*/0.initlist,/*初始化*/1.Enterlist,/*输入记录*/2.Deletearecordfromlist,/*从表中删除记录*/3.printlist,/*显示单链表中所有记录*/4.Searchrecordonname,/*按照姓名查找记录*/5.Savethefile,/*将单链表中记录保存到文件中*/6.Loadthefile,/*从文件中读入记录*/7.computethescore,/*计算所有学生的总分和均分*/8.insertrecordtolist,/*插入记录到表中*/9.sorttomakenewfile,/*排序*/10.appendrecordtofile,/*追加记录到文件中*/11.Quit};/*退出*/chars[3];/*以字符形式保存选择号*/intc,i;/*定义整形变量*/gotoxy(1,25);/*移动光标*/printf(pressanykeyentermenu......\n);/*压任一键进入主菜单*/getch();/*输入任一键*/clrscr();/*清屏幕*/gotoxy(1,1);/*移动光标*/textcolor(YELLOW);/*设置文本显示颜色为黄色*/textbackground(BLUE);/*设置背景颜色为蓝色*/gotoxy(10,2);/*移动光标*/putch(0xc9);/*输出左上角边框┏*/for(i=1;i44;i++)putch(0xcd);/*输出上边框水平线*/putch(0xbb);/*输出右上角边框┓*/for(i=3;i20;i++){-gotoxy(10,i);putch(0xba);/*输出左垂直线*/gotoxy(54,i);putch(0xba);}/*输出右垂直线*/gotoxy(10,20);putch(0xc8);/*输出左上角边框┗*/for(i=1;i44;i++)putch(0xcd);/*输出下边框水平线*/putch(0xbc);/*输出右下角边框┛*/window(11,3,53,19);/*制作显示菜单的窗口,大小根据菜单条数设计*/clrscr();/*清屏*/for(i=0;i13;i++)/*输出主菜单数组*/{gotoxy(10,i+1);cprintf(%s,menu[i]);}textbackground(BLACK);/*设置背景颜色为黑色*/window(1,1,80,25);/*恢复原窗口大小*/gotoxy(10,21);/*移动光标*/do{printf(\nEnteryouchoice(0~14):
);/*在菜单窗口外显示提示信息*/scanf(%s,s);/*输入选择项*/c=atoi(s);/*将输入的字符串转化为整形数*/}while(c0||c11);/*选择项不在0~14之间重输*/returnc;/*返回选择项,主程序根据该数调用相应的函数*/}STUDENT*init(){returnNULL;}/*创建链表*/STUDENT*create()-{inti;ints;STUDENT*h=NULL,*info;/*STUDENT指向结构体的指针*/for(;;){info=(STUDENT*)malloc(sizeof(STUDENT));/*申请空间*/if(!
info)/*如果指针info为空*/{printf(\noutofmemory);/*输出内存溢出*/returnNULL;/*返回空指针*/}inputs(enterno:
info-no,11);/*输入学号并校验*/if(info-no[0]==‘@’)break;/*如果学号首字符为@则结束输入*/inputs(entername:
info-name,15);/*输入姓名,并进行校验*/printf(pleaseinput%dscore\n,N);/*提示开始输入成绩*/s=0;/*计算每个学生的总分,初值为0*//*N门课程循环N次*//*将总分保存*//*求出平均值*/for(i=0;iN;i++)/*N门课程循环N次*/{do{printf(score%d:
i+1);/*提示输入第几门课程*/scanf(%d,info-score[i]);/*输入成绩*/if(info-score[i]100||info-score[i]0)/*确保成绩在0~100之间*/printf(Baddata,repeatinput\n);/*出错提示信息*/-}while(info-score[i]100||info-score[i]0);s=s+info-score[i];/*累加各门课程成绩*/}info-sum=s;/*将总分保存*/info-average=(float)s/N;/*求出平均值*/info-order=0;/*未排序前此值为0*/info-next=h;/*将头结点做为新输入结点的后继结点*/h=info;/*新输入结点为新的头结点*/}return(h);/*返回头指针*/}/*输入字符串,并进行长度验证*/inputs(char*prompt,char*s,intcount){charp[255];do{printf(prompt);/*显示提示信息*/scanf(%s,p);/*输入字符串*/if(strlen(p)count)printf(\ntoolong!
\n);/*进行长度校验,超过count值重输入*/}while(strlen(p)count);strcpy(s,p);/*将输入的字符串拷贝到字符串s中*/}/*输出链表中结点信息*/voidprint(STUDENT*h){inti=0;/*统计记录条数*/STUDENT*p;/*移动指针*/clrscr();/*清屏*/p=h;/*初值为头指针*/-printf(\n\n\n****************************STUDENT********************************\n);printf(|rec|nO|name|sc1|sc2|sc3|sum|ave|order|\n);printf(|---|----------|---------------|----|----|----|--------|-------|-----|\n);while(p!
=NULL){i++;printf(|%3d|%-10s|%-15s|%4d|%4d|%4d|%4.2f|%4.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;}printf(**********************************end*********************************\n);}/*删除记录*/STUDENT*delete(STUDENT*h){STUDENT*p,*q;/*p为查找到要删除的结点指针,q为其前驱指针*/chars[11];/*存放学号*/clrscr();/*清屏*/printf(pleasedeletedno\n);/*显示提示信息*/scanf(%s,s);/*输入要删除记录的学号*/q=p=h;/*给q和p赋初值头指针*//*当记录的学号不是要找的,或指针不为空时*/-{q=p;/*将p指针值赋给q作为p的前驱指针*/p=p-next;/*将p指针指向下一条记录*/}if(p==NULL)/*如果p为空,说明链表中没有该结点*/printf(\nlistno%sstudent\n,s);else/*p不为空,显示找到的记录信息*/{printf(*****************************havefound***************************\n);printf(|no|name|sc1|sc2|sc3|sum|ave|order|\n);printf(|----------|---------------|----|----|----|--------|-------|-----|\n);printf(|%-10s|%-15s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n,p-no,p-name,p-score[0],p-score[1],p-score[2],p-sum,p-average,p-order);printf(********************************end*******************************\n);getch();/*压任一键后,开始删除*/if(p==h)/*如果p==h,说明被删结点是头结点*/h=p-next;/*修改头指针指向下一条记录*/elseq-next=p-next;/*不是头指针,将p的后继结点作为q的后继结点*/free(p);/*释放p所指结点空间*/printf(\nhavedeletedNo%sstudent\n,s);printf(Don’tforgetsave\n);/*提示删除后不要忘记保存文件*/}return(h);/*返回头指针*/-}/*查找记录*/voidsearch(STUDENT*h){STUDENT*p;/*移动指针*/chars[15];/*存放姓名的字符数组*/clrscr();/*清屏幕*/printf(pleaseenternameforsearch\n);scanf(%s,s);/*输入姓名*/p=h;/*将头指针赋给p*/while(strcmp(p-name,s)p!
=NULL)/*当记录的姓名不是要找的,或指针不为空时*/p=p-next;/*移动指针,指向下一结点*/if(p==NULL)/*如果指针为空*/printf(\nlistno%sstudent\n,s);/*显示没有该学生*/else/*显示找到的记录信息*/{printf(\n\n*****************************havefound***************************\n);printf(|nO|name|sc1|sc2|sc3|sum|ave|order|\n);printf(|----------|---------------|----|----|----|--------|-------|-----|\n);printf(|%-10s|%-15s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|\n,p-no,p-name,p-score[0],p-score[1],p-score[2],p-sum,p-average,p-order);printf(********************************end*******************************\n);}}-/*插入记录*/STUDENT*insert(STUDENT*h){STUDENT*p,*q,*info;/*p指向插入位置,q是其前驱,info指新插入记录*/chars[11];/*保存插入点位置的学号*/ints1,i;printf(pleaseenterlocationbeforetheno\n);scanf(%s,s);/*输入插入点学号*/printf(\npleasenewrecord\n);/*提示输入记录信息*/info=(STUDENT*)malloc(sizeof(STUDENT));/*申请空间*/if(!
info){printf(\noutofmemory);/*如没有申请到,内存溢出*/returnNULL;/*返回空指针*/}inputs(enterno:
info-no,11);/*输入学号*/inputs(entername:
info-name,15);/*输入姓名*/printf(pleaseinput%dscore\n,N);/*提示输入分数*/s1=0;/*保存新记录的总分,初值为0*/for(i=0;iN;i++)/*N门课程循环N次输入成绩*/{do{/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 11111115