用c语言编制万年历一个学生的选课及学籍管理程序

C语言课程设计学生选课系统_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言课程设计学生选课系统
上传于||文档简介
&&语​言​C​语​言​进​行​学​生​选​课​系​统​的​设​计​,​完​成​选​课​,​浏​览​课​程​,​管​理​员​登​陆​修​改​课​程​等​功​能​。
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩29页未读,继续阅读
你可能喜欢C语言程序设计报告——职工信息管理系统
目&&&&&&&&录
一、课程设计目的……………………………………………………3
二、设计题目分析……………………………………………………3
2.1题目简介………………………………………………………&3
2.2设计要求………………………………………………………&3
三、课程设计内容……………………………………………………3
3.1总体设计………………………………………………………&3
3.2详细设计………………………………………………………&4
3.3调试与测试……………………………………………………&12
四、设计心得与总结:………………………………………………13
五、附录(完整源程序清单)&…………………………………………14
六、小组成员分工说明………………………………………………21
&职工信息管理系统
一、课程设计目的
通过亲自设计程序,可以令我们熟悉c语言操作,更熟练的掌握c语句。初步体会编程的过程,为将来的程序深入学习打下基础和培养兴趣。
二、设计题目分析
2.1&题目简介
可以向文件中写入、删除、添加职工信息,也可以从文件中导出来浏览
2.2&设计要求
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计职工信息管理系统,使之能提供以下功能:
系统以菜单方式工作。
职工信息录入功能(职工信息用文件保存)--输入
职工信息浏览功能&--输出
查询和排序功能:(至少一种查询方式)&&--算法
&&&&&&按职工号查询
&&&&&&按学历查询等
职工信息删除、添加功能
三、课程设计内容
3.2&详细设计:
1、主函数:main()
  显示系统工作菜单,罗列该系统所有功能。先声明所有将会调用到的函数名。再运用选择函数switch即可根据使用者所输入的功能代号进入对应的功能程序。亮点:定义一个全局指针变量*p和全局变量a。其中a表示当前系统中职工人数,p指向a的地址,追踪人数变化,这样在添加或者删除导致人数变化后,浏览函数display()能够正确显示出当前人数的职工信息。宏定义define&&N指定首次输入的职工人数,可根据不同需要随时更改。
3、保存函数:void&save(int&m)
  定义文件指针fp,用fopen"只写"打开指定在D盘的“d://bbb.txt”文本文件。首先用if语句判断文件是否打开成功,若fopen返回值不为0,则可继续下面操作。用for循环通过fprintf语句将结构数组em中的内容写入保存在D盘的文本文件里面。形参m指需要写入文件的职工人数。最后关闭文件。
&&&&&&&&&&
4、导出函数:void&load(int&b)
&&&&首先判断fopen"只读"打开“d://bbb.txt”是否成功,若其返回值不为零,继续下面操作。用for循环通过fscanf语句将文件中的职工信息取出放到em结构数组里面。形参b指需要导出的职工人数。最后关闭文件。
&&&&&&&&&&
5、浏览函数void&display(int&a)
&&&声明整形变量i和b,其中i记录输出的职工序数,b用来接收调用浏览函数时所传递过来的实参,接着将其值传递给导出函数load(b),使得导出的职工人数与浏览的职工人数保持一致。通过调用load函数后(即给em数组附值),用for循环输出每个职工的各种信息。
8、按姓名查询void&search_name()
&&&&声明整形变量i和字符形数组name[20],调用导出函数load(*p),用scanf语句输入要查询的职工名字(字符串)放在数组name里面。用for循环,循环主体是先判断em.name中是否有输入的职工姓名,如果有,用printf语句输出与职工名字相对应的该职工所有信息,再跳出循环;如果没有,输出“查无此人”,并调用search()返回查询菜单。
流程图同上
9、按学历查询void&search_xueli()
&&&&声明整形变量i,k=0,char形数组xueli[20]。调用导出函数load(*P),用scanf语句输入要查询的职工学历(字符串)放在数组xueli里面。考虑到与前两种查询方式不一样的是,可能有多个职工具有相同的学历,所以循环主体较之前稍有变化。即在判断并执行第一次后不用break,而是继续循环,直到找出所有该学历的职工。为解决输入错误而提示“查无此人”的问题,就需要再写一段for循环代码,通过计量数k记录循环的次数,若直到循环到最后一次仍无结果输出,则表示输入错误,这时用printf输出“查无此人”,并调用search()返回查询菜单。
流程图同上
10、,删除函数void&del(int&*b)
&&&&声明整形变量i,j,t,m,a和char形数组name[20]。其中给a附初始值a=*b,表示当前职工人数。首先调用浏览函数display(a),显示所有职工信息,便于使用者审阅需删除的对象。用printf语句提示“输入要删除的职工名字”,接着用scanf语句输入删除对象名字。用for循环,循环主体是先判断em.name中是否存在所输入的名字(调用字符串比较函数stecmp)。若存在,printf语句提示是否确认删除,用scanf语句输入确认指令,再用for循环从要删除的这个职工开始,依次用后一个职工的信息覆盖前一个的。循环结束后当前职工人数a自减1,并保存,跳出大循环;若不存在,输出“输入错误,无此人”。再将a的新值附给*b,实参p所指的人数地址中的人数也随即改变删除后的人数。printf提示下一步操作“继续删除请按1\n浏览信息请按2\n返回主菜单请按3”。switch根据键盘输入的指令代号选择下一步连接的函数。
11、添加函数void&add(int&*a)
&&&&声明整形变量i,n,m,定义文件指针fp,用追加的方式打开文件"d://bbb.txt",若打开失败,退出。若成功,继续下面操作。printf提示“输入要添加的人数”
scanf输入要添加的人数存放在n。用for循环输入要添加的职工信息,再用另一个for循环将输入的新信息追加写入"d://bbb.txt"文件保存。关闭文件。再调用switch语句选择下一步操作,并连接到相应函数。
流程图与删除函数类似。
3.3&调试与测试:。
遇到最大的问题是所有程序代码编完放在一起后,虽然能够成功运行,但使用时如果职工人数发生变化,会导致文件后部出现乱码。若要使每次运行都正常,必须在人数改变后退出程序,修改宏定义N的值。这样很不方便,不能够连续运行。为解决这一大问题,最后我想到了定义一个全局指针变量,用来追踪最新的人数。特别是删除和添加这两个会导致人数变化的函数中,全局指针变量p起了很大作用。经过一边修改一边调试,最终可以成功的用p串联整个函数,在连续运行时,总能根据最新的人数调用各个函数。另外在串联所有函数时,调试提示出错:有几个函数“&different&basic&types”解决:在函数名前加void指明类型。
整个程序代码是分块书写的,每个函数都可以独立运行。只有输入函数查询菜单函数写得很顺利,一次性就能够成功运行,其他函数在调试过程中或多或少都出现了问题。
1、保存函数save()在调试和链接的时候都没有出现错误提示,但在运行的时候出现了问题。写入指定位置的文件,打开后总会有乱码。与c语言课本上的例题对照后发现,我写的fopen("d://bbb","w")没有指定文件的存储类型。解决方法:在文件名bbb后面加上.txt后即可。
2、导出函数load()遇到两个问题。1是为图方便直接将保存函数复制过来进行修改时,忘了修改文件的打开方式,不能运行。经多次检查后终于发现了,解决:将只写"w"改为只读"r"。2是用fscanf语句时,漏写地址符。调试和链接都没问题,但点击运行后,总出现一个提示出错的蓝色小窗口。经老师提时候发现了错误所在。解决:在em[i].name等之前加上地址符。
3、浏览函数display()遇到的问题虽然不大,但解决起来很麻烦。理想的运行结果是美观整齐。即下面的职工信息分别与第一个printf输出的中文项目提示对齐。解决方法:不断修改空格个数,不断运行察看效果。
4、按学历查询函数search_xueli(),要考虑输入一种学历,可能对应出很多职工,这就不能延用按姓名和职工号查询中判断是否输入错误的方法了。为了显示出所有具有该学历的职工,就需要让for循环一直运行到最后一个为止。这时计量数i始终会等于职工人数,不能再用i来判断是否不存在此人。这就需要再定一个整形变量k,用来计量单独的一个循环次数。
5、删除函数del()的难点在于多次删除。即在删除掉第一个人以后,现有职工人数发生改变,而宏定义中的N却是不变的。最开始我想到了用static定义一个整形变量a来计量当前人数。这在单独运行删除函数时,可以成功的连续删除。最后所有函数串在一起时,有了更好的解决方法,全局指针。
6、添加函数add()遇到的问题是用printf输入新职工信息后,保存到文件里面,发现原有的信息不见了。解决:文件打开方式改用"a"追加写入。
四、设计心得与总结:
&&&&经过一学期的C语言学习,我们掌握了C语言的基础知识,能够读懂别人用c语言设计的程序。平时的程序设计大多是以填空的形式出现,虽然有所接触,但都不完全。而这两周的课程设计,却让我们完完全全用自己学到的知识编写一个完整的体统程序。这是一个新的挑战,也是一种新的学习。
&&&&我们组选择的是备选题目中的第一个——职工信息管理系统。这需要我们自己设计一个系统,可以输入信息,保存到文件里,再从文件里调出来,使之显示在屏幕上,进行删除、添加等对信息的修改。初看到这个题目觉得很简单,但当我做到电脑前准备开始编写代码的时候才发现无从下手。通过去图书馆查找程序设计相关的书籍,和上网参考前人编写的类似程序,我脑中才有了一个大概方向。
&&&&终于开始着手写下了第一段输入函数的代码,因为这是我们平时课堂上用的最多最熟的printf语句,写了很长一大段,调式运行竟然成功了,顿时信心倍增。于是我开始迫不及待的开始写第二段保存函数。我记得第一天下来,我只写好了这两个函数,但还是很开心,因为这是我编的第一个小系统的成功的开始!
&&&&接下来几天都在宿舍整个下午的对着电脑不断的编译、调试、修改,每次编好一个能够成功运行的程序,都会感到很欣慰,并增加继续下去的信心。当然其中也有遇到困难的时候。好几次遇到编好的程序调试没有错误,却偏偏不能运行这种情况,自己编的程序自己很难发现当中的错误,而电脑又没有提示,这时候就很受打击,也会着急。反复检查都找不出毛病来的时候就会有想要放弃的念头。有时候就直接关机去做别的事情,等再开始做程序的时候,才发现先前的错误所在。这时候会有一种“柳暗花明又一村”的欣慰感觉。总之,遇到困难,可以先放一放,让脑子休息一下,忘掉错误的记忆。或许等过段时间再回过头来,就会很容易的发现之前的错误了。随着编好的程序越多,累积的经验也越多,查找错误就越快了。还有会发现很多程序有很多相似之处,可以通过复制修改的发式来编写。虽然题目要求只需要一种查询方式,但当我编出规律之后自然就想多写两个,写完就会有很大的成就感了。
&&&&在课程设计的过程中,还有一件很倒霉的事。7月5号早上我们有一门考试,靠前还需要复习的那种。所以我打算4号早上写会儿程序,从下午开始就复习第二天要考的科目,结果从早上开始写删除函数的代码,一边调试,一边修改&,越来越接近成功,越激动越投入,等最后终于完成的时候猛然发现已经下午4点多了。乘着兴致高,一口气把添加函数也写出来了。虽然只能把复习挤到晚上进行,但因为编好了两个很难的程序代码,觉得这一天还是很有成就感的,很开心。结果不幸的是,等我第二天考完试回来打算继续编的时候,才发现之前辛辛苦苦编的两段代码没有保存。没办法,只能重新写。
&&&&&当所有功能函数都编好后,我用主函数将他们串起来,这是遇到最大的问题就是经过删除、添加后职工人数会发生变化。想了很久,又翻以前的课堂笔记,最后想到了定义全局指针变量来解决这个问题。这个问题的成功解决预示着我们的职工信息管理系统大功告成!
&&&&&&总之,经过这一次的课程设计,我们体会到了痛苦与快乐同存的感觉。当最后一次成功串联运行所有函数时,真的很开心。通过这次实践,我们能够更熟练掌握C语言,特别是循环和文件,当时在课堂上没有学太清楚的,这个程序设计之后都很明白了。同时增加了我们对程序设计的兴趣,暑假回家我还会尝试着做一些其他的小系统。
五、附录(完整源程序清单)
}em[N];&&&&&&&&&&&&&&&&&&&&&&&&&
int&a=N;&&&&&&&&&&&&&&&&&&&&&&&
int&*p=&a;&&&&&&&&&&&&&&&&&&&&&
void&save();&&&&&&&&&&&&&&
&&&&printf("&&&&&&&&******************职工信息管理****************\n");
printf("&&&&&&&&&&&&&&&&&&&&&&&&1.录入职工信息\n");
&&&&printf("&&&&&&&&&&&&&&&&&&&&&&&&2.浏览职工信息\n");
&&&&printf("&&&&&&&&&&&&&&&&&&&&&&&&3.查询职工信息\n");
&&&&printf("&&&&&&&&&&&&&&&&&&&&&&&&4.删除职工信息\n");
&&&&printf("&&&&&&&&&&&&&&&&&&&&&&&&5.添加职工信息\n");
&&&&printf("&&&&&&&&&&&&&&&&&&&&&&&&6.退出\n");
&&&&&&&case&1:printf("&&&&&&&&&&&&&&◆◆◆输入职工信息◆◆◆\n");printf("\n");input();main();
&&&&&&&case&2:printf("&&&&&&&&&&&&&&◆◆◆浏览职工信息◆◆◆\n");printf("\n");display(*p);main();
&&&&&&&case&3:printf("&&&&&&&&&&&&&&◆◆◆查询职工信息◆◆◆\n");printf("\n");search();&
&&&&&&&case&4:printf("&&&&&&&&&&&&&&◆◆◆删除职工信息◆◆◆\n");printf("\n");del(p);
&&&&&&&case&5:printf("&&&&&&&&&&&&&&◆◆◆添加职工信息◆◆◆\n");printf("\n");add(p);
void&input()&&&&&&&
printf("请输入职工号:&");
&&&&printf("请输入姓名:&&");
&&&&printf("请输入性别:&&");
&&&&printf("请输入年龄:&&");
&&&&printf("请输入学历:&&");
&&&&printf("请输入工资:&&");
&&&&printf("请输入住址:&&");
&&&&printf("请输入电话:&&");
printf("\n创建完毕!\n");
void&save(int&m)&&&&&&&&&&
printf("打开失败");
void&load(int&b)&&&&&&&&&&&&
printf("打开失败");
void&display(int&a)&&&&&&&&&&&
&&&&int&i,b=a;&&&&&&&&&&&&&&&&
load(b);&&&&&&&&&&&&&&&&
printf("\n职工号\t&&&&姓名\t性别\t年龄\t&学历\t&&&&&工资\t&&住址\t&&电话\n");
void&search()&&&&&&&&&&&&&
printf("\n按职工号查询按1\n按姓名查询请按2");
printf("\n按学历查询请按3\n返回主菜单请按4\n");
printf("\n按职工号查询\n");
search_number();&&&&&&&&&&&&&
printf("\n按姓名查询\n");
search_name();&&&&&&&&&&&&&&&
printf("\n按学历查询\n");
search_xueli();&&&&&&&&&&&&&&
case&4:main();&&&&&&&&&&&&&&&&&&
printf("输入错误,请重新输入!\n");
&&&&search();&&&&&&&&&&&&&&&&&&&&&&&&&
void&search_number()&&&&&&&&&&&&
load(*p);&&&&&&&&&&&&&&&&&
printf("\n请输入要查询的职工号:");
printf("\n该职工信息如下:\n");
printf("\n职工号\t&&&&姓名\t性别\t年龄\t&学历\t&&&&&工资\t&&住址\t&&电话\n");
printf("\n查无此人\n");
void&search_name()&&&&&&&&&&&
load(*p);&&&&&&&&&&&&&&&&&&
printf("\n请输入要查询的姓名:");
&&&&&&&&&&&&printf("\n该职工信息如下:\n");
printf("\n职工号\t&&&&姓名\t性别\t年龄\t&学历\t&&&&&工资\t&&住址\t&&电话\n");
printf("\n查无此人\n");
void&search_xueli()&&&&&&&&&&&&&&
load(*p);&&&&&&&&&&&&&&&&
printf("\n请输入要查询的学历:");
printf("职工号\t&&&&姓名\t性别\t年龄\t&学历\t&&&&&工资\t&&住址\t&&电话\n");
for(i=0;i&*p;i++)&&&&&&&&&&&&&&&&&
printf("\n查无此人\n");
printf("\n所有职工信息:\n");
&&&&display(a);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
printf("\n请输入要删除职工的名字:");
printf("\n确认删除请按1\n取消请按2\n");
{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
save(j);&&&&&&&&&&&&&
&&&&&printf("\n输入错误,无此人\n");
printf("\n继续删除请按1\n浏览信息请按2\n返回主菜单请按3\n");
&&&&&&&&case&1:del(p);&&&&&&&&&&
&&&&&&&&case&2:display(*b);main();&&&&&&
void&add(int&*a)&&&&&&&&&&&&&&&
printf("打开失败");
printf("\n请输入想添加的人数:\n");
for(i=*a;i&n+(*a);i++)&&&&&&&&&&&&&&&&&&&
printf("请输入职工号:&");
&&&&&&&&printf("请输入姓名:&&");
&&&&&&&&printf("请输入性别:&&");
&&&&&&&&printf("请输入年龄:&&");
&&&&&&&&printf("请输入学历:&&");
&&&&&&&&printf("请输入工资:&&");
&&&&&&&&printf("请输入住址:&&");
&&&&&&&&printf("请输入电话:&&");
printf("\n添加完毕\n");
*a=*a+n;&&&&&&&&&&&&&&&
printf("\n浏览新信息请按1\n返回主菜单请按2\n");
六、小组成员分工说明
编写程序代码:小美女
调式修改程序:xxx
编制设计报告:xxx
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。C语言大作业――学生信息管理系统_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言大作业――学生信息管理系统
上传于||暂无简介
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩56页未读,继续阅读
你可能喜欢学生信息管理系统C语言编程_中华文本库
第1页/共10页
学生信息管理系统C语言编程
【问题描述】
学生信息的管理是每个学校必须具有的管理功能,主要是对学生的基本情况及学习成绩等方面的管理。该系统模拟一个简单的学生管理系统,要求对文件中所存储的学生数据进行各种常规操作,如:排序、查找、计算、显示等功能。通过此课题,熟练掌握文件、数组、结构体的各种操作,在程序设计中体现一定的算法思想,实现一个简单的学生信息管理系统。
【基本要求】
(1)学生信息包括:
学生基本信息文件(student.txt)(注: 该文件不需要编程录入数据,可用文本编辑工具直接生成)的内容如下:
(2)学生成绩基本信息文件(score.dat)及其内容如下:((注: 该文件内容需要编程录入数据,具体做法见下面的要求)
学号 课程编号 课程名称
学分 平时成绩
(3)需要实现的功能
1)数据录入和计算功能: 对score.dat进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据, 综合成绩、实得学分由程序根据条件自动运算。
综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70% 。
实得学分的计算:采用等级学分制,综合成绩在90-100之间,应得学分=学分*100%;综合成绩在80-90之间,应得学分=学分*80%;综合成绩在70-80之间 ,应得学分=学分*75%; 综合成绩在60-70之间,应得学分=学分*60%;综合成绩在60以下 ,应得学分=学分*0%。
2)查询功能:分为学生基本情况查询和成绩查询两种
(1)学生基本情况查询:
①、输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出,格式如下: ②、输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。(格式如上所示)
(2)成绩查询:
①、 输入一个学号时,查询出此生的所有课程情况,格式如下:
课程编号:xxx
课程名称:xxxxx
综合成绩:xxxx
实得学分: xx
课程编号:xxx
课程名称:xxxxx
综合成绩:xxxx
实得学分: xx
课程编号:xxx
课程名称:xxxxx
综合成绩:xxxx
实得学分: xx
共修:xx科,实得总学分为: xxx
(3)删除功能:
提供待删除学生的学号,则在student.txt和score.dat中删除所有与该学生有关的信息。
(4)排序功能:能实现选择按综合成绩或实得学分升序或降序排序并显示数据。
【程序设计的具体说明】
(1) 将与两个文件对应的信息分别定义两种结构体类型来表示,也可以用类来定义;
(2) 对score.dat文件的写入,从键盘上输入的是前七项,后两项数据项根据计算方法算出后,得到完整的结构体信息,作为一个整体写入(可调用write函数)。
第1页/共10页
寻找更多 ""用C语言编写一个简单的学生信息管理程序,_百度知道
用C语言编写一个简单的学生信息管理程序,
姓名,性别,能实现对学生信息的简单管理:学号,每个学生的信 息包括。建立一个包含10名学生的信息登记表用C语言编写一个简单的学生信息管理程序
p>你好.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http://a; 这不是所有的要求吧://a.com/zhidao/wh%3D450%2C600/sign=0e24ad937ad98d0f759ee3d6d7502bcae4ade9c!&/zhidao/wh%3D600%2C800/sign=094b36dbc713eb93fc50e1/503dd6d7502bcae4ade9c?<a href="http,请把所有实现功能列一下.jpg" esrc="http,都要怎么管理://a.hiphotos./zhidao/pic/item/503dd6d7502bcae4ade9c.hiphotos.baidu.baidu
其他类似问题
为您推荐:
c语言的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 c语言程序 的文章

 

随机推荐