C语言程序设计报告 (2)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计报告《计算机程序设计基础》课程设计题目学生信息管理系统
学生姓名胡乔楠
学号
指导教师汤哲
学院信息科学与工程学院
专业班级电气0821班
完成时间七月四号
目录
第一章项目概述
1.1 问题的要求分析与描述
1.2 问题的要求和限制
第二章项目设计
2.1系统程序的组成框图
2.2 :程序的流程图
2.3 详细设计
第三章调试与结果
3.1调试方法
3.2 测试结果(见附录A、B)
第四章工作总结
附录A、B;
源代码;
参考文献;
第一章项目概述
1.1 问题的要求分析与描述
我设计一个学生信息管理系统。首先学生的信息包括:学号、姓名、年龄、性别、出生年月、家庭地址、电话号码、电子邮件、毕业学校等等。
这个管理系统需要实现以下功能:
1.系统以菜单的方式工作;
2.实现学生信息的录入功能,学生的信息保存在文件中;
3.实现学生信息的输出功能,输出功能应包括如下算法:
3_1:单个学生按学号查询功能;
3_2:单个学生按姓名查询功能;
3_2:全部学生的浏览功能;
3_3:全部学生按学号排序浏览功能;
4.实现学生信息的删除和修改;
1.2 问题的要求和限制
1:系统要美观,有欢迎界面;
2:在输入信息时要有一定的容错能力,比如年龄输入为负数或者大于150就提示有错,要求重新输入;
第二章项目设计
2.1系统程序的组成框图如下:
此变量来记录学生的个数。
2.3.2 main函数
所有的函数都写在main函数中并给他调用。Main函数中首先定义了一些整型数据,ch1、ch2、j、长整型数据“number”,字符数组“name”,文件指针。接着“printf”函数打印出一个欢迎界面。用死循环进入一个选择菜单,用户输入选项来运行系统。用“scanf”函数来给ch1赋值。接着程序就进入一个多分支if语句中。通过判断,程序运行进入相应的功能区。Ch1=0就会跳出此模块,返回上一模块。Ch1=1时,函数进入学生信息录入功能,用户输入学生的信息。在输入信息时会有容错能力。比如输入性别不是男或女,就会提示输入错误,要求用户重新输入;使用“fwrite”函数,使学生的信息保存在C盘中名为“INFORMATION.txt”的文档中。ch1=2时,函数进入学生信息查询功能。用户根据菜单输入信息进入相应的子功能。用户可以更具菜单选择相应的功能。Ch3=0,系统就会返回上一个功能。Ch3=1,系统就会按学生学号来查询学生信息,用户输入学号。若学号正确,则系统输出相应的学生信息。若错误,系统就提示用户学号错误,请重新输入。Ch3=2,系统就会按学生姓名来查询学生信息,用户输入姓名。若姓名正确,则系统输出相应的学生信息。若错误,系统就提示用户姓名错误,请重新输入。Ch3=3,系统进入学生信息浏览功能,同样有一个菜单供用户选择,1为浏览所有学生的信息。用“for”循环把所有学生的信息从文本中用“fread”函数读出来,在把所有结构体成员一一打
印出来。这时调用了一个“print(int l)”函数。在主函数中,把“i”传给“n”。2为按学号的顺序来浏览所有学生的信息,调用“paixu(int n)”函数。主函数把“i”的值传给“n”,实现学生的信息排序,并打印出来。同样,选择为0时就返回上一级菜单。若ch1=3,系统进入删除功能模块。此时调用了“deletes(int n)”,主函数把“i”的值传给“n”,实现学生信息的删除功能。若ch1=4,系统进入修改功能模块,此时调用了“changes()”,主函数实现学生信息的修改功能。(欢迎界面、开始菜单、容错能力、单个查询功能见附录A)
2.3.3print函数
“print(int l)”函数中,从主函数接收变量“i”,并把其值赋给“l”。“print(int l)”函数用“struct students *p1”,定义了一个结构体指针。接着用“printf”函数打印各个结构体的成员,“p1->num”等来表示成员。
2.3.4paixu函数
“paixu(int n)”从主函数接收变量“i”,并把其值赋给“n”。“paixu(int n)”中定义了两个整型数据,用来作为循环时的变量。以及两个结构体数组u[100]和v[100],一个文件指针。函数先用for循环和“fread”函数把文件中的数据读出来并赋值给u[100]。接着对u[100]来进行冒泡排序,v[100]作为中间变量来实现排序。排完后,把u[100]中的数据用“printf”函数打印出来。
2.3.5deletes 函数
“deletes(int n)”从主函数接收变量“i”,并把其值赋给“n”。“deletes(int n)”中定义了三个整型变量“j”、“k”和“chioce”,一个长整型变量“number”,一个结构体数组“struct students u[100]”,一个文件指针。函数先判断有没有学生信息被录入,如果没有,系统则自动返回。如果有,则要求用户输入要删除学生的学号。用“scanf”函数给“number”赋值,并判断文本中是否有此学生的信息,如果此学生的信息不存在,则系统会提示用户学生不存在,并自动返回。如果学生信息存在,则系统将打印学生的全部信息,并再一次提示用户是否要删除此学生。当用户选择1时,系统删除此学生信息,选择否时,系统将自动返回,学生信息改变。
2.3.6changes函数
“changes()”函数没有形参,直接对文件中的结构体进行修改。“changes()”函数中定义了两个文件指针“fp1”和“fp2”,一个长整型数据“number”,三个整形数据“j”“flag”“choice”。函数先判断有没有学生信息被录入,如果没有,系统则自动返回。如果有,则要求用户输入要修改学生的学号。“fp1”指向文本“INFORMATION.txt”,“fp2”在c盘中重新建立一个文本“change.txt”。用“fread”读出文本中的学生信息。用“scanf”函数给“number”赋值,并用“for”循环来判断文本中是否有此学生的信息,如果此学生的信息