求c语言程序成绩管理系统代码。各路大哥大姐帮帮忙。谢谢
没人回答我来回答吧!
下面程序是我的作业,应要求不同,我的函数明和你的不同,自己改下就OK 了!
改起来也很简单的!
#ifndef H_STUDENT_HH /xxx如果没有定义xxx/
#define H_STUDENT_HH /xxx定义xx/
#include "stdioh"
#include "stringh"
#include "malloch"
#define LEN sizeof(struct message_student) /一个结构体数组元素的长度/
#define numsubs 5 /学科数目/
typedef struct message_student /结构体定义/
{
char number[6];
char name[20];
char sex[4];
float subject[numsubs];
float score;
float average;
int index;
}student;
extern int numstus; /学生数目/
extern student pointer; /指向结构体数组/
extern int lens;
int menu_select(); /函数声明/
int openfile(student stu[]);
int findrecord(student stud[]);
int writetotext(student stud[]);
void welcome();
void display1();
void showtable();
void sort(student stu[]);
void deleterecord(student stu[],int i);
void addrecord(student stud[]);
void display(student stud[],int n1,int n2);
void amendrecord(student stud[]);
void count(student stud[]);
void sortnum(student stud[]);
void sortnum2(student stud[]);
void sortname(student stud[]);
void sortname2(student stud[]);
void sortcount(student stud[]);
void sortcount2(student stud[]);
void statistic(student stud[]);
void display1();
#endif
#include "stdioh"
int menu_select()
{
char c;
printf("\n\n");
printf(" | 1 增加学生记录 5统计信息 |\n");
printf(" | 2 查询学生记录 6打开文件 |\n");
printf(" | 3 修改学生记录 7保存文件 |\n");
printf(" | 4 学生纪录排序 8显示记录 |\n");
printf(" | 0退出系统 |\n");
printf("\n\n");
printf("请选择(0-8):");
c=getchar();
getchar();
return (c-'0');
}
#include "stdioh"
int findrecord(student stud[]) /查找信息/
{
char str[2];
int i,num;
if(numstus==0)
{
printf("没有可被查找的记录\n");
return -1;
}
else
{
printf("以何种方式查找?\n1学号\t2姓名\t3名次\n");
gets(str);
if(str[0]=='1') /按学号查找/
{
printf("请输入学号:");
gets(str);
for(i=0;i<=numstus;i++)
if(strcmp(str,stud[i]number)==0)
{
display(stud,i,i);
break;
}
else continue;
}
else if(str[0]=='2') /按姓名查找/
{
printf("请输入姓名:");
gets(str);
for(i=0;i<=numstus;i++)
if(strcmp(str,stud[i]name)==0)
{
display(stud,i,i);
break;
}
else continue;
}
else if(str[0]=='3') /按名次查找/
{
printf("请输入名次:");
scanf("%d",&num);
getchar();
for(i=0;i<=numstus;i++)
if(num==stud[i]index)
{
display(stud,i,i);
break;
}
else continue;
}
if(i>numstus)
{
printf("没有查找所要的信息。\n");
return -1;
}
return i;
}
}
#include"stdioh"
int openfile(student stu[])
{
int i=0,j;
FILE fp;
char filename[20],str[2];
if(numstus!=0)
{
printf("已经有记录存在,是否保存(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(stu);
}
printf("请输入文件名:");
gets(filename);
numstus=0;
if((fp=fopen(filename,"rb+"))==NULL)
{
printf("无法打开该文件\n");
return(-1);
}
fscanf(fp,"%d",&numstus);
fgetc(fp);
while(i<numstus)
{
fscanf(fp,"%s",stu[i]number);
fscanf(fp,"%s",stu[i]name);
fscanf(fp,"%s",stu[i]sex);
for(j=0;j<numsubs;j++)
fscanf(fp,"%f",&stu[i]subject[j]);
fscanf(fp,"%f",&stu[i]score);
fscanf(fp,"%f",&stu[i]average);
fscanf(fp,"%d",&stu[i]index);
i++;
}
fclose(fp);
printf("文件读取成功\n");
printf("是否显示纪录(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
display(stu,0,numstus-1);
return(0);
}
#include "stdioh"
void sort(student stud[])
{
int i,j=0;
char str[5];
student p;
p=stud;
if(numstus==0)
{
printf("没有可供查询的记录!");
}
while(1)
{
for(i=0;;i++)
{
printf(" 请输入查询方式:");
printf("(直接输入回车则结束查询操作)\n");
printf("1按照学号\t");
printf("2按照姓名\t");
printf("3按照名次\n");
gets(str);
if(strlen(str)==0) break;
if(str[0]=='1')
{
printf("请输入排序次序:\n");
printf("1升序排列\t");
printf("2降序排列\n");
gets(str);
if(str[0]=='1')
sortnum2(p);
else
sortnum(p);
display(stud,0,numstus-1);
}
else if(str[0]=='2')
{
printf("请输入排序次序:\n");
printf("1升序排列\t");
printf("2降序排列\n");
gets(str);
if(str[0]=='1')
sortname2(p);
else
sortname(p);
display(stud,0,numstus-1);
}
else if(str[0]=='3')
{
printf("请输入排序次序:\n");
printf("1升序排列\t");
printf("2降序排列\n");
gets(str);
if(str[0]=='1')
sortcount2(p);
else
sortcount(p);
display(stud,0,numstus-1);
}
else printf("请输入1~3");
printf("是否退出排序(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') break;
}
return;
}
}
void sortnum(student stud[])
{
int i,j;
student temp;
student p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j+1]number,stud[j]number)>0)
{
temp=(p+j);
(p+j)=(p+j+1);
(p+j+1)=temp;
}
}
}
void sortnum2(student stud[])
{
int i,j;
student temp;
student p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j]number,stud[j+1]number)>0)
{
temp=(p+j);
(p+j)=(p+j+1);
(p+j+1)=temp;
}
}
}
void sortname(student stud[])
{
int i,j;
student temp;
student p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j+1]name,stud[j]name)>0)
{
temp=(p+j);
(p+j)=(p+j+1);
(p+j+1)=temp;
}
}
}
void sortname2(student stud[])
{
int i,j;
student temp;
student p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(strcmp(stud[j]name,stud[j+1]name)>0)
{
temp=(p+j);
(p+j)=(p+j+1);
(p+j+1)=temp;
}
}
}
void sortcount(student stud[])
{
int i,j;
student temp;
student p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(stud[j+1]index>stud[j]index)
{
temp=(p+j);
(p+j)=(p+j+1);
(p+j+1)=temp;
}
}
}
void sortcount2(student stud[])
{
int i,j;
student temp;
student p;
p=stud;
for(i=0;i<numstus;i++)
for(j=0;j<numstus-i-1;j++)
{
if(stud[j]index>stud[j+1]index)
{
temp=(p+j);
(p+j)=(p+j+1);
(p+j+1)=temp;
}
}
}
#include"stdioh"
void statistic(student stud[]) /新增功能,输出统计信息/
{
int i,j=0,k=0;
char c1,str[2];
float average[numsubs],sum=0;
if(numstus==0)
printf("没有可被查找的记录\n");
else
{
while(1)
{
printf("下面将统计考试成绩\n");
printf("请选择你要统计哪科的成绩 1A\t2B\t3C\t4D\t5E\n");
c1=getchar();
printf("\t一共有个%d记录\n",numstus); /总共记录数/
switch(c1)
{
case '1':
for(i=0;i<numstus;i++) /循环输入判断/
{
sum+=stud[i]subject[0];
if(stud[k]subject[0]>stud[i]subject[0]) k=i;
if(stud[j]subject[0]<stud[i]subject[0]) j=i;
}
average[0]=sum/numstus;
printf("\t科目A的最高分:\n"); /最高分/
printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[j]number,stud[j]name,stud[j]subject[0]);
printf("\t科目A的最低分是:\n"); /最低分/
printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[k]number,stud[k]name,stud[k]subject[0]);
printf("\t科目A的平均分是 %52f\n",average[0]); /平均分/
break;
case '2':
for(i=0;i<numstus;i++) /循环输入判断/
{
sum+=stud[i]subject[1];
if(stud[k]subject[1]>stud[i]subject[1]) k=i;
if(stud[j]subject[1]<stud[i]subject[1]) j=i;
}
average[1]=sum/numstus;
printf("\t科目B的最高分:\n"); /最高分/
printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[j]number,stud[j]name,stud[j]subject[1]);
printf("\t科目B的最低分是:\n"); /最低分/
printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[k]number,stud[k]name,stud[k]subject[1]);
printf("\t科目B的平均分是 %52f\n",average[1]); /平均分/
break;
case '3':
for(i=0;i<numstus;i++) /循环输入判断/
{
sum+=stud[i]subject[2];
if(stud[k]subject[2]>stud[i]subject[2]) k=i;
if(stud[j]subject[2]<stud[i]subject[2]) j=i;
}
average[2]=sum/numstus;
printf("\t科目C的最高分:\n"); /最高分/
printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[j]number,stud[j]name,stud[j]subject[2]);
printf("\t科目C的最低分是:\n"); /最低分/
printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[k]number,stud[k]name,stud[k]subject[2]);
printf("\t科目C的平均分是 %52f\n",average[2]); /平均分/
break;
case '4':
for(i=0;i<numstus;i++) /循环输入判断/
{
sum+=stud[i]subject[3];
if(stud[k]subject[3]>stud[i]subject[3]) k=i;
if(stud[j]subject[3]<stud[i]subject[3]) j=i;
}
average[3]=sum/numstus;
printf("\t科目D的最高分:\n"); /最高分/
printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[j]number,stud[j]name,stud[j]subject[3]);
printf("\t科目D的最低分是:\n"); /最低分/
printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[k]number,stud[k]name,stud[k]subject[3]);
printf("\t科目D的平均分是 %52f\n",average[3]); /平均分/
break;
case '5':
for(i=0;i<numstus;i++) /循环输入判断/
{
sum+=stud[i]subject[4];
if(stud[k]subject[4]>stud[i]subject[4]) k=i;
if(stud[j]subject[4]<stud[i]subject[4]) j=i;
}
average[4]=sum/numstus;
printf("\t科目E的最高分:\n"); /最高分/
printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[j]number,stud[j]name,stud[j]subject[4]);
printf("\t科目E的最低分是:\n"); /最低分/
printf("\t\t学号:%s 姓名:%s 分数:%2f\n",stud[k]number,stud[k]name,stud[k]subject[4]);
printf("\t科目E的平均分是 %52f\n",average[4]); /平均分/
break;
default:printf("输入错误!请输入1~5之间的数\n");
}
sum=0;
getchar();
printf("是否继续进行统计(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y') ;
else break;
}
}
}
#include"stdioh"
int writetotext(student stud[]) /将所有记录写入文件/
{
int i=0,j;
FILE fp;
char filename[20];
printf("输入文件名称:");
gets(filename);
fp=fopen(filename,"w");
fprintf(fp,"%d\n",numstus);
while(i<numstus)
{
fprintf(fp,"%s %s %s ",stud[i]number,stud[i]name,stud[i]sex);
for(j=0;j<numsubs;j++)
fprintf(fp,"%f ",stud[i]subject[j]);
fprintf(fp,"%f %f %d ",stud[i]score,stud[i]average,stud[i]index);
i++;
}
fclose(fp);
printf("已成功存储!\n");
display(stud,0,numstus-1);
numstus=0;
return 0;
}
#include"stdioh"
void welcome()
{
printf("\t\n");
printf("\t\t\t\t欢迎进入学生成绩管理系统\t\t\t\t\t\t\t\t 晓 欢迎使用!\n");
printf("\t\n");
printf("\t\t\t\t\t\t本系统由“晓”一组亲情制作\n\n");
printf("\t\t\t\t\t\t制作人员列表: \n");
printf("\t\t\t\t\t\t吴彦兵 黄进 汪红波\n\t\t\t\t\t\t刘玉萧 杨超 章耀\n");
printf("输入回车进入菜单栏:\n");
printf("\n\n");
getchar();
}
void showtable()
{
printf("-------------------------------------------------------------------------------\n");
printf("学号\t姓名\t性别\tA\tB\tC\tD\tE 总分 平均分 名次\n");
printf("-------------------------------------------------------------------------------\n");
}
void display(student stud[],int n1,int n2)
{
int i;
showtable(); /显示表头/
for(i=n1;i<=n2;i++)
printf("%s\t%s\t%s\t%1f\t%1f\t%1f\t%1f\t%1f %1f %1f %d\t\n",stud[i]number,stud[i]name,stud[i]sex,stud[i]subject[0],stud[i]subject[1],stud[i]subject[2],stud[i]subject[3],stud[i]subject[4],stud[i]score,stud[i]average,stud[i]index);
/通过循环输出数据/
}
void display1()
{
printf("\t\t本系统由晓一组亲情制作\n\n");
printf("\t\t制作人员列表: \n");
printf("\t\t\t\t\t\t吴彦兵 黄进 汪红波\n\t\t\t\t\t\t刘玉萧 杨超 章耀\n");
printf("\t\t\t=========欢迎下次使用=========");
printf("\n\n");
getchar();
}
#include"stdioh"
#include<stringh>
void amendrecord(student stud[])
{
char str[5]; /供用户输入/
int i=-1,j;
if(numstus==0) /没有记录返回/
printf("没有可供修改的记录!");
while(i<0)
{
i=findrecord(stud);
if(i>=0)
{
printf("要删除这个学生的信息吗(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
deleterecord(stud,i);
count(stud);
}
else
{
printf("确定要修改这个学生的信息吗(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
{
printf("下面请重新输入学生的信息:\n");
printf("请输入学号:");
gets(stud[i]number);
printf("请输入姓名:");
gets(stud[i]name);
printf("请输入性别(男/女 1/0):");
gets(str);
if(str[0]=='0')
strcpy(stud[i]sex,"女");
else
strcpy(stud[i]sex,"男");
stud[i]score=0;
printf("请按顺序输入成绩:");
for(j=0;j<numsubs;j++)
{
scanf("%f",&stud[i]subject[j]);
stud[i]score+=stud[i]subject[j];
}
getchar();
stud[i]average=stud[i]score/numsubs;
}
count(stud);
}
display(stud,0,numstus-1);
}
printf("是否继续进行其他修改(y/n)\n");
gets(str);
if(str[0]=='y'||str[0]=='Y')
i=-1;
else i=1;
}
}
void deleterecord(student stu[],int i) /删除信息/
{
int j;
while(i>=0)
{
for(j=i;j<numstus;j++)
stu[j]=stu[j+1];
numstus--;
printf("删除成功!\n");
}
}
void count(student stud[])
{
int i,j;
for(i=0;i<numstus;i++)
{
stud[i]index=1;
for(j=0;j<numstus;j++)
if(stud[j]score>stud[i]score)
stud[i]index++;
}
}
#include "stdioh"
void addrecord(student stud[])
{
int i=0,j,num;
char str[5];
if(numstus!=0)
{
printf("已有记录存在是否覆盖(y/n)\n");
gets(str);
if(str[0]=='Y'||str[0]=='y')
i=0;
else i=numstus;
}
printf("请输入增加的学生信息条目数:");
scanf("%d",&num);
if(i==0)
numstus=num;
else numstus+=num;
if(numstus>lens)
{
lens+=50;
pointer=(student )realloc(pointer,lensLEN);
}
printf("请输入学生信息:\n");
for(;i<numstus;i++)
{
getchar();
printf("请输入学号:");
gets(pointer[i]number);
printf("请输入姓名:");
gets(pointer[i]name);
printf("请输入性别(男/女 1/0):");
gets(pointer[i]sex);
if(pointer[i]sex[0]=='0') strcpy(pointer[i]sex,"女");
else strcpy(pointer[i]sex,"男");
printf("请输入各科成绩:(按ABCDE的顺序):");
stud[i]score=0;
for(j=0;j<numsubs;j++)
{
scanf("%f",&stud[i]subject[j]); /计算总分/
stud[i]score+=stud[i]subject[j];
}
stud[i]average=stud[i]score/numsubs; /计算平均分/
}
count(stud); /附名次/
display(stud,0,numstus-1);
getchar();
}
#include "stdioh"
int numstus;
int lens;
student pointer;
void main()
{
int i=1;
char str[2];
lens=100;
pointer=(student )malloc(lensLEN); /分配内存/
numstus=0;
welcome(); /欢迎界面/
while(i>0)
{
i=menu_select(); /控制菜单/
switch(i)
{
case 1:addrecord(pointer);break; /增加学生信息/
case 2:findrecord(pointer);break; /查询学生信息/
case 3:amendrecord(pointer);break; /修改学生信息/
case 4:sort(pointer);break; /学生信息排序/
case 5:statistic(pointer);break; /统计信息/
case 6:openfile(pointer);break; /打开文件/
case 7:writetotext(pointer);break; /保存文件/
case 8:display(pointer,0,numstus-1);break; /显示记录/
case 0:
if(numstus!=0) printf("是否保存当前记录(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(pointer);
i=-1;break; /退出系统/
default:printf("请输入数字0~8:\n");i=1; /输入错误/
}
}
printf("\t\t======欢迎再次使用本系统======= \n");
display1();
}
1、一定要先写好主函数的框架,然后再往上面加东西,这样说有点笼统,我把我的主函数在下面,可以借鉴下哈。我的主函数是一个while(1)的无限循环,里面一个switch选择,利用一个菜单函数,让其返回值当成switch选择的值,然后进入不同的功能主函数,其他功能主函数和主函数的套路一样。
2、输入模块一定要注意输入的格式,我采用的尾插法,每次处理好一个节点后就让用户判定是否继续输入,在格式控制方面,我当用户输入一次,就判定它是否符号规范,如果不规范,就重新输入。最后存入文件中。
3、一定要把函数写的利用率高一点,这样就可以减少代码的重复书写,这个全凭自己的写代码的风格了,我自己在这点也没有做太好,反省中,以前刚开始学c的时候有人说c语言的主体是函数,不太懂,等写完这个,感觉说的真的很对,c语言的函数写好后,在该用的时候直接引用,很方便。
完整代码:
青锋目前开源了一下版本架构:
springboot+layui+thymeleaf版本
springboot+layui+jsp版本
springboot+vue ant design 前后端分离版本
springcloud+ vue/react ant design 前后端分离双版本。
青锋springboot 家谱系统。
git clone https://giteecom/kcz66/k-form-designgit
一般为components目录,建立"k-form-design目录",将以源码根目录的下三个文件夹复制进来
packages、static、styles
这是k-from-design需要的依赖,将下面的依赖与自己的项目对比,将没有安装的依赖都安装一下
vueconfigjs中less配置,如果已配置可跳过
如果项目中的less及less-loader与上面依赖版本不一致,可能存在版本差异,可以自行去网上查找一下如何启用对应的less版本的内联javascript
注意:因为在整合后,发现primary-color和layout-color与系统的主体配置冲突,则修改内容如下:
对应的引用位置修改如下:
这里展示vue-cli 3如何使用antd ui高级配置,vue-cli 2的小伙伴可以自行去antd ui官网查看如何配置
安装babel-plugin-import
修改 babelconfigjs 文件,配置 babel-plugin-import
在mainjs中注册组件,代码如下:
1、word和WPS
好处:word和WPS都是一款常用的的办公软件,也可以完成修谱排版。写修谱普及文章时提到过这个软件。
不好之处:族谱中的世系图,如果真用Word来做,考验的不仅是你应用Word的功力有多深,而且更考验的是你族谱最后成品的世系图美观,用Word制作的世系图,会存在很多细节上的不如意。
2、AI这款软件要设计为主,排版也有不俗的表现
好处:AI是一款强大的设计以及排版软件。其强大的设计功能,这款软件的排版功能,与CorelDRAW软件完成不相上下。3、不好之处:在制作一些表格上却不及Word方便快捷,及自动转页。当然,些款软件以主打平面和3D设计为主,在排版功能还是相对弱一些。
3、修谱王。这是一款专门为家谱编修设计的软件。
好处操作简单,易学易用,集成了常见的家谱格式,不用手动排版,改动也比较方便;
不好之处是:需要联网,无法单机操作。
4、CorelDRAW。
好处:CorelDRAW软件最初主打是平面设计,但随着版本的更新,文字排版也得到很大的提升。此软件排族谱世系表时,不管多复杂的世系图都能得心应手。
不好之处是:与Word兼容性差。真想将Word文档中的内容复制到此软件中,一切都得重新开始,一旦Word中夹杂着表格,就能让人抓狂。这软件最大的一个不好点是一旦当你专心制作没有随时保存文档时,万一万一软件崩溃,你就哭吧,一切又得从头开始。
概述
单纯只用多个数组管理学生成绩信息,不使用结构体,该程序最主要的难点是依据学号或总成绩对学生信息进行排序,借助了临时数组来标记排好序的下标。
运行结果如下:
输入数据:
根据总成绩排序:
根据学号删除学生信息:
贴上代码(有点多)
#include <stdioh>
#include <stdlibh> //exit函数头文件
#include <stringh> //字符串相关操作头文件
#define MAX_STUDENT 30 //最大学生数
//函数声明,本程序共10个子函数,每个函数对应一个操作
void student_scanf(int n);
void student_printf(int n);
int student_find_name(int n);
int student_find_num(int n);
void student_sort_num(int n);
void student_sort_sum(int n);
int student_alter_num(int n);
int student_alter_name(int n);
int student_delete_num(int n);
int student_delete_name(int n);
//全局数组变量,用于存储学生信息
char names[MAX_STUDENT][50];
int math[MAX_STUDENT];
int english[MAX_STUDENT];
int computer[MAX_STUDENT];
int sum[MAX_STUDENT];
int num[MAX_STUDENT];
//以下变量用于学生信息数组排序,作为临时数组
int temp_num[MAX_STUDENT];
char temp_names[MAX_STUDENT][50];
int temp_math[MAX_STUDENT];
int temp_english[MAX_STUDENT];
int temp_computer[MAX_STUDENT];
int temp_sum[MAX_STUDENT];
//sort数组存储排好序的学号或姓名下标
int sort[MAX_STUDENT];
//循环全局变量
int i, j;
//main主函数
int main(void)
{
int choice,n;
while (1)
{
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("[8] 按姓名修改某个学生信息\n");
printf("[9] 按学号删除某个学生信息\n");
printf("[10] 按姓名删除某个学生信息\n");
printf("[0] 退出程序\n");
printf("请输入您的选择(0 - 9):");
scanf("%d",&choice);
printf(")\n");
switch (choice)
{
case 1://录入;
printf("请输入录入的学生信息数: ");
scanf("%d",&n);
student_scanf(n);
break;
case 2://输出;
student_printf(n);
break;
case 3://根据学号查找
student_find_num(n);
break;
case 4://根据姓名查找
student_find_name(n);
break;
case 5://按学号排序
student_sort_num(n);
break;
case 6://按姓名排序
student_sort_sum(n);
break;
case 7://按学号修改
student_alter_num(n);
break;
case 8://按姓名修改
student_alter_name(n);
break;
case 9://按学号删除
student_delete_num(n);
n--;
break;
case 10://按姓名删除
student_delete_name(n);
n--;
break;
case 0://退出程序
printf("退出程序\n");
printf("程序结束,谢谢使用!\n");
exit(0);
default:
printf("您输入的菜单有误。请重新输入!\n");
}
}
return 0;
}
//1输入信息
void student_scanf(int n)
{
for (i = 0; i<n; ++i)
{
printf("\n请输入第%d个学生的信息:\n", i + 1);
printf("\n学号:");
scanf("%d", &num[i]);
printf("\n姓名:");
scanf("%s", names[i]);
printf("\n数学成绩:");
scanf("%d", &math[i]);
printf("\n英语成绩:");
scanf("%d", &english[i]);
printf("\n计算机成绩:");
scanf("%d", &computer[i]);
//计算总成绩
sum[i] = math[i] + english[i] + computer[i];
}
}
//2打印信息
void student_printf(int n)
{
printf("\n学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");
printf("----------------------------------------------------------\n");
for (i = 0; i<n; ++i)
{
printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[i], names[i], math[i], english[i], computer[i], sum[i]);
}
printf("-------------------------------------------------------\n");
}
//3按学号查找
int student_find_num(int n)
{
int nums;
int result;
printf("请输入待查找的学生学号:");
scanf("%d",&nums);
result= -1;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else
{
//先打印表头
printf("\n学号\t\t姓名\t\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");
//再打印数据
printf("%d\t\t%s\t\t%d\t\t%d\t\t%d\t%d\n", num[result], names[result], math[result], english[result], computer[result], sum[result]);
printf("打印出查找结果!\n");
}
return 1;
}
//4用姓名查找成绩
int student_find_name(int n)
{
char name[200];
int result;
printf("请输入待查找的学生姓名:");
scanf("%s", name);
result = -1;
for (i = 0; i<n; ++i)
{
if (strcmp(name, names[i]) == 0)
{
result = i;
break;
}
}
if (result == -1)
{//未找到结果
printf("没有该学生信息!\n");
return 0;
}
else//找到结果
{
printf("\n学号\t姓名\t数学成绩\t英语成绩\t计算机成绩\t总成绩\n");
printf("%d\t%s\t%d\t\t%d\t\t%d\t\t%d\n", num[result], names[result], math[result], english[result], computer[result], sum[result]);
printf("已完成查找!\n");
}
return 1;
}
//5按学号排序
void student_sort_num(int n)
{
int min,max;
for(i=0; i<n; ++i) //复制临时数组
{
temp_num[i] = num[i];
}
max = 0; //查找学号最大值,将其下标存至sort数组的最后一个值中
for(j=1; j<n; j++)
{
if(temp_num[max]<temp_num[j])
max = j;
}
sort[n-1] = max; //sort数组的最后一个数
for(i=0; i<n-1; ++i)
{
min = i; //查找学号最小值
for(j=0; j<n; ++j)
{
if(temp_num[min]>temp_num[j])
min = j;
}
//sort数组记录排序的学生信息的下标
sort[i] = min;
temp_num[min] = temp_num[max]; //利用临时数组将查找过的学生信息的学号设为最大值,排除查找干扰
}
for(i=0; i<n; ++i) //再复制一次临时数组
{
temp_num[i] = num[i];
strcpy(temp_names[i],names[i]);
temp_math[i] = math[i];
temp_english[i] = english[i];
temp_computer[i] = computer[i];
temp_sum[i] = sum[i];
}
for(i=0; i<n; i++) //按照下标对原数组进行修改
{
num[i] = temp_num[sort[i]];
strcpy(names[i],temp_names[sort[i]]);
math[i] = temp_math[sort[i]];
english[i] = temp_english[sort[i]];
computer[i] = temp_computer[sort[i]];
sum[i] = temp_sum[sort[i]];
}
printf("排序完毕,请按菜单键2查看排序结果!\n");
return ;
}
//6按总成绩排序
void student_sort_sum(int n)
{
int min,max;
for(i=0; i<n; ++i) //复制临时数组
{
temp_sum[i] = sum[i];
}
max = 0; //查找总成绩最大值,将其下标存至sort数组的最后一个值中
for(j=1; j<n; j++)
{
if(temp_sum[max]<temp_sum[j])
max = j;
}
sort[n-1] = max; //sort数组的最后一个数
for(i=0; i<n-1; ++i)
{
min = i; //查找总成绩最小值
for(j=0; j<n; ++j)
{
if(temp_sum[min]>temp_sum[j])
min = j;
}
//sort数组记录排序的学生信息的下标
sort[i] = min;
temp_sum[min] = temp_sum[max]; //利用临时数组将查找过的学生信息的总成绩设为最大值,排除查找干扰
}
for(i=0; i<n; ++i) //再复制一次临时数组
{
temp_num[i] = num[i];
strcpy(temp_names[i],names[i]);
temp_math[i] = math[i];
temp_english[i] = english[i];
temp_computer[i] = computer[i];
temp_sum[i] = sum[i];
}
for(i=0; i<n; i++) //按照下标对原数组进行修改
{
num[i] = temp_num[sort[i]];
strcpy(names[i],temp_names[sort[i]]);
math[i] = temp_math[sort[i]];
english[i] = temp_english[sort[i]];
computer[i] = temp_computer[sort[i]];
sum[i] = temp_sum[sort[i]];
}
printf("排序完毕,请按菜单键2查看排序结果!\n");
return ;
}
//7按学号修改学生信息
int student_alter_num(int n)
{
int nums;
int result;
printf("请输入待修改的学生学号:");
scanf("%d",&nums);
result= -1;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else //修改信息值
{
printf("请重新输入该学生信息:\n");
printf("学号:\n");
scanf("%d",&num[result]);
printf("姓名:\n");
scanf("%s",names[result]);
printf("数学成绩:\n");
scanf("%d",&math[result]);
printf("英语成绩:\n");
scanf("%d",&english[result]);
printf("计算机成绩:\n");
scanf("%d",&computer[result]);
sum[result] = math[result] + english[result] + computer[result];
}
return 1;
}
//8按姓名修改学生信息
int student_alter_name(int n)
{
char name[50];
int result;
printf("请输入待修改的学生姓名:");
scanf("%s",name);
result= -1;
for (i = 0; i<n; ++i)
{
if (strcmp(name,names[i])==0)
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else //修改信息值
{
printf("请重新输入该学生信息:\n");
printf("学号:\n");
scanf("%d",&num[result]);
printf("姓名:\n");
scanf("%s",names[result]);
printf("数学成绩:\n");
scanf("%d",&math[result]);
printf("英语成绩:\n");
scanf("%d",&english[result]);
printf("计算机成绩:\n");
scanf("%d",&computer[result]);
sum[result] = math[result] + english[result] + computer[result];
}
return 1;
}
//9按学号删除学生信息
int student_delete_num(int n)
{
int nums;
int result;
printf("请输入待删除的学生学号:");
scanf("%d",&nums);
result= -1;
for (i = 0; i<n; ++i)
{
if (nums == num[i])
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else //删除当前学生信息即为将数组从result的位置依次前挪一个位置
{
for(i=result; i<n-1; ++i) //最后在main函数中,要将n的值减1
{
num[i] = num[i+1];
strcpy(names[i],names[i+1]);
math[i] = math[i+1];
english[i] = english[i+1];
computer[i] = computer[i+1];
sum[i] = sum[i+1];
}
}
return 1;
}
//10按姓名删除学生信息
int student_delete_name(int n)
{
char name[50];
int result;
printf("请输入待删除的学生姓名:");
scanf("%s",name);
result= -1;
for (i = 0; i<n; ++i)
{
if (strcmp(name,names[i])==0)
{
result = i;
break;
}
}
//最后判断q值
if (result == -1)
{
printf("没有该学生信息!\n");
return 0;
}
else //删除当前学生信息即为将数组从result的位置依次前挪一个位置
{
for(i=result; i<n-1; ++i) //最后在main函数中,要将n的值减1
{
num[i] = num[i+1];
strcpy(names[i],names[i+1]);
math[i] = math[i+1];
english[i] = english[i+1];
computer[i] = computer[i+1];
sum[i] = sum[i+1];
}
}
return 1;
}
#include <stdioh>
#include <malloch>
#include <stringh>
typedef struct
{
char num[10];
char name[20];
float price;
int amount;
}Product;
typedef struct node
{
Product p;
struct node pre;
struct node next;
}node,linklist;
linklist head,last;
void setData(linklist p)
{
printf("产品编号:");
scanf("%s",&p->pnum);
printf("产品名称:");
scanf("%s",&p->pname);
printf("产品单价:");
scanf("%f",&p->pprice);
printf("产品数量:");
scanf("%d",&p->pamount);
}
void Insert(linklist p)
{
setData(p);
p->next=last;
last->pre->next=p;
p->pre=last->pre;
last->pre=p;
}
void Add()
{
char ch;
do
{
linklist p=(linklist)malloc(sizeof(node));
system("cls");
Insert(p);
printf("是否继续");
scanf(" %c",&ch);
}while(ch=='y'||ch=='Y');
}
linklist Qur()
{
char num[10];
linklist p=head->next;
printf("输入产品编号:");
scanf("%s",num);
while(p!=last)
{
if(strcmp(num,p->pnum)==0) break;
p=p->next;
}
if(p==last) {printf("未找到\n");system("pause");}
return p;
}
void Del()
{
linklist p=Qur();
if(p==last) return;
p->pre->next=p->next;
p->next->pre=p->pre;
free(p);
printf("删除成功\n");
system("pause");
}
void Modify()
{
linklist p=Qur();
if(p==last) return ;
setData(p);
}
void printTitle()
{
printf("编号\t名称\t单价\t数量\n");
}
void show(linklist p)
{
printf("%s\t%s\t%2f\t%d\n",p->pnum,p->pname,p->pprice,p->pamount);
}
void Tongji()
{
linklist p=head->next;
int i=0;
printTitle();
while(p!=last)
{
show(p);
p=p->next;
i++;
}
printf("共%d项商品\n",i);
system("pause");
}
void Sort()
{
linklist p,q;
for (p=head->next;p!=last;p=p->next)
{
for (q=p->next;q!=last;q=q->next)
{
if(strcmp(p->pnum,q->pnum)<0)
{
Product temp=p->p;
p->p=q->p;
q->p=temp;
}
}
}
printf("完成\n");
system("pause");
}
void Save()
{
linklist p=head->next;
FILE fp=fopen("d:\\recordtxt","w");
if(fp==NULL)
{
printf("保存失败\n");
return;
}
fprintf(fp,"编号\t名称\t单价\t数量\n");
while(p!=last)
{
fprintf(fp,"%s\t%s\t%2f\t%d\n",p->pnum,p->pname,p->pprice,p->pamount);
p=p->next;
}
fclose(fp);
printf("完成\n");
system("pause");
}
void Disp()
{
linklist p=head->next;
printTitle();
while(p!=last)
{
show(p);
p=p->next;
}
system("pause");
}
void Wrong()
{
printf("输入错误!\n");
system("pause");
}
void menu(void)
{
system("cls");
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(" 8:存储 \n");
printf(" 9:显示数据 \n");
printf(" 0:退出 \n");
printf(" \n");
printf("\n");
}
int select()
{
int choose;
scanf("%d",&choose);
switch(choose)
{
case 1:Add();break;
case 2:Del();break;
case 3:
{
linklist p=Qur();
if(p!=last) {show(p);system("pause");}break;
}
case 4:Modify();break;
case 5:
{
linklist p=(linklist)malloc(sizeof(node));
Insert(p);break;
}
case 6:Tongji();break;
case 7:Sort();break;
case 8:Save();break;
case 9:Disp();break;
case 0:break;
default:Wrong();break;
}
return choose;
}
void destroy()
{
linklist p=head->next;
while(p!=last)
{
head->next=p->next;
free(p);
p=head->next;
}
free(head);
free(last);
}
int main(void)
{
head=(linklist)malloc(sizeof(node));
last=(linklist)malloc(sizeof(node));
head->next=last;
last->next=NULL;
last->pre=head;
head->pre=NULL;
do
{
menu();
} while (select()!=0);
destroy();
return 0;
}
仓储管理系统没做过!
代码设计书我猜想是这样的,就是Id字符串中不同的位应该具有特定的含义。
比如17位的仓储Id:前三位是仓库代号;4-6 位是库房号;7-9位是货架或货区号;10-17是货物的8位条码号。
比如系统的管理人员9位工号: 1-3 位是顶级部门编码;4-6位是次级部门编码;7-9是员工编码
所谓的代码设计;就是要说明系统中使用的代码和代码不同位所代表的含义。
这个需要具体调研,根据需求来定。
5种编程语言每个程序员都应该学习
不用多说,这里是我的五种编程语言列表,每个程序员或软件开发人员都应该尝试学习。
它包含多种语言,例如面向对象,功能和脚本语言,它们提供低级别的控制和语言,广泛用于服务器端开发。
1 Java
Java是过去二十年来最流行的语言之一,它统治着服务器端应用程序开发的世界。它还在使用Android和企业Web开发领域的移动游戏和应用程序开发中占有相当大的市场份额。
Java是以WORA的简单概念(在任何地方编写一次运行)开始的,但随着时间的推移,Java实际上已经到处运行。
您应该学习Java以构建健壮,可伸缩的服务器端应用程序。您可以在Java中构建具有不同复杂性的项目,并且它具有很好的工具,技术和社区。
你为什么要学习Java?您将学习如何专注于应用程序设计和代码结构,而无需担心系统特定的细节和内存管理。JVM将负责它。
如果您决定学习Java,那么Udemy的The Complete Java Master Class就是一个很好的课程。它详细介绍了Java的所有基本概念。
顺便说一句,如果您需要更多选择并且不介意从免费课程中学习,那么您也可以查看这个免费Java课程列表,供初学者使用。
Java被一些最大的组织使用,你可以通过编写Android应用程序来吸引很多人。如果您仍然不相信,我建议您查看学习Java的这10个理由。
2 Python
Python是世界上学校和大学中教授最多的语言之一。在美国,Python已经取代许多学术课程中的Java作为首选语言。学习Python会获得什么?很多。
Python是可以用作脚本语言的语言之一,也可以用作大型项目的适当面向对象语言。
包括Reddit在内的许多热门网站都是基于像Django这样的Python框架构建的。最近,许多大型组织也在转向基于Python的框架。
它也越来越多地用于新一代技术,如机器学习,人工智能和数据科学。难怪,因为它有一些很棒的机器学习库,如TensorFlow,Scikit-Learn 等。
我个人使用Python编写脚本,它对于快速执行某些操作非常有用,例如,您可以在5分钟内在Python中编写UDP消息侦听器,而不是在Java中编写20分钟。忘记编译,打包,然后使用,只需为临时任务编写Python脚本。如果有兴趣学习Python,那么完整的Python BootCamp是一个很好的开始。
如果您需要更多选择并且不介意从免费资源中学习,那么您也可以为初学者查看这个免费的Python课程列表。
此外,如果您对开始使用Java或Python感到困惑,请查看此信息图,该 信息图将Java与Python进行比较。
而且,如果您仍然不相信,那么您应该查看我的帖子,了解在2018年学习Python的10个理由。
3 JavaScript
您可以用C ++替换Java并用Ruby替换Python,但老实说,在当今世界中没有替代JavaScript。在过去的五年中,JavaScript完全统治了全世界。
它不再是客户端脚本语言,使用Nodejs,Angular和React等框架和库,您可以在服务器端使用JavaScript以及用户界面开发。
JavaScript取得巨大成功的部分原因在于 jQuery,它真正改变了客户端使用JavaScript的方式。
作为一名从事基于JSP和Servlet的应用程序的Java程序员,我有很多机会同时使用jQuery和JavaScript。
了解这种语言有助于我们决定哪些功能应该在服务器端实现,哪些功能可以在客户端处理,例如,我们过去在服务器端执行的许多验证都已迁移到客户端。
如果您想从头开始深入学习JavaScript,那么Udemy的The Complete JavaScript课程是您可以加入的最佳在线课程。
如果您需要更多选择并且不介意从免费资源中学习,那么您还可以查看此Web开发人员免费JavaScript课程列表。
求c语言程序成绩管理系统代码。各路大哥大姐帮帮忙。谢谢
本文2023-11-27 09:33:16发表“资讯”栏目。
本文链接:https://www.lezaizhuan.com/article/563908.html