c语言的课程设计问题该怎么做?

Python021

c语言的课程设计问题该怎么做?,第1张

这个程序设计其实很简单的。

(1)这个要求最简单,用prinf语句直接输出相关信息即可。

(2)这个要求也容易,用for语句实现循环,循环体用sanf语句,加system("pause")语句,就可以实现键盘输入回车确定。接受键盘数据的变量要用数组,这个关系到后面的统计排序。用if(a【i】==0) break即输入0回车就退出循环。

(3)通过for语句对数组a进行遍历,统计之前输入序号的个数(其实在(2)中就可以统计)保存另一个数组b中。然后对这个数组b的数据进行降序排列。

(4)这个要求只是考查C语言创建、读取和写入文件操作的要求而已,熟悉一下相关代码使用方法即可,分别写入数组a、数组b就行了。

#include<stdio.h>

#include <stdlib.h>

#include <string.h>

typedef struct

{

long class_1//班级

long number//学号

char name[20]//姓名

float math//数学

float c_program//C语言

float physics//大学物理

float english//大学英语

float polity//政治

float sport//体育

float summary//总分

float average//平均分

}Student

Student stud[100]//定义结构体数组变量的大小

int i=0//i用于记录输入的学生的个数

int menu() //菜单函数

{

int a

printf("***********************学生信息管理系统*************************\n")

//菜单选择

printf("\t\t【1】输入学生信息\n")

printf("\t\t【2】显示所有学生的信息\n")

printf("\t\t【3】按平均分升降排序\n")

printf("\t\t【4】根据学生的学号查找学生的信息\n")

printf("\t\t【5】插入学生的信息\n")

printf("\t\t【6】删除学生的信息\n")

printf("\t\t【7】修改学生的信息\n")

printf("\t\t【8】从文件中读入数据\n")

printf("\t\t【9】将所有记录写入文件\n")

printf("\t\t【0】退出本系统\n")

printf("***********************学生信息管理系统*************************\n")

printf("请选择你要的操作【0-9】:")

scanf("%d",&a)//读入一个数

while(a<0 || a>9)

{

printf("输入错误!请重新输入。\n")

scanf("%d",&a)//输入错误就一直循环!^_^

}

system("cls")//清屏

return(a)//返回a的值

}

int input(Student stud[]) //输入学生信息

{

char flag='Y'

while(flag=='y' || flag=='Y') //判断

{

printf("请输入该学生的班别:")//交互输入学生信息

scanf("%ld",&stud[i].class_1)

printf("请输入该学生的学号:")

scanf("%ld",&stud[i].number)

printf("请输入该学生的姓名:")

scanf("%s",&stud[i].name)

printf("请输入该学生的“数学”分数:")

scanf("%f",&stud[i].math)

printf("请输入该学生的“C程序设计语言”分数:")

scanf("%f",&stud[i].c_program)

printf("请输入该学生的“大学物理”分数:")

scanf("%f",&stud[i].physics)

printf("请输入该学生的“大学英语”分数:")

scanf("%f",&stud[i].english)

printf("请输入该学生的“体育”分数:")

scanf("%f",&stud[i].sport)

printf("请输入该学生的“政治”分数:")

scanf("%f",&stud[i].polity)

getchar()//用于消除回车键

stud[i].summary=stud[i].math+stud[i].c_program+stud[i]. physics

+stud[i].english+stud[i].sport+stud[i].polity

stud[i].average=stud[i].summary/6

printf("该学生的总分为:%6.2f\t平均分为:%6.2f\n",stud[i].summary,stud[i].average)

i++

printf("继续输入学生信息请按:Y or y,退出请按:N or n.\n")

scanf("%c",&flag)//判断是否继续输入

}

printf("按任意键回主菜单\n")

getchar()

system("cls")

return(i)

}

void Display(Student stud[],int n) //显示所有记录

{

int k

if(n==0)

printf("暂无学生记录!\n")

else

{

printf(" 班别 学号 姓名 数学 C语言 物理 英语 体育 政治 总分 平均分\n")

for(k=0k<nk++) //循环输出

{

printf("%7ld",stud[k].class_1)

printf("%7ld",stud[k].number)

printf("%9s",stud[k].name)

printf("%7.2f",stud[k].math)

printf("%7.2f",stud[k].c_program)

printf("%7.2f",stud[k].physics)

printf("%7.2f",stud[k].english)

printf("%7.2f",stud[k].sport)

printf("%7.2f",stud[k].polity)

printf("%7.2f",stud[k].summary)

printf("%8.2f\n",stud[k].average)

}

}

system("pause")

system("cls")

}

void Sort(Student stud[],int i) //按平均分排序

{

int m,n,k//m,n为循环变量

Student t

for(m=0m<i-1m++) //排序

for(n=m+1n<in++)

if(stud[m].average<stud[n].average)

{

t=stud[m]

stud[m]=stud[n]

stud[n]=t

}

printf("排序后的顺序为:\n")

printf(" 班别 学号 姓名 数学 C语言 物理 英语 体育 政治 总分 平均分\n")

for(k=0k<ik++) //循环输出

{

printf("%7ld",stud[k].class_1)

printf("%7d",stud[k].number)

printf("%9s",stud[k].name)

printf("%7.2f",stud[k].math)

printf("%7.2f",stud[k].c_program)

printf("%7.2f",stud[k].physics)

printf("%7.2f",stud[k].english)

printf("%7.2f",stud[k].sport)

printf("%7.2f",stud[k].polity)

printf("%7.2f",stud[k].summary)

printf("%8.2f\n",stud[k].average)

}

system("pause")

system("cls")

}

void Search(Student stud[],int i) //查找并显示一个记录

{

int p,k//p为要查找的学生学号,t为循环节,s用来判断循环是否结束

char flag='y'

while(flag=='y' || flag=='Y')

{

printf("请输入要查找的学生学号:")

scanf("%d",&p)

getchar()

for(k=0p!=stud[k].number &&k<ik++)

if(k==i)printf("该学号不存在!\n")

else {

printf("该学生的信息为:\n")

printf(" 班别 学号 姓名 数学 C语言 物理 英语 体育 政治 总分 平均分\n")

printf("%7ld",stud[k].class_1)

printf("%7ld",stud[k].number)

printf("%9s",stud[k].name)

printf("%7.2f",stud[k].math)

printf("%7.2f",stud[k].c_program)

printf("%7.2f",stud[k].physics)

printf("%7.2f",stud[k].english)

printf("%7.2f",stud[k].sport)

printf("%7.2f",stud[k].polity)

printf("%7.2f",stud[k].summary)

printf("%8.2f\n",stud[k].average)

}

printf("继续查找学生信息请输入:Y or y,退出输入:N or n\n")

scanf("%c",&flag)//判断是否继续输入

}

system("cls")

}

int Insert(Student stud[],int i) //插入学生的信息

{

char flag='Y'

while(flag=='y' || flag=='Y')

{

printf("请输入要插入学生的班别:")//交互输入学生信息

scanf("%ld",&stud[i].class_1)

printf("请输入要插入学生的学号:")

scanf("%ld",&stud[i].number)

printf("请输入要插入学生的姓名:")

scanf("%s",&stud[i].name)

printf("请输入要插入学生的“数学”分数:")

scanf("%f",&stud[i].math)

printf("请输入要插入学生的“C程序设计语言”分数:")

scanf("%f",&stud[i].c_program)

printf("请输入要插入学生的“大学物理”分数:")

scanf("%f",&stud[i].physics)

printf("请输入要插入学生的“大学英语”分数:")

scanf("%f",&stud[i].english)

printf("请输入要插入学生的“体育”分数:")

scanf("%f",&stud[i].sport)

printf("请输入要插入学生的“政治”分数:")

scanf("%f",&stud[i].polity)

getchar()

stud[i].summary=stud[i].math+stud[i].c_program+stud[i]. physics

+stud[i].english+stud[i].sport+stud[i].polity

stud[i].average=stud[i].summary/6

printf("该学生的总分为:%6.2f\n",stud[i].summary)

printf("该学生的平均分为:%6.2f\n",stud[i].average)

i++

printf("继续输入学生信息请输入:Y or y,退出输入:N or n\n")

scanf("%c",&flag)//判断是否继续输入

}

getchar()

printf("是否需要排序,需要请按‘Y’或‘y’;不需要请按‘N’或‘n’.\n")

flag=getchar()

if(flag=='y' || flag=='Y')Sort(stud,i)

system("cls")

return(i)

}

int Delete(Student stud[],int i) //根据输入的学号删除学生的信息

{

long s

int t,p

char a='Y'//判断循环是否继续

while(a=='y' || a=='Y')

{

printf("请输入需要删除学生的学号:\n")//采用交互式删除

scanf("%ld",&s)

getchar()//消除回车键的影响

for(t=0t<i &&s!=stud[t].numbert++)

if(s==stud[t].number)

{

for(p=tp<ip++)

stud[p]=stud[p+1]

i=i-1

printf("删除成功!\n")

}

else printf("没有找到要删除的学号!\n")

printf("是否继续删除,继续请按'Y'或'y',退出请按'N'或'n'.\n")

a=getchar()//判断是否继续

getchar()//消除回车键的影响

}

system("cls")

return(i)

}

void change(Student stud[],int i) //修改学生的信息

{

long p=0//p用来表示要删除的学生的学号

int k//k为循环变量

char a='y'

while(a=='y' || a=='Y')

{

printf("\t\t学生信息修改:\n")

printf("请输入要修改的学生的学号:\n")

scanf("%ld",&p)

for(k=0p!=stud[k].number &&k<ik++)

if(k==i)printf("无法找到该学生的信息\n")

else {

printf("该学生的信息为:\n")

printf(" 班别 学号 姓名 数学 C语言 物理 英语 体育 政治 总分 平均分\n")

printf("%7ld",stud[k].class_1)

printf("%7ld",stud[k].number)

printf("%9s",stud[k].name)

printf("%7.2f",stud[k].math)

printf("%7.2f",stud[k].c_program)

printf("%7.2f",stud[k].physics)

printf("%7.2f",stud[k].english)

printf("%7.2f",stud[k].sport)

printf("%7.2f",stud[k].polity)

printf("%7.2f",stud[k].summary)

printf("%8.2f\n",stud[k].average)

printf("请输入该学生的新信息:\n")

printf("请输入该学生的班级:")//交互输入学生信息

scanf("%d",&stud[k].class_1)

printf("请输入该学生的学号:")

scanf("%d",&stud[k].number)

printf("请输入该学生的姓名:")

scanf("%s",&stud[k].name)

printf("请输入该学生的“数学”分数:")

scanf("%f",&stud[k].math)

printf("请输入该学生的“C程序设计语言”分数:")

scanf("%f",&stud[k].c_program)

printf("请输入该学生的“大学物理”分数:")

scanf("%f",&stud[k].physics)

printf("请输入该学生的“大学英语”分数:")

scanf("%f",&stud[k].english)

printf("请输入该学生的“体育”分数:")

scanf("%f",&stud[k].sport)

printf("请输入该学生的“政治”分数:")

scanf("%f",&stud[k].polity)

getchar()

stud[k].summary=stud[k].math+stud[k].c_program+stud[k]. physics

+stud[k].english+stud[k].sport+stud[k].polity

stud[k].average=stud[k].summary/6

printf("修改成功!\n")

}

printf("是否继续修改,继续请按'Y'或'y',退出请按'N'或'n'.\n")

a=getchar()//判断是否继续

}

system("pause")

system("cls")

}

int Read(Student stud[],int i) //从文件中读入学生信息

{

int k=i

FILE *fp//定义一个文件类型的指针

char filename[20]//定义文件名

printf("请输入文件名:\n")

scanf("%s",&filename)//输入文件名

if((fp=fopen(filename,"rb"))==NULL) //打开文件

{

printf("无法打开该文件!\n")//打开失败信息

return 0

}

printf("从文件%s中读入的数据为:\n",filename)

printf(" 班别 学号 姓名 数学 C语言 物理 英语 体育 政治 总分 平均分\n")

while(!feof(fp))

{

fread(&stud[k],sizeof(Student),1,fp)

printf("%7ld",stud[k].class_1)

printf("%7ld",stud[k].number)

printf("%9s",stud[k].name)

printf("%7.2f",stud[k].math)

printf("%7.2f",stud[k].c_program)

printf("%7.2f",stud[k].physics)

printf("%7.2f",stud[k].english)

printf("%7.2f",stud[k].sport)

printf("%7.2f",stud[k].polity)

printf("%7.2f",stud[k].summary)

printf("%8.2f\n",stud[k].average)

k++

}

fclose(fp)

printf("读入成功,\n")

system("pause")

system("cls")

return(k)

}

void Save(Student stud[],int i) //将所有记录写入文件

{

int k=0

FILE *fp//定义文件指针

char filename[20]//定义文件名

printf("请输入你要存储学生信息的文件名:")//输入文件名

scanf("%s",&filename)

if((fp=fopen(filename,"wb"))==NULL) //打开文件

{

printf("无法打开该文件!\n")//打开失败信息

return

}

printf("保存到文件%s里的信息为:\n",filename)

while(k<i)

{

fwrite(&stud[k],sizeof(Student),1,fp)

printf("%7ld",stud[k].class_1)

printf("%7d",stud[k].number)

printf("%9s",stud[k].name)

printf("%7.2f",stud[k].math)

printf("%7.2f",stud[k].c_program)

printf("%7.2f",stud[k].physics)

printf("%7.2f",stud[k].english)

printf("%7.2f",stud[k].sport)

printf("%7.2f",stud[k].polity)

printf("%7.2f",stud[k].summary)

printf("%8.2f\n",stud[k].average)

k++

}

fclose(fp)

printf("信息保存成功,")

system("pause")

system("cls")

}

int main() //主函数

{

int n=0

while(1)

{

switch(menu()) //选择判断要执行的语句

{

case 1:

printf("\n*******输入学生信息*******\n")

//输入学生信息

n=input(stud)break

case 2:

printf("\n*******显示所有学生的信息*******\n")

//显示所有学生的信息

Display(stud,n)break

case 3:

printf("\n*******按平均分升降排序*******\n")

//给学生成绩排序

Sort(stud,n)break

case 4:

printf("\n*******根据学生的学号查找学生的信息*******\n")

//根据输入的学号查找学生的信息

Search(stud,n)break

case 5:

printf("\n*******插入学生的信息*******\n")

//插入学生的信息

n=Insert(stud,n)break

case 6:

printf("\n*******删除学生的信息*******\n")

//删除学生的信息

n=Delete(stud,n)break

case 7:

printf("\n*******修改学生的信息*******\n")

//修改学生的信息

change(stud,n)break

case 8:

printf("\n*******从文件中读入数据*******\n")

//从文件中读入数据

n=Read(stud,n)break

case 9:

printf("\n*******将所有记录写入文件*******\n")

//将所有记录写入文件

Save(stud,n)break

case 0:

printf("\n*******感谢您的使用*******\n")

//结束程序

exit(0)

}

}

return 0

}