C语言实验综合程序设计------学生管理系统

本文详细介绍了C语言实现的学生管理系统,包括实验目的、功能要求和实现过程。系统具备学生成绩的增删改查、排序及统计功能。通过流程图辅助设计,强调了C语言中数据类型、函数、运算符优先级、数组、指针、结构体和文件操作的重要性。作者分享了学习C语言的心得体会,认为交流与实践是提升的关键。
摘要由CSDN通过智能技术生成

C语言实验综合程序设计------学生管理系统

一、实验目的

1.熟悉和回顾编程的一般方法
2.循序渐进编写实际编程问题
3.进一步学习和提高综合编程能力和解决编程中出现的问题的能力

二、实验内容

1.设计和完成:简单学生成绩管理信息系统
   学生成绩信息包括:学号,姓名,课程名,平时成绩,实验成绩,考试成绩,总评成绩。

2.要求实现如下功能:
   1) 能够实现学生成绩信息的插入、删除和修改;
   2) 能够实现各种查询(分别根据学生学号、姓名、课程名称等);
   3) 能够实现按照考试成绩、总评成绩进行排序;
   4) 能够查询某门课程的最高分、最低分并输出相应学生信息;
   5) 能够查询某门课程的优秀率(90分及以上)、不及格率;

3.说明:
   1) 本次试验是综合设计实验,用6个学时(3次实验课)完成 ,程序的最终运行结果界面如:图10 功能模块界面,根据输入序号选择执行相应功能(仅供参考)
图10 功能模块界面
   2) 也可以自己选定其它类似题目,功能要求参考学生成绩管理系统。

三、源代码

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
typedef struct STUDENT
{
   
 int num;
 char name[10];
 char Class[50];
 char classname[8][80];
 float score[4];
 float total;
 int classnum;
 struct STUDENT *next;
}student;
typedef struct NODE
{
   
 float score;
 char name[20];
 struct NODE *next;
}node;
student *z;
student* initiate()
{
   
 student *p;
 p=(student*)malloc(sizeof(student));
 p->next=NULL;
 z=p;
 return p;
}
void input(int n)//输入学生信息
{
   
 int i,j;
    student *temp;
 for(i=0;i<n;i++)
 {
   
  temp=(student*)malloc(sizeof(student)); 
  temp->total=0;
  printf("请输入学生的学号:");
  scanf("%d",&temp->num);
  printf("请输入学生的姓名:");
  scanf("%s",temp->name);
  printf("请输入学生的班级:");
  scanf("%s",temp->Class);
  printf("请输入学生所选课程的个数:");
  scanf("%d",&temp->classnum);
  printf("请输入各个课程名称和所得的分数:\n");
  for(j=0;j<temp->classnum;j++)
  {
   
      scanf("%s %f",temp->classname[j],&temp->score[j]);
            temp->total=temp->total+temp->score[j];
        }
  temp->next=NULL;
  z->next=temp;
  z=temp;
 }
}

学生信息

void ranking(student *head)
{
   
 int i;
 char classname[20],ch;
      student *p=head->next;
      node *temp,*q,*w;
      temp=(node*)malloc(sizeof(node));
      temp->next=NULL;
 printf("请输入课程名:");
 scanf("%s",classname);
 while(p!=NULL)
 {
   
     for(i=0;i<(p->classnum);i++)
  {
   
   if(strcmp(classname,p->classname[i])==0)
   {
   
    w=temp;
    q=(node*)malloc(sizeof(node));
                strcpy(q->name,p->name);
                q->score=p->score
概述: 1)在已完成的版本中,通过链表的操作已可实现学生信息系统的建立,添加,删除,查找,输出。(学生信息的排序未实现) 2)在Windows环境下,通过调用vbs文件实现对指定文本的朗读。 已知问题: 1)菜单中有显示学生信息系统的载入,但是实际运行过程中,载入后不能对文件进行操作。 2)通过"Add"添加的学生信息在程序运行过程中可以进行操作,但是无法保存至文件。 3)在xp环境下,会提示“没有找到MSVCR100D.dll”以及缺少“windows.h”。具体解决方案分析中。 4)由于vbs文件的调用,Linux环境下应该会报错。 5)杀毒软件会对vbs文件拦截。 注意: 1)vbs文件应该与源文件或exe执行程序在同一目录下。 2)不要中途退出程序,否则记录不能保存。应该通过菜单“0”-“0”选择退出 Logs: 1)有一个问题是偶然发现的。我在写这个程序的时候使用的环境是Microsoft Visual Studio 2010 SP1。按照默认的设置编译了程序之后,将DEMO发给一个电脑上没有装VS环境的XP用户,但是程序运行提示缺失“MSVCR100D.dll”。后来经过网上的查证,发现是VS的编译设置的问题。 解决方案如下: 在VS的界面键盘快捷键Alt+F7,可以打开项目的属性窗口。左侧选择“配置属性”->“C/C++”->“代码生成”,右侧窗口中“运行库”一项默认为“多线程调试 DLL (/MDd)”,将该选项修改为“多线程 (/MT)”或“多线程调试 (/MTd)”,重新编译即可。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值