C语言程序设计报告 学生选修课系统
C语言程序设计实验实验报告7
C语言程序设计实验实验报告7实验名称:链表实现学生信息管理系统实验目的:通过设计链表实现学生信息管理系统,掌握链表的操作方法及其应用。
实验内容:设计一个学生信息结构体,包括学号、姓名、性别、年龄和成绩五个成员变量,并选择链式结构存储这些数据。
实现以下功能:1. 添加学生信息:从键盘输入学号、姓名、性别、年龄和成绩等信息,添加到链表中。
2. 删除学生信息:从链表中删除指定学号的学生信息。
5. 按成绩排序:按学生的成绩从高到低排序,并输出所有学生的信息。
7. 退出程序:退出学生信息管理系统。
实验方法:1. 设计学生信息结构体,定义链表节点结构体,并编写初始化链表和销毁链表的函数。
2. 编写添加学生信息函数,新建链表节点并插入链表末尾。
3. 编写删除学生信息函数,根据学号查找需要删除的节点,先将该节点从链表中删除,再释放节点空间。
4. 编写修改学生信息函数,根据学号查找需要修改的节点,并修改其成员变量。
6. 编写按成绩排序函数,使用冒泡排序法对链表进行排序,并输出所有学生的信息。
7. 编写输出所有学生信息函数,遍历链表并输出每个节点的信息。
8. 完成学生信息管理系统的主函数,实现菜单及相应功能的选择。
实验结果:依次选择菜单中的各个功能,添加、修改、删除、查找、排序和输出学生信息都能实现。
经测试,程序稳定运行,功能正常,符合需求。
本次实验主要让我们掌握了链式结构的概念、链表节点的定义、链表的初始化、插入、查找、删除和销毁链表的操作方法,以及在实际应用中如何使用链表来实现数据管理。
虽然链表操作相对于数组稍微有些繁琐,但其可以灵活处理数据结构的长度变化,具有更高的可扩展性和更好的操作效率,可以更好的适应各种实际需求。
在实验中,还需要注意节点指针的正确使用、各个函数之间的调用关系和输入输出数据格式的合理选择等问题,以保证程序能够正常运行。
同时,还需要保持认真细致的态度,严格按照实验需求和要求来完成每个步骤,以达到更好的实验效果和运行效率。
数据结构课程设计学生选课系统设计
题目:学生选课系统设计一、需求分析根据所学知识,编写指定题目的C语言程序,并规范地完成课程设计报告。
通过课程设计,加深对《C语言程序设计》和《数据结构》课程所学知识的理解,熟练掌握和巩固C语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用等;复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等),熟练掌握和巩固三种基本的数据结构(线性结构、树形结构、图形结构)的逻辑结构、存储结构以及相关运算和应用。
具体要求如下:采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。
学生也可根据自己对题目的理解增加新的功能模块。
系统以菜单界面方式工作,运行界面友好,演示程序以用户和计算机的对话方式进行。
程序算法说明清晰,理论分析与计算正确,运行情况良好,实验测试数据无误,容错性强。
编程风格良好(包括缩进、空行、适当注释、变量名和函数名见名知意,程序容易阅读等);假设某学期共有5门课,每门课程有四项基本信息:课程编号、课程名称、学分和选课人数。
学生可自行选课,假设该学期共有8个学生,学生有学号、姓名、所选课程三种基本信息,学生选课要满足每门课最多只能有3个学生选修,每个学生最多只能选2门课,试设计一个学生选课系统。
学生选课系统要求具备以下功能:1.系统以菜单方式工作2.浏览所有的课程信息3.浏览所有的学生选课情况4.任意学生信息的查询和修改功能5.学生选课功能(学生选课时要判断课程是否已经选满,同时还要判断学生是否已经选了2门课,若学生满足选课条件才能选课,注意同一门课一个学生只能选一次)二、概要设计1.本程序中用到的所有数据类型的定义及含义数据类型:一维数组struct course{ int num;char subject[10];int mark;int count;}cour[5]={{1,"C++",3,0},{2,"MATLAB",3,0},{3,"Math",5,0},{4,"English",4,0},{5,"Chinese",3,0}}; ------------课程信息struct student{ long num;char name[10];char order1[10];char order2[10];}stu[8]={{,"guo","NULL","NULL"}, {,"yu","NULL","NULL"},{,"su","NULL","NULL"},{,"hua","NULL","NULL"},{,"du","NULL","NULL"},{,"su","NULL","NULL"},{,"liu","NULL","NULL"},{,"xu","NULL","NULL"},}; ------------------学生信息其余int, char等数据类型在各模块有不同含义,比较简单,不做赘述。
c语言学生信息管理系统设计报告
c语言学生信息管理系统设计报告随着教学质量和教学管理的要求不断提高,校园管理系统对于诸多困难领域的改善服务开始发挥着重要作用,而学生信息技术系统设计是实现校园管理质量提升的重要手段之一。
实施学生信息管理系统可以提高人力资源管理的效率,降低办理各项业务的成本,将学校管理变得更加规范和有效。
本报告旨在设计一套C语言学生信息管理系统,用于学校信息管理与市场营销管理,实现数据的及时收集、存储和处理,同时,改善学校的教学管理,提高教学质量,提升学生的学习体验。
首先,系统设计将涉及到C语言的语法和结构,以便理解和实现学生信息的管理。
其次,关于系统的功能,可以从学生信息管理、任课管理、教学管理、学术科研、职位设置、绩效考核等方面进行完善。
针对关键管理系统,为了实现系统的可靠性和安全性,将采用多种数据库技术,包括SQL Server、Oracle、MySQL等数据库技术,以及主流计算机语言C++、Java等,实现数据库的操作、学生信息管理系统的开发、学习管理系统的开发等技术需求。
此外,本报告还将对相关技术以及软件测试等内容进行分析,以保证学生信息管理系统的可靠性和稳定性。
本报告的完成,必须充分考虑C语言的基本知识,以及C语言学生信息管理系统在实施过程中的可能风险。
在实施过程中,应该通过计算机技术的应用、软件测试、数据库技术的改进等多方面分析,以保证系统在实施过程中的高效稳定性。
综上所述,本报告将实施C语言学生信息管理系统,实现学校信息管理与市场营销管理,旨在收集、存储和处理数据,同时提高教学管理的质量,提升学生的学习体验,实现学校的管理变得更加规范和有效。
此外,本报告还将深入探讨如何利用计算机技术、数据库技术、软件测试等相关技术,保证学生信息管理系统的可靠性和安全性。
C语言程序设计实习报告学生信息管理系统
C语言程序设计实习报告学生信息管理系统C 语言课程设计题目:学生信息管理系统设计者:梁天江专业:机械设计制造及其自动化班级学号: 072084-31所属院系:机电学院指导教师:吴湘宁7月17日1.题目和要求:1.1问题提出与要求:学生成绩管理系统[要求]设计一个学生成绩管理系统,对在校某班学生几门课程的考试成绩进行统一管理。
每个学生记录包括学号、姓名、年龄、数学、英语、物理成绩,默认以学号为序存放。
(1)一个文件按以班为单位存储学生记录。
(2)将允许的操作分为六种A:插入一个新的学生记录(录入学生信息)B:修改学生记录C:删除一个学生记录D:登记成绩E:修改成绩F:浏览全班成绩(3)计算学生的总成绩(4)输出全班成绩表1.2需求分析.根据题目要求,由于学生信息是存放在文件中,因此应提供文件的输入,输出等操作;在程序中需要浏览学生的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.2.功能实现设计:2.1总体设计:分析系统:根据题目的需求分析,可将这个系统设计为六大模块(见下图):插入学生信息,修改,删除,登记,浏览,统计。
2.2详细设计:1、主函数主函数设计得比较简洁,只提供输入、功能处理和输出部分的函数调用。
其中各功能模块用菜单方式选择;其流程图如下:[程序]void main(){int a;do{printf("\t\t\t\t\n");printf("\t\t\t\t学生成绩管理系统\n");printf("\n");printf("\t\t\t作者:梁天江班级:072084-31 学号: 1004528\n"); printf("\t\t\t-------------------------------------------\n\n");printf("\t 1.插入新的学生记录\n");printf("\t 2.修改学生记录\n");printf("\t 3.删除学生记录\n");printf("\t 4.显示学生成绩和总分\n");printf("\t 5.浏览全班成绩\n");printf("\t 6.退出\n\n");。
C语言程序设计课程设计报告
C语言程序设计课程设计实验报告一、设计名称:学生成绩治理查询系统实验项目性质:综合性所涉及课程:C语言程序设计打算学时:实验学时12二、设计目的:1.通过本课程设计,培育上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,把握工程软件设计的大体方式,强化上机动手能力,闯过编程关;2.为后续各门运算机课程的学习打下坚实基础。
3.明白得程序设计的思路,把握结构化程序设计的方式,综合利用C语言进行程序编写,巩固常常利用的C语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培育。
提高编写程序解决实际问题的能力、调试程序的技术。
三、设计环境(软件、硬件及条件)1.硬件:PC机2.软件:Turbo C++四、设计说明:程序系统的结构:用一系列图表列出本程序系统内的每一个程序(包括每一个模块和子程序)的名称、标识符和它们之间的层次结构关系。
主程序:新建:输入记录(遇#号时停止输入)。
插入:在指定位置插入记录。
显示:列出所有记录。
查询:一、按学号查询;二、按名字排序。
删除:一、按学号删除;二、按名字删除;3、删除所有记录。
排序:一、按语文成绩排序;二、按英语成绩排序;3、按数学成绩排序。
保留:保留为任意名字,系统自动加后缀名为.txt。
读取:读取程序目录下的后缀名为.txt的文件。
退出:退出程序。
五、各功能模块的具体实现,用图表表示。
输入记录显示开始:输入学号输入的学号是否为#Y N 结束,返回主菜单输入记录循环输入结束开始p=hp!=NULL输出学生信息;p=p->next结束按学号(姓名)查询信息Y N读取文件六、各模块(函数)的功能介绍,数据结构设计描述,参数说明等。
STUDENT *init(); /*初始化链表*/STUDENT *create(); /*新建链表*/STUDENT *del_no(STUDENT *h);/*按学号删除信息*/STUDENT *del_name(STUDENT *h); /*按姓名删除信息*/void print(STUDENT *h); /*显示信息函数*/void search_no(STUDENT *h); /*按学号搜索*/void search_name(STUDENT *h); /*按姓名搜索*/STUDENT *insert(STUDENT *h); /*插入信息函数*/void sort(STUDENT *h);/* 排序函数*/void save(STUDENT *h);/*保留数据到文件*/void load(STUDENT *h); /*从文件读取数据*/int menu_main(); /*菜单函数*/void inputs(char *prompt,char *s,int count);/*输出信息*/七、程序代码:Enter records\n");printf(" 2. Add records\n");printf(" 3. List records\n");printf(" 4. Search records\n");printf(" 5. Delete records\n");printf(" 6. Sort records\n");printf(" 9. Quit\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~9):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>9); /*选择项不在1~9之间重输*/return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Search records on number\n");printf(" 2. Search records on name\n");printf(" 3. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~3):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>3);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Chinese\n");printf(" 2. English\n");printf(" 3. Math\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}Delete records on number\n");printf(" 2. Delete records on name\n");printf(" 3. Delete all records\n");printf(" 4. Back\n\n");printf("*****************************************\n");do{ printf("\n Enter you choice(1~4):"); /*提示输入选项*/ scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整型数*/}while(c<1||c>4);return c; /*返回选择项,主程序依照该数挪用相应的函数*/}.");/*提示*/getch(); /*读入任意字符*/}.\n");getch(); /*读入任意字符*/if(p==h)h=p->next;elseq->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s); }printf("\nPress any key to continue..."); getch(); /*读入任意字符*/return h;}.\n");getch();if(p==h)h=p->next;else q->next=p->next;free(p); /*释放*/printf("\n%s had been deleted\n",s);}printf("\nPress any key to continue...");getch(); /*读入任意字符*/return h;}.");getch(); /*读入任意字符*/}.");getch(); /*读入任意字符*/}xt"};STUDENT *p;FILE *fp; /*指向文件的指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判定打开是不是正常*/ {printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;while(p!=NULL){if(fwrite(p,sizeof(STUDENT)-sizeof(p->next),1,fp)!=1){printf("Error!\n");exit(1);} /*写入*/p=p->next;}fclose(fp); /*关闭文件*/printf("\n------OK------\n");printf("Press any key to continue...");getch(); /*读入任意字符*/}xt"};STUDENT *p,*a1=NULL,*a2=NULL;FILE *fp;/*概念文件指针*/printf("\n Input the filename:");scanf("%s",outfile);strcat(outfile,last);if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/{printf("\nCannot open file!\n");exit(1); /*退出*/}p=h;a1=a2=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp); while(!feof(fp)){n++;if(n==1)h=a1;else a2->next=a1;a1=(STUDENT *)malloc(LEN);fread(a1,sizeof(STUDENT)-sizeof(a1->next),1,fp);}a2->next=NULL;printf("\n------OK------\n");printf("Press any key to continue...");getch(p); /*读入任意字符*/}///////////////////////////////////////////void sort(STUDENT *h) /*排序函数*/{int i=0,j;STUDENT *p,*q,*t,*h1,*z;clrscr(); /*清屏*/printf("Enter you choice :\n");scanf("%d",&j);z=h;h1=h->next;h->next=NULL;while(h1!=NULL){t=h1;h1=h1->next;q=h;while(t->score[--j]<p->score[--j]&&p!=NULL){q=p;p=p->next;}if(p==q){t->next=p;h=t;}else{t->next=p;q->next=t;}}p=h;while(p!=NULL){i++;p=p->next;}h=z;printf("------OK------\n");}//////////////////////////////////////////////////九、体会、总结本课程设计完成了设计一个学生成绩治理系统,学生的学习成绩进行治理,具有查询和检索功能,而且能够对指定文件操作。
c#课程设计学生选课系统设计
c#课程设计学生选课系统设计一、课程目标知识目标:1. 学生能掌握C#编程语言的基础知识,包括数据类型、控制结构、类与对象等;2. 学生能理解数据库的基本原理,掌握SQL语句的编写和数据库操作;3. 学生能了解学生选课系统的业务需求,掌握系统设计的基本方法和步骤。
技能目标:1. 学生能运用C#语言编写学生选课系统的功能模块,如登录、选课、退课等;2. 学生能通过数据库技术实现对学生选课信息的管理,包括数据存储、查询和更新;3. 学生能运用面向对象的设计思想,设计出结构清晰、易于维护的学生选课系统。
情感态度价值观目标:1. 学生通过课程学习,培养对计算机编程的兴趣和热情,提高信息素养;2. 学生在团队协作中,培养沟通与协作能力,增强团队意识;3. 学生在解决实际问题的过程中,培养勇于探索、积极创新的精神。
课程性质:本课程为实践性较强的课程,结合课本知识,以学生选课系统为案例,使学生掌握C#编程和数据库技术。
学生特点:学生具备一定的C#编程基础和数据库知识,对实际项目开发感兴趣,但可能缺乏项目实践经验。
教学要求:课程应注重理论与实践相结合,强调动手实践,引导学生通过自主学习和团队合作,完成学生选课系统的设计与实现。
同时,关注学生的情感态度价值观的培养,提高学生的综合素质。
二、教学内容1. C#编程基础:- 数据类型与变量- 控制结构(顺序、分支、循环)- 方法与数组- 类与对象- 继承与多态- 异常处理2. 数据库原理与应用:- 数据库基本概念- SQL语句(SELECT、INSERT、UPDATE、DELETE)- 数据库设计(实体关系、E-R图)- 数据库访问技术3. 学生选课系统设计:- 系统需求分析- 系统设计(模块划分、类设计)- 数据库设计(表结构设计、关系建立)- 界面设计(UI设计、用户体验)- 功能实现(登录、选课、退课、查询成绩等)4. 项目实践与团队协作:- 项目开发流程- 团队协作与沟通- 代码版本控制(如Git)- 项目测试与调试教学内容根据课程目标,结合教材章节,进行科学组织和系统安排。
《C语言程序设计课设》课程设计指导书
《C语言程序设计课设》课程设计指导书一、课程设计的目的(1)加深对讲授内容的理解,尤其是一些语法规则。
(2)熟悉C语言程序设计的结构化编程的思想,掌握数据的基本类型、自定义类型、函数、文件和指针等知识,能运用这些知识进行综合编程,熟练应用。
(3)能够综合运用所学知识,编程解决实际问题。
(4)培养团队分工合作的意识,最终使学生提高编程技能和解决实际问题的能力。
二、课程设计基本要求2.1.组织管理1.由院、系指派经验丰富的专业教师担任指导教师。
2.课程设计实行课程负责人与指导教师共同负责制。
3.课程负责人主要进行课设的命题、指导教师的考核、技术把关和全面管理。
4.指导教师全面负责所承担班级的课程设计指导、管理和考核评定工作。
2.2设计要求1.自选题目、小组管理、团队合作、小组评测。
2.模块化程序设计。
3.锯齿型书写格式。
4.必须上机调试通过。
三、选题要求:每个题目限定1-2人,每人必须负责一部分功能,并独立完成,推举出一个组长,负责任务分工,汇总到班长处,然后交给指导教师。
四、设计报告格式及要求:1、题目2、设计目的3、总体设计(程序设计组成框图、流程图)4、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)5、运行结果及分析6、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施7、课程设计心得及体会8、源程序清单和执行结果:清单中应有足够的注释五、课程设计成绩评定5.1基本要求:(1)每个人必须有程序运行结果;(2)每个人必须交《C语言课程设计》报告5.2、成绩评定和打分标准由指导教师对学生在课程设计期间的表现,所完成的设计报告的质量、设计结果的验收和答辩情况进行综合考核。
具体评定标准如下:(1)上机考勤:注重平时上机考勤与遵守纪律情况20%(2)结果验收:学生能运行、讲述或调试自己的程序,回答教师提问,每个人必须有程序运行结果40%(3)小组自评成绩结果10%(4)设计报告:每个人必须交《C语言课程设计》报告和《C语言课程设计》日志30%以上四项缺一不可,否则不能到得相应学分依据上述考核内容,最后采用优(>90分)、良(80~89分)、中(70~79分)及格(60~69分)、不及格(<60分)五级记分制评定学生课程设计成绩。
课程设计报告--学生选课管理系统
数据库课程设计报告学生选课管理系统班级:10软件本2成员:常东亚 100913010彭红明 100913028章鑫 100913050目录一、课程设计任务和目的 (2)二、需求描述 (2)三、系统总体设计 (3)1.系统架构设计 (3)2.功能模块设计 (3)3.数据库设计(概要设计) (5)(1)E-R图 (5)(2)关系模式 (5)(3)数据库管理系统 (6)(4)数据库命名 (6)(5)数据库表 (6)四、系统界面设计 (11)1、用户登录账号和密码 (11)2、窗体功能描述 (12)3、页面/窗体关系结构图 (16)五、系统实现技术小结 (16)六、课程设计体会 (19)七、系统主要源程序清单 (20)一、课程设计任务和目的完成学生选课管理系统的开发并掌握SQL数据库的建立和使用。
二、需求描述本系统是一个单机版的小型的学生选课管理系统,在本系统中,开发了一个面向管理员、学生和教师这三个对象的教务平台,对学生提供的服务有登录、选课、、修改登录密码、和查询成绩这几个服务,所选课程总数不能超过3门;对教师提供的服务有登录、修改登录密码和登录成绩;对管理员提供的服务有登录开设学生和教师帐号、删除学生和教师帐号的服务。
三、系统总体设计1.系统架构设计(1)架构:单机(2)运行软件环境: windows XP 、jdk1.6(3)开发环境:硬件平台:CPU:P41.8GHz内存:256MB以上软件平台:windows XP SP3 、jdk1.6操作系统:WindowsXP数据库:SQL Server 2000、SQLServer SP4补丁开发工具:Eclipse 3.3分辨率:1024*7682.功能模块设计各模块功能:● 登录界面:登录界面是有帐号,密码两个JTextField ,管理员帐号一字母A开头,教师帐号一字母T 开头,学生帐号以字母S 开头,登录帐号或密码输入错误会弹出相应的提示对话框。
学生成绩管理系统c语言课程设计报告
《学生成绩管理系统》课程设计报告专业:信息科学与工程学院班级:电气信息类0916班姓名:曹坤指导教师:汤哲学号: 02课程设计报告一、课程设计题目学生成绩管理系统1、需要处理的基础数据学生基本信息:如班级、学号、姓名、性别、年龄等。
学生选修课程的基本信息:课程编号、课程名称、学分、考试成绩、平时成绩、综合成绩(考试成绩*+平时成绩*)等。
主菜单2、系统的基本功能数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息;数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息;数据的插入:插入某个学生信息;数据的查询:如按学号查询、按姓名查询等;数据的删除:如删除指定学号、或者指定姓名的学生及其选修课程信息;平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息;列出不及格学生清单(学号、姓名、不及格的课程和成绩)。
考虑用文件把数据保存起来(可选)。
3、链表struct stu /*定义学生基本信息结构体*/{int i; /*以输入的顺序来确定的学生序号*/char num[11];char classnum[5];char name[128];char sex[32];int age;float ave;struct stu *next;};int n=0; /*学生人数*/struct stu *head=0;struct stu1 /*定义学生选修课信息结构体*/{char lessonnum[11];char lessonname[256];float score;float testgrade;float commongrade;float grade;struct stu1 *next;};int m;struct stu1 *a[max_num] ;/*定义一个指针数组来记住课程链表地址*/ /*---------------------- 数据的录入程序-----------------------*/void create(void) /*建立学生基本信息链表*/{n=0;struct stu *p1,*p2;char ch,ch1;struct stu1 *create1(void);do{n=n+1;a[n]=0;system("cls");p1=(struct stu *)malloc(LEN);printf("\n学号:");scanf("%s",p1->num);printf("\n班级:");scanf("%s",p1->classnum);printf("\n姓名:");scanf("%s",p1->name) ;printf("\n性别:");scanf("%s",p1->sex);printf("\n年龄:");scanf("%d",&p1->age);if(n==1)head=p1;else p2->next=p1;p2=p1;printf("\n是否输入选修课信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch1=getchar();if(ch1=='y'||ch1=='Y')a[n]=create1(); /*根据序号来记忆课程链表地址*/ p1->i=n;system("cls");printf("\n是否继续输入另一学生信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch=getchar();}while(ch=='y'||ch=='Y');p2->next=0;}struct stu1 *create1(void) /*建立课程链表*/{m=0;struct stu1 *p1,*p2;char ch;struct stu1 *head=0;do{m=m+1;system("cls");p1=(struct stu1 *)malloc(LEM);printf("\n课程编号:");scanf("%s",p1->lessonnum);printf("\n课程名称:");scanf("%s",p1->lessonname);printf("\n学分:");scanf("%f",&p1->score);printf("\n考试成绩:");scanf("%f",&p1->testgrade);printf("\n平时成绩:");scanf("%f",&p1->commongrade);p1->grade=p1->testgrade*+p1->commongrade*;printf("\n综合成绩:%-6.1f",p1->grade);if(m==1)head=p1;else p2->next=p1;p2=p1;printf("\n是否继续输入另一课程信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch=getchar();}while(ch=='y'||ch=='Y');p2->next=0;return(head);}二、设计思路界面:界面的显示由循环语句和switch语句来控制完成。
c语言课程设计学生成绩管理系统报告
c语言课程设计学生成绩管理系统报告一、教学目标本课程旨在通过C语言编程实现一个学生成绩管理系统,让学生掌握C语言的基本语法、数据结构、函数、文件操作等知识,培养学生编写程序解决实际问题的能力。
具体目标如下:1.知识目标:(1)掌握C语言的基本语法和编程技巧;(2)了解数据结构的基本概念,学会使用数组、链表等数据结构;(3)熟悉函数的定义和调用,掌握函数的参数传递和返回值;(4)掌握文件操作,了解文件读写的原理和方法。
2.技能目标:(1)能够独立编写C语言程序,解决实际问题;(2)具备良好的编程习惯,代码结构清晰、可读性强;(3)掌握调试和优化程序的方法,提高程序的运行效率;(4)学会使用版本控制系统,如Git,进行代码管理和协作开发。
3.情感态度价值观目标:(1)培养学生的编程兴趣,激发学习C语言的积极性;(2)培养学生团队协作精神,提高沟通与协作能力;(3)培养学生的问题解决能力,培养创新意识和持续学习的态度;(4)培养学生具有良好的职业道德,遵守编程规范,尊重他人代码。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、文件操作等。
具体安排如下:1.C语言基本语法:介绍C语言的数据类型、运算符、表达式、控制语句等基本概念;2.数据结构:讲解数组、链表、栈和队列等数据结构的基本原理和应用;3.函数:讲解函数的定义、声明、调用,以及函数的参数传递和返回值;4.文件操作:介绍文件的概念、文件读写的方法和技巧。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:通过讲解C语言的基本语法、数据结构、函数和文件操作等知识,使学生掌握课程的基本概念和编程技巧;2.案例分析法:分析实际编程案例,让学生学会将理论知识应用于实际问题解决;3.实验法:安排上机实验,让学生动手编写程序,培养实际编程能力;4.小组讨论法:学生进行小组讨论,培养团队协作和沟通能力。
C语言课程设计报告(学生成绩管理系统)
C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。
二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。
同时也可以全部把各科的平均成绩,最高和最低分输出.三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来.四、输出全部学生信息和全部学生成绩。
五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。
总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert( )函数来实现。
其中通过学号的大小来比较的,并且以此来排序.4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。
主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h”#include"stddef.h"#include"stddef。
C语言课程设计实践报告—学生选课管理系统[内附程序源代码](可编辑)
C语言大型作业实践报告计算机1001制作者:李菁华张兆丰秦恒加2011年6月题目:选修课程管理系统要求:假定有N门选修课,每门课有课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等信息。
学生可按要求(如总学分不能少于20学分)选课。
课程信息维护,如录入、修改、删除等,课程信息用文件保存。
课程信息浏览?输出。
学生选课功能。
查询功能包括:按学分、课程性质、学生等查询。
统计功能。
统计各门课程的选修人数。
本系统要有通用性、界面美观、操作方便。
要考虑系统安全。
课程信息录入系统选修课程信息录入选修课程信息保存主程序目录选择总体设计思路(流程图):学生选课系统课程信息读入学生信息输入选课系统数据保存选修课数据维护系统添加修改删除以word格式输出密码系统密码验证系统权限限制系统密码对退出程序密码对选修课程信息查找按各种类型查找密码错3次以上具体算法流程设计思路(流程图):主程序目录选择1.学生选课系统;2.选修课程信息输出;3.选修课程信息查找;4.管理员选项;5.退出系统。
管理员选项密码验证系统读入系统时间,通过强制转换成unsigned long int型数据作为初始密码用户输入密码(若是管理员会拥有密码钥匙,得出现在的密码,该密码每分钟都会变化)密码正确进入管理员管理界面,密码不正确重新输入密码输入错误3次以上 12 3学生选课系统选修课程信息以word2003形式输出返回主菜单选修课程信息查找选修课程信息从文件内读入输入按什么查找1.课程编号;2.课程名;3.课程种类;4.总课时;5.教学课时;6实验课时;7.学分;8.开课学期;9.已选人数。
输入查找的关键字从文件内读入的课程信息与关键字逐一对比,完全匹配输出;查找完毕学生信息输入课程信息浏览不选少于这门20分选课系统课选课成功判断学分是否大于20分大于20分结束选课选课信息储存退出程序管理员模块管理员模块 3目录选择1.学生选课系统;2.选修课程信息管理系统;3.退出系统12 5学生选课系统二级目录选择1.新建选修课程信息;2.管理选修课程信息;3.统计每门课程选择人数;4.选修课程信息输出;5.回到主菜单。
小学数学学习系统(C语言课程设计报告,有源代码)
课程设计报告课程设计名称:C语言课程设计课程设计题目:小学数学学习系统目录第1章概要设计 (3)1.1题目的内容与要求 (3)1.2总体结构 (3)第2章详细设计 (4)2.1数据结构设计 (4)2.2功能设计 (4)2.2.1 学生信息存储模块 (4)2.2.2 菜单选择模块 (5)第3章调试分析 (10)第4章使用说明 (11)参考文献 (19)附录(源代码) (21)第1章概要设计1.1题目的内容与要求内容:1.具有随机出题功能,且可以选择难度等级,不要混合运算功能;2.自动评分功能,当用户电答题后能给出用户的分值;3.查看正确答案;4.错题重做功能。
要求:1、用户登录;2、程序采用文本菜单界面。
1.2总体结构本程序主要分为5个模块(功能模块图见图1.1):1.学生信息存储模块,2.菜单选择模块,3.试题测试模块,4.得分与排名模块图1.1第2章详细设计2.1数据结构设计首先定义结构体数组存储学生信息,注册,录入学生个人信息,将学生信息储存在TXT 文档中,用指针写入文件,用while循环语句开始写入测试等级难度,保存正确结果,计算正确率,最后查看排名。
2.2 功能设计2.2.1 学生信息存储模块main函数实现程序的菜单操作。
根据用户选择的不同选项调用不同的函数,实现“注册”、“输入学号”、“选择难度答题”、“返回主菜单”等功能。
具体情况流程图如图2.1所示:算法1在屏幕上输出“请注册”选项;2接受用户输入2.2.2图 2.2图2.32.2.3图 2.4图 2.5 2.2.4 得分与排名模块图 2.6第3章调试分析在上机调试过程中遇到许多问题:1.引用库函数的头文件写成“#include “stdio””;2.变量int类型未先定义后使用;仔细思考总结,查阅教材解决;3.将学生信息输入后答题,但发现无法进行下一步功能;解决办法:按F10键进行单步调试,首先发现指向文件数据的指针没有数据,然后对文件直接进行数据加入,发现其他功能能够实现,然后对指向文件数据的指针进行修改,发现无论怎样修改数据都无法进入到文件,于是对数据输入函数进行修改,发现犯了一个比较低级的错误,scanf (“”)输入数据时忘记“&”符号,造成数据无法输入;4.使用随机数函数,但是调试过程中出现“rand()未定义”,无法产生随机数;解决办法:查找书籍,发现是未使用“rand()”函数的头文件,调用“#include<stdio.h>”后,随机函数问题得以解决;第4章使用说明(1).注册。
学生选课管理系统c语言
学生选课管理系统简介学生选课管理系统是一种用于学生选课和管理课程的系统。
通过该系统,学生可以方便地选取自己感兴趣的课程,并进行课程的管理和查询,同时教务部门可以通过系统进行课程的发布、修改和管理。
功能需求学生选课管理系统需要具备以下功能:1.学生注册和登录功能:学生需要先注册账号,然后通过账号登录系统。
2.学生选课功能:学生通过系统浏览可选的课程列表,并选择自己感兴趣的课程进行选课。
3.课程查询功能:学生可以查询已选和未选课程的详细信息,包括课程名称、授课教师、上课时间等。
4.课程管理功能:教务部门可以通过系统添加、修改和删除课程信息,包括课程名称、授课教师、上课时间等。
5.学生管理功能:教务部门可以通过系统管理学生信息,包括学生姓名、学号、选课情况等。
6.成绩管理功能:教务部门可以通过系统录入学生的成绩,并提供学生成绩查询功能。
7.课程评价功能:学生可以对已修完的课程进行评价,包括评分和评论。
8.学分统计功能:系统可以根据学生的选课情况自动计算学分和学分绩点,并提供查询功能。
技术实现为了实现学生选课管理系统,可以使用C语言进行开发。
以下是一些技术实现的建议:1.数据存储:可以使用文件系统来存储学生、课程和成绩等信息。
可以使用文本文件或二进制文件存储数据,通过文件操作函数进行读写。
2.用户界面:可以使用命令行界面或图形界面来实现用户的交互。
使用C语言的终端输出函数可以实现简单的命令行界面,使用图形界面库可以实现更复杂的图形界面。
3.数据结构:可以使用结构体来表示学生、课程和成绩等信息,通过数组或链表等数据结构进行管理。
4.用户认证:可以使用用户名和密码进行用户的身份验证。
可以将用户信息保存在文件中,通过比对输入的用户名和密码来验证用户身份。
5.查询和排序:可以使用各种算法来实现课程查询和排序功能。
例如,可以使用线性搜索来查询课程信息,使用冒泡排序或快速排序来对课程进行排序。
系统流程以下是学生选课管理系统的基本流程:1.学生注册和登录:学生在系统中注册账号,并通过账号登录系统。
c语言课程设计教务管理系统
c语言课程设计教务管理系统一、教学目标本课程的目标是使学生掌握C语言的基本语法、数据结构、算法和编程思想,能够运用C语言设计和实现简单的教务管理系统。
具体分为以下三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据结构、算法和编程思想,了解教务管理系统的原理和实现方法。
2.技能目标:学生能够运用C语言进行编程,设计和实现一个简单的教务管理系统。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生的问题解决能力和创新意识。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和编程思想,以及教务管理系统的原理和实现方法。
具体安排如下:1.C语言的基本语法:包括变量、数据类型、运算符、表达式、控制语句等。
2.数据结构:包括数组、链表、栈、队列等。
3.算法:包括排序算法、查找算法等。
4.编程思想:包括结构化编程、面向对象编程等。
5.教务管理系统的原理和实现方法:包括学生信息管理、课程信息管理、成绩管理等。
三、教学方法本课程的教学方法主要包括讲授法、讨论法、案例分析法和实验法。
具体安排如下:1.讲授法:用于讲解C语言的基本语法、数据结构、算法和编程思想。
2.讨论法:用于讨论教务管理系统的原理和实现方法。
3.案例分析法:通过分析典型的教务管理系统案例,让学生了解和掌握教务管理系统的实现方法。
4.实验法:让学生动手实践,设计和实现一个简单的教务管理系统。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
具体安排如下:1.教材:选用《C程序设计语言》作为主要教材,辅助以《C语言编程实例解析》等参考书。
2.多媒体资料:包括PPT课件、教学视频等。
3.实验设备:包括计算机、网络设备等,用于实验和实践教学。
五、教学评估本课程的评估方式包括平时表现、作业和考试。
具体安排如下:1.平时表现:通过课堂参与、提问、讨论等环节评估学生的学习态度和积极性。
2.作业:布置适量的作业,评估学生的理解和应用能力。
学生信息管理系统C语言报告
学生信息管理系统C语言报告简介学生信息管理系统是一种可以对学生信息进行管理的软件系统。
通过该系统,可以方便地添加、修改、查询和删除学生信息,提高学生信息管理的效率和准确性。
本报告将介绍学生信息管理系统的设计和实现过程,包括系统功能、技术选型和代码结构等方面。
通过该报告的阅读,读者可以了解到该系统的开发背景和主要功能,以及查看源代码和运行效果。
系统功能学生信息管理系统的主要功能如下:1. 添加学生信息:可以输入学生的姓名、年龄、性别、学号等基本信息,并保存到系统中。
2. 修改学生信息:可以根据学生的学号或姓名,修改学生的基本信息。
3. 查询学生信息:可以根据学生的学号、姓名、年龄、性别等条件,查询学生的基本信息。
4. 删除学生信息:可以根据学生的学号或姓名,将学生的基本信息从系统中删除。
技术选型为了实现学生信息管理系统的需求,我们选择使用C语言进行开发。
C语言是一种高效、可靠的编程语言,有着丰富的开发资源和庞大的用户群体。
在开发过程中,我们采用了以下技术选型:- 编程语言:C语言C语言作为一种结构化的编程语言,具有强大的计算能力和灵活的控制语句,非常适合开发类似学生信息管理系统这样的小规模应用。
代码结构学生信息管理系统的代码结构如下:cinclude <stdio.h>struct Student {char name[50];int age;char gender[10];int student_id;};void add_student(struct Student *students, int *count) {添加学生信息的代码逻辑}void modify_student(struct Student *students, int count) {修改学生信息的代码逻辑}void query_student(struct Student *students, int count) {查询学生信息的代码逻辑}void delete_student(struct Student *students, int *count) {删除学生信息的代码逻辑}int main() {struct Student students[100];int count = 0;主程序逻辑,包括用户界面等}在代码结构中,我们定义了一个`Student`结构体,用于存储学生的基本信息。
C语言上机实验报告--学生信息管理系统设计__内附源代码
C语言上机实验报告------学生信息管理系统设计姓名:学号:班级:指导老师:学院:学校:C语言上机实验报告------学生信息管理系统设计一、实验题目学生信息管理系统设计学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。
试设计一学生信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)---输入(3)学生信息浏览功能---输出(4)查询、排序功能---算法(5)按学号查询(6)按姓名查询(7)学生信息的删除与修改(可选项)二、本课程的地位、作用与目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。
希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。
三、分析过程1、能够实现对学生基本信息数据的增加和删除2、实现对录入保存后的学生基本信息进行格式化浏览3、提供学号和姓名两种方式对学生基本信息数据的查询4、能够对随机输入的学生基本信息数据按学号进行排序5、学生信息数据保存在文件中,方便数据的多次使用为了实现以上功能,必须设计的函数如下:录入函数、查询函数(分为姓名查询和学号查询)、删除函数、排序函数和几个菜单绘制函数等四、实验源代码:#include <stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<time.h>#define num 12//定义学生结构体typedef struct student{int id;char name[num];int age;char sex[4];struct birth{int year;int month;int day;}date;char add[30];int phone;}stu;//功能选择菜单void menu(){printf("\n");printf("\n");printf(" 学生信息管理系统\n");printf("\n");printf("********************************************************************* **\n");printf(" ==============1.学生信息录入 2.学生信息浏览===============\n");printf("\n");printf(" ==============3.学号查询信息 4.姓名查询信息===============\n");printf("\n");printf(" ==============5.按学号排序 6.删除学生信息===============\n");printf("\n");printf(" ============== 0.退出系统===============\n");printf("\n");printf("\n");printf("********************************************************************* *\n");printf("\n");printf(" 按编号选择对应功能\n");printf("\n");printf(" +++++++++++++++++++ XXXXXXX制作+++++++++++++++++++++\n");printf("\n");}//修改菜单void printmenu(){printf("********************************************************* **\n");printf("-------1.完全修改 2.学号修改---------");printf("-------3.姓名修改 4.性别修改---------");printf("-------5.生日修改 6.地址修改---------");printf("-------7.电话修改 0.退出修改---------");printf("********************************************************* **\n");}//取当前时间int nowtime(){struct tm *local;time_t t;t=time(NULL);local=localtime(&t);return local->tm_year+1900;//求出当前时间的年份}//输出文件中学生信息void print(char *file){stu temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("打开文件%s失败!\n",file);return;}printf("文件%s中学生信息如下:\n",file);printf("%8s%8s%6s%6s%8s%4s%4s%16s%12s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");fseek(fp,0,SEEK_SET);//从文件开始为之读取while(fread(&temp,sizeof(stu),1,fp))printf("%8d%8s%6d%6s%8d%4d%4d%16s%12d\n",temp.id,,temp.age,t emp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,temp.ph one);//格式化输出学生信息fclose(fp);//关闭文件}void luru(char *file){int count,sexnum,i=0,m;stu temp,temp1;FILE *fp=fopen(file,"a+");//追加方式打开文件if(fp==NULL){printf("打开文件%s失败!",file);return;}printf("请确定本次需要录入几名学生信息:");scanf("%d",&count);for (i=0;i<count ;i++ ){printf("录入要写入文件%s的第%d名学生信息\n",file,i+1); Repeat:printf("请输入学号:");m=scanf("%d",&temp.id);if (m==0){printf("输入的数据不是整型数据!\n");fflush(stdin);//清除缓存goto Repeat;}fseek(fp,0,SEEK_SET);//从文件开始位置读取while(fread(&temp1,sizeof(stu),1,fp)){if (temp1.id==temp.id)//判断学号是否已存在{printf("学号已存在!\n");goto Repeat;}//若学号已存在,返回继续读取学号}printf("请输入姓名:");scanf("%s",);printf("请输入性别:0为女生,1为男生:");{scanf("%d",&sexnum);if (sexnum==1) strcpy(temp.sex,"男");else strcpy(temp.sex,"女");}printf("请输入出生年月日:");scanf("%d%d%d",&temp.date.year,&temp.date.month,&temp.date.day);temp.age=nowtime()-temp.date.year;printf("请输入地址:");scanf("%s",&temp.add);printf("请输入联系电话11位:");scanf("%d",&temp.phone);if(!fwrite(&temp,sizeof(stu),1,fp)){printf("向文件%s写入信息失败!\n",file);return;}}printf("向文件%s写入信息成功!\n",file);fclose(fp);}int IsEmpty(FILE *fp){int len;fseek(fp,0,SEEK_END);//指针移动到文件尾len=ftell(fp);//取指针的文职获取长度return(len==0)?1:0;//0代表文件为空}void idsearch(char *file){int findid;stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}printf("输入要查找学生的学号:");scanf("%d",&findid);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if(temp.id==findid){printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到学号为%d的学生的信息!",findid);return;fclose(fp);}void namesearch(char *file){char name[num];stu temp;FILE *fp=fopen(file,"r");if (fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先输入学生信息!");return;}printf("输入要查找的学生的姓名:");scanf("%s",name);fseek(fp,0,SEEK_SET);while(fread(&temp,sizeof(stu),1,fp)){if (!strcmp(,name)){printf("下面是姓名为%s的学生的信息:\n",name);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",temp.id,,temp.a ge,temp.sex,temp.date.year,temp.date.month,temp.date.day,temp.add,tem p.phone);//格式化输出学生信息return;}}printf("没有找到姓名为%s的学生的信息!",name);fclose(fp);}//排序函数void paixu(char *file){int i,j,k,len;stu s[num],temp;FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入信息!");return;}fseek(fp,0,SEEK_END);//指针移动到文件末尾len=ftell(fp)/sizeof(stu);fseek(fp,0,SEEK_SET);for(i=0;i<len;i++)fread(s+i,sizeof(stu),1,fp);fclose(fp);for(i=0;i<len;i++){k=i;for(j=i+1;j<len;j++){if(s[j].id<s[k].id)k=j;}if(k!=i){temp=s[i];s[i]=s[k];s[k]=temp;}}printf("下面是按学号从小到大顺序排序后的学生的信息:\n");printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");for(i=0;i<len;i++)printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息remove("学生信息表.txt");//删除以前存放数据的文件fp=fopen(file,"w");for(i=0;i<len;i++)fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}//删除函数void shanchu(char *file){int i=0,len,del;stu s[num];FILE *fp=fopen(file,"r");if(fp==NULL){printf("文件无法打开!");return;}if(IsEmpty(fp)){printf("文件为空,请先录入学生信息!");return;}printf("输入需要删除的学生的学号:");scanf("%d",&del);fseek(fp,0,SEEK_SET);while(fread(s+i,sizeof(stu),1,fp)){if(s[i].id==del){printf("下面是按学号为%d的学生的信息:\n",del);printf("%8s%8s%6s%6s%8s%4s%4s%16s%11s\n","学号","姓名","年龄","性别","出生年","月","日","地址","电话");printf("%8d%8s%6d%6s%8d%4d%4d%16s%11d\n",s[i].id,s[i].name,s[i].a ge,s[i].sex,s[i].date.year,s[i].date.month,s[i].date.day,s[i].add,s[i ].phone);//格式化输出学生信息i=i-1;}i++;}fclose(fp);len=i;fp=fopen(file,"w");fseek(fp,0,SEEK_SET);for(i=0;i<len;i++) //删除后重写文件fwrite(s+i,sizeof(stu),1,fp);fclose(fp);}void main(){int key;char file[]={"学生信息表.txt"};do{menu();printf("选择对应功能操作:");scanf("%d",&key);switch(key){case 1:luru(file);break;case 2:print(file);break;case 3:idsearch(file);break;case 4:namesearch(file);break;case 5:paixu(file);break;case 6:shanchu(file);break;case 0:exit(0);default:printf("选择错误,请重新选择!");}printf("\n");printf("按任意键返回上级菜单!");getch();fflush(stdin);system("cls");}while (key!=0);}五.实验过程及结果:1.程序主菜单运行界面2.学生信息录入运行界面3.学生信息浏览运行界面4.学生学号查询运行界面5.学生姓名查询运行界面6.按学号排序运行界面第一次出现乱码,改正后运行如第二张图片所示7.删除学生信息运行界面六、感想在本次实验的过程中,出现了各种各样的问题。
最新《C语言程序设计》综合性实验实验报告
最新《C语言程序设计》综合性实验实验报告实验目的:1. 巩固和加深对C语言程序设计基础知识的理解。
2. 掌握C语言的基本编程技巧和程序调试方法。
3. 提高解决实际问题的编程能力,培养综合运用C语言进行程序设计的能力。
实验内容:1. 实现一个基本的学生信息管理系统,包括学生信息的录入、查询、修改和删除功能。
2. 设计并编写一个简单的文本编辑器,支持文本的增删改查操作。
3. 开发一个计算器程序,能够进行基本的四则运算以及复杂运算如指数、开方等。
4. 利用C语言的文件操作功能,实现文件的读写操作,并对文件内容进行处理。
实验环境:- 操作系统:Windows 10- 编程工具:Code::Blocks IDE- 编译器:GCC 9.3.0实验步骤:1. 学生信息管理系统:- 设计学生信息的数据结构,包括学号、姓名、年龄、成绩等。
- 使用数组或链表存储学生信息。
- 实现用户界面,提供简单的文本菜单供用户选择操作。
- 对学生信息进行增删改查的函数实现。
- 测试程序,确保所有功能正常运行。
2. 简单文本编辑器:- 设计文本编辑器的基本功能,如打开文件、保存文件、文本输入输出等。
- 实现文本的插入、删除、查找和替换功能。
- 提供友好的用户界面,支持命令行操作。
- 对程序进行单元测试,确保文本编辑的准确性和稳定性。
3. 计算器程序:- 设计计算器的用户界面,支持用户输入运算表达式。
- 实现基本的四则运算功能。
- 扩展支持指数、开方等复杂运算。
- 对计算器进行测试,验证计算结果的准确性。
4. 文件处理程序:- 实现文件的打开、读取、写入和关闭功能。
- 设计文件内容处理功能,如统计文件中的单词数量、查找特定字符串等。
- 编写用户友好的命令行界面,方便用户操作。
- 对文件处理程序进行全面测试,确保文件操作的安全性和可靠性。
实验结果:通过本次综合性实验,成功实现了学生信息管理系统、文本编辑器、计算器和文件处理程序。
所有程序均通过了功能测试和性能测试,满足了实验的基本要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计学校:学院:班级序号:学号:姓名:指导老师:C语言程序设计报告一、C语言课程设计的目的:高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。
其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力。
二、题目学生选修课程系统设计假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验或商机学时、血粉、开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
1、要求:试设计一个选修课程系统,使之能提供以下功能:(1)系统以菜单方式工作。
(2)课程信息和学生选课信息输入功能(课程信息用文件保存)——输入。
(3)课程信息浏览功能——输出。
(4)查询功能(至少一种查询方式)——算法。
(5)按学分查询。
(6)某门课程学生选修情况(可选项)。
2、分析:由于题目要求将学生的选课信息用结构体形式输入,并写入文件中,所以应提供文件的输入输出等操作:在过程中需有浏览、插入、修改、查找、删除学生选课信息等操作,顾应分别建立个功能模块;另外还应提供键盘式选择菜单实现程序运行。
3、总体设计:根据题目要求,可以将系统分为六个模块:1)系统以菜单方式工作模块;2)课程信息与学生选课信息录入功能模块;3)课程信息浏览功能模块;4)查询模块;5)按学分查询模块;6)某些课程学生选修情况模块。
4详细设计:#include <stdio.h>#include <stdlib.h> 主流程图:#include <string.h> Array typedef struct subjects{int num;char name[20];char kind[10];int stime;int ttime;int etime;int score;int term;struct subjects *next;}SUB;SUB *create_form(){SUB *head,*tail,*p;int num,stime,ttime;int etime,score,term;char name[20],kind[10];int size=sizeof(SUB);head=tail=NULL;printf("输入选修课程信息:\n");scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttime,&etime, &score,&term);while(num!=0){p=(SUB *)malloc(size);p->num=num;strcpy(p->name,name);strcpy(p->kind,kind);p->stime=stime;p->ttime=ttime;p->etime=etime;p->score=score;p->term=term;if(head==NULL)head=p;elsetail->next=p;tail=p;scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttim e,&etime, &score,&term);}tail->next=NULL;return head;}void savefile(SUB *head)SUB *p;FILE *fp;fp=fopen("subjects.txt","w");fprintf(fp,"课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期\n");for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);fclose(fp);}void savefileadd(SUB *head){SUB *p;FILE *fp;fp=fopen("subjectsadd.txt","w");fprintf(fp,"课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期\n");for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);fclose(fp);}void savefiledel(SUB *head){SUB *p;FILE *fp;fp=fopen("subjectsdel.txt","w");fprintf(fp,"课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期\n");for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);fclose(fp);}void prin(SUB *head){SUB *ptr;if(head==NULL){printf("没有此门课程记录!\n");return;}printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");for(ptr=head;ptr;ptr=ptr->next)printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind, ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);}{int a,num;int t=1;char type[10];char ch='a',ch1;SUB *ptr;while(ch!=' '){printf("若要按课程性质查找请输入1,若要按学分查找请输入2:\n");scanf("%d",&a);switch(a){case 1:printf("请输入要查找的课程的性质:\n");scanf("%s",type);printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");for(ptr=head;ptr;ptr=ptr->next)if(strcmp(type,ptr->kind)==0){printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind, ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);t=0;}if(t) printf("未找到!\n");t=1;break;case 2:printf("输入要查找的课程的学分\n");scanf("%d",&num);printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");for(ptr=head;ptr;ptr=ptr->next)if(ptr->score==num){printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind, ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);t=0;}if(t) printf("未找到!\n");t=1;}printf("继续查找请按回车键,结束请按空格键:\n");ch1=getchar(); //将回车键赋给CH1,否则CASE里面最后输入的回车键会赋给CH,因此用CH1填补。
ch=getchar();}}SUB *insert(SUB *head){SUB *ptr,*ptr2,*subj;int size=sizeof(SUB);char ch='a',ch1;while(ch!=' '){subj=(SUB *)malloc(size);ptr=subj;printf("输入要插入的课程信息:\n");scanf("%d%s%s%d%d%d%d%d",&subj->num,subj->name,subj->kind,&subj->sti me,&subj->ttime,&subj->etime,&subj->score,&subj->term);if(head==NULL){head=ptr;head->next=NULL;}else{for(ptr2=head;ptr2;ptr2=ptr2->next)if(ptr2->next==NULL){ptr2->next=subj;subj->next=NULL;break;}}printf("继续插入请按回车,结束请按空格:\n");ch1=getchar(); //将回车键赋给CH1,否则subj->term输完后输入的回车键会赋给CH,因此用CH1填补。