精华内容
下载资源
问答
  • 本文实例为大家分享了shell实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 基本的操作 增加 删除 查询 展示全部学生信息 vim编辑保存信息的文件 遇到问题 1.增加学生信息时 增加学生信息时,我用的...
  • struct student//定义学生成绩结构体 {  int num;//学号  char name[15];//姓名  double elec;//选修课  double expe;//实验  double requ;//必修课  double sum;//总分 }; struct ...

    实验平台:VS2013+Opencv2.4.9
    程序:

    #define _CRT_SECURE_NO_WARNINGS//对应错误二
    #include<stdio.h>
    #include <stdlib.h> //system("cls")头文件
    #include<conio.h>//getch()头文件
    #include<string.h>//strcmp()头文件
    #define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"
    #define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum
    #define LEN sizeof(struct student) //sizeof:长度=最长成员所占的字节数
    float Felec, Fexpe, Frequ;

    struct student//定义学生成绩结构体
    {
     int num;//学号
     char name[15];//姓名
     double elec;//选修课
     double expe;//实验
     double requ;//必修课
     double sum;//总分
    };

    struct student stu[50];//定义结构体数组
    void in();
    void show();
    void menu();

    void main()/*主函数*/
    {
     int n;    //输入选择功能编号
     menu();
     scanf("%d", &n);
     while (n)
     {
      switch (n)
      {
      case 1:
       in();//学生成绩录入函数
       break;
       default:break;
      }
       _getch();//对应错误一,将getch()改为_getch()
      menu();/*执行完功能再次显示菜单界面*/
      scanf("%d", &n);
     }
    }
    void in()
    {
     int i,m = 0;
     char ch[2];
     FILE *fp;
     if ((fp =fopen("data", "ab+")) == NULL)
     {
      printf("can not open\n");
      return;
     }
     while (!feof(fp))
     {
      if (fread(&stu[m], LEN, 1, fp) == 1)
       m++;
     }
     fclose(fp);
     if (m == 0)
      printf("No record!\n");
     else
     {
      system("cls");
      show();//调用show函数,显示原有信息
     }
     if ((fp = fopen("data", "wb")) == NULL)
     {
      printf("can not open\n");
      return;
     }
     for (i = 0; i < m; i++)
      fwrite(&stu[i], LEN, 1, fp);//向指定的磁盘文件写入信息
     printf("please input(y/n)");
     scanf("%s", ch);
     if (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0)
     {
      printf("please input per centum:");//输入百分比
         printf("\nelective:");
         scanf("%f", &Felec);
      printf("\nexperiment:");
      scanf("%f", &Fexpe);
      printf("\nrequired course:");
      scanf("%f", &Frequ);
     }
     while (strcmp(ch, "Y") == 0 || strcmp(ch, "y") == 0)
     {
      printf("number:");
      scanf("%d", &stu[m].num);
      for (i = 0; i < m; i++)
       if (stu[i].num == stu[m].num)
       {
        printf("the number is existing ,press any to continue!");
        _getch();
        fclose(fp);
        return;
       }
      printf("name:");
      scanf("%s", stu[m].name); //此处可以不加地址符
         printf("elective:");
      scanf("%lf", &stu[m].elec);
      printf("experiment:");
      scanf("%lf", &stu[m].expe);
      printf("required course:");
      scanf("%lf", &stu[m].requ);
      stu[m].sum = stu[m].elec*Felec + stu[m].expe*Fexpe + stu[m].requ*Frequ;
      if (fwrite(&stu[m], LEN, 1, fp) != 1)
      {
       printf("can not save!");
       _getch();
      }
      else
      {
       printf("%s saved!\n", stu[m].name);
       m++;
      }
      printf("continue?(y/n):");
      scanf("%s", ch);
     }
     fclose(fp);
     printf("OK!\n");
    }
    void show()
    {
     FILE *fp;
     int i, m = 0;
     fp = fopen("data", "ab+");
     while (!feof(fp)) //feof检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0
     {
      if (fread(&stu[m], LEN, 1, fp) == 1)
       m++;
     }
     fclose(fp);
     printf("number  name   elective    experiment  required    sum\t\n");
     for (i = 0; i<m; i++)
     {
      printf(FORMAT, DATA);/*将信息按指定格式打印*/
     }
    }
    void menu()/*自定义函数实现菜单功能*/
    {
     system("cls");//清理屏幕,头文件 #include <stdlib.h>
     printf("\n\n\n\n\n");
     printf("\t\t/---------------STUDENT---------------------/\n");
     printf("\t\t/\t 0.exit                             /\n");
     printf("\t\t/\t 1.input record                     /\n");
     printf("\t\t/\t 2.search record                    /\n");
     printf("\t\t/\t 3.delete record                    /\n");
     printf("\t\t/\t 4.modify record                    /\n");
     printf("\t\t/\t 5.insert record                    /\n");
     printf("\t\t/\t 6.order                            /\n");
     printf("\t\t/\t 7.number                           /\n");
     printf("\t\t/-------------------------------------------/\n");
     printf("\t\t\tchoose(0-7):");
    }

    错误 1 error C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. 
    错误2 提示scanf等类似的函数已经不太安全,修改为_s结尾的安全版本。但是很多以前的程序可能还是使用不安全的版本,或者个别函数修改为安全版本较为复杂,需要改变参数个数等。那么下面给出去掉这种错误提示的几种常用办法。
    方法一: 在VS中新建项目的时候去掉“安全开发生命周期(SDL)检查”即可将错误转变成警告,使得使用不安全版本也不影响编译和运行,如下图所示。
    方法2: 在头文件包含的最前面,记住是最前面(在include的前面)加上:#define _CRT_SECURE_NO_WARNINGS这个宏定义即可。
    (本项目采用该方法,并且需要注意当在程序中加上这个宏定义以后就不需要将函数改为加_的安全版本函数,不然编译没有错误但会一直运行失败。)

    getchar()与getch()函数:
    1.包含头文件不同
    getchar();用#include< stdio.h >
    getch();  用#include< conio.h >
    2.用法稍微不同

    getchar();从键盘读取一个字符并输出,该函数的返回值是输入第一个字符的ASCII码;若用户输入的是一连串字符,函数直到用户输入回车时结束,输入的字符连同回车一起存入键盘缓冲区。若程序中有后继的getchar();函数,则直接从缓冲区逐个读取已输入的字符并输出,直到缓冲区为空时才重新读取用户的键盘输入。

    getch();接受一个任意键的输入,不用按回车就返回。该函数的返回值是所输入字符的ASCII码,且该函数的输入不会自动显示在屏幕上,需要putchar();函数输出显示。getch();函数常用于中途暂停程序方便调试和查看。

    3.函数功能基本相同


    展开全文
  • ( 2) 统计功能:计算出每个学生的平均成绩,按照平均成绩排序,并能统计 出 100~90, 60~0 学生的人数和信息; ( 3)查找功能:能根据学号查找学生信息,并能进行相应修改; ( 4)插入功能:能插入新学生的信息...
  • C++学生成绩管理系统

    2021-09-25 22:08:58
    学生成绩管理中,经常会遇到求平均成绩,统计不及格学生成绩,统计优秀学生人数,以及按成绩对学生进行排名等。
  • 学生成绩管理系统(java实现)

    千次阅读 2021-03-10 03:02:35
    最近在看基础的java教程,发现java很多与c++类似,但也有不少差异,有很多要注意的地方,做了这个成绩管理系统,还没用到类,只是多维数组的应用。期间遇到很多问题,也都经过一一百度解决了。实现的功能: 输入学生...

    最近在看基础的java教程,发现java很多与c++类似,但也有不少差异,有很多要注意的地方,做了这个成绩管理系统,还没用到类,只是多维数组的应用。

    期间遇到很多问题,也都经过一一百度解决了。

    实现的功能: 输入学生人数,以及学生考试的科目数,然后依次填入信息,最后输出学生信息,以及总分,平均分,名次;

    import java.util.*;

    import java.math.*;

    import java.text.*;//引入控制格式的包,import java.text.DecimalFormat; 用来控制浮点数小数位数

    public class Test{

    public static void main(String[] args){

    Scanner in=new Scanner(System.in);

    System.out.println("请输入一共有几门课程");

    int numberofCoarses=in.nextInt();

    System.out.println("请输入一共有几个学生");

    int numberofStudents=in.nextInt();

    System.out.println("请定义这几门课程");

    String [] coarse=new String[numberofCoarses];

    String [] name=new String[numberofStudents];

    for(int i=0;i

    coarse[i]=in.next();

    double[][] stuu =new double[numberofStudents][numberofCoarses];

    double[] totalGrades=new double [numberofStudents];

    double[] average=new double [numberofStudents];

    double[] totalsort=new double [numberofStudents];

    int[] paihang = new int [numberofStudents];

    DecimalFormat df=new DecimalFormat("0.00");//设置浮点数的位数

    for(int i=0;i

    {

    System.out.println("请输入第"+(i+1)+"个学生的名字");

    name[i]=in.next();

    System.out.println("请依次输入"+name[i]+"的"+numberofCoarses+"门成绩");

    double sum=0;

    for(int j=0;j

    {

    stuu[i][j]=in.nextDouble();

    sum+=stuu[i][j];

    }

    totalGrades[i]=sum;

    average[i]=sum/numberofCoarses;

    }

    //totalsort=totalGrades 错误,浅复制,指向同一个引用;

    //totalsort=totalGrades.clone(); //数组的深复制//用clone只能复制一维数组,多维数组需要加上for循环依次clone

    System.arraycopy(totalGrades,0,totalsort,0,totalGrades.length); //最快的赋值

    //第一个0,代表源数组赋值的起始位置,第二个0,代表被赋值数组的起始位置

    for(int i=0;i

    {

    int k=i;

    for(int j=i+1;j

    {

    if(totalsort[j]>totalsort[k])

    {

    k=j;

    }

    }

    if(k!=i)

    {

    double temp=totalsort[k];

    totalsort[k]=totalsort[i];

    totalsort[i]=temp;

    }

    }

    //Arrays.sort(totalsort,Collections.reverseOrder()); << 有错误,改天再看看库函数怎么排序吧。。

    for(int i=0;i

    {

    int head=0,tail=paihang.length-1;

    while(head<=tail){

    if(totalsort[head]==totalGrades[i])

    {paihang[i]=head+1;break; }

    else if(totalsort[tail]==totalGrades[i])

    {paihang[i]=tail+1;break;}

    else{

    int mid=(head+tail)/2;

    if(totalsort[mid]==totalGrades[i])

    {

    paihang[i]=mid+1;break;

    }

    else if(totalsort[mid]>totalGrades[i])

    {

    tail=mid-1;

    }

    else

    head=mid+1;

    }

    }

    }

    System.out.print("学生\t");

    for(int i=0;i

    System.out.print(coarse[i]+"\t");

    System.out.println("总分\t平均分\t排行榜");

    for(int i=0;i

    {

    System.out.print(name[i]+"\t");

    for(int j=0;j

    {

    System.out.print(stuu[i][j]+"\t");

    }

    System.out.print(totalGrades[i]+"\t");

    System.out.print(df.format(average[i])+"\t");

    System.out.print("第"+paihang[i]+"名");

    System.out.println();

    }

    }

    }

    展开全文
  • linux环境下QT语言写的学生成绩管理系统,该系统的数据库为sqlite3,具有登录、注册、学业成绩增删改查、学生信息增删改查等功能
  • 目 录 1. 设计任务 1 2. 基本思路与需求分析 1 3. 方案设计 1 3.1 主要算法说明 1 3.2 程序框架设计 2 ...5.1 本次设计中遇到问题 4 5.2 本次软件课程设计的一些感想 6 6. 参考文献 7 附录:编写的程序完整代码
  • 基于SQL Server的学生成绩管理系统设计论文摘要:为使学生成绩管理更加规范化、标准化, 同时为学生成绩管理系统提供基础数据支持, 研究设计了学生成绩管理系统学生成绩管理系统提供了强大的成绩管理功能, 使用户对...

    基于SQL Server的学生成绩管理系统设计论文

    摘要:为使学生成绩管理更加规范化、标准化, 同时为学生成绩管理系统提供基础数据支持, 研究设计了学生成绩管理系统。学生成绩管理系统提供了强大的成绩管理功能, 使用户对成绩相关信息的添加、修改、查询、打印等操作更为简便, 亦为教师提供更全面、直观的成绩分析。本文从需求分析、系统详细设计、功能实现几方面设计了基于SQL Server的学生成绩管理系统。

    关键词:SQL Server数据库; 成绩管理系统; 学生信息管理;

    一、引言

    随着计算机技术的普及与网络的广泛应用, 学生成绩的管理也引入了计算机手段。传统的学生成绩管理以手工工作为主, 处理巨大的信息量不仅耗时, 且低效、易错。学生成绩管理系统软件的开发与使用, 使学生成绩管理更加规范化、标准化, 同时为学生成绩管理系统提供基础数据支持。本系统结合计算机技术和学校管理的现状, 从需求分析、系统详细设计、功能实现几方面设计开发了基于SQL Server数据库的学生成绩管理系统, 以此来规范学生成绩的管理和快速的成绩查询。

    二、需求分析

    学生成绩管理系统软件, 主要用来供教务人员对学生成绩信息的管理, 包括学生成绩的录入、查询、修改和删除等, 本系统具有检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等特点, 是传统手工管理无法比拟的。学生成绩管理系统软件的使用在一定程度上提高了学生成绩的管理效率。一个科学合理的学生成绩管理系统能够存储历年来的学生成绩档案, 用户界面有好, 操作简单便捷, 节省人力物力的同时, 满足快速、高效、安全等要求, 同时, 学生亦可方便查看成绩。本系统主要采用JAVA语言编写软件;开发环境为windows系统;采用SQL Server数据库作为学生信息管理系统的后台数据库, 以此存储学生信息、并用SQL语句实现学生信息的添加、查询、修改和删除等操作;数据库连接使用ODBC驱动来实现。

    学生信息管理系统的功能主要有以下几个模块:

    (1) 用户登陆。实现用户的登录功能。每位学生、教师和管理员均有唯一的ID登录账号, 在用户登录界面输入ID号和正确密码就可以登录。在用户登录界面对于不同的身份设置了不同的操作界面和功能权限, 用户登录时可选择自己的身份 (教师, 学生) 进行登录。

    (2) 教师管理模块。在教师管理功能模块中主要有成绩录入、成绩查询、统计报表、补考成绩录入几个功能。提供了对学生成绩的录入, 修改, 删除, 查询班级排名;补考成绩的录入;统计报表包括单科考试情况分析表和补考成绩分析表。

    (3) 学生管理模块。在学生管理功能模块中主要包括成绩查询功能, 提供了学生成绩信息的查询, 平时成绩、期末成绩和总评成绩。

    其中, 登录的用户信息分别存储在数据库中的“学生信息表”、“教师信息表”中, 如果用户信息在这两个表中均不存在, 那么用户无权利登录学生成绩管理系统, 从而确保了学生成绩管理系统的安全性。

    三、系统设计

    合理的数据库设计是对数据有效管理的基础和生成正确信息的保障, 亦是管理信息系统设计的关键。

    (一) 数据处理

    学生成绩管理系统主要的`功能就是对学生成绩数据的处理。主要包含分数的录入、查询、修改、删除等操作。

    (二) 实体属性表

    (三) 数据库物理设计

    本系统选择SQL Server作为后台数据库, 并把进销存管理系统的逻辑模型映射到该数据库管理系统上, 主要是根据各个表之间的关系, 确定主键与外键, 主键用来保证表中数据的唯一性, 而外键应用完整性, 从而得到正常维护的表之间的关系。由此, 数据库中分散的表就构成了一个有机的整体。

    (四) 数据库接口设计

    采用ODBC驱动连接后台数据库与前台界面。由于JAVA是通过引入数据库访问库来实现对数据库的访问, 本身不提供数据库访问的方案;对数据库的增加、删除、查找等标准操作都是使用SQL语句来实现;SQL语句是一个文本字符串, JAVA中不提供字符串数据类型, 而是以用字符数据类型的数组或指针来当作字符串来使用, 这种类型的字符串的相加、比较、赋值都极为不方便, 这为SQL语句的生成带来了极大的不便;访问数据库结果的返回类型主要有字符型、整型、小数型等, 还有一个特殊的值, 即空值 (NULL) , 要将数据库中的数据类型与JAVA中的数据类型对应起来难度较大, 而且空值通常是导致数据库访问异常的不稳定因素。由于上述问题的存在, 我们将封装一个类, 由这个类来完成上述复杂操作, 以方便数据连接的统一控制和对异常的捕捉。在使用时, 只需要在应用程序中嵌入这个自定义类, 就可以使应用程序具有对数据库的访问功能。为保证始终只有一个ADO连接数据库, 在本系统设计时只定义一个连接对象, 并声明为静态的, 与其相关的操作也声明为静态的。由于对数据库的访问较多, 需要记录集对象作为成员变量, 在本系统中定义两个记录集指针变量。

    四、功能实现

    (一) 部分代码

    1. 单科成绩排名代码:

    2. 全班排名代码:

    (二) 功能实现

    1. 显示学生信息

    学生登陆系统后, 可直接查询本人基本信息;教师登陆系统后, 可通过输入学生学号, 或通过选择班级选择某位学生, 查询该生基本信息。

    2. 查询个人成绩

    学生登陆系统后, 可查询到所有个人成绩。

    3. 单科成绩排名

    学生登陆系统后, 在显示个人成绩的界面中, 可直接某科目的所有排名信息;教师登陆系统后, 可通过输入科目名称或者科目编号, 查询该科成绩排名, 或查询某班级的该科成绩排名信息。

    4. 全班成绩排名

    教师登陆系统后, 亦可通过输入班级名称, 实现查询该班所有学生本学期的成绩排名信息。

    5. 成绩分析表生成

    教师登陆系统后, 在统计报表模块中, 可查询某科目的成绩分析表。成绩分析表中信息包括:该科成绩平均分、最高分、最低分、各层次人数、正态分布图。图1为某班计算机成绩的正态分析图, 横轴为分数, 纵轴为人数。

    从上述图中可以清晰的得出某班学生的成绩分析, 大多数考分集中在80分, 不及格人数较少, 95分以上人数较少, 属于正常范围。

    (三) 系统安全

    系统的安全性是在学生成绩管理系统的设计开发中遇到的最大问题, 在系统设计开发中应充分考虑安全性。安全的管理系统应该在用户登录、数据录入、数据修改等操作时进行正确的信息处理。在本系统的安全问题上, 主要考虑以下几点:

    (1) 用户登录的安全性。系统能够正确的对用户身份进行验证和鉴别, 由学校为学生、教师和管理员设定唯一的ID账号, 以保证校外人员无法登陆学生管理系统。

    (2) 信息资料的安全性。系统确保用户信息的保密性和安全性, 防止信息外漏、丢失和被篡改。

    (3) 信息处理的正确性。在进行学生信息的管理时, 确保录入数据的正确性、查询的合法性、修改的合理性。

    五、结语

    本文结合计算机技术和学校管理的现状, 从需求分析、系统详细设计、功能实现几方面设计开发了基于SQL Server数据库的学生成绩管理系统, 从而使学生成绩数据更加的规范化、标准化, 同时为学校的学生成绩管理系统提供基础数据支持, 减轻了学生成绩管理工作者的工作量, 在一定程度上提高了学生成绩管理工作的效率。

    参考文献

    [1]周文艳.谈学生成绩管理系统中的数据库设计[J].沧州师范专科学校学报, 2006, 6, 22 (2) :65-67

    [2]姚芳.浅析高校教务管理的信息化和现代化[J].经济与社会发展, 2006, 11

    [3]刘永, 常金玲.信息系统分析与设计[M].北京:科学出版社, 2004, 2:231-286

    [4]明仲, 戚杰.基于Web的网上考试系统的设计与实现[J].中国电化教育, 2004, 2:83-85

    【基于SQL Server的学生成绩管理系统设计论文】相关文章:

    展开全文
  • c语言学生成绩管理系统总结

    千次阅读 2020-12-27 11:09:03
    一、系统功能 1.基本功能 1.录入信息 2.按照学号查找信息 3.按照学号修改信息 4.按照学号删除信息 5.插入信息 6.浏览全部信息 7.按c语言成绩排序 8.保存到文件 2.结构体 typedef struct student { char num[20]; /...

    c语言的大作业,主要功能是录入、修改、删除、插入、排序等,可能有些地方仍然有点bug。

    一、系统功能
    1.基本功能

    1.录入信息
    2.按照学号查找信息
    3.按照学号修改信息
    4.按照学号删除信息
    5.插入信息
    6.浏览全部信息
    7.按c语言成绩排序
    8.保存到文件
    

    2.结构体
    只写了几个基础的,学号刚开始写的int型的,但后来不知道怎么去查重等,改成了char型。

    typedef struct student
    {
    	char num[20];     //学号
    	char name[10];    //姓名
    	char sex[10];     //性别
    	char duty[10];    //专业
    	int eng;          //英语成绩
    	int math;         //数学成绩
    	int c;            //c语言成绩
    	struct student *next;next是指针变量,指向结构体变量 
    }stu;
    

    3.main函数

    int main()
    {
    	system("color 3F");//背景颜色
    	stu *head=(stu *)malloc(sizeof(stu));
    	head->next=NULL;//使head中的next部分为空
    	while(1)
    	{
    	printf("\t\t\t\t**********新生管理系统************\n");
        printf("\t\t\t\t请选择你的操作\n");
        printf("\t\t\t\t1.录入信息\n");
        printf("\t\t\t\t2.按照学号查找信息\n");
    	printf("\t\t\t\t3.按照学号修改信息\n");
    	printf("\t\t\t\t4.按照学号删除信息\n");
    	printf("\t\t\t\t5.插入信息\n");
    	printf("\t\t\t\t6.浏览全部信息\n");
    	printf("\t\t\t\t7.按c语言成绩排序\n");
    	printf("\t\t\t\t8.保存到文件\n");
    	printf("\t\t\t\t0.退出\n");
        printf("\t\t\t\t**********************************\n");
        printf("\t\t\t\t请按键选择操作:\n");
        fflush(stdin);//清除多余的未被保存的数据,防止乱码
        int c;
        scanf("%d",&c);
        switch(c)//用switch语句进行选择和调用函数
        {
        	case 1:
        		input(head);
    			break;
        	case 2:
        		seek(head);
    			break; 
        	case 3:
        		revise(head);
    			break;
    		case 4:
    			del(head);
    			break; 
    		case 5:
    			add(head); 
    			break;
    		case 6:
    		    traver(head);
    			break; 
    		case 7:
    		    sort(head); 
    			break;
    		case 8:
    		    save(head);
    		    break;
    		case 0:
    		     return 0; 
        	default:
        		printf("输入错误!\n"); 
    	}
    	} 
    } 
    

    while循环在外,系统程序能够持续运行,switch判断语句进行功能选择与函数切换。

    color[attr]
    attr        指定控制台输出的颜色属性。
    颜色属性由两个十六进制数字指定
    第一个对应于背景,第二个对应于前景:
        0 = 黑色              8 = 灰色
        1 = 蓝色              9 = 淡蓝色
        2 = 绿色              A = 淡绿色
        3 = 浅绿色            B = 淡浅绿色
        4 = 红色              C = 淡红色
        5 = 紫色              D = 淡紫色
        6 = 黄色              E = 淡黄色
        7 = 白色              F = 亮白色
    

    二、录入学生信息
    在第一次验课设的时候,只简单地写了录入,没有写查重以及格式等的限制。在最后一次验的时候,学号查重依然有问题,遍历时应注意不能直接动头指针p,使q2=p,用q2实现遍历。

    void input(stu *p)//录入 
    {
    	int n,x;
    	system("cls");   //清屏函数
    	stu *q1,*q2;     //定义该结构体类型q1,q2指针
    	q1=p;
    	
    	printf("请输入要录入的学生人数:");
    	scanf("%d",&n); 
    	while(n--)  //while循环n次,n个要录入的学生
    	{
    	stu *q=(stu *)malloc(sizeof(stu)); //给q分配内存
    	
    	int i=1; //定义i循环三次使学号只能输入数字
    	int flag=1,flag1=1,flag2=1,flag3=1,flag4=1; 
    		loop1:while(flag)
    		{
    		printf("请输入学号(三位):");
    		scanf("%s",q->num);
    	    if(strlen(q->num)!=3)//用strlen函数计算字符串长度使学号为三位数
    	    {
    		  printf("学号格式输入错误!\n");
    		  fflush(stdin);//清除多余的未被保存的数据,防止乱码
    		  continue;
    		}
    		q2=p; //头指针赋给q2
    		while(q2)
        {
        	if(strcmp(q->num,q2->num)==0)//用strcmp函数,q2遍历查重
        	{
        		printf("输入的学号重复,请重新输入!\n");
        		goto loop1;//重复重新跳到上一个while循环
    		}
    		q2=q2->next;
    	}
    		while(i<3)
    		{
    			if(q->num[i]-'0'<0 || q->num[i]-'0'>9)//让学号只能输入数字
    			{
    				printf("学号格式输入错误!\n"); 
    				break;
    			}
    			else{
    			   i++;
    				if (i==3)
    				flag=0;
    		}
    		}
    		}
    		printf("请输入学生姓名:");
    		scanf("%s",q->name);
    			
    		while(flag1)
    	{	
    		printf("请输入性别(w/m):");
    	    scanf("%s",q->sex);
    	    if(strcmp(q->sex,"w")==0)//用strcmp函数限制输入的字符,只能输入w/m
    		  flag1=0;//跳出循环
    		else if(strcmp(q->sex,"m")==0)
    		  flag1=0;//跳出循环
    		else
    		{
    		  printf("性别格式输入错误!(请输入w/m)\n");
    		}
    	}
    		printf("请输入专业:");
    		scanf("%s",q->duty);
    		
    	while (flag2)
    		{
    		  printf("请输入英语成绩(0<=eng<=150):");
    		  x=scanf("%d",&q->eng); //如果输入数字x=1
    		  if(q->eng >= 0 && q->eng <= 150 && x==1 )//限制成绩范围
    		  flag2=0;//跳出循环
    		  else{
    		  	 printf("成绩格式输入错误!\n");
    		  	 fflush(stdin);//清理未被保存的数据
    		  }
    		}
    	
    	while(flag3)
    	{
    		printf("请输入数学成绩(0<=math<=150):");
    		x=scanf("%d",&q->math);
    		if(q->math>=0 && q->math<=150 && x==1)
    		flag3=0;
    		else{
    			printf("成绩格式输入错误!\n");
    			fflush(stdin);
    			flag3=1;
    		}
    	} 
    	
    	while(flag4){
    		printf("请输入c语言成绩(0<=c<=150):");
    		x=scanf("%d",&q->c);
    		if(q->c>=0 && q->c<=150 && x==1)
    		flag4=0;
    		else{
    			printf("成绩格式输入错误!\n");
    			fflush(stdin);
    			flag4=1;
    		}
    	}
    		printf("录入成功!\n"); 
    		q->next=NULL; //使q中的next定义为空
    		q1->next=q;
    		q1=q;
    	}
    }
    

    三、查找学生信息

    void seek(stu *p)//查找 
    {
    	stu *q=p->next; 
    	char num[20];
    	int flag = 0;
    	system("cls"); 	//清屏函数
    	printf("请输入查找学生的学号:");
    	scanf("%s",num);
    	while(q!=NULL)
    	{ 
    		if(strcmp(q->num,num) == 0)//strcmp函数查找学生学号
    		{
    			printf("学生学号:%s\n",q->num);
    			printf("学生姓名:%s\n",q->name);
    			printf("学生性别:%s\n",q->sex);
    			printf("专业:%s\n",q->duty);
    			printf("英语成绩:%d\n",q->eng);
    			printf("数学成绩:%d\n",q->math);
    			printf("c语言成绩:%d\n",q->c);
    			flag = 1;
    			break;
    		}
    		q=q->next;//遍历
    	}
    	if(flag == 0)
    	{
    		printf("查无此人\n");
    	}
    }
    

    四、按照学号修改学生信息
    在录入函数源代码的基础上写了修改功能。

    void revise(stu *p)//修改
    {
    	stu *q=p->next;
    	stu *q1,*q2; 
    	int x;
    	char num[200];
    	system("cls"); 	
    	printf("请输入要修改的学号:");
    	scanf("%s",num);
    	while(q!=NULL)
    	{
    		if(strcmp(q->num,num) == 0)
    		{
    			int i=1;
    	int flag=1,flag1=1,flag2=1,flag3=1,flag4=1;
    		loop1:while(flag)
    		{
    		printf("请输入学号(三位):");
    		scanf("%s",q->num);
    	    if(strlen(q->num)!=3){
    		  printf("学号格式输入错误!\n");
    		  fflush(stdin);
    		  continue;
    		}
    	    q2=p;
    		while(q2)
        {
        	if(strcmp(q->num,q2->num)==0)
        	{
        		printf("输入的学号重复,请重新输入!\n");
        		goto loop1;
    		}
    		else{
    			break;
    		}
    		q2=q2->next; 
    	}
    		while(i<3)
    		{
    			if(q->num[i]-'0'<0 || q->num[i]-'0'>9){
    				printf("学号格式输入错误!\n"); 
    				break;
    			}
    			else{
    			   i++;
    				if (i==3)
    				flag=0;
    		}
    		}
    		}
    		printf("请输入学生姓名:");
    		scanf("%s",q->name);
    			
    		while(flag1)
    	{	
    		printf("请输入性别(w/m):");
    	    scanf("%s",q->sex);
    	    if(strcmp(q->sex,"w")==0)
    		  flag1=0;
    		else if(strcmp(q->sex,"m")==0)
    		  flag1=0;
    		else
    		{
    		  printf("性别格式输入错误!(请输入w/m)\n");
    		}
    	}
    		printf("请输入专业:");
    		scanf("%s",q->duty);
    		
    	while (flag2)
    		{
    		  printf("请输入英语成绩(0<=eng<=150):");
    		  x=scanf("%d",&q->eng);
    		  if(q->eng >= 0 && q->eng <= 150 && x==1 )
    		  flag2=0;
    		  else{
    		  	 printf("成绩格式输入错误!\n");
    		  	 fflush(stdin);
    		  }
    		}
    	
    	while(flag3)
    	{
    		printf("请输入数学成绩(0<=math<=150):");
    		x=scanf("%d",&q->math);
    		if(q->math>=0 && q->math<=150 && x==1)
    		flag3=0;
    		else{
    			printf("成绩格式输入错误!\n");
    			fflush(stdin);
    			flag3=1;
    		}
    	} 
    	
    	while(flag4){
    		printf("请输入c语言成绩(0<=c<=150):");
    		x=scanf("%d",&q->c);
    		if(q->c>=0 && q->c<=150 && x==1)
    		flag4=0;
    		else{
    			printf("成绩格式输入错误!\n");
    			fflush(stdin);
    			flag4=1;
    		}
    	}
            printf("修改成功!\n");
    		return; 
    		}
    	    q=q->next;
    		q2->next=q;
    		q2=q;
    	} 
         printf("查无此人");
    }
    

    五、按照学号删除信息
    注意while(!strcmp(q2->num,num)),刚开始写时while(strcmp(q2->num,num))一直删除不成功,当q2->num和num相等时为0,while循环无法进行。

    void del(stu *p)//删除
    {
    	stu *q1,*q2;//定义该结构体类型q1,q2指针
    	q1=p; //q1头结点,p头指针
    	q2=q1->next;
    	char num[200];
    	system("cls"); 	
    	printf("请输入想要删除的学号:");
    	scanf("%s",num);
    	while(q2!=0)
    	{
    		while(!strcmp(q2->num,num))
    		{
    			q1->next=q2->next;
    			free(q2);//释放q2
    			q2=NULL;
    			printf("删除成功\n");
    		    return;
    		}
    		q1=q2;
    		q2=q2->next;
    	}
     } 
    

    六、插入信息(头插法)
    插入部分也是结合的头插法和录入函数

    void add(stu *p) //插入 
    {
    	int n,x;
    	int i=1;
    	int flag=1,flag1=1,flag2=1,flag3=1,flag4=1;
    	stu *q,*q1,*q2;//不用像尾插法一样生成一个终端结点
    	q=(stu*)malloc(sizeof(stu));//给q分配内存
    	q1=(stu*)malloc(sizeof(stu));//给q1分配内存
    	q = p;//q为头结点
    	if(q1==NULL)
    	{
    		printf("插入失败\n");
    		exit(1);
    	}
        for(int a=0;a<n;a++);
        {
           	
    		loop1:while(flag)
    		{
    		printf("请输入学号(三位):");
    		scanf("%s",q1->num);
    	    if(strlen(q1->num)!=3){
    		  printf("学号格式输入错误!\n");
    		  fflush(stdin);
    		  continue;
    		}
    		q2=p;
    		while(q2)
        {
        	if(strcmp(q1->num,q2->num)==0)
        	{
        		printf("输入的学号重复,请重新输入!\n");
        		goto loop1;
    		}
    		q2=q2->next;
    	}
    		while(i<3)
    		{
    			if(q1->num[i]-'0'<0 || q1->num[i]-'0'>9){
    				printf("学号格式输入错误!\n"); 
    				break;
    			}
    			else{
    			   i++;
    				if (i==3)
    				flag=0;
    		}
    		}
    		}
    		printf("请输入学生姓名:");
    		scanf("%s",q1->name);
    			
    		while(flag1)
    	{	
    		printf("请输入性别(w/m):");
    	    scanf("%s",q1->sex);
    	    if(strcmp(q1->sex,"w")==0)
    		  flag1=0;
    		else if(strcmp(q1->sex,"m")==0)
    		  flag1=0;
    		else
    		{
    		  printf("性别格式输入错误!(请输入w/m)\n");
    		}
    	}
    		printf("请输入专业:");
    		scanf("%s",q1->duty);
    		
    	while (flag2)
    		{
    		  printf("请输入英语成绩(0<=eng<=150):");
    		  x=scanf("%d",&q1->eng);
    		  if(q1->eng >= 0 && q1->eng <= 150 &&x==1 )
    		  flag2=0;
    		  else{
    		  	 printf("成绩格式输入错误!\n");
    		  	 fflush(stdin);
    		  }
    		}
    	
    	while(flag3)
    	{
    		printf("请输入数学成绩(0<=math<=150):");
    		x=scanf("%d",&q1->math);
    		if(q1->math>=0 && q1->math<=150 && x==1)
    		flag3=0;
    		else{
    			printf("成绩格式输入错误!\n");
    			fflush(stdin);
    			flag3=1;
    		}
    	} 
    	
    	while(flag4){
    		printf("请输入c语言成绩(0<=c<=150):");
    		x=scanf("%d",&q1->c);
    		if(q1->c>=0 && q1->c<=150 && x==1)
    		flag4=0;
    		else{
    			printf("成绩格式输入错误!\n");
    			  fflush(stdin);
    			flag4=1;
    		}
    	}
    	q1->next=p->next;将p指向的地址赋值给q1;
    	p->next=q1;头指针的指针域next指向q1节点,使得q1成为开始节点
    	q1=q1->next;
    	printf("插入成功!\n");
    }
    } 
    

    在这里插入图片描述

    七、浏览全部信息

    void traver(stu *p) //遍历输出
    {	
    	stu *q = p->next ;//使p的next给q
    	system("cls"); 	//清屏
    	while(q!=NULL)
        {
    		printf("学号:%s\n姓名:%s\n性别:%s\n专业:%s\n英语成绩:%d\n数学成绩:%d\nc语言成绩:%d\n",q->num,q->name,q->sex,q->duty,q->eng,q->math,q->c);
    		q=q->next;
    	}
    }
    

    八、按c语言成绩排序(降序)

    void sort(stu *p)//排序 (c语言成绩) 
     {							
    	stu *q=NULL;
    	system("cls"); 							
    	while(q!=p->next) //q不等于头指针是一次循环
    	{
    		stu *pre=p;
    		stu *cur=pre->next;
    		while(cur!=q&&cur->next !=q) 
    		{
    			if(cur->c<cur->next->c )
    			 {
    				pre->next =cur->next;
    				cur->next =cur->next->next;
    				pre->next->next =cur;
    			}
    			pre=pre->next;
    			cur=pre->next;
    		}
    		q=cur;
    	}
            traver(p);//调用traver函数输出结果
    }
    

    九、保存文件

    void save(stu *p)//文件 
    {
      	FILE*fp = fopen("学生信息.txt","w");//创建文件指针
    	if(fp!=NULL)
    	{
    		
    		while(p->next!=NULL)
    		{  
       			fprintf(fp,"学号:%s\n",p->next->num);
       			fprintf(fp,"姓名:%s\n",p->next->name);
       			fprintf(fp,"性别:%s\n",p->next->sex);
       			fprintf(fp,"专业:%s\n",p->next->duty);
       			fprintf(fp,"英语成绩:%d\n",p->next->eng);
       			fprintf(fp,"数学成绩:%d\n",p->next->math);
       			fprintf(fp,"c语言成绩:%d\n",p->next->c);
       			fprintf(fp,"---------------------------\n");
      			p=p->next;
    	  	}
    	  	printf("保存成功!\n");
    	}
    	fclose(fp);
    }
    

    全部代码

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    typedef struct student
    {
    	char num[20];
    	char name[10];
    	char sex[10];
    	char duty[10];
    	int eng;
    	int math;
    	int c; 
    	struct student *next;
    }stu;
    
    void input(stu *p)//录入 
    {
    	int n,x;
    	system("cls");
    	stu *q1,*q2;
    	q1=p;
    	
    	printf("请输入要录入的学生人数:");
    	scanf("%d",&n); 
    	while(n--)
    	{
    	stu *q=(stu *)malloc(sizeof(stu));
    	
    	int i=1;
    	int flag=1,flag1=1,flag2=1,flag3=1,flag4=1;
    		loop1:while(flag)
    		{
    		printf("请输入学号(三位):");
    		scanf("%s",q->num);
    	    if(strlen(q->num)!=3){
    		  printf("学号格式输入错误!\n");
    		  fflush(stdin);
    		  continue;
    		}
    		q2=p;
    		while(q2)
        {
        	if(strcmp(q->num,q2->num)==0)
        	{
        		printf("输入的学号重复,请重新输入!\n");
        		goto loop1;
    		}
    		q2=q2->next;
    	}
    		while(i<3)
    		{
    			if(q->num[i]-'0'<0 || q->num[i]-'0'>9){
    				printf("学号格式输入错误!\n"); 
    				break;
    			}
    			else{
    			   i++;
    				if (i==3)
    				flag=0;
    		}
    		}
    		}
    		printf("请输入学生姓名:");
    		scanf("%s",q->name);
    			
    		while(flag1)
    	{	
    		printf("请输入性别(w/m):");
    	    scanf("%s",q->sex);
    	    if(strcmp(q->sex,"w")==0)
    		  flag1=0;
    		else if(strcmp(q->sex,"m")==0)
    		  flag1=0;
    		else
    		{
    		  printf("性别格式输入错误!(请输入w/m)\n");
    		}
    	}
    		printf("请输入专业:");
    		scanf("%s",q->duty);
    		
    	while (flag2)
    		{
    		  printf("请输入英语成绩(0<=eng<=150):");
    		  x=scanf("%d",&q->eng);
    		  if(q->eng >= 0 && q->eng <= 150 && x==1 )
    		  flag2=0;
    		  else{
    		  	 printf("成绩格式输入错误!\n");
    		  	 fflush(stdin);
    		  }
    		}
    	
    	while(flag3)
    	{
    		printf("请输入数学成绩(0<=math<=150):");
    		x=scanf("%d",&q->math);
    		if(q->math>=0 && q->math<=150 && x==1)
    		flag3=0;
    		else{
    			printf("成绩格式输入错误!\n");
    			fflush(stdin);
    			flag3=1;
    		}
    	} 
    	
    	while(flag4){
    		printf("请输入c语言成绩(0<=c<=150):");
    		x=scanf("%d",&q->c);
    		if(q->c>=0 && q->c<=150 && x==1)
    		flag4=0;
    		else{
    			printf("成绩格式输入错误!\n");
    			fflush(stdin);
    			flag4=1;
    		}
    	}
    		printf("录入成功!\n"); 
    		q->next=NULL;
    		q1->next=q;
    		q1=q;
    	}
    }
    
    void traver(stu *p) //遍历输出
    {	
    	stu *q = p->next ;
    	system("cls"); 	
    	while(q!=NULL)
        {
    		printf("学号:%s\n姓名:%s\n性别:%s\n专业:%s\n英语成绩:%d\n数学成绩:%d\nc语言成绩:%d\n",q->num,q->name,q->sex,q->duty,q->eng,q->math,q->c);
    		q=q->next;
    	}
    }
    
    void add(stu *p) //插入 
    {
    	int n,x;
    	int i=1;
    	int flag=1,flag1=1,flag2=1,flag3=1,flag4=1;
    	stu *q,*q1,*q2;
    	q=(stu*)malloc(sizeof(stu));
    	q1=(stu*)malloc(sizeof(stu));
    	q = p;
    	if(q1==NULL)
    	{
    		printf("插入失败\n");
    		exit(1);
    	}
        for(int a=0;a<n;a++);
        {
           	
    		loop1:while(flag)
    		{
    		printf("请输入学号(三位):");
    		scanf("%s",q1->num);
    	    if(strlen(q1->num)!=3){
    		  printf("学号格式输入错误!\n");
    		  fflush(stdin);
    		  continue;
    		}
    		q2=p;
    		while(q2)
        {
        	if(strcmp(q1->num,q2->num)==0)
        	{
        		printf("输入的学号重复,请重新输入!\n");
        		goto loop1;
    		}
    		q2=q2->next;
    	}
    		while(i<3)
    		{
    			if(q1->num[i]-'0'<0 || q1->num[i]-'0'>9){
    				printf("学号格式输入错误!\n"); 
    				break;
    			}
    			else{
    			   i++;
    				if (i==3)
    				flag=0;
    		}
    		}
    		}
    		printf("请输入学生姓名:");
    		scanf("%s",q1->name);
    			
    		while(flag1)
    	{	
    		printf("请输入性别(w/m):");
    	    scanf("%s",q1->sex);
    	    if(strcmp(q1->sex,"w")==0)
    		  flag1=0;
    		else if(strcmp(q1->sex,"m")==0)
    		  flag1=0;
    		else
    		{
    		  printf("性别格式输入错误!(请输入w/m)\n");
    		}
    	}
    		printf("请输入专业:");
    		scanf("%s",q1->duty);
    		
    	while (flag2)
    		{
    		  printf("请输入英语成绩(0<=eng<=150):");
    		  x=scanf("%d",&q1->eng);
    		  if(q1->eng >= 0 && q1->eng <= 150 &&x==1 )
    		  flag2=0;
    		  else{
    		  	 printf("成绩格式输入错误!\n");
    		  	 fflush(stdin);
    		  }
    		}
    	
    	while(flag3)
    	{
    		printf("请输入数学成绩(0<=math<=150):");
    		x=scanf("%d",&q1->math);
    		if(q1->math>=0 && q1->math<=150 && x==1)
    		flag3=0;
    		else{
    			printf("成绩格式输入错误!\n");
    			fflush(stdin);
    			flag3=1;
    		}
    	} 
    	
    	while(flag4){
    		printf("请输入c语言成绩(0<=c<=150):");
    		x=scanf("%d",&q1->c);
    		if(q1->c>=0 && q1->c<=150 && x==1)
    		flag4=0;
    		else{
    			printf("成绩格式输入错误!\n");
    			  fflush(stdin);
    			flag4=1;
    		}
    	}
    	q1->next=p->next;
    	p->next=q1;
    	q1=q1->next;
    	printf("插入成功!\n");
    }
    } 
    
    void seek(stu *p)//查找 
    {
    	stu *q=p->next;
    	char num[20];
    	int flag = 0;
    	system("cls"); 	
    	printf("请输入查找学生的学号:");
    	scanf("%s",num);
    	while(q!=NULL)
    	{ 
    		if(strcmp(q->num,num) == 0)
    		{
    			printf("学生学号:%s\n",q->num);
    			printf("学生姓名:%s\n",q->name);
    			printf("学生性别:%s\n",q->sex);
    			printf("专业:%s\n",q->duty);
    			printf("英语成绩:%d\n",q->eng);
    			printf("数学成绩:%d\n",q->math);
    			printf("c语言成绩:%d\n",q->c);
    			flag = 1;
    			break;
    		}
    		q=q->next;
    	}
    	if(flag == 0)
    	{
    		printf("查无此人\n");
    	}
    }
    
    void revise(stu *p)//修改
    {
    	stu *q=p->next;
    	stu *q1,*q2; 
    	int x;
    	char num[200];
    	system("cls"); 	
    	printf("请输入要修改的学号:");
    	scanf("%s",num);
    	while(q!=NULL)
    	{
    		if(strcmp(q->num,num) == 0)
    		{
    			int i=1;
    	int flag=1,flag1=1,flag2=1,flag3=1,flag4=1;
    		loop1:while(flag)
    		{
    		printf("请输入学号(三位):");
    		scanf("%s",q->num);
    	    if(strlen(q->num)!=3){
    		  printf("学号格式输入错误!\n");
    		  fflush(stdin);
    		  continue;
    		}
    	    q2=p;
    		while(q2)
        {
        	if(strcmp(q->num,q2->num)==0)
        	{
        		printf("输入的学号重复,请重新输入!\n");
        		goto loop1;
    		}
    		else{
    			break;
    		}
    		q2=q2->next; 
    	}
    		while(i<3)
    		{
    			if(q->num[i]-'0'<0 || q->num[i]-'0'>9){
    				printf("学号格式输入错误!\n"); 
    				break;
    			}
    			else{
    			   i++;
    				if (i==3)
    				flag=0;
    		}
    		}
    		}
    		printf("请输入学生姓名:");
    		scanf("%s",q->name);
    			
    		while(flag1)
    	{	
    		printf("请输入性别(w/m):");
    	    scanf("%s",q->sex);
    	    if(strcmp(q->sex,"w")==0)
    		  flag1=0;
    		else if(strcmp(q->sex,"m")==0)
    		  flag1=0;
    		else
    		{
    		  printf("性别格式输入错误!(请输入w/m)\n");
    		}
    	}
    		printf("请输入专业:");
    		scanf("%s",q->duty);
    		
    	while (flag2)
    		{
    		  printf("请输入英语成绩(0<=eng<=150):");
    		  x=scanf("%d",&q->eng);
    		  if(q->eng >= 0 && q->eng <= 150 && x==1 )
    		  flag2=0;
    		  else{
    		  	 printf("成绩格式输入错误!\n");
    		  	 fflush(stdin);
    		  }
    		}
    	
    	while(flag3)
    	{
    		printf("请输入数学成绩(0<=math<=150):");
    		x=scanf("%d",&q->math);
    		if(q->math>=0 && q->math<=150 && x==1)
    		flag3=0;
    		else{
    			printf("成绩格式输入错误!\n");
    			fflush(stdin);
    			flag3=1;
    		}
    	} 
    	
    	while(flag4){
    		printf("请输入c语言成绩(0<=c<=150):");
    		x=scanf("%d",&q->c);
    		if(q->c>=0 && q->c<=150 && x==1)
    		flag4=0;
    		else{
    			printf("成绩格式输入错误!\n");
    			fflush(stdin);
    			flag4=1;
    		}
    	}
            printf("修改成功!\n");
    		return; 
    		}
    	    q=q->next;
    		q2->next=q;
    		q2=q;
    	} 
         printf("查无此人");
    }
    
    void del(stu *p)//删除
    {
    	stu *q1,*q2;
    	q1=p;
    	q2=q1->next;
    	char num[200];
    	system("cls"); 	
    	printf("请输入想要删除的学号:");
    	scanf("%s",num);
    	while(q2!=0)
    	{
    		while(!strcmp(q2->num,num))
    		{
    			q1->next=q2->next;
    			free(q2);
    			q2=NULL;
    			printf("删除成功\n");
    		    return;
    		}
    		q1=q2;
    		q2=q2->next;
    	}
     } 
     
    void sort(stu *p)//排序 (c语言成绩) 
     {							
    	stu *q=NULL;
    	system("cls"); 							
    	while(q!=p->next) 
    	{
    		stu *pre=p;
    		stu *cur=pre->next;
    		while(cur!=q&&cur->next !=q) 
    		{
    			if(cur->c<cur->next->c )
    			 {
    				pre->next =cur->next;
    				cur->next =cur->next->next;
    				pre->next->next =cur;
    			}
    			pre=pre->next;
    			cur=pre->next;
    		}
    		q=cur;
    	}
            traver(p);
    }
    
    void save(stu *p)//文件 
    {
      	FILE*fp = fopen("学生信息.txt","w");
    	if(fp!=NULL)
    	{
    		
    		while(p->next!=NULL)
    		{  
       			fprintf(fp,"学号:%s\n",p->next->num);
       			fprintf(fp,"姓名:%s\n",p->next->name);
       			fprintf(fp,"性别:%s\n",p->next->sex);
       			fprintf(fp,"专业:%s\n",p->next->duty);
       			fprintf(fp,"英语成绩:%d\n",p->next->eng);
       			fprintf(fp,"数学成绩:%d\n",p->next->math);
       			fprintf(fp,"c语言成绩:%d\n",p->next->c);
       			fprintf(fp,"---------------------------\n");
      			p=p->next;
    	  	}
    	  	printf("保存成功!\n");
    	}
    	fclose(fp);
    }
    
    int main()
    {
    	system("color 3F");
    	stu *head=(stu *)malloc(sizeof(stu));
    	head->next=NULL;
    	while(1)
    	{
    	printf("\t\t\t\t**********新生管理系统************\n");
        printf("\t\t\t\t请选择你的操作\n");
        printf("\t\t\t\t1.录入信息\n");
        printf("\t\t\t\t2.按照学号查找信息\n");
    	printf("\t\t\t\t3.按照学号修改信息\n");
    	printf("\t\t\t\t4.按照学号删除信息\n");
    	printf("\t\t\t\t5.插入信息\n");
    	printf("\t\t\t\t6.浏览全部信息\n");
    	printf("\t\t\t\t7.按c语言成绩排序\n");
    	printf("\t\t\t\t8.保存到文件\n");
    	printf("\t\t\t\t0.退出\n");
        printf("\t\t\t\t**********************************\n");
        printf("\t\t\t\t请按键选择操作:\n");
        fflush(stdin);
        int c;
        scanf("%d",&c);
        switch(c)
        {
        	case 1:
        		input(head);
    			break;
        	case 2:
        		seek(head);
    			break; 
        	case 3:
        		revise(head);
    			break;
    		case 4:
    			del(head);
    			break; 
    		case 5:
    			add(head); 
    			break;
    		case 6:
    		    traver(head);
    			break; 
    		case 7:
    		    sort(head); 
    			break;
    		case 8:
    		    save(head);
    		    break;
    		case 0:
    		     return 0; 
        	default:
        		printf("输入错误!\n"); 
    	}
    	} 
    } 
    
    展开全文
  • 《(最新整理)学生成绩管理系统数据库设计》由会员分享,可在线阅读,更多相关《(最新整理)学生成绩管理系统数据库设计(18页珍藏版)》请在人人文库网上搜索。1、完整)学生成绩管理系统数据库设计(完整)学生成绩管理...
  • 学生信息管理系统遇到问题及解决办法

    千次阅读 热门讨论 2019-03-21 20:13:37
    学生系统遇到问题: 实时错误 91 实施错误3021 解决方法: 实时错误91: 我的就是自己不认真把代码打错了。自己对了半天的代码才找的的问题。这个事情告诉我们代码的时候一点要认真。 实时错误3021: 出现实时错误...
  • 学生成绩管理系统设计与实现(MySQL)

    千次阅读 2021-02-08 07:06:34
    学生成绩管理系统设计与实现(MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文10000字,程序代码,MySQL数据库)随着信息技术的发展、电脑化教学与远程的网络化教学的普及,使得基于WEB技术的教学管理...
  • 基于Java Swing的学生成绩管理系统

    万次阅读 2021-11-08 14:00:17
    学生成绩管理系统1.介绍2.相关技术3.仓库地址4.所需环境5.安装教程6.运行截图7.相关博客 1.介绍 为应对学生成绩的查询,学生成绩管理系统包括以下功能: 1.用户通过帐号和密码登入界面。 2.登陆界面后,出现学生...
  • (2019-01-08 更新很久之前写的了……如果可以去找新一点的项目吧= =代码是可以运行的但是遇到什么问题也不要问我了我已经忘记 JSP 是什么了 Sorry...)环境:MyEclipse 2016 CI & MySQL5.5 &apache-tomcat-...
  • c语言课程设计文档,包含题目意义,设计思路,采用的主要技术、遇到的难点和解决方法、实现的主要功能和系统结构、核心算法描述和相关技术说明、功能测试、总结和体会
  • 学生成绩管理系统

    2015-04-27 23:06:47
    学生成绩管理中,经常会遇到求平均成绩,统计不及格学生成绩,统计优秀学生人数,以及按成绩对学生进行排名等。
  • 今天试图用链表写一个学生成绩管理系统,可是如果要实现既可以按照学号排序又可以按照成绩排序的话,需要对链表进行排序,然后我看网上说对链表排序时一般都很低效,那想问问各位,这样的话用链表划不划算呢,还是...
  • C++编写学生成绩管理系统

    千次阅读 2021-12-04 16:26:12
    本人是大一本科在读学生,也是一名刚接触代码不久的新手程序员。在学完结构体部分内容后,老师布置了一个综合实验...本文章主要是向大家分享我所编写的学生成绩管理系统代码以及我在编程过程中的感受和遇到的一些问题
  • 本次课程设计课题为学生成绩管理系统,该学生成绩管理系统主要包括前台用户界面的开发和后台数据库的开发,重点在于后台数据库的开发。要求建立起完整性强、数据一致性和数据安全性好的数据库。在前端用户界面的开发...
  • C语言课程设计报告源码下载方式关注微信公众号 跨时代的jay回复 学生成绩管理系统为大家提供一些帮助!获取链接后复制到浏览器即可下载课题题目: 学生信息管理系统班 级: 信卓11801姓 名: 聂健班级序号: 09同组...
  • 一、程序功能(Function)1、功能概述利用python完成完成一个学生信息的增删改查程序,主要涉及知识点:程序控制结构(做多级菜单)、文件读写操作(学生信息要保存到磁盘上的文件里)。2、思维导图 二、 学生实体(Entity)...
  • C# 学生成绩管理系统 完整版

    千次阅读 2019-03-10 23:06:35
    字符串读取后分割的bug 可能是因为编码问题导致的 为了解决这个bug 写入的时候直接用\r\n分割了 但是解决乱码问题之后可能就没有这个bug了 以后可以用\t或者space分割试试 效果 其他窗体的图懒得帖了,等完善总分...
  • 单链表实现学生成绩管理系统前言需求分析详细设计增加成绩信息删除成绩信息 前言 上篇已经讲过单链表的基本实现,这篇将以一个简单的管理系统入手。 详细讲解下如何在原来单链表的基础上实现一个简单的管理系统。 ...
  • // // main.c // 周五.c // // Created by ancientear on 2017/9/1. #include<stdio.h> #include<string.h> #include<stdlib.h> ... //添加学生信息 void Stu_delete...
  • C#语言实现《学生成绩管理系统

    万次阅读 多人点赞 2017-11-08 20:13:53
    我创建了一个VS项目连接数据库,项目为学生成绩管理系统,其中包含登录、开课情况查询、学生成绩查询、学生信息维护、学生成绩维护以及帮助等主要内容。项目分为两端:因用户权限不同,分别为普
  • 学生成绩管理系统单链表实现

    千次阅读 2020-09-04 10:32:24
    学生成绩管理程序 (使用c,go,python语言开发) 代码及版本管理地址 gitee码云版本地址(点击跳转) 要求 本程序用于教学单位(院/系)的学生成绩管理。要求程序能够实现学生信息录入(可以实现增加、删除、修改学生的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,415
精华内容 5,766
关键字:

学生成绩管理系统遇到的问题