c语言课程设计 学生信息管理系统模拟
发布网友
发布时间:2022-04-22 17:18
我来回答
共3个回答
热心网友
时间:2022-06-03 15:59
展开1全部我发给你。
#include "stdio.h"
#include "windows.h"
#define NUM 100
struct node
{
int stuNO; //学号
char name[10]; //姓名
char sex[2]; //性别
int age; //年龄
int Chinese; //语文成绩
int English; //英语成绩
int Computer; //电脑成绩
int Math; //数学成绩
int total; //总分
int average; //平均分
}stu[NUM];
struct node temp; //临时结构体变量
int c=0; //c是结构体数组的下标 在此为全局变量
void menu(); //定义menu菜单
void input(); //插入数据函数
void sort(); //排序
void find(); //查找(按学号或姓名查找)
void del(); //删除纪录
void output(); //输出学生的成绩
void error(); //错误提示
void insert(); //插入数据
void print(int i); //输出具体信息
void main()
{
menu();
}
void menu()
{
int select; //选择标志(1--7间)
system("cls");
printf("\t\t\t学员成绩管理系统\n");
printf("***************************\n");
printf("* * \n");
printf("*[1]输入数据 \n");
printf("*[2]查找数据 \n");
printf("*[3]插入数据 \n");
printf("*[4]删除数据 \n");
printf("*[5]打印数据 \n");
printf("*[6]数据排序 \n");
printf("*[7]退出 \n");
printf("* * \n");
printf("***************************\n");
printf("请输入你的选项(1--7):");
scanf("%d",&select);
switch(select) //判断选择
{
case 1:input();break;
case 2:find();break;
case 3:insert();break;
case 4:del();break;
case 5:output();break;
case 6:sort();break;
case 7:exit(0);break;
default:error();break;
}
}
void input()
{
int i; //循环变量
system("cls"); //清屏
printf("请输入你要输入的人数:");
scanf("%d",&c); //下标C保存多少个学生
c--;
if(c>NUM)
{
printf("最多输入%d个学生\n",NUM);
printf("按任意键返回");
getchar();
getchar();
input(); //递归调用
}
for(i=0;i<=c;i++) //NUM是一个常量
{
printf("\n第%d个学生的学号:",i+1);
scanf("%d",&stu[i].stuNO);
printf("第%d个学生的姓名:",i+1);
scanf("%s",stu[i].name);
printf("第%d个学生的性别:",i+1);
scanf("%s",stu[i].sex);
printf("第%d个学生的年龄:",i+1);
scanf("%d",&stu[i].age);
printf("第%d个学生的语文成绩:",i+1);
scanf("%d",&stu[i].Chinese);
printf("第%d个学生的英语成绩:",i+1);
scanf("%d",&stu[i].English);
printf("第%d个学生的电脑成绩:",i+1);
scanf("%d",&stu[i].Computer);
printf("第%d个学生的数学成绩:",i+1);
scanf("%d",&stu[i].Math);
stu[i].total=stu[i].Chinese+stu[i].English+stu[i].Computer+stu[i].Math;
stu[i].average=stu[i].total/4;
}
printf("\n按回车键返回主菜单……\n");
getchar();
getchar();
menu();
}
void sort()//排序
{
int i,j;
struct node temp;
for(i=0;i<c;i++)
{
for(j=i+1;j<=c;j++)
{
if(stu[i].average>stu[j].average)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}
menu();
}
void find()
{
int xuehao; //学号
char name[10]; //姓名
int flag; //选择标志
int i; //循环变量
system("cls"); //清屏
printf("按学号查找[1]:\n");
printf("按姓名查找[2]:\n");
printf("请选择:");
scanf("%d",&flag);
if(flag==1)
{
printf("请输入你要查找的学号:");
scanf("%d",&xuehao);
for(i=0;i<c;i++)
{
if(stu[i].stuNO==xuehao)
{
printf("\n==**==**==** %s的成绩 **==**==**==**==**\n",stu[i].name);
printf("学号:%d\t 性别:%s\t 年龄:%d\n\n",stu[i].stuNO,stu[i].sex,stu[i].age);
printf("语文成绩:%d\n",stu[i].Chinese);
printf("数学成绩:%d\n",stu[i].Math);
printf("英语成绩:%d\n",stu[i].English);
printf("电脑成绩:%d\n",stu[i].Computer);
printf("总分:%d\t平均分:%d\n",stu[i].total,stu[i].average);
}
}
}
else if(flag==2)
{
printf("请输入你要查找的姓名:");
scanf("%s",name);
for(i=0;i<c;i++)
{
if(strcmp(stu[i].name,name)==0)
{
printf("\n==**==**==** %s的成绩 **==**==**==**==**\n",stu[i].name);
printf("学号:%d\t 性别:%s\t 年龄:%d\n\n",stu[i].stuNO,stu[i].sex,stu[i].age);
printf("语文成绩:%d\n",stu[i].Chinese);
printf("数学成绩:%d\n",stu[i].Math);
printf("英语成绩:%d\n",stu[i].English);
printf("电脑成绩:%d\n",stu[i].Computer);
printf("总分:%d\t平均分:%d\n",stu[i].total,stu[i].average);
}
}
}
else
{
printf("选择的范围(1或2),请重新输入……");
find();
}
printf("\n按回车键返回主菜单……\n");
getchar();
getchar();
menu();
}
void del()//删除的功能
{
int n,j;
printf("请输入学号:\n");
scanf("%d",&n);
for( j=0;j<=c;j++)
{
if (stu[j].stuNO==n)
{
int i=j;
while(i++!=c)
stu[i-1]=stu[i];
}
}
--c;
menu();//返回主菜单
}
void output() //输出数据
{
int i; //循环变量
system("cls"); //清屏
for(i=0;i<=c;i++)
{
print(i);
}
printf("\n按回车键返回主菜单……\n");
getchar();
getchar();
menu();
}
void error()
{
system("cls"); //清屏
printf("输入有误,选择的范围是1--7:\n");
printf("\n按回车键继续……\n");
getchar();
getchar();
system("cls"); //清屏
menu();
}
void insert() //插入的学生信息
{
system("cls");
printf("请插入要插入学生的信息:\n");
printf("请输入学生学号:");
scanf("%d",&temp.stuNO);
printf("请输入学生姓名:");
scanf("%s",temp.name);
printf("请输入学生性别:");
scanf("%s",temp.sex);
printf("请输入学生年龄:");
scanf("%d",&temp.age);
printf("请输入学生语文成绩:");
scanf("%d",&temp.Chinese);
printf("请输入学生英语成绩:");
scanf("%d",&temp.English);
printf("请输入学生计算机成绩:");
scanf("%d",&temp.Computer);
printf("请输入学生数学成绩:");
scanf("%d",&temp.Math);
temp.total=temp.English+temp.Chinese+temp.Computer+temp.Math;
temp.average=temp.total/4;
if(c<NUM)
{
if(c==0)
{
stu[c]=temp;
sort();
}
else
{
c++;
stu[c]=temp;
sort();
}
}
menu();
}
void print(int i) //打印学生成绩信息
{
printf("\n==**==**==** %s的成绩 **==**==**==**==**\n",stu[i].name);
printf("学号:%d\t 性别:%s\t 年龄:%d\n\n",stu[i].stuNO,stu[i].sex,stu[i].age);
printf("语文成绩:%d\n",stu[i].Chinese);
printf("数学成绩:%d\n",stu[i].Math);
printf("英语成绩:%d\n",stu[i].English);
printf("电脑成绩:%d\n",stu[i].Computer);
printf("总分:%d\t平均分:%d\n",stu[i].total,stu[i].average);
}
热心网友
时间:2022-06-03 15:59
基础的话什么都不用。往深学需要英语 主要为了看外文书籍和代码注释。还需要数据结构和操作系统的知识。当然要想写出一段高效的代码 还需要离散数学,计算机算法的知识。
看书就看下面文章吧
这是以前看到的一篇文章,感觉很好。不过里面很多说都*了上网慢慢找吧
程序员之路——如何学习C语言并精通C语言
程序员之路——如何学习C语言
学习C语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通C语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。
一、要读就读好书,否则不如不读
所有初学者面临的第一个问题便是:如何选择教材。好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会帮你指定一本很差劲的C语言课本;而幸运的是,你还可以再次选择。
大名鼎鼎的谭浩强教授出了一本《C语言程序设计》,据说发行量有超过400万,据我所知,很多学校都会推荐这本书作为C语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以百度一下:)
Kernighan和Ritchie的《The C Programming Language》(中译名《C程序设计语言》)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准C语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本《C语言参考手册》是十分必要的。《C语言参考手册》就是《C Reference Manual》,是C语言标准的详细描述,包括绝大多数C标准库函数的细节,算得上是最好的标准C语言的工具书。顺便提一句,最新的《C程序设计语言》是根据C89标准修订的,而《C语言参考手册》描述的是C99标准,二者可能会有些出入,建议按照C99标准学习。还有一本《C和指针》,写得也是相当地不错,英文名是《Pointers on C》,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过C语言,有那么一些C语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C语言便不再神秘。
如果你已经啃完了一本C语言教材,想要更进一步,那么有两本书你一定要看。首先是《C Traps and Pitfalls》(中译名《C陷井与缺陷》),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多C语言的缺陷都已被改进,不过能够了解一些历史也不是什么坏事。然后你可以挑战一下《Expert C Programming》(中译名《C专家编程》),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通C语言”了。
切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。
二、Unix/Linux还是Windows,这是个很大的问题
不同的编程环境会造就出不同思维的程序员。Windows的程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更加钟爱Makefile与控制台。显而易见,集成开发环境更容易上手,在Windows上学习C语言,只需要会按几个基本的Visutal C++工具栏按钮就可以开始写Hello, World!了,而在Unix下,你需要一些控制台操作的基本知识。有人也许认为Unix的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows的基本操作,而为了学习C语言去专门装一个Unix系统,似乎有点不划算。
对于一个只懂得Windows基本操作、连DOS是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重要的。用C语言写一个小程序远比学习ls、cat等命令有趣,况且我们要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile的写法等等等等。
所以我建议初学者应该以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作为主要的学习环境,而且千万不要在IDE的使用技巧上过多纠缠,因为今后你一定要转向Unix环境的。Visual C++ 6.0使用很方便,调试也很直观,但其默认的编译器对C标准的支持并不好,而Dev C++使用gcc编译器,对C99的标准都支持良好。使用顺带提一下,很多大学的C语言课程还在使用Turbo C 2.0作为实验环境,这是相当不可取的,原因其一是TC 2.0对C标准几乎没有支持,其二是TC 2.0编译得到的程序是16位的,这对今后理解32位的程序会造成极大的困扰(当然,用djgpp之类的东西可以使TC 2.0编译出32位程序,不过那过于复杂了)。
等你学完一本C语言的教材,你一定要转向Unix平台继续学习,几乎所有的C语言高级教程都是基于Unix平台的(比如《C专家编程》)。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于Windows平台的思考方式,但是这种痛苦是值得的。Unix与C是共生的,Unix的思考方式和习惯更加符合C语言的思考方式和习惯。在Unix下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格
归结起来就是一句话:初学C语言,建议使用Windows系统和集成开发环境,在准备向“高手”方向努力时,请先转向Unix平台。
三、万事俱备,你就是东风
书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。
学习C语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。
例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。
也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富。以我自己举例,阅读《Windows核心编程》时(我只阅读了3/4的内容),除了抄书上的代码,还自己写了很多例子,一共有5574行(用unix下的wc工具统计),时隔多日,我早已记不清Windows的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。
仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习C语言,你还要具体情况具体分析。
热心网友
时间:2022-06-03 16:00
跟别人问重复了,你们难道是一个老师教的啊?
网上很多类似的,你参考下:
#include <stdio.h>
#include <string.h> struct student {
char name[30];
float math;
float chinese;
float english;
float average;
};
int MenuChoice(void);
int EnterAccount(void);
void Enter(struct student *fst);
void Amend(struct student *src);
void Delete(struct student *next);
void Print(struct student *out);
main()
{
struct student one[100] = , *look = one;
int menu, t;
while ((menu = MenuChoice()) != 0)
if (menu >= 1 && menu <= 4 && (t = EnterAccount())) {
look = one + t;
switch (menu) {
case 1:
Enter(look);
break;
case 2:
if (strcmp(look->name, ""))
printf("学号:%d\n姓名: %s\n语文成绩: %.1f\n数学成绩:%.1f\n英语成绩: %f\n平均"成绩:%.1f\n",
t, look->name, look->chinese, look->math, look->english, look->average);
else
printf("对不起,该学号不存在!\n");
break;
case 3:
Amend(look);
break;
case 4:
Delete(look);
break;
}
}
else if (menu == 5)
Print(one);
else
printf("错误的请求!\n");
return 0;
}
int MenuChoice(void)
{
int choice;
printf("请选择:\n"
"1 - 新建学生信息\n"
"2 - 查找学生信息\n"
"3 - 修改学生信息\n"
"4 - 删除学生信息\n"
"5 - 打印学生信息\n"
"0 - 退出\n");
scanf("%d", &choice);
return choice;
}
int EnterAccount(void)
{
int ret;
printf("请输入学号:\n");
scanf("%d", &ret);
if (ret >= 1 && ret <= 100)
return ret -1;
return 0;
}
void Enter(struct student *fst)
{
printf("请输入学生姓名、语文成绩、数学成绩、英语成绩和平均成绩\n");
scanf("%s%f%f%f%f", fst->name, &fst->chinese, &fst->math, &fst->english, &fst->average);
}
void Amend(struct student *src)
{
int t;
printf("请选择:\n"
"1 - 修改学生姓名\n"
"2 - 修改学生语文成绩\n"
"3 - 修改学生数学成绩\n"
"4 - 修改学生英语成绩\n"
"5 - 修改学生平均成绩\n");
scanf("%d", &t);
switch (t) {
case 1:
printf("请输入学生的新名字\n");
scanf("%s", src->name);
break;
case 2:
printf("请输入学生新的语文成绩\n");
scanf("%f", &src->chinese);
break;
case 3:
printf("请输入学生新的数学成绩\n");
scanf("%f", &src->math);
break;
case 4:
printf("请输入学生新的英语成绩\n");
scanf("%f", &src->english);
break;
case 5:
printf("请输入学生新的平均成绩\n");
scanf("%f", &src->average);
break;
}
}
void Delete(struct student *next)
{
strcpy(next->name, "");
next->math = next->english = next->chinese = next->average = 0.0;
}
void Print(struct student *out)
{
struct student *up;
for (up = out; out < &up[100]; out++)
if (strcmp(out->name, ""))
printf("学号:%d\n姓名: %s\n语文成绩: %.1f\n数学成绩:%.1f\n英语成绩: %.1f\n平均成绩:%.1f\n",
out-up + 1, out->name, out->chinese, out->math, out->english, out->average);
}
用C语言设计一个学生信息查询系统程序
1、首先创建一个c语言项目。然后右键头文件,创建一个Stu的头文件。2、编写头文件的代码。再将数据结构的增删改查和结构体写入头文件。3、在源文件中创建main源文件和Stu源文件。再main文件中写入int mian()代码。4、然后在mian主函数中,写入while语句无限循环。再写入Init函数。5、在Stu源文件的In...
C语言课程设计:学生学籍管理系统。有谁有代码给我做个参考吗?谢谢了...
case '2': //调用按学号查找学生信息的函数;并输出查找结果信息;long c;printf("input the number you want to find:");scanf("%ld",&c);find(c);printf("\nPress any key Continue.");getchar();break;case '3'://调用按姓名查找学生信息的函数;并输出查找结果信息;char s[20];pr...
C语言设计一个学生学籍管理系统,要求文件形式保存,且用到链表
char filename[] = "D:\\编程学习\\编程实践\\c语言课程设计1 学生信息管理\\data.txt"; //文件名,此处为简化编程,采用固定地址名称,未作输入 FILE *fp; pstu head,ptr; //创建带表头结点的空单链表head,用来存放载入信息 head = (pstu)malloc(SIZE); ptr = head; ptr->next = NULL; //加载d...
学生信息管理系统C语言编程
一、学生信息管理系统1设计内容1、用户界面2、同学信息的插入3、同学信息的删除4、同学信息的查询5、同学信息的显示6、最终的同学信息写入到文件7、退出数据要求:同学信息包括:学号... 一、学生信息管理系统1 设计内容 1、用户界面2、同学信息的插入3、同学信息的删除4、同学信息的查询5、同学信息的显示6、最终的...
c语言课程设计学籍管理系统
printf("请输入学生个数;");scanf("%d",&n);printf("请输入信息和成绩\n");printf("姓名,学号,英语,高数,C语言,体育:");printf("\n");stu p,q;p=q=(stu)malloc(sizeof(student));head=p;for(i=0;i<n;i++){ p->next=q;p=q;scanf("%s%d%d%d",q->name,&q->num,...
c语言课程设计学生成绩管理系统
printf("您好,欢迎使用学生成绩管理系统\n\n因为您是第一次使用,请输入科目名称(三科)\n\n");p=fopen("c:\\kemu.txt","w");printf("输入课程1名称:");scanf("%s",frist[0].name);fprintf(p,"%s\n",frist[0].name);printf("输入课程2名称:");scanf("%s",frist[1].name);fpr...
c语言课程设计 学生成绩管理系统
void write();/*读入信息*/ void save();/*保存stud.dat文件函数*/ void open();/*检查是否正确保存*/ void inturn (struct student c[]);/*用于对学生的信息按平均分排序的函数*/ void save2();/*将排序后的信息存入studsort.dat文件中*/ void read();/*读取studsort.dat文件文件中第...
C语言课程设计 题目11:基于结构体数组的学生成绩管理系统
{ printf("\t\t\tnot find!\n"); /*返回失败信息*/ return(n);} for(j=i;j<n-1;j++) /*删除操作*/ { strcpy(stud[j].num,stud[j+1].num);strcpy(stud[j].name,stud[j+1].name);stud[j].score=stud[j+1].score;} printf("\t\t\tDelete Successed!\n"); /*返回...
怎么用C语言作学生成绩管理系统
printf(" 学生成绩管理系统\n");printf(" ***\n");printf(" * *\n");printf(" *[1]输入数据 *\n");printf(" *[2]查找数据 *\n");printf(" *[3]
学生信息管理系统(C语言版)
用C/C++编写的学生信息管理系统,最好有课程设计的论文,如果没有的话只有做好的系统也可以,代码要求50%以上注释!最好是把整套完整系统的下载地址告诉我。万分感谢!!如果可以用的... 用C/C++编写的学生信息管理系统,最好有课程设计的论文,如果没有的话只有做好的系统也可以,代码要求50%以上注释!最好是把整套...