C语言实现学生选课系统

本文实例为大家分享了C语言实现学生选课系统的具体代码,供大家参考,具体内容如下

代码:

#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<conio.h>

typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int  uint32_t;

#define CLASS_CLS  system("cls")
#define CLASS_NAME  80

typedef struct class
 {
  char name[CLASS_NAME]; /* 课程名称 -- 唯一性 */
  uint32_t nature;    /* 课程性质(必修或者选修) */
  uint32_t total_period; /* 课程总学时 */
  uint32_t teach_period; /* 授课学时 */
  uint32_t exper_period; /* 上机学时 */
  uint32_t start_time;  /* 课程开始时间 */
  uint8_t score;     /* 课程学分 */
  uint8_t is_exsit;    /* 课程是否存在 */
  struct class *next;
 } class_t; // 课程结构体

class_t *head = NULL;
static uint32_t count = 1;

void play(char *text, int display, int time, int nu) //动画打印
{
 CLASS_CLS;
 int i, len;
 for(i = 0; i <= nu; i++)
 {
  printf("\n");
 }
 for(i = 0; i < 25; i++)
 {
  printf(" ");
 }
 len = strlen(text);
 for(i = 0; i < len; i++)
 {
  printf("%c", text[i]);
  Sleep(display);
 }
 Sleep(time);
}

void titile(char *text, char *str)
{
 CLASS_CLS;
 uint8_t i;
 for(i = 0; i < 25; i++)
 {
  printf(" ");
 }
 printf("%s\n", text);
 for(i = 0; i <= 60; i++)
 {
  printf("%s", str);
 }
 printf("\n");
}

void menu(void)
{
 titile("【学生选课系统】", "-");
 printf("\n\t|-----------------------------------|");
 printf("\n\t|      [1]--增加课程     |");
 printf("\n\t|      [2]--浏览课程     |");
 printf("\n\t|      [3]--查询课程     |");
 printf("\n\t|      [4]--删除课程     |");
 printf("\n\t|      [5]--修改课程     |");
 printf("\n\t|      [Q]--退出系统     |");
 printf("\n\t|-----------------------------------|");
}

void get_bat_data(void)
{
 class_t *point, *q;
 uint32_t count = 0;
 FILE *fp = fopen("c:\\student_elective.dat", "rb");
 rewind(fp);

 point = (class_t *)malloc(sizeof(class_t));
 head = point;

 while(!feof(fp))
 {
  count++;
  fread(point, sizeof(class_t), 1, fp);
  point->next = (class_t *)malloc(sizeof(class_t));
  q = point;
  point = point->next;
 }
 q->next = NULL;
 fclose(fp);
}

void save_bat_data(void)
{
 class_t *point = head;
 FILE *fp = fopen("c:\\student_elective.dat", "w+");

 while(NULL != point)
 {
  count++;
  fwrite(point, sizeof(class_t), 1, fp);
  point = point->next;
 }
 fclose(fp);
}

uint32_t num_check(void)
{
 char ch;
 uint32_t sum = 0;

 while(1)
 {
  ch = getch();
  if('\n' == ch || '\r' == ch)
  {
   return sum;
  }
  else if('\b' == ch)
  {
   sum /= 10;
   printf("\b \b");
  }
  else if(('0' <= ch) && ('9' >= ch))
  {
   sum *= 10;
   sum += ch - '0';
   printf("%d", ch - '0');
  }
 }

}

void create(void)
{
 class_t *point, *q;
 char tmp[CLASS_NAME], ch;
 uint8_t flag = 0;

 while(1)
 {
  if(1 != count)
  {
   printf("是否继续增加课程(y/n):");
   gets(tmp);
   if(strcmp(tmp, "n") == 0)
   {
    break;
   }
  }

  point = (class_t *)malloc(sizeof(class_t));
  point->is_exsit = 0;
  printf("\n====请输入第%d个选修课程信息====\n", count);
  printf("选择课程名称:");
  gets(point->name);
  q = head;
  while(NULL != q)
  {
   if(strcmp(q->name, point->name) == 0)
   {
    flag = 1;
    printf("课程名称重复或者不合格,请重新输入...\n");
    break;
   }
   q = q->next;
  }
  if(1 == flag)
  {
   continue;
  }

  printf("课程性质:");
  printf("\n[B]--【必修】 [X]--【选修】");
  while(1)
  {
   ch = getch();
   if(ch == 'b' || ch == 'B')
   {
    point->nature = 1;
    break;
   }
   if(ch == 'x' || ch == 'X')
   {
    point->nature = 2;
    break;
   }
  }

  printf("\n输入总学时:(只接受数字!)");
  point->total_period = num_check();
  printf("\n输入授课学时:(只接受数字!)");
  point->teach_period = num_check();
  printf("\n输入上机学时:(只接受数字!)");
  point->exper_period = num_check();
  printf("\n输入本课程学分:(只接受数字!)");
  point->score = num_check();
  printf("\n输入开课学期:(只接受数字!)");
  point->start_time = num_check();
  point->is_exsit = 1;

  point->next = head;
  head = point;
  count++;
 }

 printf("信息录入完毕,按任意键继续……");
 getch();
}

void display(void)
{
 class_t *point = head;

 CLASS_CLS;
 titile("【查看课程】", "-");
 printf("\n名称      \t性质\t总学时\t授课学时\t上机学时\t学分\t开课学期");

 while(NULL != point)
 {
  if(1 == point->is_exsit)
  {
   printf("\n%-14s  ", point->name);
   if(1 == point->nature)
   {
    printf("必修课");
   }
   else
   {
    printf("选修课");
   }
   printf("   %d时   %d时      %d时      %d分   %d时", point->total_period, point->teach_period, point->exper_period, point->score, point->start_time);
  }
  point = point->next;
 }
 getch();
}
// 对照学生管理系统自行拓展
void search(void)
{

}

void modify(void)
{

}

void delete(void)
{

}

int main(void)
{
 uint8_t value;
 uint8_t movie = 1;
 char choice[3];

 FILE *fp = fopen("c:\\student_elective.dat", "a");
 fclose(fp);

 system("color 30");
 system("mode con:cols=100 lines=35");
 system("title 【选修课系统】");

 if(1 == movie)
 {
  play("欢迎使用【选修课系统】", 80, 1500, 10);
 }

 while(1)
 {
  CLASS_CLS;
  menu();
  do
  {
   gets(choice);
   value = atoi(choice);
  }
  while((value > 12) || (value < 0));
  switch(value)
  {
  case 1:
   create();
   break;
  case 2:
   display();
   break;
  case 3:
   search();
   break;
  case 4:
   modify();
   break;
  case 5:
   delete();
   break;
  case 6:
   save_bat_data();
   break;
  case 7:
   get_bat_data();
   break;
  case 8:
   exit(1);
   break;

  default:
   break;
  }
 }

 return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++实现简单的学生管理系统

    C++实现简单的学生管理系统 //Student.cpp #include<iostream> using namespace std; struct Stu { char no[10]; char name[16]; int math; int chi; double ave; }; class Student { public: Stu st; Student * next; public: Student(){} Student(Stu s) { st=s; next=NULL; st.

  • 基于C语言实现学生选课系统

    鉴于C语言实现的通讯录,为了巩固C语言的基础知识,试着写一个简单的学生选课系统. 思路比较简单: 1.回滚显示各种提示信息或操作信息 2.链表操作. 代码中有管理员部分功能没有实现,学生和老师的功能基本实现,但有待加固,如果初学者可是试着去完善一下. 还可以将老师,学生的信息输出到文件文本中,本代码中没有实现,但并不是很难. 代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h> /* 总链表--

  • C++实现学生选课系统

    本文实例为大家分享了C++实现学生选课系统的具体代码,供大家参考,具体内容如下 #include <iostream> #include <iomanip> #include <fstream> #include<Windows.h> #include<cstring> using namespace std; struct SubList/*某个学生所学的课程中的某一个 */ { int num; /*课程代号 */ SubList *next

  • C++实现简单的信息管理系统

    本文为大家分享C++实现简单的信息管理系统,小编之前在学习的时候也要做一些管理系统,在网上查了许多资料,现在我把资料分享给大家,希望能够帮助到大家. #include <stdio.h> #include <stdlib.h> #include "file.h" void savaList(Node *head)/**把用户录入的数据存储到文件里面去方便下次读取*/ { FILE *fp=fopen("data\\data.txt" ,&qu

  • C++实现停车场管理系统

    本文实例为大家分享了停车场管理系统的具体代码,供大家参考,具体内容如下 #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cstdlib> #include<algorithm> #include<queue> #include<vector> #include<stack> #includ

  • C++学生信息管理系统

    本文实例为大家分享了C++学生信息管理系统源码,供大家参考,具体内容如下 1. tea_list.c #include<stdio.h> #include<stdlib.h> #include<string.h> #include"teacher.h" int sq_tea ; PTEA head = NULL ; FILE *fp ; int tea_llopen(const char* path)//打开文件 { fp=fopen(path,&q

  • C++获取当前系统时间的方法总结

    本文实例讲述了C++获取当前系统时间的方法.分享给大家供大家参考.具体如下: 方案- 优点:仅使用C标准库:缺点:只能精确到秒级 #include <time.h> #include <stdio.h> int main( void ) { time_t t = time(0); char tmp[64]; strftime(tmp,sizeof(tmp),"%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t)); puts(

  • C++实现简单的图书管理系统

    今天再为大家介绍另一个常用的管理系统--图书管理系统,希望大家可以亲自动手实践一下,下面就与大家一起分享我的劳动成果. 图书信息包括:登录号.书名.作者名.分类号.出版单位.出版时间.价格等.试设计一图书信息管理系统,使之能提供以下功能: (1)图书信息录入功能(图书信息用文件保存) (2)图书信息浏览功能 (3)查询和排序功能:(至少一种查询方式)         .按书名查询         .按作者名查询 (4)图书信息的删除与修改 分享代码如下 #include<iostream.h>

  • C++实现简单的职工信息管理系统

    功能主模块描述 模块一:增加人员函数Add():增加职工基本信息. 模块二:删除人员函数Delete():删除指定的职工的基本信息以及薪酬. 模块三:修改人员函数Modify():修改指定的职工基本信息. 模块四:查询职工信息函数Search():查询指定的职工信息以及薪酬. 模块五:排序职工信息函数Sort():职工信息排序功能实现 模块六:基础数据设置函数Set():设置五类职位的基本薪酬. 模块七:数据存盘,载入函数Save()以及Load():储存职工基本信息,薪酬以及五类职位的基本薪酬

  • C语言实现学生选课系统完整版

    本文实例为大家分享了C语言实现学生选课系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> int N1,N2,kk1,kk2,kk3; struct couse * head1; struct student * head2; struct couse//课程信息结构体 { int num1; char name1[20]; int score; int nelepeo;//课程已选人数 int Melepeo;//课

  • C语言实现学生选课系统

    本文实例为大家分享了C语言实现学生选课系统的具体代码,供大家参考,具体内容如下 代码: #include<stdio.h> #include<windows.h> #include<stdlib.h> #include<conio.h> typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #define CLASS_CLS

  • C语言实现的学生选课系统代码分享

    好久没玩过C语言了,上一次还是在大二的时候...废话不多说,这里有一个C语言实现的学生选课系统代码,分享给大家,具体如下: #include<stdio.h> #include<stdlib.h> int N1,N2,kk1,kk2,kk3; struct couse * head1; struct student * head2; struct couse//课程信息结构体 { int num1; char name1[20]; int score; int nelepeo; /

  • java实现学生选课系统

    本文为大家分享了java实现学生选课系统的具体代码,供大家参考,具体内容如下 案例要求: 学生(学号,姓名,专业,所选课程{<3}) 老师(工号,姓名,所教课程{<3}) 课程(课程号,课程名,学分,教师,已选课学生{<30}) 选课系统代码如下: //teacher public class Teacher { private int id; private String teacherName; private Course[] courses; //构造函数 public Teac

  • MFC实现学生选课系统

    本文实例为大家分享了MFC实现学生选课系统的具体代码,供大家参考,具体内容如下 先上效果图: 主要功能: 输入学号,从数据库中查找学号,若找到相匹配的学号,则显示数据库中姓名.学历.导师,同时将所有可选课程显示出来.输入课程类型和课程名称查询课程进行选课,选课之后相应的选课门数.学分.学费.已选门数都会进行刷新.换个学号输入,选课总人数就会刷新,还有一些小功能就在代码里解释了. 我就只把按键的代码贴出来,完整工程下面有链接. "确认输入"按键: void Cversion02Dlg::

  • Python实战之实现简易的学生选课系统

    一.实验目的 实现学生选课系统 二.实验环境 Python3.6 pymysql(Python连接MySQL) xlrd(操作Excel) 三.程序结构 1.首先运行First_run.py: 功能:创建数据库.表等信息 2.运行seconnd_run.py: 功能: 实现学生选课 3.账号密码.xlsx: 存放学生信息(可以存班级花名册) 如: `` 四.数据库结构 表之间的联系 五.各表功能 student_login:存放学生账号信息(直接导入班级花名册,具体看代码) 字段: s_no:学

  • C语言实现学生考勤系统

    本文实例为大家分享了C语言实现学生考勤系统的具体代码,供大家参考,具体内容如下 项目要求: 学生考勤系统 功能:学生考勤系统应包含各班学生的全部信息.每个学生是一条记录,包括姓名.性别.学号.出勤情况等.本系统可模拟考勤过程,记录考勤结果,并能够在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数. 分步实施: (1)初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数:(2)最低要求:建立一个文件,包括同一个班的10个学生的必要信息,能对文件进 行补充.修订.删除. 采用结构体数

  • C语言实现简单学生选课管理系统

    本文实例为大家分享了C语言实现学生选课管理系统的具体代码,供大家参考,具体内容如下 这是我们大一C语言课程设计的最终作品,涉及文件读写操作.链表的一系列操作. 源代码由头文件all.h.主函数文件main.cpp以及功能函数文件student.cpp.manager.cpp.common.cpp组成. 涉及的文件读写操作需要先手动创建文件,文件路径可以在all.h的宏定义中更改 使用vs2017的c++编译器,兼容c语言,现贴上源代码和运行截图,供感兴趣的童鞋参考,水平有限还望多多包涵. 运行截

随机推荐