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

    C语言程序设计报告 学生选修课系统.docx

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

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

    C语言程序设计报告 学生选修课系统.docx

    C语言程序设计报告 学生选修课系统 C 语 言 程 序 设 计 学校: 学院: 班级序号: 学号: 姓名: 指导老师: 1 C语言程序设计报告 一、C语言课程设计的目的: 高级语言课程设计是学习完高级语言程序设计课程后进行的一次全面的综合性上机实验。其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。 二、题目 学生选修课程系统设计 假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验或商机学时、血粉、开课学期等信息,学生可按要求自由选课。 1、要求: 试设计一个选修课程系统,使之能提供以下功能: 系统以菜单方式工作。 课程信息和学生选课信息输入功能输入。 课程信息浏览功能输出。 查询功能算法。 按学分查询。 某门课程学生选修情况。 2、分析: 由于题目要求将学生的选课信息用结构体形式输入,并写入文件中,所以应提供文件的输入输出等操作:在过程中需有浏览、插入、修改、查找、删除学生选课信息等操作,顾应分别建立个功能模块;另外还应提供键盘式选择菜单实现程序运行。 3、总体设计: 根据题目要求,可以将系统分为六个模块: 1) 系统以菜单方式工作模块; 2) 课程信息与学生选课信息录入功能模块; 3) 课程信息浏览功能模块; 4) 查询模块; 5) 按学分查询模块; 6) 某些课程学生选修情况模块。 2 工资信息管理系统 系统课程课程查按以菜信息信息询学单方与学浏览模分式工生选功能块 查作模课信模块 询块 息录模 入功块 能模块 4详细设计: #include <stdio.h> #include <stdlib.h> 主流程图: #include <string.h> typedef struct subjects 开始 int num; 显示一系列功能选择 char name20; char kind10; int stime; N int ttime; 判断 int etime; int score; int term; struct subjects *next; 结束 SUB; SUB *create_form SUB *head,*tail,*p; int num,stime,ttime; int etime,score,term; char name20,kind10; int size=sizeof(SUB); head=tail=NULL; 某些课程学生选修情况模块 3 printf("输入选修课程信息:n"); scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttime,&etime,&score,&term); while(num!=0) p=(SUB *)malloc(size); p->num=num; strcpy(p->name,name); strcpy(p->kind,kind); p->stime=stime; p->ttime=ttime; p->etime=etime; p->score=score; p->term=term; if(head=NULL) head=p; else tail->next=p; tail=p; scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttime,&etime,&score,&term); tail->next=NULL; return head; void savefile(SUB *head) 开始 SUB *p; FILE *fp; 输出 fp=fopen("subjects.txt","w"); 写入文件并储存 输入 结束 4 fprintf(fp,"课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期n"); for(p=head;p;p=p->next) fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7dn",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); fclose(fp); void savefileadd(SUB *head) SUB *p; FILE *fp; fp=fopen("subjectsadd.txt","w"); fprintf(fp,"课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期n"); for(p=head;p;p=p->next) fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7dn",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); fclose(fp); void savefiledel(SUB *head) SUB *p; FILE *fp; fp=fopen("subjectsdel.txt","w"); fprintf(fp,"课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期n"); for(p=head;p;p=p->next) fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7dn",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); fclose(fp); 5 void prin(SUB *head) SUB *ptr; if(head=NULL) printf("没有此门课程记录!n"); return; printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期n"); for(ptr=head;ptr;ptr=ptr->next) printf("%5d%12s%9s%9d%9d%11d%11d%7dn",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); void search(SUB *head) 开始 int a,num; 打开文件查看学生选课信息 int t=1; char type10; char ch='a',ch1; 1 判断查询方法 SUB *ptr; 按课程性质输入 结束 while(ch!=' ') printf("若要按课程性质查找请输入1,若要按学分查找请输入2:n"); scanf("%d",&a); switch(a) case 1:printf("请输入要查找的课程的性质:n"); scanf("%s",type); printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期n"); for(ptr=head;ptr;ptr=ptr->next) if(strcmp(type,ptr->kind)=0) 6 2 按学分查 printf("%5d%12s%9s%9d%9d%11d%11d%7dn",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); t=0; if(t) printf("未找到!n"); t=1; break; case 2:printf("输入要查找的课程的学分n"); scanf("%d",&num); printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期n"); for(ptr=head;ptr;ptr=ptr->next) if(ptr->score=num) printf("%5d%12s%9s%9d%9d%11d%11d%7dn",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term); t=0; if(t) printf("未找到!n"); t=1; printf("继续查找请按回车键,结束请按空格键:n"); ch1=getchar; /将回车键赋给CH1,否则CASE里面最后输入的回车键会赋给CH,因此用CH1填补。 ch=getchar; SUB *insert(SUB *head) SUB *ptr,*ptr2,*subj; int size=sizeof(SUB); char ch='a',ch1; while(ch!=' ') subj=(SUB *)malloc(size); ptr=subj; printf("输入要插入的课程信息:n"); scanf("%d%s%s%d%d%d%d%d",&subj->num,subj->name,subj->kind,&subj->stime,&subj->ttime,&subj->etime,&subj->score,&subj->term); 7 if(head=NULL) head=ptr; head->next=NULL; else for(ptr2=head;ptr2;ptr2=ptr2->next) if(ptr2->next=NULL) ptr2->next=subj; subj->next=NULL; break; printf("继续插入请按回车,结束请按空格:n"); ch1=getchar; /将回车键赋给CH1,否则subj->term输完后输入的回车键会赋给CH,因此用CH1填补。 ch=getchar; return head; SUB *del(SUB *head) SUB *p1,*p2; char ch='a',ch1; int num; while(ch!=' ') printf("输入想要删除的课程编号:n"); scanf("%d",&num); if(head->num=num) p2=head; head=head->next; free(p2); if(head=NULL) return NULL; p1=head; p2=head->next; 8 while(p2) if(p2->num=num) p1->next=p2->next; free(p2); else p1=p2; p2=p1->next; printf("继续删除请按回车,结束请按空格:n"); ch1=getchar; /将回车键赋给CH1,否则num输完后再输入的回车键会赋给CH,因此用CH1填补。 ch=getchar; 开始 return head; 输入、选课 void choose(SUB *head) 判断是否是要选的课程 选定、输出 SUB *p,*q; 结束 int a5; int num,total=0,i=0,j; printf("输入要选修的课程的编号,编号之间以空格分开,输完后以0结束n"); scanf("%d",&num); while(num!=0) for(p=head;p;p=p->next) if(p->num=num) total=total+p->score; ai=num; i+; scanf("%d",&num); if(total<60) printf("选修总学分未达到60,选修失败!n"); 9 N else printf("选修成功!n"); printf("您选修的课程为:n"); for(j=0;j<i;j+) for(q=head;q;q=q->next) if(q->num=aj) printf("%s ",q->name); printf("n"); printf("*n"); printf("*n"); printf("*n"); printf("*n"); void main SUB *head=create_form; savefile(head); prin(head); search(head); head=insert(head);/注意此处的必要性函数insert的的返回值重新赋给head! savefileadd(head); printf("修改后的信息为:n"); prin(head); head=del(head); /注意此处的必要性,数del的的返回值重新赋给head! savefiledel(head); printf("修改后的课程信息为:n"); prin(head); choose(head); 10 运行结果: 输入选修课程信息: 1 maths bx 15 14 0 25 1 2 Entg bx 15 14 0 25 1 3 hh xx 10 8 2 15 1 4 bb xx 25 14 0 35 1 0 gg xx 12 10 0 10 1 课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期 1 maths bx 15 14 0 25 1 2 Entg bx 15 14 0 25 1 3 hh xx 10 8 2 15 1 4 bb xx 25 14 0 35 1 若要按课程性质查找请输入1,若要按学分查找请输入2: 1 请输入要查找的课程的性质: bx 课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期 1 maths bx 15 14 0 25 1 2 Entg bx 15 14 0 25 1 继续查找请按回车键,结束请按空格键: 若要按课程性质查找请输入1,若要按学分查找请输入2: 2 输入要查找的课程的学分 15 课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期 3 hh xx 10 8 2 15 1 继续查找请按回车键,结束请按空格键: 课程设计体会: 通过学习和练习C程序的设计基础,学习到了很多关于C的知识。在这次学习过程中,毫无疑问的遇到了很多困惑、疑问,难免心情沮丧,失去耐心,信心受挫,但同学的帮助,老师的解惑和自己的坚持。终于做了出来。看着这一页页的程序,我感受到了成功的喜悦。用一句话来形容一下这几天就是:苦并快乐着。 11

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开