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   80typedef 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;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物流行业应用虚拟化解决方案

物流行业应用虚拟化解决方案来源&#xff1a;N-soft 51CTO提醒您&#xff0c;请勿滥发广告.cn 对物流企业来说&#xff0c;对外的货物流动增加了企业的利润&#xff0c;而对内的信息数据流动则是业务持续发展的基本保障。于是乎&#xff0c;架构自身内部远程应用接入系统…

为了杀蚊子,他用树莓派DIY了一把激光枪!

本文经AI新媒体量子位&#xff08;公众号ID&#xff1a;QbitAI&#xff09;授权转载&#xff0c;转载请联系出处。世人苦蚊子久矣。尤其在夏夜&#xff0c;耳边嗡嗡作响&#xff0c;甚至还得与其“挑灯夜战”个三百回合。为此&#xff0c;一个国外博士便DIY了一种高端的杀蚊方式…

Excel—数组

SUMPRODUCT&#xff08;数组求和函数&#xff09;和SUM是一样的&#xff0c;只不过数组写完公式后需要三键合一出结果&#xff08;ctrlshiftenter&#xff09;&#xff0c;用SUMPRODUCT写公式写完直接敲击enter就行了 函数语法&#xff1a;SUMPRODUCT&#xff08;第一个值&…

STM32f103 —— 内部flash读写

#ifndef _MCU_FLASH_H_ #define _MCU_FLASH_H_#include <stdint.h>// STM32f103C8T6 64KB FLASH&#xff0c;20KB RAM&#xff0c;1个扇区1KB,程序起始0x8000000 #define FLASH_START_ADDR ((uint32_t)0x8000000) #define FLASH_END_ADDR ((uint32_t)(0x8000000 …

java获取操作系统信息

Java代码 import java.util.Properties; Properties propsSystem.getProperties(); //获得系统属性集 String osName props.getProperty("os.name"); //操作系统名称 String osArch props.getProperty("os.arch"); //操作系统构架 String osVe…

memcpy执行效率测试,无效测试

#include <stdio.h> #include<time.h> #include<math.h> #include <unistd.h> clock_t start,stop; //clock_t是clock()函数返回的变量类型 double duration; //记录被测试函数运行时间&#xff0c;以秒为单位#define MAXK 1e7/*被测函数最大重复调用次…

第七章|7.3并发编程|协程

1、协程 5个任务实现并发&#xff0c;放到1个线程里边&#xff1b;单线程是无法实现并行的&#xff1b;并发是看起来任务是同时运行的就可以了&#xff0c;其本质来回切换并保存状态。 单线程实现并发&#xff0c;切换保存状态&#xff0c;协程要做的事情。 cpu正在运行一个任…

jQuery是什么,jQuery入门简介

|seektanjQuery是最近比较火的一个JavaScript库&#xff0c;从del.icio.us/上相关的收藏可见一斑。 到目前为之jQuery已经发布到1.2.1版本&#xff0c;而在这之前的一个星期他们刚发布1.2版本&#xff0c;看看他的各个版本的 发布时间 &#xff0c;不难发现他的飞速发展&#x…

STM32f103 —— timer

#ifndef _TIMER_H_ #define _TIMER_H_#include "stm32f10x.h" #include "type.h"// LED定时器&#xff0c;按键定时器&#xff0c;重发定时器 #define LED_TIMER TIM1 #define LED_TIMER_DIV 7200 #define LED_TIMER_PERIOD 2500#defin…

使用monkey命令来打开一个app

Knowin inSight10:/ # pm packge list adb shell monkey -p com.aispeech.player.eng -v 1

scp和sftp常用操作

文件异地直接复制&#xff1a; scp SCP的全称是secure copy (remote file copy program)&#xff0c;此命令是openssh-clients附带的,它的作用就是在机器之间实现拷贝&#xff0c;且机器之间的传输完全是加密的。 最简单的 scp 用法如下&#xff1a; [rootwww ~]# scp [-pr] [-…

大脑最佳用法

用计算机的模式来比喻大脑,那么应该是CPU内存. 但更多时候,我们将大脑当硬盘用. 大脑真正应该用于思考,记忆功能可以使用笔记本或数字工具来记录. 这是我学习时间管理的一个收获,希望时间管理理念能够在未来给我更多的帮助.转载于:https://blog.51cto.com/owen/165727

SM7250(高通5G)平台LCD bringup

写在前面的话高通平台显示这一块&#xff0c;自从去年开始&#xff0c;高通全面使用SMxxxx命名的芯片比如高端系列&#xff1a;SM8350(骁龙888)&#xff0c;SM8250(骁龙865)&#xff0c;SM8150(骁龙855)中端系列&#xff1a;SM7250&#xff08;骁龙765g&#xff09;&#xff0c…

网络管理人员的未来?

这是流传已久的一张带讽刺性的照片。一名网络专业的学生的未来难道真会如此&#xff1f;或者&#xff0c;是某些人理解错了这个专业的诸多特性&#xff1f;转载于:https://blog.51cto.com/zhangbikai/166694

python笔记-1(import导入、time/datetime/random/os/sys模块)

python笔记-6&#xff08;import导入、time/datetime/random/os/sys模块&#xff09; 一、了解模块导入的基本知识 此部分此处不展开细说import导入&#xff0c;仅写几个点目前的认知即可。其它内容待日后有深入理解了再来细说 1、import可以导入的两种不同的内容 1.1 *.py文件…

嵌入式里如何给内存做压力测试?不妨试试memtester

大家好&#xff0c;我是痞子衡&#xff0c;是正经搞技术的痞子。今天痞子衡给大家介绍的是内存读写正确性压力测试程序memtester。在嵌入式系统中&#xff0c;内存(RAM)的重要性不言而喻&#xff0c;系统性能及稳定性都与内存息息相关。关于内存性能有很多个不同指标&#xff0…

一位嵌入式工程师的成长之路

有些事并不是因为有希望才去坚持&#xff0c;而是因为坚持了才有希望。分享一位嵌入式工程师的成长之路&#xff0c;希望能给朋友一点勉励。刚毕业找不着工作2008年大专毕业后&#xff0c;意气风发南下深圳找工作&#xff0c;想找一份电子技术员的工作&#xff0c;白天上班&…

网络规划设计师考试说明

网络规划设计师考试说明 --------------------------------------------------------------------------------1.考试要求&#xff08;1&#xff09;系统掌握数据通信基本原理&#xff1b;&#xff08;2&#xff09;系统掌握计算机网络的原理&#xff1b;&#xff08;3&#xf…

amd,cmd规范

AMD 和 CMD 的区别有哪些&#xff1f; AMD规范与CMD规范的区别 回顾&#xff1a;前端模块化和AMD、CMD规范&#xff08;全&#xff09; 浅析JS模块规范&#xff1a;AMD&#xff0c;CMD&#xff0c;CommonJS 理解AMD &#xff0c;CMD&#xff0c;CommonJS规范 Javascript模块化编…

分享GitHub上一些嵌入式相关的高星开源项目

关于GitHub&#xff0c;可能很多人误以为这是互联网人的专属&#xff0c;其实并不是&#xff0c;那上面嵌入式相关的开源项目是有很多的。现分享一些高星开源项目&#xff08;像RT-Thread、AWTK等大家都熟知的就不介绍了&#xff09;&#xff1a;Avem项目链接&#xff1a;https…