有n个学生选修了c语言程序设计这门课程,C语言程序设计报告—学生选修课程系统...

《C语言程序设计报告—学生选修课程系统》由会员分享,可在线阅读,更多相关《C语言程序设计报告—学生选修课程系统(11页珍藏版)》请在人人文库网上搜索。

1、C语言程序设计学校: 中国地址大学学院: 工程学院班级序号: 学号: 姓名: 杨帆指导老师: 刘文中C语言程序设计报告一、C语言课程设计的目的:高级语言课程设计是学习完高级语言程序设计课程后进行的一次全面的综合性上机实验。其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。二、题目学生选修课程系统设计假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验或商机学时、血粉、开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。1、要求:试设计一个选修课程。

2、系统,使之能提供以下功能:(1) 系统以菜单方式工作。(2) 课程信息和学生选课信息输入功能(课程信息用文件保存)输入。(3) 课程信息浏览功能输出。(4) 查询功能(至少一种查询方式)算法。(5) 按学分查询。(6) 某门课程学生选修情况(可选项)。2、分析:由于题目要求将学生的选课信息用结构体形式输入,并写入文件中,所以应提供文件的输入输出等操作:在过程中需有浏览、插入、修改、查找、删除学生选课信息等操作,顾应分别建立个功能模块;另外还应提供键盘式选择菜单实现程序运行。3、总体设计:根据题目要求,可以将系统分为六个模块:1) 系统以菜单方式工作模块;2) 课程信息与学生选课信息录入功能模块。

3、;3) 课程信息浏览功能模块;4) 查询模块;5) 按学分查询模块;6) 某些课程学生选修情况模块。系统以菜单方式工作模块课程信息与学生选课信息录入功能模块课程信息浏览功能模块查询模块按学分查询模块某些课程学生选修情况模块工资信息管理系统结束显示一系列功能选择N4详细设计:#include #include 主流程图:开始#include typedef struct subjectsint num;char name20;判断 char kind10;int stime;int ttime;int etime;int score;int term;struct subjects *next;。

4、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;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,nam。

5、e);strcpy(p-kind,kind);p-stime=stime;p-ttime=ttime;p-etime=etime;p-score=score;p-term=term;if(head=NULL)head=p;elsetail-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(subj。

6、ects.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 savefileadd(SUB *head)SUB *p;FILE *fp;fp=fopen(subjectsadd.txt,w);fprintf(fp,课程编号 课程名称。

7、 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期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。

8、;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 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%11。

9、d%7dn,ptr-num,ptr-name,ptr-kind,ptr-stime,ptr-ttime,ptr-etime,ptr-score,ptr-term);2判断查询方法 打开文件查看学生选课信息开始void search(SUB *head)int a,num;int t=1;char type10;1char ch=a,ch1;SUB *ptr;按课程性质查按学分查输入结束while(ch!= )printf(若要按课程性质查找请输入1,若要按学分查找请输入2:n);scanf(%d,&a);switch(a)case 1:printf(请输入要查找的课程的性质:n);scanf(。

10、%s,type);printf(课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期n);for(ptr=head;ptr;ptr=ptr-next)if(strcmp(type,ptr-kind)=0)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,&n。

11、um);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。

12、里面最后输入的回车键会赋给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);if(h。

13、ead=NULL)head=ptr;head-next=NULL;elsefor(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!=。

14、 )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;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填补。判断是否是要选的课程 输入、选。

15、课开始Nch=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(totalnext)if(q-num=aj)printf(%s ,q-name);printf(n);pr。

16、intf(*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(h。

17、ead);choose(head);运行结果:输入选修课程信息:1 maths bx 15 14 0 25 12 Entg bx 15 14 0 25 13 hh xx 10 8 2 15 14 bb xx 25 14 0 35 10 gg xx 12 10 0 10 1课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期1 maths bx 15 14 0 25 12 Entg bx 15 14 0 25 13 hh xx 10 8 2 15 14 bb xx 25 14 0 35 1若要按课程性质查找请输入1,若要按学分查找请输入2:1请输入要查找的课程的性质:b。

18、x课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期1 maths bx 15 14 0 25 12 Entg bx 15 14 0 25 1继续查找请按回车键,结束请按空格键:若要按课程性质查找请输入1,若要按学分查找请输入2:2输入要查找的课程的学分15课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期3 hh xx 10 8 2 15 1继续查找请按回车键,结束请按空格键:课程设计体会:通过学习和练习C程序的设计基础,学习到了很多关于C的知识。在这次学习过程中,毫无疑问的遇到了很多困惑、疑问,难免心情沮丧,失去耐心,信心受挫,但同学的帮助,老师的解惑和自己的坚持。终于做了出来。看着这一页页的程序,我感受到了成功的喜悦。用一句话来形容一下这几天就是:苦并快乐着。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值