C语言程序设计 (学生选修课程设计)

Python022

C语言程序设计 (学生选修课程设计),第1张

这是我做的,你看是否满意?可能有点大,但也没办法呀,你的题目也比较大,呵呵!所以,如果满意,多给我追加点分!

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

typedef struct course

{

char number[15],name[25]

int kind,time,lessontime,practicetime,credit,term

}type

FILE *fp1

void overview()//浏览函数,负责浏览整个课程信息

void seek() //查询函数,负责查询课程信息

void choose_course()//选课函数,负责让用户选课

void out(type temp)

void input()

int main()

{

int n,i

if((fp1=fopen("course_information.txt","wb"))==NULL)

{printf("创建文件失败!\n")exit(0)}

printf("请输入要存储的课程数目:\n")

scanf("%d",&n)

printf("开始创建文件,请输入课程信息:\n\n")

for(i=0i<ni++)

{

printf("请输入第%d门课程的信息:\n",i+1)

input()

printf("\n")

}

printf("如想浏览整个课程信息,请输入1;如想查询课程信息,请输入2; 如想进行选课,请输入3;如想结束选修课系统,请输入0!\n")

while((scanf("%d",&n))!=EOF)

{

if(n==1)

overview()

if(n==2)

seek()

if(n==3)

choose_course()

if(n==0)

exit(0)

printf("\n\n如想继续操作,只要按规则输入你要进行的操作即可!\n规则:如想浏览整个课程信息,请输入1;如想查询课程信息,请输入2;如想进行选课,请输入3!\n")

}

printf("欢迎您使用此程序进行选课,谢谢!\n")

fclose(fp1)

return 0

}

void input()

{

course c_a

printf("请输入课程编码: ")

scanf("%s",c_a.number)

printf("请输入课程名: ")

scanf("%s",c_a.name)

printf("请输入课程性质:限选课,请输入1;选修课,请输入2;必修课,请输入3! ")

scanf("%d",&c_a.name)

printf("请输入课程总学时: ")

scanf("%d",&c_a.time)

printf("请输入课程授课时间: ")

scanf("%d",&c_a.lessontime)

printf("请输入课程实验或实践时间: ")

scanf("%d",&c_a.practicetime)

printf("请输入课程学分: ")

scanf("%d",&c_a.credit)

printf("请输入课程所在的学期,比如第二学期,就输入2即可。")

scanf("%d",&c_a.term)

fwrite(&c_a,sizeof(struct course),1,fp1)//将一个结构体元素写入文件中

}

void out(type temp)

{

printf("课程代码: %s\n课程名: %s\n",temp.number,temp.name)

printf("课程名: %s\n",temp.name)

if(temp.kind==1)

printf("课程性质: Limited optional course\n")

else if(temp.kind==2)

printf("课程性质: Optional course\n")

else if(temp.kind==3)

printf("课程性质: Required Courses\n")

else

printf("该编码系统不认识,即无对应的课程性质存在!\n")

printf("课程总学时: %d\n课程授课学时: %d\n实验或上机学时: %d\n学分: %d\n课程开课学期: %d\n\n",temp.time,temp.lessontime,temp.practicetime,temp.credit,temp.term)

}

void overview()

{

rewind(fp1)

course temp

printf("整个课程信息如下:\n")

while((fread(&temp,sizeof(type),1,fp1))!=0)

out(temp)

}

void seek()

{

int judge,credit=0,kind=0

char a='N'

course temp

printf("如想按学分查询,请输入1;如想按课程性质,请输入2:\n")

scanf("%d",&judge)

rewind(fp1)//将文件指针位置置为开头

if(judge==1)

{

printf("请输入要查询的学分:\n")

scanf("%d",&credit)

while((fread(&temp,sizeof(type),1,fp1))!=0)

if(credit==temp.credit)

out(temp)

}

else if(judge==2)

{

printf("请输入你要查找课程的性质(限选课,请输入1;选修课,请输入2;必修课,请输入3):")

scanf("%d",&kind)

while((fread(&temp,sizeof(type),1,fp1))!=0)

if(temp.kind==kind)

out(temp)

}

else

printf("不好意思,无此类查询!\n")

}

void choose_course()

{

rewind(fp1)

course temp

int judge=1,n=0,time=0,credit=0

char choose[20][20]

r1: printf("请开始填写课程编号进行选课:\n")

while(judge==1)

{

printf("请输入你所选课程的标号: ")

scanf("%s",choose[n])

n++

printf("如想继续选课,请输入1;如想提交,请输入0!\n")

scanf("%d",&judge)

}

while((fread(&temp,sizeof(type),1,fp1))!=0)

{

for(int i=0i<ni++)

if(strcmp(temp.number,choose[i])==0)

{time=time+temp.timecredit=temp.creditbreak}

}

if(time<270||credit<40)

goto r1

printf("你所选的课为:\n")

while((fread(&temp,sizeof(type),1,fp1))!=0)

{

for(int i=0i<ni++)

if(strcmp(temp.number,choose[i])==0)

{out(temp)break}

}

}

设水渠x米,原计划修y天

x/y是每天计划修多少

x/y + 8 = x/(y-4) 1

x/y - 8 = x/(y+8) 2

解得:由1式 8y2 - 32y = 4x

由2式 8y2 + 64y = 8x

x=24y 代入1中

y=16 x=384

解:由题意得,甲的工效为1/20,乙的工效为1/30,甲乙的合作工效为1/20*4/5+1/30*9/10=7/100,可知甲乙合作工效>甲的工效>乙的工效。

又因为,要求“两队合作的天数尽可能少”,所以应该让做的快的甲多做,16天内实在来不及的才应该让甲乙合作完成。只有这样才能“两队合作的天数尽可能少”。

设合作时间为x天,则甲独做时间为(16-x)天

1/20*(16-x)+7/100*x=1

x=10

答:甲乙最短合作10天