c语言程序设计题,高人来指点一下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言程序设计题,高人来指点一下相关的知识,希望对你有一定的参考价值。

[要求]
假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,试验或上机学位,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)课程信息和学生选课信息录入功能(课程信息用文件保存)--输入
(3)课程信息浏览功能--输出
(4)查询功能(至少一种查询方式)--算法
(5)按学分查询
(6)某门课程学生选修情况(可选项)
[提示]
数据结构可用结构体,包括课程和选修两个结构体,其中课程结构体成员包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分。开课学期。选修结构体成员包括学号。课程编号,该结构的建立主要是为了查询某门课程学生选修情况。

你好

网上找的,希望你能用

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct subjects

int num;
char name[20];
char kind[10];
int stime;
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 name[20],kind[10];
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,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");
fprintf(fp,"课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期\n");
for(p=head;p;p=p->next)
fprintf(fp,"%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);


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%7d\n",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%7d\n",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("NO RECORDS!\n");
return;

printf("课程编号 课程名称 课程性质 总学时 授课学时 实践或上机学时 学分 开课学期\n");
for(ptr=head;ptr;ptr=ptr->next)
printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",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 type[10];
char ch='a',ch1;
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)
printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",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%7d\n",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();
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(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();
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;
while(p2)
if(p2->num==num)
p1->next=p2->next;
free(p2);

else p1=p2;
p2=p1->next;

printf("继续删除请按回车,结束请按空格:\n");
ch1=getchar();
ch=getchar();

return head;


void choose(SUB *head)

SUB *p,*q;
int a[5];
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;
a[i]=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->num==a[j])
printf("%s ",q->name);
printf("\n");



void main()

SUB *head=create_form();
savefile(head);
prin(head);
search(head);
head=insert(head);
savefileadd(head);
printf("修改后的信息为:\n");
prin(head);
head=del(head);
savefiledel(head);
printf("修改后的课程信息为:\n");
prin(head);
choose(head);

参考资料:转自http://tieba.baidu.com/f?kz=159785433

参考技术A typedef struct class
int class_num;课程编号
char class_name[30];课程名称
char class_attri[10];课程性质
int class_time;总学时
int study_time;授课学时
int on_time;上机学时
int class_score;学分
int start_class;开课学期

typedef struct sle_class
int sle_num;
int class_num;
参考技术B 程序代码,我可以很容易的帮你写出来
但是我觉得那对你一点用处都没有
我建议你还是去多看几下,结构体那章
学C最重要的是写代码,跳过了这环,叫别人代替,最后吃亏的是你自己
参考技术C 这是要花费时间的,好像分不够。
起码100分…

primeface中如何实现 fileupload功能,我这个怎么无效,请高人指点一下。

看primeface官方教程,做了以下内容,但后台的事件方法(handleFileUpload)没有执行。
一、web.xml
<!--文件上传-->
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
<init-param>
<param-name>thresholdSize</param-name>
<param-value>1097152</param-value>
</init-param>
<init-param>
<param-name>uploadDirectory</param-name>
<param-value>/</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>faces servlet</servlet-name>
</filter-mapping>
<!--文件上传结束-->

二、fileupload.xhtml
<h:form enctype="multipart/form-data">
<p:fileUpload fileUploadListener="#fileManagedBean.handleFileUpload"
mode="advanced" update="filename" multiple="true" />
<h:outputText id="filename" value="#fileManagedBean.uploadedFile.fileName" />
<p:growl id="messages" showDetail="true"/>
</h:form>
三、FileManagedBean托管Bean
public void handleFileUpload(FileUploadEvent event)
System.out.println("Uploaded: " + event.getFile().getFileName());
System.out.println("handleFileUpload0=ok");
FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, msg);

commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar已加入项目库。
用netbeans7.2+glassfish3.1。前台fileUpload.xhtml没问题,只是后台没反应。

参考技术A 这个问题我也遇到了 ,赶紧努一把 参考技术B 上传文件,没有任何输出吗?无异常吗?追问

前台正常,但后台事件方法未能执行。无异常

无输出,也无异常

追答

我没用过你这个框架,这和

PrimeFaces FileUpload Filter
faces servlet

这个mapping中没有写 /xxx 是否有关系呢?

追问

你是指上传路径吧?其实官方文档说以下代码就是设置上传路径。

uploadDirectory
/

我将官方文档与自己代码看了几遍,自认没错误,其实运行中也确没有报异常,但怎么事件方法就是没执行呢???这让我摸不着头脑。

追答

用 /* 试试,还不工作的话,debug模式看看

追问

用 /*试过,依旧。debug模式也没发现问题

本回答被提问者采纳

以上是关于c语言程序设计题,高人来指点一下的主要内容,如果未能解决你的问题,请参考以下文章

怎么样C语言解析一个XML文件中的信息,题目很详细,跪求高人指点。

vc CListCtrl用FindItem函数 查找第n列中的值? 哪位高人能指点一下,我急用,谢谢!

求C语言高人帮助,纯C编写IP转换数字程序

前辈指点:我想提高自己的java编程水平,想练一下ACM,可ACM中是不是很多题只能用C或是C++才能实现

请教会C语言的高人线性顺序表问题

C语言实验题 求大神指点