欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    计算机课程设计学生成绩管理系统.doc

    • 资源ID:2882350       资源大小:255.50KB        全文页数:26页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机课程设计学生成绩管理系统.doc

    通信工程学院课程设计报告2010.08.28一、实验题目:学生成绩管理系统二、系统功能: 1学生基本情况录入。2允许对已经录入的数据进行显示。3允许进行数据的插入。4删除基本数据的相关信息。5基于姓名的查询。如:姓张的所有同学。6基于各种基本数据的统计计算。如:统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩)。列出90分以上(包括90)、80分以上(包括80)、70分以上(包括70)、60分以上(包括60)、不及格学生清单(学号、姓名、不及格的课程和成绩)。统计并输出各门功课的平均成绩和总平均成绩。三、系统功能模块结构图学生成绩管理系统统计表中数据查询表中数据删除表中数据插入数据到表中学生基本情况录入显示已经录入的数据图1: 学生成绩管理系统模块图四、数据结构设计及用法说明数据结构可参考下面定义typedef struct S1char no9;/*学号*/char name15; /*姓名*/char sex; /*性别*/int age; /*年龄*/int score4; /*成绩*/float sum; /*总分*/float average; /*平均分*/int order; /*排名*/struct S1 *next;STUDENT;与创建文本菜单相关的函数:window、textbackground、clrscr、textcolor、cprintf、bioskey、gotoxy、gettext、puttext、putch。putch(0xc9);/*输出左上角边框 */putch(0xcd);/*输出水平线*/putch(0xbb);/*输出右上角边框*/putch(0xba);/*输出左垂直线*/putch(0xc8);/*输出左上角边框*/putch(0xbc);/*输出右下角边框*/1查找相关函数、编写数据结构、算法、代码等,8学时;(周一)2完成菜单以及插入、删除记录过程;(周二)菜单的样板模式为:" 1. Enter list"输入记录" 2. Delete a record from list"从表中删除记录" 3. print list "显示链表中所有记录" 4. Search record on name"按照姓名查找记录" 5. Save the file"将链表中记录保存到文件中" 6. Load the file"从文件中读入记录" 7. compute the score"计算所有学生的总分和均分" 8. insert record to list "插入记录到表中" 9. Quit"退出3完成查找、显示记录。4完成保存数据到文件和从文件读数据的过程。 5完成学生的总分和均分的计算。五、程序结构开 始 调用menu函数输入menu select的值输入09中的一个数值,选择相应操作输入是否为0?结束 退出是判断键值,选择相应的操作否输入9 退出到主菜单图2:主程序流程图按键2输入要删除学生的学号或姓名是否含有此学生?删除信息重新输入!结 束是否图3 :输入学生信息流程图按键1判断为输入记录输入学生相关信息结 束info为空?否是图4:删除学生信息流程图按键3输入要显示学生的学号是否为空?显示该学生信息结 束是否图5:显示学生信息流程图按键4输入学生学号信息为空?显示学生信息结 束是否图6:查找学生信息流程图按键6打不开文件?否是申请空间结束 退出图7:加载学生信息流程图按键7信息为空?指针后移否是到表尾?计算总成绩和平均成绩是否显示输出结 束图8:计算总分及平均分流程图六、 各模块的功能及相关函数描述1数据结构链表是线形表的一种,线形表分为顺序存储结构和链式存储结构。线形表的顺序存储结构的特点是逻辑关系上相邻的两个元素物理位置上也相邻,因此可以随机存取表中任一元素。链式存储结构的特点是用一组任意的存储单元存储线形表的数据元素。链表的最大的优点是对表的添加、删除、查找、排序等操作比较方便,因此采用链表来存储学生相关信息。且对结点的定义如下:typedef struct S1char no9;/*学号*/char name15; /*姓名*/char sex; /*性别*/int age; /*年龄*/int score4; /*成绩*/float sum; /*总分*/float average; /*平均分*/int order; /*排名*/struct S1 *next;STUDENT;2、menu 主菜单与创建文本菜单相关的函数:window、textbackground、clrscr、textcolor、cprintf、bioskey、gotoxy、gettext、puttext、putch。putch(0xc9);/*输出左上角边框 */putch(0xcd);/*输出水平线*/putch(0xbb);/*输出右上角边框*/putch(0xba);/*输出左垂直线*/putch(0xc8);/*输出左上角边框*/putch(0xbc);/*输出右下角边框*/3、main()主函数主函数采用模块化设计。首先在主程序中打印欢迎界面,声明一些必要变量,作一无限循环程序,循环体为一开关语句,该语句设置一个断点,其条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应的功能函数,同时设置一个断点,当返回值为一定条件时结束程序4、输入记录模块主要完成将数据存入单链表中的工作,可以从键盘逐个输入学生记录。学生记录由学生的基本信息和成绩信息字段构成。当从数据文件中读入记录时,他就是在以记录为单位存储的文件中,将记录逐条复制到单链表中。5、查询记录模块此模块主要完成在单链表中查找满足相关条件的学生记录,用户可以按照学生的学号和姓名进行查找,若找到该学生的记录,则返回指向该学生的指针。否则,返回一个值为NULL的空指针。6、更新记录模块此模块主要完成对学生的记录维护包括;对记录的修改、删除、插入等操作。一般来说,系统进行这些操作之后,会将修改后的数据存下来。7、统计记录模块 统计记录模块主要完成对学生各门功课总分及平均分的统计。8、输出记录模块 此模块主要完成对学生记录的存储和将单链表中的学生记录信息以表格的形式在屏幕上打印出来。9、load()从文件中加载记录按照文件读写要求,先定义一个指向文件的指针,输入要读入数据的磁盘文件名,然后确定文件的打开方式。如果文件打不开,则退出函数,否则选择一种读文件方式,从文件头开始,将记录读入内存,直到文件尾。文件打开方式和读入方式的确定要依据输出文件的打开方式和写入方式,以名数据读入错误。如果输出文件是二进制文件,块写操作,读入也应设置为二进制打开方式,块读取方式。每读入一条记录,都要做好指针链接关系,本函数将新结点链接到当前链表的尾部,链表的顺序和文件保存的顺序一10、delete()删除结点删除指定学号的学生记录。输入要删除的结点的学号,根据学号顺序查找结点,如果没找到,则输出没有找到的信息;否则显示找到的结点信息。如果删除的是头结点,则修改头指针,将该结点的前趋指针指向其后继结点,然后释放该结。11、insert()插入结点在指定结点前面插入新结点,申请空间得到指针info,输入新结点信息,存放info中,设链表头指针为h,p为指定结点的指针,q为p的前趋指针。从头结点开始循环移动指针p查找指定结点12、print()显示所有记录采用顺序访问的方法显示和查找记录,定义一个指向结点的临时变量p,初值为单链表的头指针,输出指针所记录的数据后,将指针后移一个记录,直到p指针值为空,则所有记录输出完毕。13、search()查找结点按照姓、姓名、或者姓名的前几个字母来查找记录。从头结点开始顺序查找,当输入一个关键字符串后,用strlen()函数得到该串的长度len,在表中取学生姓名的前len个字母与所输入的字符串相比较,没有相同记录显示没有,遇到第一个匹配的记录则显示此记录,继续查找链表,仍有相同记录则继续显示,直到尾结点结束。七、 实验结果(1) 开始界面:(2) 输入界面:(3) 显示界面:(4) 求平均分界面:(5) 查找界面:八、 体会本次课程设计中,我在前两天熟复习了上学期学过的C语言,使用结构化分析方法对课题进行分析,将系统分为几大模块,针对各个模块进行编程,写代码。期间,主要参考C语言课程设计案例精编清华大学出版社。实验的部分源程序都来源于此,其他程序由自己独立设计完成。编程期间,遇到了不少麻烦,最终也不能完全的实现老师所要求的全部功能,目前该程序可以完成对信息的输入输出,修改删除及成绩总计的求平均分等。在使用Turbo C 时 ,总会有改存储路径的麻烦,最好的办法就是将软件装到E盘,其中由于打字不认真造成的错误在所难免,而一些错误却会使整个程序崩溃:无论如何修改也不能运行程序。经过两天的复习及编程,到周三的时候已经可以实现主菜单的显示,以及输入学生信息,并能显示记录。周四的时候可以实现对学生信息的显示查找,并努力实现对数据的保存及读取数据。直到最后对成绩单的统计和求平均值时,我总结了编程过程中存在的主要问题:首先,对一些的基础知识运用不熟练,主要是关于文件、指针、链表等的概念、初始化、赋值的基础知识。第二,对系统整体规划不清楚,模块之间联系考虑不周全。第三,个别功能不能实现,如成绩排序,备份,追加。总之,通过本次的课程设计,我了解了有关程序设计的基本流程及基本思路,对以后的编程有很大的帮助,尽管自己独立完成这项设计可能性很小,但在指导书的帮助下,我还是比较系统的了解到整个程序设计、运行的全过程。尽管自己的编程能力还很有限,但我也希望能常常有这样的锻炼机会。九、附录:源程序#include "stdio.h"#include "stdlib.h"#include "ctype.h"#include "alloc.h"#include "string.h"#include "conio.h"#include "mem.h"#define N 4typedef struct z1 char no9; char name15; int scoreN; char sex2; int age; float sum; float average; int order; struct z1 *next; STUDENT;STUDENT *init();STUDENT *create();STUDENT *delete(STUDENT *h);void print(STUDENT *h);void search(STUDENT *h);void save(STUDENT *h);STUDENT *load();void computer(STUDENT *h);STUDENT *insert(STUDENT *h);void grade();void copy();void append();STUDENT *sort(STUDENT *h);int menu_select();int submenu();void grade00(STUDENT *h);main() int i; STUDENT *head;head=init(); clrscr(); printf("nn"); for(;) switch(menu_select() case 1:head=create();break; case 2:head=delete(head);break; case 3:print(head);break; case 4:search(head);break; case 5:save(head);break; case 6 :head=load(); break; case 7:computer(head);break; case 8:head=insert(head); break; case 9:exit(0); menu_select()char *menu="*MENU*"," 1. Enter list", " 2. Delete a record from list", " 3. print list", " 4. search record on list ", " 5. save the file ", " 6. Load the file", " 7. compue the file", " 8. insert record to list", " 9. quit"、 ;、 char s3; int c,i; gotoxy(1,25);、 getch(); clrscr(); gotoxy(1,1); textcolor(YELLOW); textbackground(BLUE); gotoxy(19,2); putch(0xc9); for(i=1;i<44;i+) putch(0xcd); putch(0xbb); for(i=3;i<20;i+) 、gotoxy(19,i);putch(0xba); gotoxy(63,i);putch(0xba); /*输出右垂直线*/ gotoxy(19,20);putch(0xc8); for(i=1;i<44;i+) putch(0xcd); putch(0xbc); window(20,3,62,19); clrscr(); /*清屏*/ for(i=0;i<15;i+) 、 gotoxy(10,i+1); cprintf("%s",menui);、 textbackground(BLACK); window(1,1,80,25); gotoxy(10,21); do、printf("ntt Enter your choice(09) to continue:"); scanf("%s",s); c=atoi(s); while(c<0|c>13); /*选择项不在012之间重输*/ return c; 、STUDENT *init()return NULL;STUDENT *create()int i; int s; STUDENT *h=NULL,*info; clrscr(); for(;) info=(STUDENT *)malloc(sizeof(STUDENT); if(!info) printf("oOut of memory"); return NULL; inputs("nnEnter the Num. as 52081107. n Type 0 to End Enter:",info->no,9); if(info->no0='0') break; inputs("Enter name:",info->name,15); inputs("Enter the sex M(ale) or F(emale):",info->sex,2); do printf("Enter the age of the student:"); scanf("%d",&info->age); if(info->age>30|info->age<0) printf("x07 AGE ERROR!TYPE AGAIN!n"); while(info->age<0|info->age>30); printf("nnPlease input %d scoresn",N); printf("The order is:n"); printf("score1.Englishnscore2.MATHSn"); printf("score3.C LANGUAGEnscore4.PHILOSOPHYn"); s=0; for(i=0;i<N;i+) doprintf("score%d:",i+1); scanf("%d",&info->scorei); if(info->scorei>100|info->scorei<0) /*确保成绩在0100之间*/ printf("x07DATAERROR!TYPE AGAIN!n"); while(info->scorei>100|info->scorei<0); s=s+info->scorei; info->sum=s; info->average=(float)s/N; /*求出平均值*/ info->order=0; info->next=h; h=info; return(h); /inputs(char *prompt, char *s, int count)char p255; doprintf(prompt); /*显示提示信息*/ scanf("%s",p); /*输入字符串*/ if(strlen(p)>count)printf("n too long! n"); while(strlen(p)>count); strcpy(s,p); void print(STUDENT *h) int i=0; STUDENT *p; clrscr(); p=h; printf("nnn*STUDENT*n"); printf("|rec| No | name |sex|age|sc1|sc2|sc3|sc4| sum | ave | n"); printf("|-|-|-|-|-|-|-|-|-|-|-| n"); while(p!=NULL) i+; printf("|%-3d|%-10s|%-15s| %1s |%3d|%3d|%3d|%3d|%3d| %4.2f | %4.2f | %3d |n", i, p->no,p->name,p->sex,p->age,p->score0,p->score1,p->score2,p->score3,p->sum,p->average,p->order); p=p->next; printf("*end*n");STUDENT *delete(STUDENT *h)STUDENT *p,*q; char s9; clrscr(); printf("Please enter the No. that you want to delete:n"); scanf("%s",s); q=p=h; while(strcmp(p->no,s)&&p!=NULL) q=p; p=p->next; if(p=NULL) printf("nList No. %s studentn",s); else printf("nnn*STUDENT*n"); printf("| No | name |sex|age|sc1|sc2|sc3|sc4| sum | ave | n"); printf("|-|-|-|-|-|-|-|-|-|-| n"); printf("|%-10s|%-15s| %1s |%3d|%3d|%3d|%3d|%3d| %4.2f | %4.2f | %3d |n", p->no,p->name,p->sex,p->age,p->score0,p->score1,p->score2,p->score3,p->sum,p->average,p->order); printf(" *end*n"); getch(); if(p=h) h=p->next; else q->next=p->next; free(p); printf("n *Have deleted No %s student*n",s); printf("*Don't forget to save!*n"); return(h); /*返回头指针*/void search(STUDENT *h)STUDENT *p; char s15; int len; clrscr(); printf("nnnPlease enter name for searchingn"); scanf("%s",s); len=strlen(s); p=h; /*将头指针赋给p*/ if(p=NULL) /*如果指针为空*/ printf("nList does not exist!n"); while(p!=NULL) if(strncmp(p->name,s,len) p=p->next; else printf("n| No | name |sex|age|sc1|sc2|sc3|sc4| sum | ave | n");printf("|-|-|-|-|-|-|-|-|-|-| n"); printf("|%-10s|%-15s| %s |%3d|%3d|%3d|%3d|%3d| %4.2f | %4.2f | %3d |n", p->no,p->name,p->sex,p->age,p->score0,p->score1,p->score2,p->score3,p->sum,p->average,p->order); p=p->next; getchar();STUDENT *insert(STUDENT *h)STUDENT *p,*q,*info; char s9; int s1,i; printf("nnnPlease enter location before the No.n"); scanf("%s",s); /*输入插入点学号*/ printf("nPlease new recordn"); info=(STUDENT *)malloc(sizeof(STUDENT); /*申请空间*/ if(!info) printf("nOut of memory"); return NULL; /*返回空指针*/ inputs("Enter the No.nAs 20032300:",info->no,9); inputs("Enter the name:",info->name,15); /*输入姓名*/ inputs("Enter the sex M(ale) or F(emale):",info->sex,2); doprintf("Enter the age of the student:"); scanf("%d",&info->age); if(info->age>30|info->age<0) printf("x07 AGE ERROR!TYPE AGAIN!n"); while(info->age<0|info->age>30); printf("nnPlease input %d scoresn",N); printf("The order is:n"); printf("score1.FOREIGN LANGUAGEnscore2.HIGH LEVEL MATHSn"); printf("score3.C LANGUAGEnscore4.PHILOSOPHYn"); s1=0; for(i=0;i<N;i+) do printf("score%d:",i+1); scanf("%d",&info->scorei); if(info->scorei>100|info->scorei<0) printf("x07 Error data!Repeat input!n"); while(info->scorei>100|info->scorei<0); s1=s1+info->scorei; /*计算总分*/ info->sum=s1; / info->average=(float)s1/N; /*计算均分*/ info->order=0; / info->next=NULL; p=h; q=h; while(strcmp(p->no,s)&&p!=NULL) q=p; p=p->next; / if(p=NULL) if(p=h) h=info; else q->next=info; else if(p=h) info->next=p; h=info; else info->next=p; q->next=info; printf("n *Have inserted %s student*n",info->name); printf("*Don't forget to save*n"); /*提示存盘*/ return(h); void save(STUDENT *h) FILE *fp; STUDENT *p; char outfile10;名 printf("Enter outfile name,for example C:filename.txt:n"); scanf("%s",outfile); if(fp=fopen(outfile,"wb")=NULL) printf("Can not open filen"); exit(1); printf("nSaving file.n"); p=h; while(p!=NULL) fwrite(p,sizeof(STUDENT),1,fp);/*写入一条记录*/ p=p->next; /*指针后移*/ fclose(fp); /*关闭文件*/ printf("*Saved successful!*n"); STUDENT *load() STUDENT *p,*q,*h=NULL; FILE *fp; char infile10; printf("Enter infile name,for example C:filename.txt:n"); scanf("%s",infile); /*输入文件名*/ if(fp=fopen(infile,"rb")=NULL) printf("Can not open filen"); exit(1); printf("n *Loading file!*n"); p=(STUDENT *)malloc(sizeof(STUDENT); if(!p) printf("Out of memory!n"); return h; h=p; while(!feof(fp) if(1!=fread(p,sizeof(STUDENT),1,fp) break; p->next=(STUDENT *)malloc(sizeof(STUDENT); if(!p->next) printf("Out of memory!n"); return h; q=p; p=p->next; q->next=NULL; fclose(fp); printf("*You have read data from file!*n"); return h; void copy() char outfile10,infile10; FILE *sfp,*tfp; /*源和目标文件指针*/ STUDENT *p=NULL; /*移动指针*/ clrscr(); /*清屏*/ printf("Enter infile name,for example C:filename1.txt:n"); scanf("%s",infile); /*输入源文件名*/ if(sfp=fopen(infile,"rb")=NULL) /*二进制读方式打开源文件*/ printf(

    注意事项

    本文(计算机课程设计学生成绩管理系统.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开