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

上传人:b****5 文档编号:18838298 上传时间:2023-01-01 格式:DOCX 页数:18 大小:299.71KB
下载 相关 举报
C语言课程设计报告学生选修课程系统设计Word格式.docx_第1页
第1页 / 共18页
C语言课程设计报告学生选修课程系统设计Word格式.docx_第2页
第2页 / 共18页
C语言课程设计报告学生选修课程系统设计Word格式.docx_第3页
第3页 / 共18页
C语言课程设计报告学生选修课程系统设计Word格式.docx_第4页
第4页 / 共18页
C语言课程设计报告学生选修课程系统设计Word格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

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

《C语言课程设计报告学生选修课程系统设计Word格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告学生选修课程系统设计Word格式.docx(18页珍藏版)》请在冰豆网上搜索。

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

学秀结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况。

2.程序设计思路

由于题目要求将学生的选课信息用结构体形式输入,并写入文件中,所以应提供文件的输入输出等操作:

在过程中需有浏览、插入、修改、查找、删除学生选课信息等操作,顾应分别建立个功能模块;

另外还应提供键盘式选择菜单实现程序运行。

根据题目要求,可以将系统分为六个模块:

1)系统以菜单方式工作模块;

2)课程信息与学生选课信息录入功能模块;

3)课程信息浏览功能模块;

4)查询模块;

5)按学分查询模块;

6)某些课程学生选修情况模块

 

3.功能模块图

4.数据结构设计

该程序采用多个main()函数模块分别来实现程序的运行,通过使用数组功能来实现数据的录入,使用strcpy()函数来实现录入信息的复制,整个结构从整体来看使用了选择结构,break..case..的合理利用

5.算法设计

1.课程信息录入功能

voidsavefile(SUB*head)

{

SUB*p;

FILE*fp;

fp=fopen("

subjects.txt"

"

w"

);

fprintf(fp,"

课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期\n"

for(p=head;

p;

p=p->

next)

%5d%12s%9s%9d%9d%11d%11d%7d\n"

p->

num,p->

name,p->

kind,p->

stime,p->

ttime,p->

etime,p->

score,p->

term);

fclose(fp);

}

voidsavefileadd(SUB*head)

FILE*fp;

fp=fopen("

subjectsadd.txt"

fprintf(fp,"

2.查询功能

voidsearch(SUB*head)

inta,num;

intt=1;

chartype[10];

charch='

a'

ch1;

SUB*ptr;

while(ch!

='

'

){

printf("

若要按课程性质查找请输入1,若要按学分查找请输入2:

\n"

scanf("

%d"

&

a);

switch(a){

case1:

printf("

请输入要查找的课程的性质:

%s"

type);

课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n"

for(ptr=head;

ptr;

ptr=ptr->

if(strcmp(type,ptr->

kind)==0){

ptr->

num,ptr->

name,ptr->

kind,ptr->

stime,ptr->

ttime,ptr->

etime,ptr->

score,ptr->

t=0;

}

if(t)printf("

未找到!

t=1;

break;

case2:

输入要查找的课程的学分\n"

num);

if(ptr->

score==num){

继续查找请按回车键,结束请按空格键:

ch1=getchar();

//将回车键赋给CH1,否则CASE里面最后输入的回车键会赋给CH,因此用CH1填补。

ch=getchar();

3.插入、删除信息功能

SUB*insert(SUB*head)

SUB*ptr,*ptr2,*subj;

intsize=sizeof(SUB);

while(ch!

subj=(SUB*)malloc(size);

ptr=subj;

输入要插入的课程信息:

%d%s%s%d%d%d%d%d"

subj->

num,subj->

name,subj->

kind,&

stime,&

ttime,&

etime,&

score,&

if(head==NULL){

head=ptr;

head->

next=NULL;

else{

for(ptr2=head;

ptr2;

ptr2=ptr2->

if(ptr2->

next==NULL){

ptr2->

next=subj;

subj->

继续插入请按回车,结束请按空格:

//将回车键赋给CH1,否则subj->

term输完后输入的回车键会赋给CH,因此用CH1填补。

returnhead;

SUB*del(SUB*head)

SUB*p1,*p2;

intnum;

输入想要删除的课程编号:

if(head->

num==num){

p2=head;

head=head->

next;

free(p2);

if(head==NULL)

returnNULL;

p1=head;

p2=head->

while(p2){

if(p2->

p1->

next=p2->

elsep1=p2;

p2=p1->

继续删除请按回车,结束请按空格:

//将回车键赋给CH1,否则num输完后再输入的回车键会赋给CH,因此用CH1填补。

returnhead;

4.选课功能

voidchoose(SUB*head)

SUB*p,*q;

inta[5];

intnum,total=0,i=0,j;

输入要选修的课程的编号,编号之间以空格分开,输完后以0结束\n"

scanf("

while(num!

=0){

if(p->

total=total+p->

score;

a[i]=num;

i++;

if(total<

60)printf("

选修总学分未达到60,选修失败!

else{

选修成功!

您选修的课程为:

for(j=0;

j<

i;

j++)

for(q=head;

q;

q=q->

if(q->

num==a[j])

%s"

q->

name);

***********************************\n"

6.程序代码

#include<

stdio.h>

stdlib.h>

string.h>

typedefstructsubjects

charname[20];

charkind[10];

intstime;

intttime;

intetime;

intscore;

intterm;

structsubjects*next;

}SUB;

SUB*create_form()

SUB*head,*tail,*p;

intnum,stime,ttime;

intetime,score,term;

charname[20],kind[10];

head=tail=NULL;

输入选修课程信息:

%d%s%s%d%d%d%d%d"

num,&

name,&

p=(SUB*)malloc(size);

p->

num=num;

strcpy(p->

name,name);

kind,kind);

stime=stime;

ttime=ttime;

etime=etime;

score=score;

term=term;

head=p;

else

tail->

next=p;

tail=p;

voidsavefiledel(SUB*head)

subjectsdel.txt"

voidprin(SUB*head)

if(head==NULL){

没有此门课程记录!

return;

inta,num;

intt=1;

while(p2){

else{

j++)

**********************************\n"

voidmain()

SUB*head=create_form();

savefile(head);

prin(head);

search(head);

head=insert(head);

//注意此处的必要性,函数insert的的返回值重新赋给head!

savefileadd(head);

修改后的信息为:

head=del(head);

//注意此处的必要性,函数del的的返回值重新赋给head!

savefiledel(head);

修改后的课程信息为:

choose(head);

7.程序运行结果

7.编程中遇到的困难及解决方法

1.问题:

程序虽然经过多次精简,但仅仅是形式上、小范围的精简,仍未得到本质上的精简,即未找到更加简单、更加高效、更加合理、更小占用的资源的算法。

解决方法:

.算法上除了采用结构体数组外,考虑在程序的算法设计上引入链表结构,考察这样对数据组织存贮效率上是否具有提高作用

2.问题:

程序仍然存在不合理的地方,例如程序某些部

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1