ImageVerifierCode 换一换
格式:DOC , 页数:39 ,大小:296.70KB ,
资源ID:1139316      下载积分:20 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 微信支付   
验证码:   换一换

加入VIP,免费下载资源
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.wodocx.com/d-1139316.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学生成绩管理系统-----------C语言课程设计报告.doc)为本站会员(芳黎)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(发送邮件至2622162128@qq.com或直接QQ联系客服),我们立即给予删除!

学生成绩管理系统-----------C语言课程设计报告.doc

1、学生成绩管理系统课程设计报告专 业: 信息科学与工程学院 班 级: 姓 名: 指导教师:学 号:课程设计报告一、 课程设计题目学生成绩管理系统1、需要处理的基础数据 学生基本信息:如班级、学号、姓名、性别、年龄等。 学生选修课程的基本信息:课程编号、课程名称、学分、考试成绩、平时成绩、综合成绩(考试成绩*0.7+平时成绩*0.3)等。主菜单2、系统的基本功能 数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息; 数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息; 数据的插入:插入某个学生信息; 数据的查询:如按学号查询、按姓名查询等; 数据的删除:如删除指

2、定学号、或者指定姓名的学生及其选修课程信息; 平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息; 列出不及格学生清单(学号、姓名、不及格的课程和成绩)。 考虑用文件把数据保存起来(可选)。3、链表struct stu /*定义学生基本信息结构体*/ int i; /*以输入的顺序来确定的学生序号*/ char num11; char classnum5; char name128; char sex32; int age; float ave; struct stu *next; int n=0; /*学生人数*/ struct stu *head=0;s

3、truct stu1 /*定义学生选修课信息结构体*/ char lessonnum11; char lessonname256; float score; float testgrade; float commongrade; float grade; struct stu1 *next;int m;struct stu1 *amax_num ;/*定义一个指针数组来记住课程链表地址*/ /*- 数据的录入程序 -*/ void create(void) /*建立学生基本信息链表*/ n=0; struct stu *p1,*p2; char ch,ch1; struct stu1 *cre

4、ate1(void); do n=n+1; an=0; system(cls); p1=(struct stu *)malloc(LEN); printf(n学号:); scanf(%s,p1-num); printf(n班级:); scanf(%s,p1-classnum); printf(n姓名:); scanf(%s,p1-name) ; printf(n性别:); scanf(%s,p1-sex); printf(n年龄:); scanf(%d,&p1-age); if(n=1)head=p1; else p2-next=p1; p2=p1; printf(n是否输入选修课信息(y/n

5、)n); fflush(stdin); /*清空输入缓冲区*/ ch1=getchar(); if(ch1=y|ch1=Y) an=create1(); /*根据序号来记忆课程链表地址*/ p1-i=n; system(cls); printf(n是否继续输入另一学生信息(y/n)n); fflush(stdin); /*清空输入缓冲区*/ ch=getchar(); while(ch=y|ch=Y); p2-next=0;struct stu1 *create1(void) /*建立课程链表*/ m=0; struct stu1 *p1,*p2; char ch; struct stu1 *

6、head=0; do m=m+1; system(cls); p1=(struct stu1 *)malloc(LEM); printf(n课程编号:); scanf(%s,p1-lessonnum); printf(n课程名称:); scanf(%s,p1-lessonname); printf(n学分:); scanf(%f,&p1-score); printf(n考试成绩:); scanf(%f,&p1-testgrade); printf(n平时成绩:); scanf(%f,&p1-commongrade); p1-grade=p1-testgrade*0.7+p1-commongra

7、de*0.3; printf(n综合成绩:%-6.1f,p1-grade); if(m=1)head=p1; else p2-next=p1; p2=p1; printf(n是否继续输入另一课程信息(y/n)n); fflush(stdin); /*清空输入缓冲区*/ ch=getchar(); while(ch=y|ch=Y); p2-next=0; return(head);二、 设计思路界面:界面的显示由循环语句和switch语句来控制完成。数据的录入:运用链表进行数据的存储,由于要录入的数据有两种即学生的基本信息和学生的选修课程信息,本系统采用两个链表分别存储数据,采用数组将两个链表联

8、系起来,运用循环语句和判断语句来进行数据的录入。作者感到本功能设计中的难点在于将两个链表联系起来,解决方案是采用一个指针数组来将第二个链表中每个节点地址存储起来,进而将两个链表联系起来。信息的修改:本系统采用的是按学号查找信息,系统采用一个由判断语句和循环语句构成的查询函数struct stu *findnum(void)来提供信息存储地址;再按照地址来进行修改,其中采用switch语句和循环语句来控制使系统能够提供选择修改的功能。在这一功能的设计中,作者感到课程信息的修改中的添加课程信息功能是一个难点,解决方案是按插入方案来进行设计。插入信息:本系统采用的是按学号顺序来进行插入的,在这一功能

9、的设计中,首先在开辟一个结构体空间将插入学生的信息存储于其中,在采用判断语句和循环语句来查找该条信息应该插入位置的地址,将上一结点的下行指针指向本结点,再将该节点的下行指针指向下一个结点从而达到插入信息的目的。在这一功能的设计中作者感到插入的具体算法是个难点,本系统采用的教材书本上的方法。查询信息:本功能实现是调用struct stu *findnum(void)函数查找该条信息的地址,然后再采用for循环进行信息的输出,本功能的实现比较简单,难点在于对函数的调用的灵活运用。删除信息:系统采用按学号删除的方案,在这一功能的设计中我没有采用直接调用struct stu *findnum(void

10、)函数,而是又重写查找地址程序,这是出于考虑系统功能的更好实现而采用的举措。具体删除算法采用该节点上一个结点的下行指针直接指向该结点下一个结点从而达到删除该结点的目的。在此功能的设计中,本作者感到难点不在于算法而在于思维设计的是否缜密。计算平均成绩:本功能的实现需要首先计算各个学生的平均成绩,再按照平均成绩进行排序。这两个过程的设计排序是个难点,因为本系统存储结构为链表,在排序方面较数组有很大区别,在作者看来比较困难,解决方案是运用一个指针型数组将每个结点的地址存在其中,再按照该指针指向的平均成绩来排序数组中的地址,再按照数组中的地址顺序来输出信息,间接达到排序的目的。不及格学生清单:判断语句

11、和循环语句的结合运用以达到列出清单的目的,本功能的实现不难,难在于准确控制。三、 系统流程主函数界面输入学生信息修改学生信息查询学生信息删除学生信息插入学生信息计算平均分列出不及格学生清单保存到文件 四、 程序代码 #include#include#include#define LEN sizeof(struct stu)#define LEM sizeof(struct stu1) #define max_num 256struct stu /*定义学生基本信息结构体*/ int i; /*以输入的顺序来确定的学生序号*/ char num11; char classnum5; char n

12、ame128; char sex32; int age; float ave; struct stu *next; int n=0; /*学生人数*/ struct stu *head=0;struct stu1 /*定义学生选修课信息结构体*/ char lessonnum11; char lessonname256; float score; float testgrade; float commongrade; float grade; struct stu1 *next;int m;struct stu1 *amax_num ;/*定义一个指针数组来记住课程链表地址*/ /*- 数据的

13、录入程序 -*/ void create(void) /*建立学生基本信息链表*/ n=0; struct stu *p1,*p2; char ch,ch1; struct stu1 *create1(void); do n=n+1; an=0; system(cls); p1=(struct stu *)malloc(LEN); printf(n学号:); scanf(%s,p1-num); printf(n班级:); scanf(%s,p1-classnum); printf(n姓名:); scanf(%s,p1-name) ; printf(n性别:); scanf(%s,p1-sex)

14、; printf(n年龄:); scanf(%d,&p1-age); if(n=1)head=p1; else p2-next=p1; p2=p1; printf(n是否输入选修课信息(y/n)n); fflush(stdin); /*清空输入缓冲区*/ ch1=getchar(); if(ch1=y|ch1=Y) an=create1(); /*根据序号来记忆课程链表地址*/ p1-i=n; system(cls); printf(n是否继续输入另一学生信息(y/n)n); fflush(stdin); /*清空输入缓冲区*/ ch=getchar(); while(ch=y|ch=Y);

15、p2-next=0;struct stu1 *create1(void) /*建立课程链表*/ m=0; struct stu1 *p1,*p2; char ch; struct stu1 *head=0; do m=m+1; system(cls); p1=(struct stu1 *)malloc(LEM); printf(n课程编号:); scanf(%s,p1-lessonnum); printf(n课程名称:); scanf(%s,p1-lessonname); printf(n学分:); scanf(%f,&p1-score); printf(n考试成绩:); scanf(%f,&

16、p1-testgrade); printf(n平时成绩:); scanf(%f,&p1-commongrade); p1-grade=p1-testgrade*0.7+p1-commongrade*0.3; printf(n综合成绩:%-6.1f,p1-grade); if(m=1)head=p1; else p2-next=p1; p2=p1; printf(n是否继续输入另一课程信息(y/n)n); fflush(stdin); /*清空输入缓冲区*/ ch=getchar(); while(ch=y|ch=Y); p2-next=0; return(head);/*-*/struct s

17、tu *findnum(void) char num11; struct stu *p1; struct stu1 *p2; char c; printf(n输入学生学号:); fflush(stdin); gets(num); struct stu *fa; fa=head; if(head=0) printf(nlist nulln);goto end; while(strcmp(fa-num,num)!=0) if(fa-next=0)break; fa=fa-next; if(strcmp(fa-num,num)=0)return fa; else printf(%s cant be

18、found!n,num); end: return 0;/*- 查询信息模块 -*/void search(void) system(cls); char ch2; struct stu *findnum(void); struct stu *p; struct stu1 *p1; p=findnum(); if(p=0) goto end; p1=ap-i; printf(n%17s,学号); printf(%15s,班级); printf(%16s,姓名); printf(%15s,性别); printf(%15s,年龄); printf(n%17s,p-num); printf(%15s

19、,p-classnum); printf(%16s,p-name) ; printf(%15s,p-sex); printf(%15d,p-age); printf(n*); printf(n%11s,课程编号); printf(%19s,课程名称); printf(%9s,学分); printf(%13s,考试成绩); printf(%13s,平时成绩); printf(%13s,综合成绩); for(;p1!=0;) printf(n%11s,p1-lessonnum); printf(%19s,p1-lessonname); printf(%9.1f,p1-score); printf(

20、%13f,p1-testgrade); printf(%13f,p1-commongrade); printf(%13f,p1-grade); p1=p1-next; end: printf(n按任意键退出); ch2=getchar();/*-修改模块-*/ void modify(void) struct stu *findnum(void); char selmenu,selmenu1; system(cls); char ch2; char ch3; char ch4; char ch6; char ch7; char ch8; struct stu *findnum(void); s

21、truct stu *p; struct stu1 *p1; struct stu1 *p2; char lessonno11; p=findnum(); if(p=0) printf(n按任意键退出); fflush(stdin); scanf(%c,&ch2); else p1=ap-i; printf(n%17s,学号); printf(%15s,班级); printf(%16s,姓名); printf(%15s,性别); printf(%15s,年龄); printf(n%17s,p-num); printf(%15s,p-classnum); printf(%16s,p-name)

22、; printf(%15s,p-sex); printf(%15d,p-age); printf(n*); printf(n%11s,课程编号); printf(%19s,课程名称); printf(%9s,学分); printf(%13s,考试成绩); printf(%13s,平时成绩); printf(%13s,综合成绩); for(;p1!=0;) printf(n%11s,p1-lessonnum); printf(%19s,p1-lessonname); printf(%9.1f,p1-score); printf(%13f,p1-testgrade); printf(%13f,p1

23、-commongrade); printf(%13f,p1-grade); p1=p1-next; p1=ap-i; printf(n按任意键开始修改); scanf(%c,&ch2);do system(cls); printf(nn); printf(ttt1.修改学号); printf(tt2.修改班级n); printf(ttt3.修改姓名); printf(tt4.修改性别n); printf(ttt5.修改年龄); printf(tt6.修改选修课程信息n); printf(ttt0.退出); printf(nttt请输入功能选择编号(0-6):); scanf(%c,&selme

24、nu); switch(selmenu) case 1: system(cls); printf(学号:%s,p-num); printf(n输入新的数据:); scanf(%s,p-num); printf(n修改成功!n按任意键退出); fflush(stdin); scanf(%c,&ch8); break; case 2: system(cls); printf(班级:%s,p-classnum); printf(n输入新的数据:); scanf(%s,p-classnum); printf(n修改成功!n按任意键退出); fflush(stdin); scanf(%c,&ch8);

25、break; case 3: system(cls); printf(姓名:%s,p-name); printf(n输入新的数据:); scanf(%s,p-name); printf(n修改成功!n按任意键退出); fflush(stdin); scanf(%c,&ch8); break; case 4: system(cls); printf(性别:%s,p-sex); printf(n输入新的数据:); scanf(%s,p-sex); printf(n修改成功!n按任意键退出); fflush(stdin); scanf(%c,&ch8); break; case 5: system(

26、cls); printf(年龄:%d,p-age); printf(n输入新的数据:);scanf(%d,&p-age); printf(n修改成功!n按任意键退出);fflush(stdin); scanf(%c,&ch8); break; case 6: do system(cls); printf(nnttt1.添加选修课程信息); printf(tt2.修改已有课程信息); printf(nttt0.退出); printf(nttt请输入功能选择编号(0-2):); fflush(stdin); scanf(%c,&ch6); if(ch6=0) break; if(ch6=1) p2

27、=(struct stu1 *)malloc(LEM); printf(nttt课程编号:); scanf(%s,p2-lessonnum); printf(nttt课程名称:); scanf(%s,p2-lessonname); printf(nttt学分:); scanf(%f,&p2-score); printf(nttt考试成绩:); scanf(%f,&p2-testgrade); printf(nttt平时成绩:); scanf(%f,&p2-commongrade); p2-grade=p2-testgrade*0.7+p2-commongrade*0.3; printf(ntt

28、t综合成绩:%-6.1f,p2-grade); p2-next=p1; ap-i=p2; p1=ap-i; printf(nttt按任意键退出); fflush(stdin);scanf(%c,&ch7) ; if(ch6=2) if(p1=0) printf(无任何课程信息); goto end; printf(nn输入要修改课程的编号:); fflush(stdin); scanf(%s,lessonno); while(strcmp(p1-lessonnum,lessonno)!=0) if(p1-next=0)break; p1=p1-next; if(strcmp(p1-lesson

29、num,lessonno)=0) printf(n%11s,课程编号); printf(%19s,课程名称); printf(%9s,学分); printf(%13s,考试成绩); printf(%13s,平时成绩); printf(%13s,综合成绩); printf(n%11s,p1-lessonnum); printf(%19s,p1-lessonname); printf(%9.1f,p1-score); printf(%13f,p1-testgrade); printf(%13f,p1-commongrade); printf(%13f,p1-grade); printf(n按任意键

30、进行修改); fflush(stdin); scanf(%c,&ch3); do system(cls); printf(nn); printf(ttt1.修改课程编号); printf(tt2.修改课程名称n); printf(ttt3.修改学分); printf(tt4.修改考试成绩n); printf(ttt5.修改平时成绩); printf(ttt0.退出); printf(nttt请输入功能选择编号(0-5):); scanf(%c,&selmenu1); switch(selmenu1) case 1: printf(n输入新的课程编号:); scanf(%s,p1-lessonn

31、um); printf(n修改成功!n按任意键退出); fflush(stdin); scanf(%c,&ch8); break; case 2: printf(n输入新的课程名称:); scanf(%s,p1-lessonname); printf(n修改成功!n按任意键退出); fflush(stdin); scanf(%c,&ch8); break; case 3: printf(n输入新的学分:); scanf(%f,&p1-score); printf(n修改成功!n按任意键退出); fflush(stdin); scanf(%c,&ch8); break; case 4: printf(n输入新的考试成绩:);scanf(%f,&p1-testgrade); printf(n修改成功!n按任意键退出);fflush(stdin); scanf(%c,&ch8);

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922