教师上课点名系统_c语言
C点名设计课程设计
C 点名设计课程设计一、课程目标知识目标:1. 让学生掌握C点名设计的基本概念和原理,理解其在现实生活中的应用;2. 学会使用C语言编写简单的点名程序,理解程序结构及功能模块;3. 掌握程序调试方法,了解程序错误类型及其解决方法。
技能目标:1. 培养学生运用C语言进行程序设计的能力,提高编程技巧;2. 培养学生独立分析问题、解决问题的能力,提高逻辑思维能力;3. 培养学生团队协作能力,学会与他人共同探讨、优化程序设计。
情感态度价值观目标:1. 激发学生对编程的兴趣,培养学习计算机科学的热情;2. 培养学生勇于尝试、不怕失败的精神,树立自信心;3. 引导学生关注社会热点问题,认识到编程在解决实际问题中的重要性。
分析课程性质、学生特点和教学要求,本课程目标旨在让学生在掌握C语言基础知识的基础上,学会运用编程解决实际问题。
课程将围绕C点名设计展开,使学生能够独立完成一个具有实际应用价值的程序设计项目。
通过本课程的学习,学生将提高编程技能,培养逻辑思维和团队协作能力,同时树立正确的价值观,为今后的学习和工作打下坚实基础。
二、教学内容1. C语言基础知识回顾:数据类型、变量、运算符、控制结构(包括顺序结构、分支结构、循环结构);2. 函数:函数的定义、声明、调用,以及函数参数传递;3. 数组:一维数组、二维数组的概念及应用;4. 指针:指针的基本概念、指针与数组、指针与函数;5. 文件操作:文件的打开、读写、关闭;6. C点名程序设计:需求分析、模块划分、代码编写、调试与优化;7. 程序设计规范与技巧:代码风格、注释、命名规范、错误处理。
教学内容将按照以下进度安排:1. 第一周:C语言基础知识回顾;2. 第二周:函数与数组;3. 第三周:指针;4. 第四周:文件操作;5. 第五周:C点名程序设计;6. 第六周:程序设计规范与技巧。
本教学内容与教材相关章节紧密关联,旨在帮助学生系统地掌握C语言编程知识,培养实际编程能力。
c语言大作业老师点名,C语言随机点名(最新整理)
c语⾔⼤作业⽼师点名,C语⾔随机点名(最新整理)《C语⾔随机点名(最新整理)》由会员分享,可在线阅读,更多相关《C语⾔随机点名(最新整理)(10页珍藏版)》请在⼈⼈⽂库⽹上搜索。
1、include #include #include #define STU_NUM_MAX 64 / 假设最多有 64 个学⽣struct Studentchar name10; intstuID;stuSTU_NUM_MAX;int existSTU_NUM_MAX; / ⽤以保存被点过名static int index=0; / 记住点名的次数void Iitialize()for(inti=0;i #include #include #include #include struct studentinfost100;char sNo5; char sxueNo14; char sna。
2、me20;int main()int i=0,j=0,k,flag,RN,*a; FILE *fp;char ch,filename20=0,line100=0; printf(Please input file name:);fflush(stdin);gets(filename); fp=fopen(filename,r); printf(名单如下:n);while (fgets(line,sizeof(line)-1,fp)if (line0!=n & line0!= )name);me);sscanf(line,%s %s %sn,sti.sNo,sti.sxueNo,sti.spr。
3、intf(%sn%sn%sn,sti.sNo,sti.sxueNo,sti.sna i+;srand(unsigned)time(NULL); a=(int*)malloc(sizeof(int)*i); memset(a,-1,sizeof(a);printf(按任意键点名:);fflush(stdin);while (!(ch=getch()=NULL)RN=rand()%i; flag=1;for (k=0;k #include #include#define STU_NUM_MAX 4struct StudentInfo / 学⽣信息结构char name15; int stu_id。
教师上课点名系统
姓名__________ 指导教师___尹航___年月日沈阳航空工业学院课程设计任务书电子工程系电子信息工程专业84020103班学号2008040201106一、课程设计题目:教师上课随机点名二、课程设计工作自2009年9月7日起至2009年9月11日止三、课程设计内容:用C语言编写软件完成以下任务:教师在每次上课时,需要对学生点名提问。
学生信息应事先保存到文件file20.txt 中。
学生共有7人,名单如下:101 杜永宁N 102 段楠N 103 冯红N 104 郝苇N 105 胡龙N106 李南N 107 刘盈N所谓点名,是指将某位同学的姓名和学号打印到屏幕上,则表示该同学是否缺席。
四、课程设计要求:1.程序质量:●贯彻结构化的程序设计思想。
●用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
●用户界面中的菜单至少应包括“开始点名”、“信息统计”、“学生信息添加”、“退出”4项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容如下:●课程设计任务书●程序设计题目●需求分析(分析题目的要求)●程序框图●核心技术的实现方法及程序源代码及注释●个人总结●[参考资料]五、指导教师:学生签名:六、成绩:七、教师评语:_目录一、需求分析 (2)二、程序流程图 (3)三、核心技术的实法现方 (8)四、个人总结 (13)五、参考文献 (14)六、源程序 (14)一、需求分析此程序是为点名而设计,经分析可知,整个程序的设计实现大致分为四个模块,其中每一个模块对应一个功能,他们的功能分别是:程序界面设计模块,文件读写模块,显示点名情况模块,随机算法模块。
1、程序界面设计模块主要实现程序最初运行时程序界面友好、美观的的构型以及简明的操作提示;2、文件读写模块实现的功能是对file20.txt文件数据的读取和存储,将文件中的数据保存到结构体student 中,并将点名次数通过save函数保存到文件中;3、显示点名情况模块按照题目的要求将数据文件中所有学生的学号、姓名、是否缺席打印到屏幕上;4、点名算法模块通过调用自定义函数open()和rew()实现点名,并将被点到的学号、姓名、是否缺席打印到屏幕上;除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
c语言课程设计上课考勤系统
c语言课程设计上课考勤系统一、教学目标本课程的教学目标是使学生掌握C语言的基本语法,能够运用C语言编写简单的程序,并通过实现一个上课考勤系统,让学生了解C语言在实际应用中的开发过程。
1.理解C语言的基本数据类型、运算符和表达式。
2.掌握C语言的控制结构,包括条件语句和循环语句。
3.熟悉函数的定义和调用,了解作用域规则。
4.能够使用C语言编写简单的程序,解决实际问题。
5.具备基本的调试和排错能力。
6.能够独立完成一个小型项目的开发,如上课考勤系统。
情感态度价值观目标:1.培养学生的逻辑思维能力和解决问题的能力。
2.激发学生对计算机编程的兴趣,提高学生的自主学习能力。
3.培养学生团队合作的精神,学会与人沟通和协作。
二、教学内容本课程的教学内容主要包括C语言的基本语法、控制结构、函数和编程实践。
1.C语言的基本语法:数据类型、变量、运算符、表达式、语句等。
2.控制结构:顺序结构、选择结构、循环结构。
3.函数:函数的定义、声明和调用,局部变量和全局变量,递归函数等。
4.编程实践:通过实现一个上课考勤系统,让学生了解C语言在实际应用中的开发过程。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:用于讲解C语言的基本语法、控制结构和函数等内容,帮助学生建立扎实的理论基础。
2.案例分析法:通过分析实际案例,如上课考勤系统,让学生了解C语言在实际应用中的开发过程,提高学生的实践能力。
3.实验法:安排实验课程,让学生动手编写C语言程序,培养学生的实际编程能力和调试排错能力。
四、教学资源1.教材:《C语言程序设计》等相关教材。
2.参考书:《C语言编程思想》、《C Primer Plus》等。
3.多媒体资料:课件、教学视频等。
4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks等)。
5.在线资源:编程论坛、博客、开源项目等,供学生自主学习和交流。
五、教学评估本课程的评估方式包括平时表现、作业、考试等,以全面客观地评价学生的学习成果。
C语言课程设计代码:多功能上课点名系统.c
void title(); //display the intruction
void menu(); //display the intruction
void borderup(); //display the intruction
p=stu[i].name; //name
c='\0';
while(c!='\t')
{
c=fgetc(fp);
if(c!='\t')
{
*p=c;
p++;
}
else
{
void function(Student *stu,int *a,int *b,int *c);
void pickn(Student *stu,int *a,int *b,int *c);
void pickc(Student *stu,int *a,int *b,int *c);
void pickhistory(Student *stu,int *b,int *c);
saverecord(a,b); //creat a new sturecord.data a,b=0
exit (0);
}
if(fread(a,sizeof(int),N,fp)!=N)
c[r]++;
printf(" %s\n",stu[r].name);
printf(" %s\n",stu[r].num);
printf("\n Enter 'y' or 'n' to record attendance:[ ]\b\b");
教师上课点名系统,c语言
沈阳航空航天大学课程设计任务书院系:电子信息工程学院专业:电子信息工程班级:学号:题目:教师上课点名系统一、课程设计时间2010~11第1学期第2周,共计1周,20学时。
二、课程设计内容用C语言编写程序完成以下任务:教师在每次上课时,需要对学生点名。
学生信息保存在文件file20.txt(由教师提供)中,包括学号、姓名、是否缺席三项。
编写程序,完成如下功能:1 教师点名:对所有学生进行点名,并更新file20.txt文件;2 分别统计已到和未到的学生,并显示;3 能够向文件中添加后报到的学生信息。
三、课程设计要求1. 程序质量:✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“开始点名”、“信息统计”、“学生信息添加”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字指导教师:________ 学生签名:________五、说明书成绩六、教师评语目录一、程序设计题目 (1)二、需求分析 (1).三、程序流程图 (2)四、核心技术的实现方法及程序段 (6)五、个人总结 (8)六、参考文献 (8)七、源程序 (8)一、程序设计题目1 教师点名:对所有学生进行点名,并更新file20.txt文件;2 分别统计已到和未到的学生,并显示;3 能够向文件中添加后报到的学生信息。
二、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为七个模块,其中每一个模块对应一个功能,他们的功能分别是:程序界面设计模块,文件读写模块,文件更新模块,教师点名模块,学生信息添加模块,学生缺席情况统计模块,学生信息显示模块,。
1、程序界面设计模块主要实现程序最初运行时程序界面友好、美观的的构型以及简明的操作提示;2、文件读写模块实现的功能是对myfile.dat文件数据的读取和存储,将文件中的数据保存到结构体student中,并将点名次数通过save函数保存到文件中;3、显示点名情况模块按照题目的要求将数据文件中所有学生的学号、姓名、被点名次数打印到屏幕上;4、随机点名算法模块通过调用数学函数库中的随机数生成函数rand实现点名的随机性,并将被点到的学号、姓名打印到屏幕上;除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
随机点名系统
C#课堂随机点名系统题目:课堂随机点名系统班级:姓名:学号:指导教师 :朱新峰成绩:2021年12月一、任务描述本次任务要求完成一个课堂随机点名系统。
具体内容为:教师在每次上课时,有时需要叫学生起来答复下列问题,为了公平起见,使每个学生被叫起来答复下列问题的概率相同,故采用 c#来编写一个随机点名系统。
具体要求如下:〔一〕完成一个点名系统界面的设计,具体设计如下:1.安置一个“开始〞按钮,当按下“开始〞按钮时,按钮上面的字显示为“停止〞,并且开始在界面上随机抽取数字。
2.安置一个“被点名单〞按钮,可以查看已经被点过的学生的学号以及被点次数。
3.添加两个标签,分别在上面显示“欢送进入点名系统〞和抽取的随机数字。
4. 添加一个listbox用来存放已经被点过的学生的学号以及被点次数。
5.安置一个“去除〞按钮,用来去除 listbox 中的数据。
6.安置一个“保存被点名单〞按钮,保存本次点名的数据。
〔二〕该点名系统能够实现随机点名,并且当一个学生被点次数超过三次时,会提醒老师重新点名。
〔三〕能将本节课点名的情况记录到文件中,有利于老师下课后查看分析学生上课答复下列问题的情况并且有利于老师下节课点其他未被点过的学生。
二、系统概要设计〔一〕模块整体设计图课堂随机点名系统界点保面存设被计名点名单记被抽录点随被三机点次取名后学单提号醒〔二〕模块功能介绍1.窗体类〔1〕窗体事件 Form1()功能:对各变量进行初始化〔2〕开始按钮事件 button1_Click(object sender, EventArgs e)功能:进行随机点名,将点到的学号和被点次数写入 listbox ,并在某学号点到三次后提醒老师〔3〕定时器事件 timer1_Tick(object sender, EventArgs e)功能:产生随机学号并将数据在界面上显示出来〔4〕被点名单按钮事件button2_Click(object sender, EventArgs e)功能:显示和隐藏listbox〔5〕去除按钮事件 button3_Click(object sender, EventArgs e)功能:去除 listbox 中的内容〔6〕保存被点名单事件button4_Click(object sender, EventArgs e)功能:将被点名单写入文件并记录点名时间2.写文件类〔1〕写文件函数 WriteData(string filestr,string st)功能:将点到的学号和被点次数写入文件三、系统详细设计〔一〕数据结构设计1.本系统采用文件保存点到的学号及其被点次数2.定义全局变量 n , num以及名为 count 的数组分别用来存放班级人数,产生的随机学号以及每个学号被点次数〔二〕模块接口设计:1.各类的原型为:public partial class Form1 : Form/*窗体类*/public class FileWrite/* 写文件类 */2. 各事件原型为:public Form1()/* 窗体事件 */private void button1_Click(object sender, EventArgs e)/*“开始〞按钮事件*/ timer1_Tick(object sender, EventArgs e)/* 定时器事件 */private void button2_Click(object sender, EventArgs e)/*“被点名单〞按钮事件*/ private void button3_Click(object sender, EventArgs e)/* “保存被点名单〞按钮事件*/ public static void WriteData(string filestr,string st)/*写文件函数 */四、系统实现1.界面设计2.点名界面3.开始点名4.显示被点名单5.文档数据6.提醒界面五、系统调试在做这个系统的时候,由于对 C#的语法不太了解,所以即使是这样一个简单的系统,还是花了我一个星期的时间,并且还有许多不完善的地方。
基于C#的智能点名系统的设计及实现
基 金项 目:江苏 省 高等 学校 大学 生创 新创 业训 练计 划项 目 ( 2 0 1 6 1 2 0 5 4 0 0 2 Y)。 作 者简 介 :王 惠 ( 1 9 8 2 一 ),女 ,江 苏徐 州人 ,讲 师 ,研 究方 向 :计算 机教 育 、图像 处理 与机 器学 习。
1 3
直到全部点名结束 f 。在全部点名过程中,该 系统
会 依 次 选 择 被 点 名 的 信息 并 自动 语 音 播 报 当 前学 生 的姓 名 ,如 果 该 学 生 没 有 到 课 ,暂 停 全 部 点 名 ,
根 据原 因做 好 点名记 录 ,设 置快 捷 键 c t r l + l 增加 旷课
件 中 ,系统 的总 体功 能结 构 图 如图 1 所示 。
第 l 5卷 第 3期 2 0 1 7 年 7月
顺 德 职 业 技 术 学 院 学 报
J o u na r l o f S h u n d e P o l y t e c h n i c
Vo 1 . 1 5 NO . 3
J u l y 2 0 1 7
基于 c ≠ ≠ 的智能点名系统的设计及实现
迟 到要 扣 的 分 值 、提 问要 奖 励 的 分 数 ,系统 自动 计 算 出每位 学 生 的平 时 成绩 ,并导 出 到新 建 的 E x c e l 文
在 时 间 间 隔 控 件 中设 置 好 自动 点 名 的 时 问 间 隔 后 ,单 击 全 部 点 名 按 钮 ,随 机 点 名 功 能将 会 失 效 ,
1 )系统 主界面 :提供系统菜单和图形显示操作 功能 ;2 ) 学生信息导入 :通过该界面选择保存授课 班级学生信息的 E x c e l 文件 ,并把班级名称 、学生信
课堂点名系统的设计与实现
课堂点名系统的设计与实现作者:管琳娜黄焱来源:《电脑知识与技术》2019年第02期摘要:随着社会的发展,信息化时代已经来临,大多高校已经进入了信息化的管理模式,传统的课堂点名方式不仅占据了教师的课堂时间,而且降低了课堂的效率,通过机器语言的操作便可以为教师解决这些问题。
课堂点名系统在.NET的框架下,使用C#语言中的Windows窗体应用程序,在Visual Studio 2010中设计和实现了点名系统的各项功能。
考勤、随机点名以及录入学生信息的功能基本上满足了教师课堂上的需求,方便了教师考勤工作,提高了课堂效率。
关键词:点名系统;考勤;随机点名中图分类号:TP311; ; ; 文献标识码:A; ; ; 文章编号:1009-3044(2019)02-0048-02Design and Implementation of PC-based Class Name SystemGUAN Lin-na, HUANG Yan(Huaiyin Normal University, Huai'an,22300, China)Abstract: With the development of society, the information age has arrived. Most colleges and universities have entered the information management mode. The traditional classroom name not only occupies the classroom time of teachers, but also reduces the efficiency of the classroom. Solve these problems for teachers. In the framework of .NET, the class name system uses the Windows Forms application in C# language to design and implement the functions of the name system in Visual Studio 2010. Attendance, random name, and the ability to enter student information basically meet the needs of teachers in the classroom, which facilitates the attendance of teachers and improves classroom efficiency.Key words: name system; attendance; random name1 概述點名系统是管理者依据一定的教育思想,遵循教学规律和管理规律,通过计算机网络技术对课堂的教学过程进行计划、组织、协调、控制,以实现学校科学教育的目标。
c语言课堂点名课程设计
c语言课堂点名课程设计一、课程目标知识目标:1. 理解C语言中数组的基本概念和使用方法;2. 学会使用循环和字符串处理函数读取、存储和输出数据;3. 掌握C语言中结构体类型的定义和应用,用以表示和管理学生信息。
技能目标:4. 能够编写C语言程序实现课堂点名功能,包括录入学生名单、随机点名等;5. 能够运用所学知识对程序进行调试和优化,提高代码的执行效率;6. 通过课堂实践,培养编程思维,提高问题解决能力。
情感态度价值观目标:7. 培养学生对计算机编程的兴趣和热情,激发自主学习C语言的积极性;8. 增强学生团队协作意识,培养良好的沟通与协作能力;9. 通过编程实践,引导学生认识到编程在解决实际问题中的价值,培养创新精神和责任感。
课程性质:本课程为C语言编程入门课程,以实践操作为主,注重培养学生的编程兴趣和实际动手能力。
学生特点:学生处于初中或高中阶段,对计算机编程有一定的好奇心,但编程基础薄弱,需要通过实际案例激发学习兴趣。
教学要求:结合学生特点,采用任务驱动法,让学生在实践中掌握C语言知识,提高编程能力。
同时,注重培养学生的团队协作和沟通能力。
通过本章节的学习,使学生能够达到上述课程目标,为后续学习打下坚实基础。
二、教学内容1. 数组与字符串基础:- 数组的定义、初始化和使用;- 字符串的基本概念与处理方法;- 读取键盘输入并存储到数组。
2. 循环结构:- for循环和while循环的使用;- 循环控制语句(break,continue)。
3. 结构体:- 结构体的定义和声明;- 结构体变量的创建与初始化;- 结构体数组的操作。
4. C语言编程实践:- 设计并实现课堂点名程序;- 程序功能模块划分与实现;- 调试与优化程序。
5. 教学内容的安排与进度:- 数组与字符串基础(1课时);- 循环结构(1课时);- 结构体(1课时);- 编程实践(2课时)。
教材章节关联:- 数组与字符串基础:教材第二章;- 循环结构:教材第三章;- 结构体:教材第四章;- 编程实践:结合教材中的实例进行课堂实践。
基于C#的随机点名系统的设计与实现
基于C#的随机点名系统的设计与实现作者:张晶来源:《电脑知识与技术》2018年第14期摘要:社会已经进入一个信息化时代,多数高校均已实现信息化管理。
相反的是,课堂上课的点名工作却仍需要人工的操作,不仅浪费老师和学生的人力,在工作进行中也存在很多不尽人意的地方。
本课题在.NET框架下,使用C#语言中的WinForm MDI应用窗体程序,在Visual Studio 2010中设计和实现了学生课堂点名管理系统。
该系统可以方便地实现学生课堂点名、登记、修改的操作。
关键词:随机点名系统;C#;Visual Studio中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)14-0094-021 研究背景目前在当代大学生却存在一个及其普遍的现象——逃课,大学生逃课逐渐蔓延似乎已经成为一个常见问题,严重影响了高校教学质量。
学校为了保证教学质量让更多的学生在课堂上学到更多的知识,采用了课堂点名的办法来提高出勤率。
目前任课老师课堂点名一般采用逐个对全部学生点名和抽点两种方式。
逐个点名的方式真实的记录和反映所有学生得出勤情况,具有很强的说服力,但是此方法耗时多,占去了课堂的大部分时间;抽点的方法减少了教师点名的工作量,节省了大量的点名占有教学时间,不过,它会有不公平带有教师的感情色彩,做不到按一定比例进行抽点。
因此,本系统专为高校一线教师开发,教师可以直接在教室里使用。
本课题在.NET框架下,使用C#语言中的WinForm MDI应用窗体程序,在Visual Studio 2010中设计和实现了学生课堂点名管理系统。
该系统可以方便地实现学生课堂点名、登记、修改的操作,既可以方便老师,也可以有效地提高学生的考勤率,保证了学校教学工作的顺利运行。
2 相关技术简介2.1 Visual Studio 2010Visual Studio2010,是一个提供了丰富工具的编程环境其中包含创建从小到大的各种规模的C#项目所需的各种功能。
C语言点名程序
设计介绍:本系统能从数据库中调取学生信息数据库,对采取两种方式进行点名。
1、能根据输入的随机数产生一定数量的随机学生,然后进行一一点名。
2、能根据输入的扫描频率进行动态的扫描,但按下暂停按钮时会停在某个学生的信息上,此时对该学生进行点名。
当点名后,没有学生答应时,可按加入缺课记录按钮。
当系统提示添加成功,则添加成功。
代码解释:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace dianming{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){this.dataGridView1.DataSource = getDataTable("dbo.stuinfo");changewith();}public void changewith()//当选择不同学生时,左侧的信息栏相应的变化。
{this.txtnum.Text = this.dataGridView1[0,dataGridView1.CurrentCell.RowIndex].Value.ToString();this.textname.Text = this.dataGridView1[1,dataGridView1.CurrentCell.RowIndex].Value.ToString();this.txtage.Text = this.dataGridView1[2,dataGridView1.CurrentCell.RowIndex].Value.ToString();this.txtgrade.Text = this.dataGridView1[3,dataGridView1.CurrentCell.RowIndex].Value.ToString();this.txtsex.Text = this.dataGridView1[4,dataGridView1.CurrentCell.RowIndex].Value.ToString();this.txtmajor.Text = this.dataGridView1[5,dataGridView1.CurrentCell.RowIndex].Value.ToString();this.txtcount.Text = this.dataGridView1[6,dataGridView1.CurrentCell.RowIndex].Value.ToString();this.txtphone.Text = this.dataGridView1[7,dataGridView1.CurrentCell.RowIndex].Value.ToString();}public static string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=点名数据库;Integrated Security=True";//数据库连接字符串public static bool ExecuteSQL(string sql)//用于执行传入的sql语句返回true则表示成功{SqlConnection con = new SqlConnection(connectionString);SqlCommand cmd = new SqlCommand(sql, con);try{con.Open();cmd.ExecuteNonQuery();return true;}catch{return false;}finally{con.Close();con.Dispose();cmd.Dispose();}}public static DataSet GetDataSet(string sql)//获取数据集{DataSet ds = new DataSet();SqlConnection con = new SqlConnection(connectionString);SqlDataAdapter da = new SqlDataAdapter(sql, con);try{con.Open();da.Fill(ds);}catch (Exception ex){throw new Exception(ex.ToString());}finally{con.Close();con.Dispose();da.Dispose();}return ds;}public static DataTable getDataTable(string str)//返回table类型的对象{string sql = "select * from " + str;DataSet ds = new DataSet();SqlConnection con = new SqlConnection(connectionString);SqlDataAdapter da = new SqlDataAdapter(sql, con);try{con.Open();da.Fill(ds);}catch (Exception ex){throw new Exception(ex.ToString());}finally{con.Close();con.Dispose();da.Dispose();}return ds.Tables[0];}private void button3_Click(object sender, EventArgs e)//开始按钮触发的事件{if(this.timer .Text!=null&&this.timer .Text !="")this.timer1.Interval =Convert .ToInt32(this.timer.Text);this.timer1.Enabled = true;}private void button4_Click(object sender, EventArgs e)//暂停按钮触发的事件{this.timer1.Enabled = false;}static public int[] GetNoRepeatRandNumber(int len)//获取len个随机数,以数组的形式//返回{int[] no = new int[len];for (int i = 0; i < len; i++){no[i] = i;}Random rd = new Random();for (int i = len - 1; i >= 0; i--){int temp = rd.Next(i + 1);int t = no[temp];no[temp] = no[i];no[i] = t;}return no;}private void btnOK_Click(object sender, EventArgs e)//确定按钮触发的事件{Random rand = new Random();int[] a = GetNoRepeatRandNumber(50);string[] num=new string[Convert.ToInt32(ranknum.Text.Trim ())];for (int i = 0; i < Convert.ToInt32(ranknum.Text.Trim()); i++){if (a[i] / 10 != 0)num[i] = string.Format("0890740{0}", a[i]);else num[i] = string.Format("08907400{0}", a[i]);}string numrank = "";foreach (string s in num){numrank += s+",";}numrank += "089074000";string sql = @"select * from dbo.stuinfo where 学号in("+numrank+")";DataSet ds = GetDataSet(sql);this.dataGridView1.DataSource = ds.Tables[0];}private void timer1_Tick(object sender, EventArgs e)//timer控件触发的循环事件{int a = dataGridView1.RowCount-1;if (dataGridView1.CurrentCell.RowIndex < 0)dataGridView1.CurrentCell = dataGridView1[0, 0];int f = dataGridView1.CurrentCell.RowIndex;dataGridView1.CurrentCell = dataGridView1[0, (f)%a+1];changewith();}private void btnadd_Click(object sender, EventArgs e)//添加缺勤记录按钮触发的事件{string name = this.textname.Text.Trim();string num = this.txtnum.Text.Trim();string count = this.txtcount.Text.Trim();int newcount = Convert.ToInt32(count) + 1;string sql = @"insert into dbo.queqinxinxivalues('"+num+"', '"+name +"', "+"getdate())";if (ExecuteSQL(sql)){MessageBox.Show("添加缺勤记录成功!", "提示");}else{MessageBox.Show("添加缺勤记录失败!", "提示",MessageBoxButtons .OK,MessageBoxIcon.Error);}}private search Search;//缺勤窗体,此处不列出其代码了。
C#随机点名系统
C#随机点名系统设计报告班级: 软件1202*名:**学号: *********2013 年12 月一、设计描述:此系统为课堂随机点名系统:采用了windows窗体界面设计创建了此系统。
系统功能包括:1、从已设置的学号文本信息文件中随机抽取一个学号。
2、记录某一个学号被点名信息。
3、显示当前被点学号的被点信息,以及所有同学被点信息。
4、每一个同学最多被点三次,当被点次数超过3时,显示警告窗口,提示用户重新点名。
二、系统详细设计——控件选取:1、listBox1:用来存放及显示所有同学被点信息。
2、Button1:就是开始点名按钮,用来控制随机抽数,当点下开始按钮,其会变成停止按钮,按下停止按钮,显示最终被点学号。
3、Button2:就是用来显示当前被点同学的被点情况。
4、Button3:就是重置按钮,用来清除listBox1中的数据信息。
5、Button4:就是显示listBox1中记录的所有同学被点情况。
6、timer1:用来控制抽取过程中数据在空白处闪动。
7、label1:用来显示被点学号。
三、系统详细设计——代码实现:using System;using System.IO;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Collections;using System.Timers;namespace点名系统{public partial class Form1 : Form{bool first_click = true; //初始化int x;int[] c = new int[31];String num;Random r = new Random();ArrayList content = new ArrayList();ArrayList result = new ArrayList();public Form1(){InitializeComponent();timer1.Interval = 10;timer1.Stop();} //初始化 endprivate void textBox1_TextChanged(object sender, EventArgs e){}private void pictureBox1_Click(object sender, EventArgs e){}private void timer1_Tick(object sender, EventArgs e) //timer1:控制随机点名,在已创建的文件中,随机读取相关学号信息{FileStream fs1 = new FileStream(@"D:/2.txt", FileMode.Open);StreamReader sr = new StreamReader(fs1);string str1 = sr.ReadToEnd();sr.Close(); fs1.Close();string[] strQ = str1.Split('\n');Random rdn = new Random();int index = rdn.Next(0, strQ.Length);x = index;num = strQ[index];label1.Text = strQ[index];} //timer endprivate void button1_Click(object sender, EventArgs e) //button1:开始点名按钮,用来控制timer1的运行,以及提示警告{first_click = !first_click;if (!first_click){timer1.Start();button1.Text = "停止";}else{timer1.Stop();button1.Text = "开始";c[x]++;if (c[x] > 3)MessageBox.Show("该同学已被点过 3 次,请重新点名"); //警告提示。
C语言程序设计——教室管理系统(源代码))
C语言程序设计——教室管理系统(源代码))C语言程序设计——教室管理系统(源代码)非常有用的。
#include#include#include#define szSTR 64#define fileDB "c:\\contact.txt"struct CONTACT {char num[szSTR];/*教室编号*/char site[szSTR];/*教室位置*/char snum[szSTR];/*座位数*/char tv[szSTR];/*有无多媒体*/char use[szSTR];/*是否可用*/};typedef struct CONTACT CON;#define ANUM 1#define ASITE 2#define ASNUM 3#define ATV 4#define AUSE 5#define BFULL 0xFFint OPER[6] = {BFULL, ANUM, ASITE, ASNUM, ATV,AUSE};void input(CON * s, int mask){if(mask & ANUM) { printf("请输入教室编号:"); scanf("%s", s->num); }if(mask & ASITE) { printf("请输入教室位置:"); scanf("%s", s->site); }if(mask & ASNUM) { printf("请输入座位数:"); scanf("%s", s->snum); }if(mask & ATV){printf("请输入是否有多媒体(有/Y*无/N):");scanf("%s",s->tv);}if(mask & AUSE) { printf("请输入是否可用(可/Y*否/N):"); scanf("%s", s->use); } }/*end input*/void show (int id, CON * s){if(!s) return ;if(id)printf("%d\t%s\t\t%s\t%s\t\t%s\t\t%s\n",id, s->num , s->site , s->snum , s->tv,s->use );elseprintf("【编号】%s【教室编号】%s【位置】%s【座位数】%s 【有无多媒体】%s【是否可用】%s\n",s->num , s->site , s->snum , s->tv,s->use );/*end if*/}/*end show*/void regist(void){CON s; FILE * f = 0;input(&s, BFULL);f = fopen(fileDB, "ab");fwrite(&s,sizeof(s),1,f);fclose(f);printf("资料已保存!\n\n\n\n");}/*end regist*/int browse(char * key, fpos_t * p, CON * s){FILE * f =0; int i = 0, r = 0; CON t;char * a = 0, * b = 0; fpos_t q;if(!s) return 0;f = fopen(fileDB, "rb");if(!f) {printf("数据库暂无记录\n\n\n\n");return 0;}/*end if*/printf("编号\t教室编号\t位置\t座位数\t有无多媒体(Y/N)\t是否可用(Y/N)\n");printf("----------------------------------------------------------------------\n");while(!feof(f)) {fgetpos(f, &q);r = fread(&t, sizeof(t), 1, f);if(r<1)break;if(t.num[0]==0) continue;if(key) {a = strstr(t.num , key);b = strstr(t.site , key);if(a == 0 && b == 0) continue;}/*end if*/if(p) *p = q;if(s) memcpy(s, &t, sizeof(t));i++;show(i, &t);}/*end while*/printf("----------------------------------------------------------------------\n\n\n\n\n");return i;}/*end browse*/fpos_t query(CON * s){char key[szSTR]=""; fpos_t p = 0; int r = 0;printf("请输入教室编号或者位置:");scanf("%s", key);r = browse(key, &p, s);return r?p:-1;}/*end query*/void clear(void){FILE * f = 0; CON s;fpos_t p = query(&s);if(p<0) return;f = fopen(fileDB, "rb+");fsetpos(f, &p);memset(&s, 0, sizeof(s));fwrite(&s, sizeof(s),1, f);fclose(f);printf("记录已删除!\n\n\n\n\n");}/*end clear*/void modify(void){FILE * f = 0; CON s; int cmd = 0;fpos_t p = query(&s);if(p<0) return;f = fopen(fileDB, "rb+");fsetpos(f, &p);for(;;) {show(0, &s);printf("请选择:1-编号;2-位置;3-座位数;4-有无多媒体;5-是否可用;6-保存并退出;7-放弃修改并退出\n\n\n\n");scanf("%d", &cmd);switch(cmd) {case 1:case 2:case 3:case 4:input(&s, OPER[cmd]);break;case 6:fsetpos(f, &p);fwrite(&s, sizeof(s), 1, f);case 7:fclose(f);return;default:printf("错误的操作,请重新输入。
c随机点名系统课程设计
c随机点名系统课程设计一、课程目标知识目标:1. 让学生理解随机点名系统的基本原理和编程思路;2. 使学生掌握运用编程语言(如Python)实现随机点名功能;3. 帮助学生了解计算机在实际应用中的优势,如提高工作效率、减少人工干预。
技能目标:1. 培养学生运用编程语言解决实际问题的能力;2. 提高学生在团队协作中沟通、分工与协作的能力;3. 培养学生运用信息技术工具进行数据处理和问题求解的能力。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣和热情,提高其主动学习的积极性;2. 培养学生面对问题时勇于尝试、不断探索的良好品质;3. 增强学生的团队意识,使其认识到团队协作的重要性。
课程性质:本课程为信息技术学科,以实践操作为主,结合理论讲解,旨在培养学生的编程兴趣和实际操作能力。
学生特点:六年级学生,具有一定的信息技术基础,对新鲜事物充满好奇心,具备一定的逻辑思维能力。
教学要求:结合学生特点,注重实践操作,以任务驱动法引导学生主动探究,强调团队协作,提高学生的编程能力和信息素养。
在教学过程中,将课程目标分解为具体的学习成果,以便于后续的教学设计和评估。
二、教学内容1. 理论知识:- 计算机编程基本概念;- Python编程语言简介;- 随机数及其在编程中的应用。
2. 实践操作:- Python编程环境的搭建与使用;- 编写随机点名系统的代码实现;- 调试与优化随机点名系统。
3. 教学大纲:- 第一课时:计算机编程基本概念,Python编程语言简介;- 第二课时:随机数原理及在编程中的应用;- 第三课时:搭建Python编程环境,编写随机点名系统代码;- 第四课时:调试与优化随机点名系统,总结与拓展。
4. 教材关联:- 《信息技术》六年级下册,第三章“编程入门”;- 教材中涉及Python编程基础、条件语句、循环语句等内容,为随机点名系统的实现提供支持。
5. 教学内容安排与进度:- 每课时45分钟,共计4课时;- 前两课时注重理论知识讲解,后两课时侧重实践操作;- 每课时结束后安排课后作业,巩固所学内容。
C语言的教务管理系统(2000行代码)
C语言教务管理系统一、程序结构图二、程序运行截图1. 个人信息简介2.修改颜色3.注册界面4. 信息保存至文件5.登录界面6.管理员录入信息7. 学生信息录入8.学生成绩录入9.学生课程表录入10.学生信息查询界面11学生信息查询12.学生成绩查询13.学生课表查询三、代码(一个cpp)#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #include <conio.h>#include"windows.h"#define student_num 1000 /*定义1000个学生*/#define teacher_num 5 /*定义5个老师(管理员)*/int is_my_student(struct student *p,int *size); /*声明返回第i+1个学生的函数*/ int is_my_teacher(struct teacher *p,int *size); /*声明返回第i+1个老师的函数*/ int length_student_name(char *p); /*声明验证用户名函数*/int length_student_password(char *p); /*声明验证密码长度函数*/int length_teacher_name(char *p); /*声明验证用户名函数*/int length_teacher_password(char *p); /*声明验证密码长度函数*/int show_menu_login(); /*声明登录菜单函数*/int show_menu_register(); /*声明注册菜单函数*/int show_teacher_select(); /*声明教师录入菜单函数*/int show_student_select(); /*声明学生查询菜单函数*/int student_register(struct student *ptr_student,int *size); /*声明学生注册函数*/ int teacher_register(struct teacher *ptr_teacher,int *size); /*声明老师注册函数*/ int vaild_student_name(char *p); /*声明验证用户名函数*/int vaild_student_password(char *p); /*声明验证密码函数*/int vaild_teacher_name(char *p); /*声明验证用户名函数*/int vaild_teacher_password(char *p); /*声明验证密码函数*/int vaild_two_password(char *p1,char *p2); /*声明验证两次密码是否相同函数*/ int yes_no_return(); /*声明选择是否返回上一层函数*/void load(); /*声明加载函数*/void register_(int *count1,int *count2); /*声明注册函数*/void display_student(struct student stu); /*声明显示学生信息函数*/void display_teacher(struct teacher tea); /*声明显示老师信息函数*/void student_file1(); /*将保存的学生的账号密码存入文件中*/ void student_file2(); /*将保存的学生的个人信息存入文件中*/ void student_file3(); /*将保存的学生的成绩存入文件中*/void teacher_file(); /*将保存的老师的账号密码存入文件中*/ void input_information(int count); /*声明输入学生信息函数*/void input_score_menu(int count); /*声明输入学生成绩函数*/void color(); /*声明选择窗体颜色函数*/void print_stu_information(int count_stu); /*声明输出账号为num的学生的信息函数*/void print_stu_score(int count_stu); /*声明输出账号为num的学生的成绩函数*/void show_menu(); /*声明初始化界面函数*/void input(); /*声明输入函数*/void menu1(); /*声明教师录入课程表主菜单函数*/void menu2(); /*声明学生查询课程表主菜单函数*/void rank(); /*声明显示时间顺序函数*/void querymenu3(); /*声明查询函数*/void looktime(); /*声明按照时间查询函数*/void looklessonname(); /*声明按照课程名查询函数*/void add(); /*声明保存函数*/void amend(); /*声明修改课程函数*/void amend1(); /*声明修改课程子函数*/void amendnews(int i); /*声明修改整个课程信息函数*/void amendtime(int i); /*声明修改课程时间函数*/void amendlessonname(int i); /*声明修改课程课程名函数*/void amendclassroom(int i); /*声明修改课程教室函数*/void deleted(); /*声明删除函数*/void add_score(int count); /*声明添加学生成绩函数*/void xiugai_score(int count); /*声明修改学生成绩函数*/void shanchu_score(int count); /*声明删除学生成绩函数*/void chaxun_score(int count); /*声明按要求查询学生成绩函数*/void paixu_score(int count); /*声明学生成绩排序函数*/void tongji_score(int count); /*声明学生成绩统计函数*/float chinese(int count); /*声明计算语文成绩最大值函数*/int chr(int count); /*声明计算语文成绩及格人数的函数*/ float english(int count); /*声明计算英语成绩最大值函数*/int ehr(int count); /*声明计算英语成绩及格人数的函数*/ float math(int count); /*声明计算数学成绩最大值函数*/int mhr(int count); /*声明计算数学成绩及格人数的函数*/ float computer(int count); /*声明计算计算机成绩最大值函数*/int thr(int count); /*声明计算计算机成绩及格人数的函数*/float PE(int count); /*声明计算体育成绩最大值函数*/int phr(int count); /*声明计算体育成绩及格人数的函数*/ float sum_score(int count); /*声明计算总分成绩最大值函数*/ void load_student(int a); /*声明启动学生函数*/void load_teacher(int a); /*声明启动老师函数*/struct student /*学生结构体*/{/*个人信息*/int student_id; /*账号*/char student_name[20]; /*姓名*/char password[16]; /*密码*/int age; /*年龄*/char qq[12]; /*QQ号*/char tel[12]; /*电话*/int grade; /*年级*//*各科成绩*/float chinese; /*语文分数*/float english; /*英语分数*/float math; /*数学分数*/float computer; /*计算机分数*/float PE; /*体育分数*/float sum; /*总分*//*课程表*/char time[10]; /*时间*/char lessonname[20]; /*课程名*/char teacher[20]; /*授课老师*/char classroom[10]; /*教室*/char hours[10]; /*第几节课*/int weeks; /*周时*/};struct teacher /*老师结构体*/ {int teacher_id; /*账号*/char teacher_name[20]; /*姓名*/char password[16]; /*密码*/};struct student our_student[student_num]; struct teacher our_teacher[teacher_num];void main() /*主函数*/{system("color f0"); /*初始化背景颜色*/show_menu(); /*制作人信息简介*/load();}void load() /*启动函数*/{int flag=1; /*控制循环结束的变量*/int a=0,b=0; /*记录已注册的学生的人数a为学生个数b为老师个数*/int *count1=&a,*count2=&b; /*指向学生人数和老师人数的指针*/int correct_student,correct_teacher;color();register_(count1,count2); /*注册学生和老师的帐号*/student_file1();teacher_file();while(flag){switch(show_menu_login()) /*显示登录菜单*/{case 1: /*选择1,进入学生登录*/if(correct_student=is_my_student(our_student,count1)){printf("\n ◆学生登录成功!\n");display_student(our_student[correct_student-1]);printf("\n");printf(" ");system("pause");load_student(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,进入老师登录,即管理员登录*/ if(correct_teacher=is_my_teacher(our_teacher,count2)){printf("\n ◆管理员登录成功!\n");display_teacher(our_teacher[correct_teacher-1]);printf("\n");printf(" ");system("pause");load_teacher(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,退出登录*/system("cls");flag=0;break;default:printf("请正确输入1-3:");system("cls");}}}void load_student(int a) /*启动学生函数*/{int flag=1;system("cls");while(flag){switch(show_student_select()){case 1: /*选择1,学生信息查询*/system("cls");print_stu_information(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩查询*/system("cls");print_stu_score(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表查询*/menu2();printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出查询界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}void load_teacher(int a) /*启动老师函数*/{int flag=1;system("cls");while(flag){switch(show_teacher_select()){case 1: /*选择1,学生信息录入*/input_information(a);system("cls");student_file2();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩录入*/input_score_menu(a);system("cls");student_file3();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表录入*/menu1();printf(" 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出管理界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}int length_student_name(char *p) /*验证用户名是否合法*/ {int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_student_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<=' 9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_student_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_student_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int vaild_two_password(char *p1,char *p2) /*验证两次密码是否相同*/{if(strcmp(p1,p2)==0)return 1;elsereturn 0;}int student_register(struct student *ptr_student,int *size) /*完成注册功能*/{char password[16];char repassword[16];if(*size==student_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册学生姓名:");fflush(stdin);gets(ptr_student[*size].student_name);if(!(length_student_name(ptr_student[*size].student_name)&&vaild_student_name(ptr_student[*size].student_name))){printf(" ◆您输入的姓名无效,学生姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_student[*size].password,password);if(!(length_student_password(ptr_student[*size].password)&&vaild_student_pa ssword(ptr_student[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号!!!",ptr_student[*size].student_id=20150000+*size);return 1;}int is_my_student(struct student *p,int *size) /*如果登录成功则返回第i+1个学生的信息,否则返回0*/{int i;int zhanghao;char mima[18];system("cls");printf("\n\n");printf(" ★请输入您的账号:");scanf("%d",&zhanghao);fflush(stdin);printf("\n");printf(" ★请输入您的密码:");gets(mima);for(i=0;i<*size;i++){if((zhanghao==p[i].student_id)&&(strcmp(mima,p[i].password)==0)) return i+1;}return 0;}void display_student(struct student stu) /*显示学生信息*/{printf("\n ★您的账号是:%d\n",stu.student_id);}int length_teacher_name(char *p) /*验证用户名是否合法*/{int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_teacher_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<=' 9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_teacher_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_teacher_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int teacher_register(struct teacher *ptr_teacher,int *size) /*完成注册功能*/{char password[16];char repassword[16];if(*size==teacher_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册教师姓名:");fflush(stdin);gets(ptr_teacher[*size].teacher_name);if(!(length_teacher_name(ptr_teacher[*size].teacher_name)&&vaild_teacher_na me(ptr_teacher[*size].teacher_name))){printf(" ◆您输入的姓名无效,教师姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");printf("\n");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_teacher[*size].password,password);if(!(length_teacher_password(ptr_teacher[*size].password)&&vaild_teacher_password(ptr_teacher[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号。
C语言随机点名
#include<stdio.h> #include<stdlib.h>#include <time.h>#define STU_NUM_MAX 64 // 假设最多有64个学生struct Student{char name[10];int stuID;}stu[STU_NUM_MAX];int exist[STU_NUM_MAX]; // 用以保存被点过名static int index=0; // 记住点名的次数void Iitialize(){for(int i=0;i<STU_NUM_MAX;i++) exist[i]=0;}bool IsExist(int id){for(int i=0;i<STU_NUM_MAX;i++)if(exist[i]==id) return true; //已存在return false; // 不存在}void Add() // 添加数据{FILE *fp;int stu_num;printf("\t\t You want to input the number of student?:"); scanf("%d",&stu_num);for (int i=0;i<stu_num;i++){printf("\n");printf("\t\tPlease input student ID:");scanf("%d",&stu[i].stuID);printf("\t\tPlease input student name:");scanf("%s",stu[i].name);fflush(stdin);}if((fp=fopen("stu.dat","ab"))==NULL) {printf("Can't open file\n");exit(1);}for(int j=0;j<stu_num;j++){if(fwrite(&stu[j],sizeof(struct Student),1,fp)!=1) printf("Error writing file.\n");}fclose(fp);}void rollcall() // 随机点名{FILE *fp;if((fp=fopen("stu.dat","rb"))==NULL){printf("Can't open file.\n");exit(1);}srand((unsigned)time(NULL));int i=0;int randID=rand()%(64-1+1)+1; // 1~64printf("\t\t随机点到的学号为:%d\n\t\t%s\t%s\n",randID,"StuID","StuName");do{fseek(fp,i*sizeof(struct Student),SEEK_SET);if(fread(&stu[i],sizeof(struct Student),1,fp)){if(stu[i].stuID==randID&&!IsExist(randID)){printf("\t\t%4d\t%5s\n",stu[i].stuID,stu[i].name);exist[index++]=randID;break;}}i++;}while(!feof(fp));fclose(fp);}int main(){int select=0;char answer='y';Iitialize();do{printf("1.添加数据 2.随机点名 3.退出\n请选择:"); fflush(stdin);scanf("%d",&select);switch(select){case 1:Add();break;case 2:rollcall();break;case 3:return 0;}fflush(stdin);printf("You want to continue?:"); scanf("%c",&answer);} while (answer=='y'||answer=='Y'); return 0;}#include<stdio.h>#include <stdlib.h>#include<string.h>#include <conio.h>#include <time.h>struct studentinfo{char sNo[5];char sxueNo[14];char sname[20];}st[100];int main(){int i=0,j=0,k,flag,RN,*a;FILE *fp;char ch,filename[20]={0},line[100]={0}; printf("Please input file name:"); fflush(stdin);gets(filename);fp=fopen(filename,"r");printf("名单如下:\n");while (fgets(line,sizeof(line)-1,fp)){if (line[0]!='\n' && line[0]!=' '){sscanf(line,"%s %s %s\n",st[i].sNo,st[i].sxueNo,st[i]. sname); printf("%s\n%s\n%s\n",st[i].sNo,st[i].sxueNo,st[i].sna me);i++;}}srand((unsigned)time(NULL));a=(int*)malloc(sizeof(int)*i);memset(a,-1,sizeof(a));printf("按任意键点名:");fflush(stdin);while (!(ch=getch())==NULL){RN=rand()%i;flag=1;for (k=0;k<i;k++){if (RN==a[k]){flag=0;break;}}if (flag){a[j]=RN;j++;printf("\n~~~~~\n%s\n%s\n%s\n------------\n",st[RN]. sNo,st[RN].sxueNo,st[RN].sname);}}}#include<stdio.h>#include <stdlib.h>#include <time.h>#define STU_NUM_MAX 4struct StudentInfo // 学生信息结构{char name[15];int stu_id;}stu[STU_NUM_MAX];void WriteData() //写入学生信息{FILE *fp;int stu_num=4;for (int i=0;i<stu_num;i++){printf("请输入第%d个学生的姓名:",i+1);scanf("%s",stu[i].name);printf("请输入第%d个学生的学号:",i+1);scanf("%d",&stu[i].stu_id);}if ((fp=fopen("myfile.dat","ab"))==NULL){printf("Can't open file\n");exit(1);}for (int j=0;j<stu_num;j++){if(fwrite(&stu[j],sizeof(struct StudentInfo),1,fp)!=1) printf("Error writing file.\n");}fclose(fp);}void TeacherDM(int stuID) // 教师点名{FILE *fp;bool find_mark=false;printf("\n\t%s\t\t%s\n","学号","姓名");if((fp=fopen("myfile.dat","rb"))==NULL){printf("Can't open file\n");exit(1);}int i=0;do{fseek(fp,i*sizeof(struct StudentInfo),SEEK_SET); fread(&stu[i],sizeof(struct StudentInfo),1,fp); if(stu[i].stu_id==stuID){printf("\t%4d\t%s\n",stu[i].stu_id,stu[i].name);printf("\n\n\t请【%s】同学回答某某问题.\n",stu[i].name);find_mark=true;break;}i++;}while(!feof(fp));if(!find_mark) printf("\n\t\t未能找到学生号为:%d的记录!\n",stuID); fclose(fp);}void main(void){int stuID[4]={2013011001,2013011002,2013011003,2013011004};//WriteData();srand((unsigned)time(NULL));//随机种子TeacherDM(stuID[rand()%(3-0+1)+0]);}#include <stdlib.h> #include <stdio.h> #include <math.h> #define SIZE 4 struct student {char num[20]; char name[10]; int time; }std[SIZE]; void save() {int i; FILE *fp;if((fp=fopen("myfile.dat","rb+"))==NULL) {printf("文件打开失败\n"); exit(0);}for(i=0;i<SIZE;i++)沈阳航院设计用纸9if(fwrite(&std[i],sizeof(struct student),1,fp)!=1) /*将内存中的数据输出到磁盘文件中*/ printf("文件保存失败\n"); }void main() {int j,i; char c; FILE *fp;if((fp=fopen("myfile.dat","ab+"))==NULL) {printf("文件打开失败\n"); exit(0); }for(i=0;i<SIZE;i++)fread(&std[i],sizeof(struct student),1,fp); /*将fp所指向的文件中的数据存储到数组std中*/printf("*************欢迎使用上课随机点名程序**************\n"); printf("******输入a:显示所有同学名情况*********\n"); printf("******输入d: 开始点名*********\n"); printf("******输入s:保存点名*********\n");printf("******输入b: 点名次数归零*********\n"); printf("******输入q: 退出*********\n"); printf("******************************************\n"); while(1) {c=getchar(); switch(c) {case 'a': for(i=0;i<SIZE;i++) printf("\t\t%s\t\t%s\t\t被点名%d次\n",std[i].num,std[i].name,std[i].time); break;case 's': save();printf("****文件保存成功!退出请输入q****\n");break;case 'b': for(i=0;i<SIZE;i++)沈阳航院设计用纸10std[i].time=0;printf("点名次数归%d\n",std[i].time);break; case 'q': exit(0); case 'd': loop: j=rand()/1000; /*调用rand的函数进行点名*/ if(j==0){ std[0].time++;printf("\t\t%s\t\t%s\n",std[j].num,std[j].name); }else if(j==1) {std[1].time++;printf("\t\t%s\t\t%s\n",std[j].num,std[j].name); } else if(j==2) {std[2].time++;printf("\t\t%s\t\t%s\n",std[j].num,std[j].name); } else if(j==3) {std[3].time++;printf("\t\t%s\t\t%s\n",std[j].num,std[j].name); } else goto loop; break;} }fclose(fp); }。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计任务书院系:电子信息工程学院专业:电子信息工程班级:学号:题目:教师上课点名系统一、课程设计时间2010~11第1学期第2周,共计1周,20学时。
二、课程设计内容用C语言编写程序完成以下任务:教师在每次上课时,需要对学生点名。
学生信息保存在文件file20.txt(由教师提供)中,包括学号、姓名、是否缺席三项。
编写程序,完成如下功能:1 教师点名:对所有学生进行点名,并更新file20.txt文件;2 分别统计已到和未到的学生,并显示;3 能够向文件中添加后报到的学生信息。
三、课程设计要求1. 程序质量:✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“开始点名”、“信息统计”、“学生信息添加”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字指导教师:________ 学生签名:________五、说明书成绩六、教师评语目录一、程序设计题目 (1)二、需求分析 (1).三、程序流程图 (2)四、核心技术的实现方法及程序段 (6)五、个人总结 (8)六、参考文献 (8)七、源程序 (8)一、程序设计题目1 教师点名:对所有学生进行点名,并更新file20.txt文件;2 分别统计已到和未到的学生,并显示;3 能够向文件中添加后报到的学生信息。
二、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为七个模块,其中每一个模块对应一个功能,他们的功能分别是:程序界面设计模块,文件读写模块,文件更新模块,教师点名模块,学生信息添加模块,学生缺席情况统计模块,学生信息显示模块,。
1、程序界面设计模块主要实现程序最初运行时程序界面友好、美观的的构型以及简明的操作提示;2、文件读写模块实现的功能是对myfile.dat文件数据的读取和存储,将文件中的数据保存到结构体student中,并将点名次数通过save函数保存到文件中;3、显示点名情况模块按照题目的要求将数据文件中所有学生的学号、姓名、被点名次数打印到屏幕上;4、随机点名算法模块通过调用数学函数库中的随机数生成函数rand实现点名的随机性,并将被点到的学号、姓名打印到屏幕上;除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
三、程序流程图总体框架图:模块设计:读取数据模块(图一)点名模块(图二)保存模块(图三)程序运行结果如图:(图一)(图二)(图三)四、核心技术的实现方法及程序段1.结构体定义:struct student{char num[20];char name[10];int time;}std[SIZE];2.将fp所指向的文件中的数据存储到数组std中FILE *fp;if((fp=fopen("myfile.dat","ab+"))==NULL){printf("文件打开失败\n");exit(0);}for(i=0;i<SIZE;i++)fread(&std[i],sizeof(struct student),1,fp);3.调用rand的函数进行点名loop: j=rand()/1000; if(j==0){std[0].time++;printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);}else if(j==1){std[1].time++;printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);}else if(j==2){std[2].time++;printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);}else if(j==3){std[3].time++;printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);}else goto loop;break;}}fclose(fp);}4.保存点名void save(){int i;FILE *fp;if((fp=fopen("myfile.dat","rb+"))==NULL){printf("文件打开失败\n");exit(0);}for(i=0;i<SIZE;i++)if(fwrite(&std[i],sizeof(struct student),1,fp)!=1) printf("文件保存失败\n");}/*将内存中的数据输出到磁盘文件中*/五、个人总结之前的C语言学的不是很好,基本处于一知半解的阶段,甚至对有些概念都还很模糊,但是,在这一周的时间里,通过自己查找资料与同学之间进行探讨,还有老师和学长的指导,使我的C语言编程能力有了质的飞跃。
虽然我们学的是电子专业,但C语言程序设计确实是一门很有用的学科,像我的题目—教师点名系统,就与我们的生活紧密联系在一起,所以这次课设并不是一个结束,而是一个开始,一个对C语言更深入学习的开始。
六、参考文献1 谭浩强.C程序设计.北京:清华大学出版社,20052 刘成等.C语言程序设计实验指导与习题集.北京:中国铁道出版社,2006七、源程序#include <stdlib.h>#include <stdio.h>#include <math.h>#define SIZE 4struct student{char num[20];char name[10];int time;}std[SIZE];void save(){int i;FILE *fp;if((fp=fopen("myfile.dat","rb+"))==NULL){printf("文件打开失败\n");exit(0);}for(i=0;i<SIZE;i++)if(fwrite(&std[i],sizeof(struct student),1,fp)!=1)/*将内存中的数据输出到磁盘文件中*/printf("文件保存失败\n");}void main(){int j,i;char c;FILE *fp;if((fp=fopen("myfile.dat","ab+"))==NULL){printf("文件打开失败\n");exit(0);}for(i=0;i<SIZE;i++)fread(&std[i],sizeof(struct student),1,fp);/*将fp所指向的文件中的数据存储到数组std中*/printf("*************欢迎使用上课随机点名程序**************\n");printf("******输入a:显示所有同学名情况 *********\n");printf("******输入d: 开始点名 *********\n");printf("******输入s:保存点名 *********\n");printf("******输入b: 点名次数归零 *********\n");printf("******输入q: 退出 *********\n");printf("******************************************\n");while(1){c=getchar();switch(c){case 'a': for(i=0;i<SIZE;i++)printf("\t\t%s\t\t%s\t\t被点名%d次\n",std[i].num,std[i].name,std[i].time);break;case 's': save();printf("****文件保存成功!退出请输入q****\n");break;case 'b': for(i=0;i<SIZE;i++)std[i].time=0;printf("点名次数归%d\n",std[i].time);break;case 'q': exit(0);case 'd':loop: j=rand()/1000; /*调用rand的函数进行点名*/ if(j==0){std[0].time++;printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);}else if(j==1){std[1].time++;printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);}else if(j==2){std[2].time++;printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);}else if(j==3){std[3].time++;printf("\t\t%s\t\t%s\n",std[j].num,std[j].name);}else goto loop;break;}}fclose(fp);}。