求c语言程序成绩管理系统代码。各路大哥大姐帮帮忙。谢谢

栏目:资讯发布:2023-11-27浏览:2收藏

求c语言程序成绩管理系统代码。各路大哥大姐帮帮忙。谢谢,第1张

没人回答我来回答吧!

下面程序是我的作业,应要求不同,我的函数明和你的不同,自己改下就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语言程序成绩管理系统代码。各路大哥大姐帮帮忙。谢谢

没人回答我来回答吧!下面程序是我的作业,应要求不同,我的函数明和你的不同,自己改下就OK 了!改起来也很简单的!#ifndef H_STUDENT_H...
点击下载
热门文章
    确认删除?
    回到顶部