c语言课程设计健身俱乐部
㈠ c语言课程设计案例精编
如果有来一定的基础的话源,一楼的说的不错先学学“数据结构”的相关知识!算法在程序设计中有很“重要”的作用……其实学c主要是学编程的思想!你要是就一个个的死学案例,也只是会设计类似的东西!不会有创新,甚至有的地方会根本搞不明白。不知道你基础怎么样?如果不是很好,就复习《数据结构吧》清华出版社 那本严蔚敏的数据结构(C语言版)。比较容易理解,最好还是要看些英文的原版数据结构的书。
当然如果你数据结构学得很好的话,比如你就是想通过一些案例的开发,来增强自己的实战能力,你可以深入学习你说的那本书,其实你只要仔细看一下就会发现,其实案例设计的教程中文版的根本没什么创新都停留在以下几个“经典问题”上,不同的版本也没什么太多的区别就是重印一下而已!这本书作为对编程基本功的训练不错!
案例一:贪吃蛇游戏
案例二:计算器
案例三:黑白棋游戏
案例四:迷宫问题
案例五:扫地雷游戏
案例六:速算24
案例七:数据结构CAI系统
案例八:进度调度
案例九:存储管理分区分配算法
案例十:通讯录
案例十一:学生成绩管理
案例十二:工资管理
案例十三:图书借阅管理
案例十四:教师工作量计算
相关下载地址:
㈡ 一道大一c语言课程设计的题目,求大神
免费给你一个,自己改改
#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct Student
{
char xuehao[100];
char name[100];
char sex[100];
int age;
float score;
};
void menu(int *n)
{
printf("\t\t\t*********************************************\n");
printf("\t\t\t\t\t1.创建数据\n");
printf("\t\t\t\t\t2.添加数据\n");
printf("\t\t\t\t\t3.删除数据\n");
printf("\t\t\t\t\t4.查找数据\n");
printf("\t\t\t\t\t5.按成绩进行排序\n");
printf("\t\t\t\t\t6.退出\n");
printf("\t\t\t*********************************************\n");
printf("请输入数字1-6:");
scanf("%d",n);
}
void scanfstudent(struct Student * p,int len)//输入学生的信息 学号 姓名 性别 年龄 得分
{
int i;
for(i = 0; i < len; i++)
{
printf("请输入第%d学生的信息:\n",i+1);
printf("学号:");
scanf("%s",p[i].xuehao);
printf("姓名:");
scanf("%s",p[i].name);
printf("性别:");
scanf("%s",p[i].sex);
printf("年龄:");
scanf("%d",&p[i].age);
printf("得分:");
scanf("%f",&p[i].score);
printf("\n");
}
}
void printfstudent(struct Student *p,int len)//对学生的信息进行输出
{
int i;
printf("学号\t\t姓名\t\t性别\t\t年龄\t\t分数\n\n");
for (i = 0; i < len; i++)
{
printf("%s\t\t",p[i].xuehao);
printf("%s\t\t",p[i].name);
printf("%s\t\t",p[i].sex);
printf("%d\t\t",p[i].age);
printf("%.2f\n",p[i].score);
}
}
void createdata(struct Student *p,int *len)
{
int n;
printf("请输入要创建数组的长度:");
scanf("%d",&n);
scanfstudent(p,n);
*len = n;
printfstudent(p,*len);
}
void add(struct Student *p,int *len)//增加一个学生的信息。并且按照顺序排列
{
// int i,j;
//int pos = 0;
int c = 1;
while(c == 1)
{
int mylen = *len;
struct Student st;
printf("请输入要添加学生的信息:\n");
printf("学号:");
scanf("%s",st.xuehao);
printf("姓名:");
scanf("%s",st.name);
printf("性别:");
scanf("%s",st.sex);
printf("年龄:");
scanf("%d",&st.age);
printf("得分:");
scanf("%f",&st.score);
printf("\n");
p[mylen] = st;
*len = mylen+1;
printfstudent(p,*len);
printf("\n");
printf("是否继续添加?输入:\n1.继续\n2.退出\n");
scanf("%d",&c);
}
}
void Sort(struct Student *p,int len)//按照分数从大到小排列选择排序法
{
struct Student st;
int i,j;
for(i = 0; i < len - 1; i++)
{
for(j = i + 1 ; j < len; j++)
if(p[i].score < p[j].score)
{
st = p[i];
p[i] = p[j];
p[j] = st;
}
}
printfstudent(p,len);
}
/*if(myp->score >= p[0].score)//
{
for(i = mylen; i > 0 ; i--)
p[i] = p[i-1];
p[0] = *myp;
}
else if(myp->score <= p[mylen-1].score)
{
p[mylen] = *myp;
}
*/
//else
//{
/*for(i = 0; i < mylen; i++)
{
if(myp->score >= p[i].score)
break;
}
pos = i;
for(j = mylen; j > pos; j--)
{
p[j] = p[j-1];
}
p[pos] = *myp;
*len = mylen+1;
}*/
void del(struct Student *p,int *len)//删除学生的信息
{
int i,j;
char p1[1024];
int c = 1;
while(c == 1)
{
int mylen=*len;
printf("请输入要删除学生的学号:");
scanf("%s",p1);
for(i = 0; i < *len; i++)
{
if(strcmp(p[i].xuehao,p1)==0)
break;
}
if(i == 0)//删除的是第一个元素
{
for(j = 0; j < (*len)-1; j++)
p[j] = p[j+1];
}
else if(i>0 && i<(*len)-1)//删除中间的元素
{
for(j = i;j<(*len) -1;j++)
p[j] = p[j+1];
}
else if(i == (*len)-1)
;
else
printf("error,学号输入有误!\n");
*len =mylen-1;//数组长度减少一个
printfstudent(p,*len);
printf("\n");
printf("是否继续删除?输入:\n1.继续\n2.退出\n");
scanf("%d",&c);
}
}
void serch(struct Student *p,int len)//按学号或者姓名查找学生信息
{
int i,j;
int flat = 0;
char num[100];
char name1[100];
printf("请输入1或2,1按学号查找,2按姓名查找:");
scanf("%d",&i);
if(i == 1)
{
printf("请输入要查找的学号:");
scanf("%s",num);
for(j = 0; j <len; j++)
{
if(strcmp(p[j].xuehao,num) == 0)
{
flat ++;
break;
}
}
if(!flat)
{
printf("学号输入有误!\n");
}
else
{
printf("学号:%s,姓名:%s,性别:%s,年龄:%d,得分:%.2f\n",p[j].xuehao,p[j].name,p[j].sex,p[j].age,p[j].score);
}
}
else if(i == 2)
{
flat = 0;
printf("请输入要查找的姓名:");
scanf("%s",name1);
for(j = 0; j <len; j++)
{
if(strcmp(p[j].name,name1) == 0)
{
flat ++;
printf("学号:%s,姓名:%s,性别:%s,年龄:%d,得分:%.2f\n",p[j].xuehao,p[j].name,p[j].sex,p[j].age,p[j].score);
break;
}
}
if(!flat)
{
printf("姓名输入有误!\n");
}
}
}
/*int main(void)
{
int len;
int c;
// char c;
// char xuehao11[1024];
// struct Student *p;
//静态构造结构数组
struct Student p[1024];
printf("请输入学生的个数:");
scanf("%d",&len);
// p = (struct Student*)malloc(sizeof(struct Student)*len);动态构造一个结构数组
scanfstudent(p,len);
Sort(p,len);
printfstudent(p,len);
do
{
struct Student st;
printf("\n请输入增加的学生的信息:\n");
printf("学号:");
scanf("%s",st.xuehao);
printf("姓名:");
scanf("%s",st.name);
printf("性别:");
scanf("%s",st.sex);
printf("年龄:");
scanf("%d",&st.age);
printf("得分:");
scanf("%f",&st.score);
// serch(p,len);
printf("\n");
//printf("请输入要删除的学生的学号:");
printf("\n");
//scanf("%s",xuehao11);
add(p,&st,&len);
// del(p,xuehao11,&len);删除一个学生的信息
printfstudent(p,len);
printf("是否继续添加?\n1:是\n2不添加\n");
scanf("%d",&c);
}
while(c==1);
}*/
int main(void)
{
int n;
struct Student p[1024];
int len = 0;
while(1)
{
menu(&n);
switch(n)
{
case 1:createdata(p,&len);break;
case 2:add(p,&len);break;
case 3:del(p,&len);break;
case 4:serch(p,len);break;
case 5:Sort(p,len);break;
case 6:printf("谢谢您的使用!\n\n");break;
default:printf("输入有误重新输入!\n\n");break;
}
if(n == 6)
break;
}
return 0;
}
㈢ 谁会C语言课设设计:健身俱乐部会员卡管理系统
#include
#include
#include
#include
typedef struct
{
char No[20];
char name[20];
char sex[20];
char birth[20];
char title[20];
char pay[20];
} INFO;
INFO *s=NULL;
int count=0;
char work_path[100];
char data_path[100];
void GetData() //文件获取数据
{
count=GetPrivateProfileInt("INFO","COUNT",0,data_path);
if(s!=NULL)
{
free(s);
}
count++;
s=(INFO*)malloc(sizeof(INFO)*count);
char t[5];
int i;
for(i=0;i<count-1;i++)
{
memset(t,'\0',5);
sprintf(t,"%d",i+1);
GetPrivateProfileStringA(t,"No","",s[i].No,20,data_path);
GetPrivateProfileStringA(t,"name","",s[i].name,20,data_path);
GetPrivateProfileStringA(t,"sex","",s[i].sex,20,data_path);
GetPrivateProfileStringA(t,"birth","",s[i].birth,20,data_path);
GetPrivateProfileStringA(t,"title","",s[i].title,20,data_path);
GetPrivateProfileStringA(t,"pay","",s[i].pay,20,data_path);
}
memset(s[count-1].No,'\0',20);
}
void WriteData() //写数据文件
{
char t[5]={'\0'};
sprintf(t,"%d",count);
WritePrivateProfileString("INFO","COUNT",t,data_path);
int i;
for(i=0;i<count;i++)
{
if(strcmp(s[i].No,"")==0)
{
continue;
}
memset(t,'\0',5);
sprintf(t,"%d",i+1);
WritePrivateProfileStringA(t,"No",s[i].No,data_path);
WritePrivateProfileStringA(t,"name",s[i].name,data_path);
WritePrivateProfileStringA(t,"sex",s[i].sex,data_path);
WritePrivateProfileStringA(t,"birth",s[i].birth,data_path);
WritePrivateProfileStringA(t,"title",s[i].title,data_path);
WritePrivateProfileStringA(t,"pay",s[i].pay,data_path);
}
}
void Input() //产品信息录入
{
char sel;
while(1)
{
system("cls");
printf("请输入职工编号: ");
scanf("%s",s[count-1].No);
printf("请输入职工姓名: ");
scanf("%s",s[count-1].name);
printf("请输入职工性别: ");
scanf("%s",s[count-1].sex);
printf("请输入月: ");
scanf("%s",s[count-1].birth);
printf("请输入职工职称: ");
scanf("%s",s[count-1].title);
printf("请输入职工工资: ");
scanf("%s",s[count-1].pay);
WriteData();
GetData();
printf("\n产品录入功!\n\n继续? (y/n) : ");
fflush(stdin);
scanf("%c",&sel);
if(sel=='y' || sel=='Y')
{
continue;
}
else
{
break;
}
}
}
void Display() //产品信息浏览
{
system("cls");
int i;
if(strcmp(s[0].No,"")==0)
{
printf("没数据!\n");
fflush(stdin);
getchar();
return;
}
for(i=0;i<count-1;i++)
{
printf("%d/%d :\n",i+1,count-1);
printf("职工编号: %s\n",s[i].No);
printf("职工姓名: %s\n",s[i].name);
printf("职工性别: %s\n",s[i].sex);
printf("月: %s\n",s[i].birth);
printf("职工职称: %s\n",s[i].title);
printf("职工工资: %s\n\n",s[i].pay);
}
fflush(stdin);
getchar();
}
void Sort() //排序
{
int i,j;
INFO t;
if(count>2)
{
int a,b;
for(i=0;i<count-1-1;i++)
{
for(j=i;j<count-1-1;j++)
{
a=atoi(s[j].No);
b=atoi(s[j+1].No);
if(a>b)
{
t=s[j];
s[j]=s[j+1];
s[j+1]=t;
}
}
}
}
printf("\n\n排序功!");
fflush(stdin);
getchar();
}
void Search() //查找
{
system("cls");
printf("请输入要查询职工编号: ");
char temp[20];
fflush(stdin);
scanf("%s",&temp);
int find=0;
printf("\n");
int i;
for(i=0;i<count-1;i++)
{
if(strcmp(temp,s[i].No)==0)
{
printf("职工编号: %s\n",s[i].No);
printf("职工姓名: %s\n",s[i].name);
printf("职工性别: %s\n",s[i].sex);
printf("月: %s\n",s[i].birth);
printf("职工职称: %s\n",s[i].title);
printf("职工工资: %s\n\n",s[i].pay);
find++;
}
}
if(find==0)
{
printf("No Infor!\n");
}
else
{
printf("共找 %d 条信息\n",find);
}
fflush(stdin);
getchar();
}
void Del()
{
system("cls");
printf("请输入要删除职工编号: ");
char temp[20]={'\0'};
scanf("%s",temp);
int i,find=0;
for(i=0;i<count-1;i++)
{
if(strcmp(temp,s[i].No)==0)
{
find=1;
if(count==1)
{
count=0;
strcpy(s[i].No,"");
break;
}
INFO t;
int j;
for(j=i;j<count-1-1;j++)
{
s[j]=s[j+1];
}
count-=2;
break;
}
}
if(find==1)
{
WriteData();
printf("\n\n已删除!");
GetData();
}
else
{
printf("\n\n未找该信息!");
}
fflush(stdin);
getchar();
}
void Menu() //主菜单
{
int sel;
while(1)
{
system("cls");
printf("1. 职工信息录入\n");
printf("2. 全部信息浏览\n");
printf("3. 按职工号查寻\n");
printf("4. 职工信息删除\n");
printf("5. 职工编号排序\n");
printf("6. 退\n\n");
printf("请输入(1-6): ");
scanf("%d",&sel);
switch(sel)
{
case 1:
Input();
break;
case 2:
Display();
break;
case 3:
Search();
break;
case 4:
Del();
break;
case 5:
Sort();
break;
case 6:
exit(0);
default:
continue;
break;
}
}
}
int main()
{
getcwd(work_path,100); //取前程序绝路径
strcpy(data_path,work_path);
strcat(data_path,"\\data.dat"); //设置数据文件绝路径
GetData();
Menu();
return 0;
}
㈣ C语言课程设计 要求编写一段程序 题目是《运动会分数统计系统》
不错,我会把题弄回家试试的.
你要等我,等我哦,我一定会回来的.
ka~~~
导演,我的二分是不是到手了?
(tt)p
开心一下,有机会大家研究研究.
㈤ 来一个C语言课程设计大作品
已写好,已发你邮箱[email protected],我的邮箱是[email protected].这是部分运行截图:
㈥ C语言课程设计求解释。。。
#include <stdio.h>
struct student //定义一个结构体
{
char no[20];
char name[20];
float math,english,computer;
double total;
double avr;
};
struct student stu[50]; //定义stu结构体数组
//以下四个是函数声明语句
struct student input(); //学生数据输入函数,返回值是结构体
void display(struct student stu[],int count); //显示函数
void sort(struct student stu[],int count); //排序函数
void stat(struct student stu[],int count); //成绩分析函数
void main()
{
int count;
char ch;
ch='y';
printf("请按以下格式输入学生信息(可用Tab键对齐):");
printf("\n");
count=0;
while ((ch=='y') || (ch=='Y'))
{
stu[count]=input(); //调用input函数输入一个学生的信息给stu数组
count++; //这个循环是当ch为y时添加学生成绩信息
printf("\n是否继续?(按Y继续,其它结束)");
scanf(" %c",&ch);
}
printf("\n学生信息如下:");
sort(stu,count); //调用排序函数进行排序
display(stu,count); //显示排序后的结构
stat(stu,count); //调用分析函数显示分析结果
system("PAUSE"); //我这里加了一个暂停语句,可以把结果停留在输出窗口观看
}
struct student input()
{ int i;
struct student studn;
while(1) //这个循环是当有学号重复时让用户重复输入
{printf("\n学号\t\t姓名\t数学\t英语\t计算机\n");
while(1)
{scanf("%s %s %f %f %f",&studn.no,studn.name,&studn.math,&studn.english,&studn.computer);
if((studn.math>0)&&(studn.math<=100)&&(studn.english>0)&&(studn.english<=100)&&(studn.computer>0)&&(studn.computer<=100))break;
printf("输入的成绩不符合要求,请重新输入\n");
fflush(stdin);}
for(i=0;i<50;i++) //这个循环是查找stu数组中有没有和输入的学号有重复的信息,
if(strcmp(stu[i].no,studn.no)==0)break; //如果有就用break跳出for循环
if(i==50)break; //如果for循环后i值等于50,表示该学号没有重复,用break跳出while循环
printf("输入的学号已存在,请重新输入\n");
}
studn.total=studn.math+studn.english+studn.computer; //计算该学生的总分
studn.avr=studn.total/3.0; //计算该学生的平均分
return studn;
}
void display(struct student stu[],int count)
{ //这个函数很简单,用循环把stu数组的内容输出来
int i;
printf("\n排名\t学号\t\t姓名\t数学\t英语\t计算机\t总分\t平均分");
printf("\n");
for(i=0;i<count;i++)
{
printf("%d",i+1);
printf("\t%s",stu[i].no);
printf("\t%s",stu[i].name);
printf("\t%.1f",stu[i].math);
printf("\t%.1f",stu[i].english);
printf("\t%.1f",stu[i].computer);
printf("\t%.2f",stu[i].total);
printf("\t%.2f",stu[i].avr);
printf("\n");
}
}
void sort(struct student stu[],int count)
{ //这个函数是把stu数组进行排序
int i,j;
struct student t;
for(i=0;i<count;i++) //排序方法是冒泡排序
for(j=0;j<count-i-1;j++)
{
if(stu[j].avr<stu[j+1].avr) //按每个学生的3科平均分大小有高到低排序
{
t=stu[j];
stu[j]=stu[j+1];
stu[j+1]=t;
}
}
}
void stat(struct student stu[],int count)
{ //这个是分数段处理函数
int i;
double avr=0;
for(i=0;i<count;i++) //这个循环是统计全班3科成绩平均分的班的总平均分
avr += stu[i].avr;
avr /= count;
printf("全班平均分为%.2f,\n在平均分以上的同学有:\n",avr);
for(i=0;i<count;i++) //这个循环的功能上面printf语句说得很清楚了
if(stu[i].avr>=avr)
{
printf("%s\t",stu[i].name);
}
printf("\n");
}
㈦ c语言课程设计
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。
我的题目是文章处理系统的设计,对于我们这些新手来说,这是很大的考验,我一千次一万次的问自己,怎么才能找到课堂所学与实际应用的最佳结合点?怎么才能让自己的程序在篇幅上简单,在使用价值上丰富?怎样让自己的业余更靠近专业?怎样让自己的计划更具有序性,而不会忙无一用?机会是老师,学校,以及无数代教育工作者给的,而能力是自己的,耐性是需要的。经过自己的琢磨,听取了师姐,师兄们的建议,还查阅了很多书籍,才做到了心中有数,才了解了C语言课程设计的真正用意——培养自学能力,养成程序编辑的好习惯。我从来不相信车到山前必有路的说法,认为那只是懒惰者自寻懒惰的借口,我要积极,要把握,要努力。
回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在郭老师的辛勤指导下,终于游逆而解。同时,在郭老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢
在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。在本次实践中,给我印象最为深刻的是在文件删除程序的编译过程中,先有我的各个子程序都已经编辑成功,那么这最后的程序就将是我成功的关键。老天不会让我太过顺利,他在这最后的时刻设置的障碍,是要考验我的能力,他要置我于死地?在这个问题的解决上,我打了退堂鼓,我不能忍受长时间的无功而反,时间正在消磨我的意志。没有了柳暗花明的一天,那么我怎么能说经受住了考验?谢谢老师的那句话,她说:人力有所不能及,然而,人的精神是不会败倒的。我鼓起勇气,到处问,到处查资料,黄天不负有心人,在一篇文章上,终于看到了我所特别要求的函数,我实现了组合是关键的理论。不得不说这是精神的胜利,是永不言败的精神让我的程序重见天日。谢谢给我指点迷津的老师。
6月11日,我们的课程设计结束了,但是它留给我的印象是不可磨灭的。无论我以后会不会涉及到C语言程序编译的研究,我想,我至少掌握了一种系统的研究方法,我们学习的目的就在于运用,我们运用这种研究方法的时候会很多,我最后要感谢课程设计,它的确教会我很多。
另外,虚机团上产品团购,超级便宜
㈧ 一个较为典型的c语言课程设计题目:校际运动会管理系统
include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*其它说明*/
#include "string.h" /*字符串函数*/
#include "conio.h" /*屏幕操作函数*/
#include "mem.h" /*内存操作函数*/
#include "ctype.h" /*字符操作函数*/
#include "alloc.h" /*动态地址分配函数*/
struct score
{
int mingci;
char xuehao[8];
char mingzi[20];
float score[6];
}data,info[1000];
int i,j,k=0;
char temp[20],ch;
FILE *fp,*fp1;
void shuru()
{
if((fp=fopen("s_score.txt","ab+"))==NULL)
{
printf("cannot open this file.\n");
getch();exit(0);
}
for(i=0;i<=1000;i++)
{
printf("\nPlease shuru xuehao:");
gets(data.xuehao);
printf("Please shuru mingzi:");
gets(data.mingzi);
printf("Please shuru yuwen score:");
gets(temp);data.score[0]=atof(temp);
printf("Please shuru shuxue score:");
gets(temp);data.score[1]=atof(temp);
printf("Please input yingyu score:");
gets(temp);data.score[2]=atof(temp);
printf("Please shuru wuli score:");
gets(temp);data.score[3]=atof(temp);
printf("Please shur huaxue score:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];
fwrite(&data,sizeof(data),1,fp);
printf("another?y/n");
ch=getch();
if(ch=='n'||ch=='N')
break;
} fclose(fp);
}
void xianshi()
{
float s;int n;
if((fp=fopen("s_score.txt","rb+"))==NULL)
{
printf("Cannot reading this file.\n");
exit(0);
}
for(i=0;i<=1000;i++)
{
if((fread(&info[i],sizeof(info[i]),1,fp))!=1)
break;
}
printf("\nxuehao mingzi yuwen shuxue yingyu wuli huauxue zhongfen\n");
for(j=0,k=1;j<i;j++,k++)
{
info[j].mingci=k;
printf("%6s %8s %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f\n",info[j].xuehao,info[j].mingzi,info[j].score[0],info[j].score[1],info[j].score[2],info[j].score[3],info[j].score[4],
info[j].score[5]);
}
getch();
fclose(fp);
}
void xiugai()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("Cannot open this file.\n");
exit(0);
}
printf("\nPLease shuru xiugai xuehao:");
scanf("%d",&i); getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{
printf("xuehao:%s\nmingzi:%s\n",data.xuehao,data.mingzi);
printf("Please shuru mingzi:");
gets(data.mingzi);
printf("Please shuru yuwen score:");
gets(temp);data.score[0]=atof(temp);
printf("Please shuru shuxue score:");
gets(temp);data.score[1]=atof(temp);
printf("Please input yingyu score:");
gets(temp);data.score[2]=atof(temp);
printf("Please input wuli score:");
gets(temp);data.score[3]=atof(temp);
printf("Please input huaxue score:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];
} fwrite(&data,sizeof(data),1,fp1);
}
fseek(fp,0L,0);
fseek(fp1,0L,0);
while((fread(&data,sizeof(data),1,fp1))==1)
{
fwrite(&data,sizeof(data),1,fp);
}
fclose(fp);
fclose(fp1);
}
void chazhao()
{
if((fp=fopen("s_score.txt","rb"))==NULL)
{
printf("\nCannot open this file.\n");
exit(0);
}
printf("\nPLease shuru xuehao chakan:");
scanf("%d",&i);
while(fread(&data,sizeof(data),1,fp)==1)
{
j=atoi(data.xuehao);
if(i==j)
{
printf("xuehao:%s mingzi:%s\nyuwen:%f\n shuxue:%f\n yingyu:%f\n wuli:%f\n huaxue:%f\n ",data.xuehao,data.mingzi,data.score[0],data.score[1],data.score[2],data.score[3],data.score[4],data.score[5]);
}getch();
}
}
void shanchu()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("\nopen score.txt was failed!");
getch();
exit(0);
}
printf("\nPlease input ID which you want to del:");
scanf("%d",&i);getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{
printf("Anykey will delet it.\n");
getch();
continue;
}
fwrite(&data,sizeof(data),1,fp1);
}
fclose(fp);
fclose(fp1);
remove("s_score.txt");
rename("temp.txt","s_score.txt");
printf("Data delet was succesful!\n");
printf("Anykey will return to main.");
getch();
}
main()
{
while(1)
{
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移动光标*/
textcolor(YELLOW); /*设置文本显示颜色为黄色*/
textbackground(BLUE); /*设置背景颜色为蓝色*/
window(1,1,99,99); /* 制作显示菜单的窗口,大小根据菜单条数设计*/
clrscr();
printf("*************welcome to use student manage******************\n");
printf("*************************menu********************************\n");
printf("* ========================================================= * \n");
printf("* 1>shuru 2>xiugai * \n");
printf("* 3>shanchu 4>chazhao * \n");
printf("* 5>xianshi 6>exit * \n");
printf("* * \n");
printf("* --------------------------------------------------------- * \n");
printf(" Please input which you want(1-6):");
ch=getch();
switch(ch)
{
case '1':shuru();break;
case '2':xiugai(); break;
case '3':shanchu(); break;
case '4':chazhao(); break;
case '5':xianshi(); break;
case '6':exit(0);
default: continue;
}
}
㈨ C语言课程设计题目
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LEN sizeof(Student)
typedef struct student
{
int num;
char name[20];
int score[4];
int sum;
struct student *next;
}Student;
int n;
Student *cin(void);
Student *sort_1(Student *head,int);
void sort_2(Student *head);
void print(Student *head);
Student *sort_all(Student *head);
void find(Student *head);
Student *add_new(Student *head);
Student *cin()
{
int flag;
Student *head,*p1,*p2;
n=0;
head=(Student *)malloc(LEN);
p2=head;
printf("\n请输入第%d名学生的学号,学号为0表示结束输入:",n+1);
scanf("%d",&flag);
while(getchar()!='\n');
for(;flag;)
{
n++;
p1=(Student *)malloc(LEN);
p1->num=flag;
printf("请输入第%d名学生的姓名:",n);
scanf("%s",p1->name);
printf("请输入第%d名学生的语文成绩:",n);
scanf("%d",&p1->score[0]);
printf("请输入第%d名学生的数学成绩:",n);
scanf("%d",&p1->score[1]);
printf("请输入第%d名学生的英语成绩:",n);
scanf("%d",&p1->score[2]);
printf("请输入第%d名学生的计算机成绩:",n);
scanf("%d",&p1->score[3]);
p1->sum=p1->score[0]+p1->score[1]+p1->score[2]+p1->score[3];
p2->next=p1;
p2=p1;
printf("\n请输入第%d名学生的学号,没有此学生则输入0表示结束:",n+1);
scanf("%d",&flag);
}
p2->next=NULL;
printf("\n\n");
return head;
}
Student *sort_all(Student *head)
{
int choose;
for(;;)
{
printf("\n\t\t# # # # # 学生成绩统计排序 # # # #\n");
printf("\t\t#\t1.按学生学号排序\t #\n");
printf("\t\t#\t2.按学生总分排序\t #\n");
printf("\t\t#\t3.按学生语文成绩排序\t #\n");
printf("\t\t#\t4.按学生数学成绩排序\t #\n");
printf("\t\t#\t5.按学生英语成绩排序\t #\n");
printf("\t\t#\t6.按学生计算机成绩排序\t #\n");
printf("\t\t#\t7.单科高分及均分\t #\n");
printf("\t\t#\t8.显示当前学生成绩\t #\n");
printf("\t\t#\t0.返回上一级菜单\t #\n");
printf("\t\t# # # # # 由himpo友情提供# # # # #\n\n");
printf("请输入你要执行的操作:");
scanf("%d",&choose);
while(getchar()!='\n');
switch(choose)
{
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:head=sort_1(head,choose);break;
case 7:print(head);sort_2(head);break;
case 8:print(head);break;
case 0:return head;
default: printf("\n\n您的输入有误!请重新输入:\n\n");break;
}
}
}
Student *sort_1(Student *head,int choose)
{
Student *p1,*p2=head->next,*pm,*px;
Student mid;
if (!p2) return head;
for(p1=p2;p1->next!=NULL;p1=p1->next)
{
pm=p1;
for(p2=p1->next;p2!=NULL;p2=p2->next)
switch(choose)
{
case 1:if (pm->num>p2->num) pm=p2;break;
case 2:if (pm->sum<p2->sum) pm=p2;break;
case 3:if (pm->score[0]<p2->score[0]) pm=p2;break;
case 4:if (pm->score[1]<p2->score[1]) pm=p2;break;
case 5:if (pm->score[2]<p2->score[2]) pm=p2;break;
case 6:if (pm->score[3]<p2->score[3]) pm=p2;break;
}
if (pm!=p1)
{
mid=*pm;
*pm=*p1;
*p1=mid;
px=pm->next;
pm->next=p1->next;
p1->next=px;
}
}
printf("\n排序后的成绩表为:\n");
print(head);
return head;
}
void sort_2(Student *head)
{
Student *p=head->next;
int max_1,max_2,max_3,max_4,min_1,min_2,min_3,min_4;
int max_sum,min_sum;
int sum_1=0,sum_2=0,sum_3=0,sum_4=0;
float aver_1,aver_2,aver_3,aver_4,aver_sum;
if (!p) return;
max_1=min_1=p->score[0];max_2=min_2=p->score[1];
max_3=min_3=p->score[2];max_2=min_2=p->score[3];
max_sum=min_sum=p->sum;
for(;p;p=p->next)
{
if (max_1<p->score[0]) max_1=p->score[0];
else if (min_1>p->score[0]) min_1=p->score[0];
if (max_2<p->score[1]) max_2=p->score[1];
else if (min_2>p->score[1]) min_2=p->score[1];
if (max_3<p->score[2]) max_3=p->score[2];
else if (min_3>p->score[2]) min_3=p->score[2];
if (max_4<p->score[3]) max_4=p->score[3];
else if (min_4>p->score[3]) min_4=p->score[3];
if (max_sum<p->sum) max_sum=p->sum;
else if (min_sum>p->sum) min_sum=p->sum;
sum_1+=p->score[0];sum_2+=p->score[1];sum_3+=p->score[2];sum_4+=p->score[3];
}
aver_1=1.0*sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n;aver_4=1.0*sum_4/n;
aver_sum=aver_1+aver_2+aver_3+aver_4;
printf("总共%d名学生,具体数据为:\n",n);
printf("语文最高分为%d,最低分为%d,平均分为%.2f\n",max_1,min_1,aver_1);
printf("数学最高分为%d,最低分为%d,平均分为%.2f\n",max_2,min_2,aver_2);
printf("英语最高分为%d,最低分为%d,平均分为%.2f\n",max_3,min_3,aver_3);
printf("计算机最高分为%d,最低分为%d,平均分为%.2f\n",max_4,min_4,aver_4);
printf("总分最高分为%d,最低分位%d,平均分为%.2f\n",
max_sum,min_sum,aver_sum);
}
void find(Student *head)
{
Student *p;
int choose,fnum;
char tem[20];
if (n==0) {printf("\n当前系统没有任何学生数据,您就别费劲了!\n ");return;}
for(;;)
{
printf("\n请输入您要查询学生的方式:\n\n");
printf("1、按学号查询;2、按姓名查询;0、我不查询了。\n\n");
printf("请选择:");
scanf("%d",&choose);
while(getchar()!='\n');
if (choose==1)
{
printf("\n请输入你要查询的学生的学号,输入0退出学号查询:");
scanf("%d",&fnum);
for(;fnum;)
{
for(p=head->next;p!=NULL&&p->num!=fnum;p=p->next);
if (!p)
{
printf("\n\n找不到你要查询的学号,请重新输入,输入0表示结束:");
scanf("%d",&fnum);
}
else if (p->num==fnum)
{
printf("\n学号为%d学生的数据为:\n",p->num);
printf("学号\t姓名\t语文成绩 数学成绩 英语成绩 计算机\
成绩 总分\n");
printf("%d\t%s\t %d %d %d %d \
%d\n",p->num,
p->name,p->score[0],p->score[1],p->score[2],p->score[3],
p->sum);
printf("\n\n请输入你还要查询的学生的学号,输入0表示不按学\
号查询了:");
scanf("%d",&fnum);
}
}
}
else if (choose==2)
{
printf("\n请输入你要查询的学生的姓名,输入0退出姓名查询:");
scanf("%s",tem);
for(;strcmp(tem,"0");)
{
for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);
if (!p)
{
printf("\n\n找不到你要查询的姓名,请重新输入,输入0表\
示结束:");
scanf("%s",tem);
}
else if (!strcmp(p->name,tem))
{
printf("\n姓名为%s学生的数据为:\n",p->name);
printf("学号\t姓名\t语文成绩 数学成绩 英语成绩 \
计算机成绩 总分\n");
printf("%d\t%s\t %d %d %d \
%d %d\n",
p->num,p->name,p->score[0],p->score[1],p->score[2],
p->score[3],p->sum);
printf("\n\n请输入你还要查询的学生的姓名,输入0表\
示不按姓名查询了:");
scanf("%s",tem);
}
}
}
else if (choose==0) {printf("\n你选择了不查询!\n");break;}
else {printf("\n你以其他方式选择了不查询!\n");break;}
}
}
Student *add_new(Student *head)
{
Student *p;
int flag;
printf("\n\n请输入你要新加入学生的学号,学号为0表示结束输入:");
scanf("%d",&flag);
while(getchar()!='\n');
for(;flag;)
{
p=(Student *)malloc(LEN);
p->num=flag;
printf("请输入新加入学生的姓名:",n);
scanf("%s",p->name);
printf("请输入新加入学生的语文成绩:",n);
scanf("%d",&p->score[0]);
printf("请输入新加入学生的数学成绩:",n);
scanf("%d",&p->score[1]);
printf("请输入新加入学生的英语成绩:",n);
scanf("%d",&p->score[2]);
printf("请输入第%d名学生的计算机成绩:",n);
scanf("%d",&p->score[3]);
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3];
p->next=head->next;
head->next=p;
n++;
printf("\n请输入还要加入学生的学号,没有此学生则输入0表示结束:");
scanf("%d",&flag);
}
head=sort_1(head,1);
printf("加入后的成绩表为:\n");
print(head);
return head;
}
void print(Student *head)
{
Student *p=head->next;
if (!p) {printf("\n\n此系统目前没有任何学生数据!\n\n\n");return;}
printf("此系统目前共计学生%d名:\n",n);
printf("**************************学生成绩统计一览************************\
*****\n");
printf("学号\t姓名\t语文成绩 数学成绩 英语成绩 计算机成绩 总分\n");
for(;p;p=p->next)
printf("%d\t%s\t %d %d %d %d %d\n",
p->num,p->name,
p->score[0],p->score[1],p->score[2],p->score[3],
p->sum=p->score[0]+p->score[1]+p->score[2]+p->score[3]);
printf("************************此软件由himpo友情提供*************************\
*\n\n");
}
int main()
{
Student *head;
int choose,i;
head=(Student *)malloc(LEN);
head->next=NULL;
for(;;)
{
printf("\n\t\t* * * * * 学生成绩管理系统 * * * *\n");
printf("\t\t*\t1.学生数据键盘录入\t *\n");
printf("\t\t*\t2.学生数据统计排序\t *\n");
printf("\t\t*\t3.查询学生数据\t\t *\n");
printf("\t\t*\t4.插入学生数据\t\t *\n");
printf("\t\t*\t5.显示当前成绩表\t *\n");
printf("\t\t*\t0.退出成绩管理系统\t *\n");
printf("\t\t* * * * * 由himpo友情提供* * * * *\n\n");
printf("\n请输入你要执行的操作:");
scanf("%d",&choose);
while(getchar()!='\n');
switch(choose)
{
case 1:printf("\n\t\t\t\t****注意****");
printf("\n\n 此选项将会建立新的学生数据系统 ,原来的数据将\
不再存在,你确信要删除原来的数据并建立新的数据系统么?\n\n");
printf("1、建立新的数据系统;0、放弃建立新的数据系统。\n\n");
printf("请选择:");
scanf("%d",&i);
if (i==1) {head=cin();print(head);break;}
else if (i==0)
{
printf("\n你选择了放弃建立新的数据系统!\n");
break;
}
else {
printf("\n你做出别的选择,当作放弃建立!\n");
break;
}
case 2:head=sort_all(head);break;
case 3:find(head);break;
case 4:head=add_new(head);
case 5:print(head);break;
case 0:system("pause");return 0;
default: printf("\n\n您的输入有误!请重新输入:\n\n");break;
}
}
}