C语言程序的设计报告学生选修课系统方案_第1页
C语言程序的设计报告学生选修课系统方案_第2页
C语言程序的设计报告学生选修课系统方案_第3页
C语言程序的设计报告学生选修课系统方案_第4页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、)系统以菜单方式工作模块;2)课程信息与学生选课信息录入功能模块;3)课程信息浏览功能模块;4)查询模块;5)按学分查询模块;6)某些课程学生选修情况模块。.专业专注.工资信息管理系统系统课程课程查按某些以菜信息信息询学课程单方与学浏览模分学生式 工生选功能块查选修作 模课信模 块询情况块息录模模 块入 功块能 模块4 详细设计:#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct subjectsint num;char name20;char kind10;int s

4、time;int ttime;int etime;int score;int term;主流程图:开始显示一系列功能选择N结束判断.专业专注.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;printf("输 入 选 修 课 程 信 息 :n");scanf("%d %s %s %d %d %d %

5、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)h

6、ead=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("subjects.txt","w");写入文件并储存输入结束

7、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=f

8、open("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

9、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-&g

10、t;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%11d%7dn",ptr->num,ptr->

11、name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);开始void search(SUB *head)打开文件查看学生选课信息int a,num;判断查询方法2int t=1;char type10;char ch='a',ch1;1SUB *ptr ;按课程性质按学分查输入结束.专业专注.while(ch!=' ')printf("若 要 按 课 程 性 质 查 找 请 输 入 1 , 若 要 按 学 分 查 找 请 输 入 2:

12、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)printf("%5d%12s%9s%9d%9d%11d%11d%7dn&quo

13、t;,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("课程编号课程名称课程性质总学时授课学时实践或上 机 学 时学 分开 课 学 期

14、 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("继 续 查 找 请 按 回 车 键 ,结 束

15、请 按 空 格 键 :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("%

16、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(head=NULL)head=ptr;head->next=NULL;elsefor(ptr2=head;ptr2;ptr2=ptr2->next).专业专注.if(ptr2->next=NULL)ptr2->next=subj;su

17、bj->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("输 入 想 要 删 除 的 课 程

18、 编 号 :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"

19、;);ch1=getchar();/ 将回车键赋给CH1 ,否则num 输 完 后 再 输 入 的 回 车 键 会 赋 给 CH , 因 此 用 CH1填 补 。ch=getchar();开始输入、选课return head;判断是否是要选的课程Nvoid 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=h

20、ead;p;p=p->next)if(p->num=num)total=total+p->score;ai=num;i+;scanf("%d",&num);if(total<60) printf("选 修 总 学 分 未 达 到 60, 选 修 失 败 !n");else printf("选 修 成 功 !n");printf("您 选 修 的 课 程 为 :n");for(j=0;j<i;j+)for(q=head;q;q=q->next).专业专注.if(q->

21、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的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论