求c语言课程设计的主题

本人在做c语言课程设计,但是不知道该做什么,老师要求300行,用上函数,指针,链表,结构体和共用体等知识
不能用学籍管理系统和图形界面的东西,计算器也不行,答得好的我再加分

o 编一个学籍管理系统应该就有这些东西了
#define N 3 //定义宏N (默认定义为3)
#include "stdio.h"

struct cjsr //定义结构体
{ long xh; //定义学号
char xm[10]; //定义姓名(可最多输入4个汉字)
int cj[4]; //定义成绩 (0为总成绩,1为英语,2为高数,3为微机)
};
struct cjsr xs[N];

void px (struct cjsr strl[],int k);
void bc();
void dq();
void tj();

main()
{ int i,j,k=0,c;

while(1)
{
printf("\n"); //系统主界面
printf("\t<<<<<<<<<<<<<<< 欢迎使用学生成绩管理系统 >>>>>>>>>>>>>>>");
printf("\n\n\n");
printf("\t\t\t(1): 输入学生信息和成绩\n\n");
printf("\t\t\t(2): 保存\n\n");
printf("\t\t\t(3): 读取\n\n");
printf("\t\t\t(4): 按成绩排序\n\n");
printf("\t\t\t(5): 统计数据\n\n");
printf("\t\t\t(6): 退出\n\n");
printf("\n\n");
printf("\t<<<<<<<<<<<<<<<< @@@@@@@@@@@@@@@@@@@@@@@ >>>>>>>>>>>>>>>");
printf("\n\n\n\t\t请选择对应编号(1,2,3, 4, 5,6):\n");

scanf("%d",&c); //按照提示输入序号进入相应功能模块
if(c<1 || 7<c) //校验输入信息,错误信息提示
{printf("\t输入错误!请重输:\n");printf("\n");continue;}
printf("\n");

switch(c) //switch命令操作系统主界面
{
case 1 : //成绩录入
printf("请输入%d个学生的学号、姓名和英语、高数、微机3科成绩:\n",N);
for(i=0;i<N;i++)
{ scanf("%ld",&xs[i].xh);
scanf("%s",xs[i].xm);
for(k=1;k<4;k++)
{ scanf("%d",&xs[i].cj[k]);
xs[i].cj[0]=xs[i].cj[1]+xs[i].cj[2]+xs[i].cj[3]; //计算学生总成绩
}
}
printf("\t按任意键返回!\n");
getchar();getchar();
printf("\n");
break;

case 2 : //将输入的信息保存于D盘中的student.txt中
bc();
printf("\t已将学生信息已存入D盘中的student.txt中\n");
printf("\t按任意键返回!\n");
getchar();getchar();
printf("\n");
break;

case 3 : //读取student.txt中的已录入信息
dq();
printf("\t按任意键返回!\n");
getchar();getchar();
printf("\n");
break;

case 4 : //按要求对成绩排序,1,2,3分别对应英语,高数,微机。0为总成绩。
printf("请输入按第几学科排序(输入0为总成绩):\n");
scanf("%d",&k);
if(k>=0 && k<=3)
{ px(xs,k);}
else //校验输入信息
{ printf("错误!序号非法,请重新输入!\n\n");
continue;
}
printf("\n按总成绩排序为:\n"); //输出排序结果
printf("学号 姓名 英语 高数 微机 总成绩\n");
for(i=0;i<N;i++)
{ printf("%ld\t%s",xs[i].xh,xs[i].xm);
printf("\t%d\t%d\t%d\t%d\n",xs[i].cj[1],xs[i].cj[2],xs[i].cj[3],xs[i].cj[0]);
printf("\n");
}
printf("\n");

printf("\t按任意键返回!\n");
getchar();getchar();
printf("\n");
break;

case 5 : //统计分数段人数
tj();
printf("\n");
printf("\t按任意键返回!\n");
getchar();getchar();
printf("\n");
break;

case 6 : //退出系统
printf("\t\t按任意键退出! 谢谢使用(*^_^*)!\n\n");
printf("\t\t\t\t作者:\n");
getchar();
exit(1);
}
}
}

//排序函数
void px (struct cjsr strl[],int k)
{ int i,j;
struct cjsr t;
for(i=0;i<N-1;i++)
{ for(j=i+1;j<N;j++)
if(strl[i].cj[k]<strl[j].cj[k])
{ t=strl[i];
strl[i]=strl[j];
strl[j]=t;
}
}
}

//保存数据
void bc()
{ FILE *fp;
int i; //若保存文件不存在显示文件打开失败
if((fp=fopen("D:\\student.txt","w"))==NULL)
{ printf("\n文件打开失败!\n");
return;
}
for(i=0;i<N;i++)
{
fprintf(fp,"%d,%d,%d,%d,%d,%s\n",xs[i].xh,xs[i].cj[1],
xs[i].cj[2],xs[i].cj[3],xs[i].cj[0],xs[i].xm);
}
fclose(fp);
}

//读取函数
void dq()
{ FILE *fp;
int i;
if((fp=fopen("D:\\student.txt","rb"))==NULL) //打开文件输入的信息不存在,打开失败
{ printf("\n文件打开失败!\n");
exit(1);
}
rewind(fp);
for(i=0;i<N;i++) //显示读取的数据
{ fscanf(fp,"%d,%d,%d,%d,%d,%s\n",xs[i].xh,xs[i].cj[1],
xs[i].cj[2],xs[i].cj[3],xs[i].cj[0],xs[i].xm);
printf("%d,%s,%d,%d,%d,%d\n",xs[i].xh,xs[i].xm,xs[i].cj[1],
xs[i].cj[2],xs[i].cj[3],xs[i].cj[0]);
}
fclose(fp);
}

//统计函数
void tj()
{ int i,tj1=0,tj2=0,tj3=0,tj4=0;
int min1=100,min2=100,min3=100,max1=0,max2=0,max3=0;
int z1,z2,z3;
float p1,p2,p3;
for(i=0;i<N;i++)
{if(xs[i].cj[0]<180) tj1++;
if(xs[i].cj[0]>=180 && xs[i].cj[0]<225) tj2++;
if(xs[i].cj[0]>=225 && xs[i].cj[0]<255) tj3++;
if(xs[i].cj[0]>=255) tj4++;

if(xs[i].cj[1]>max1) max1=xs[i].cj[1];
if(xs[i].cj[2]>max2) max2=xs[i].cj[2];
if(xs[i].cj[3]>max3) max3=xs[i].cj[3];

if(xs[i].cj[1]<min1) min1=xs[i].cj[1];
if(xs[i].cj[2]<min2) min2=xs[i].cj[2];
if(xs[i].cj[3]<min3) min3=xs[i].cj[3];

z1=z1+xs[i].cj[1];
z2=z2+xs[i].cj[2];
z3=z3+xs[i].cj[3];
}
p1=z1/N; p2=z2/N; p3=z3/N;

printf("\t成绩情况统计如下: 人数\n"); //按分数段统计
printf("\t分数<3*60(及格) %d\n",tj1);
printf("\t3*60<=分数<3*75(中等) %d\n",tj2);
printf("\t3*75<=分数<3*85(良好) %d\n",tj3);
printf("\t3*85<=分数(优秀) %d\n",tj4);
printf("\n");
printf("\t英语学科\n\t平均分为: %.2f\n\t最高分为: %d\n\t最低分为: %d",p1,max1,min1);
printf("\t高数学科\n\t平均分为: %.2f\n\t最高分为: %d\n\t最低分为: %d",p2,max2,min2);
printf("\t微机学科\n\t平均分为: %.2f\n\t最高分为: %d\n\t最低分为: %d",p3,max3,min3);

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-02-06
一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的第二和第三位数字是相同的;乙说:牌照的第三和第四位数字是正序相邻的,且第四位数字是一个整数的平方; 丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。

问题分析:
按照题目意思首先先假设出四个不相等的整数,然后找出这样的一个整数,使得它的平方等于第四个数,再找出这样一个数,使得这个整数的平方等于这个车牌号码,最后只需要判断该车牌号码是不是它的平方。
流程图

程序代码
#include<stdio.h>
void main()
{
int i,j,k,m,n,q;
for(i=0;i<=9;i++)
{
for(j=0;j<=9;j++)
{
for(k=0;k<=9;k++)
{
for(m=0;m<=9;m++)
{
if(j==k&&m==k+1)
{
for(n=0;n<=9;n++)
{
if(m==n*n)
{
for(q=0;q<100;q++)
{
if(i*1000+j*100+k*10+m==q*q)
printf("i=%d,j=%d,k=%d,m=%d\n",ai,j,k,m)
}
}
}
}
}
}
}
}
}
第2个回答  2009-05-06
你可以写一个类似QQ的系统。一个菜单控制台界面就差不多了·~聊天功能就不用做了·涉及到网络编程,估计你还没学到那门课,你只要实现添加好友、查找好友、删除好友以及文本存储等功能,指针、函数、链表、结构体、共用体知识是肯定要用到的
第3个回答  2009-05-05
1.学生成绩管理系统的课程设计
http://zhidao.baidu.com/question/80333187.html?si=1

2.学生成绩管理系统 c++
http://zhidao.baidu.com/question/41363189.html?si=2

3.学生成绩管理系统的c++源代码
http://zhidao.baidu.com/question/40436296.html?si=4本回答被网友采纳
第4个回答  2009-05-05
一元多项式加减法

用链表实现

就包含了函数,指针,链表等
相似回答