printf(\"%d\\",k); n++;if(n%7==0) printf(\"\\n\"); }
printf(\"\\n\");
printf(\"------请输入菜单项------\\n\"); return 0; }
int f4() {
int a,b,c,d;
printf(\"水仙花数是:\\n\"); for(a=100;a<1000;a++) {
b=a/100; c=a/10-b*10; d=a%10;
if(a==b*b*b+c*c*c+d*d*d) printf(\"%d \",a); }
printf(\"\\n\");
printf(\"------请输入菜单项------\\n\"); return 0; }
int f5() {
8
int n,s,i,max,min;
printf(\"请输入数据的个数n:\\n\"); scanf(\"%d\",&s);
printf(\"请输入这%d个数:\\n\",s); scanf(\"%d\",&i); max=i;min=i; for(n=s;n>1;n--) { scanf(\"%d\",&i); if(maxi) min=i;}
printf(\"这%d个数中,最大的数是%d,最小的数是%d.\\n\",s,max,min); printf(\"------请输入菜单项------\\n\"); return 0; }
int main() {
int a;
printf(\"**************************\\n\"); printf(\"主菜单:\\n\");
printf(\"1.字母数字转换\\n\"); printf(\"2.奖金发放\\n\"); printf(\"3.打印月历\\n\"); printf(\"4.打印水仙花\\n\");
printf(\"5.查找最大最小数\\n\"); printf(\"6.退出\\n\");
printf(\"**************************\\n\"); printf(\"------请输入菜单项------\\n\"); while(scanf(\"%d\",&a)!=EOF&&a!=6) switch(a) {
case 1:f1();break; case 2:f2();break; case 3:f3();break; case 4:f4();break; case 5:f5();break; default:main(); }
return 0; }
9
实验2:学生信息管理系统课程设计
一、 课程设计内容与要求
编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。每个学生的信息包括:学号、姓名、性别、班级、3门课程的成绩。系统功能模块如图2.1所示。
图2.1 学生信息管理系统功能模块图
1.主菜单设计
使用printf函数设计一个如下格式的主菜单:
**************************************************************************** 1:数据输入 2:数据修改 3:数据的处理 4:数据输出 5:退出
****************************************************************************
在主菜单程序中,应该能够根据输入的数字来执行相应的选项,即:输入1~4时执行菜单对应选项内容,执行完相关内容返回显示主菜单;输入5时结束程序运行;输入1~5之外的其它信息,提示输入错误。每一个菜单要完成的任务由下面的2~ 6依次给出。
2.数据输入
编写一个函数完成学生信息的输入功能,当学号输入为0时结束信息输入。每个学生的信息包括如下几个方面:学号、姓名、性别、班级、以及语文、数学、英语三门课程成绩。
3.数据输出
编写一个函数完成学生信息的输出功能。要求该函数能够将学生的当前各项信息按照较为整齐的格式输出。
4.数据修改
编写一个函数完成学生信息的修改功能。要求该函数能够以学号为查询关键字,将满足查找条件的学生信息显示输出,并以菜单形式提供可供修改的项目,选择项目并完成修改;如果无满足查找条件的记录,则提示“无该学号学生记录!”。
5.数据处理
编写一个函数完成学生信息的处理功能。数据处理:可以选择的处理方式为:排序、查询、统计。其中:
a) 排序:按学号排序;
b) 查询:根据学号查询该学生的所有信息;
c) 统计:可以选择统计各学生的平均成绩或统计所有存在不及格科目的学生。
10
提示:可以将该模块分解成更小的几个子模块来实现。每个子模块通过定义不同的函数来完成其功能。 6.退出
当在主菜单中选择了5退出时,输出“谢谢使用!”,结束整个程序的运行。 二、需求分析
1. 程序的功能:
编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。 2. 测试数据:学号、姓名、性别、班级、3门课程的成绩。 三、详细设计
1. 用C语言定义相关的数据类型
struct student_list {
int number; //学生学号 char name[10]; //学生姓名 char sex[2]; //学生性别 int classes; //学生班级
float china; //学生的语文成绩 float math; //学生的数学成绩 float english; //学生的英语成绩 }
2. 画出函数的调用关系图
主函数
1:数据输入 ()
2:数据修改 ()
1:排序
3:数据的处理 () 2:查询
4:数据输出 () 3:统计
1:统计平均分 2:统计不及格学生信息
四、调试分析
1)对数组的掌握不够透彻,通过调试后对数组有了进一步了解;
2)会存在一些非智力因素造成的错误,通过多次的细心观察找出了一些小错误,并谨防下次再犯。
五、使用说明及测试结果
数据输入运行结果示例如图2.2所示:
11
图2.2 数据输入运行结果
数据输出运行结果示例如图2.3所示:
图2.3 数据输出运行结果
数据修改的运行结果示例如图2.4所示:
12
图2.4 数据修改的运行结果
数据处理中排序操作的运行结果示例如图2.5所示:
图2.5 数据排序的运行结果
数据处理中查询操作的运行结果示例如图2.6所示:
13
图2.6 数据查询的运行结果
数据处理中统计操作的运行结果示例如图2.7所示:
图2.7 数据统计的运行结果
退出程序运行结果示例如图2.8所示:
14
图2.8 退出程序的运行结果
实验二
#include #include struct student{ long num;char name[25]; char sex; int bj; float yw; float sx; float yy; };
struct student stu[50]; int n=1,i;
void print_m0() {
printf(\"****************************************************************************\\n\");
printf(\"1:数据输入 2:数据修改 3:数据处理\\n\"); printf(\"4:数据输出 5:退出系统\\n\");
printf(\"****************************************************************************\\n\");
printf(\"请选择需要进行的操作(1~5):\"); }
void print_m1() {
printf(\"****************************************************************************\\n\");
printf(\"1:按学号排序 2:查询 \\n\"); printf(\"3:统计 4:返回主菜单 \\n\");
printf(\"****************************************************************************\\n\");
printf(\"请选择具体的处理内容(1~4):\");
15
}
void print_m2() {
printf(\"****************************************************************************\\n\");
printf(\"1:统计平均分 2:统计不及格学生信息 3:返回 \\n\");
printf(\"****************************************************************************\\n\");
printf(\"请再选择具体的处理内容(1~3):\"); }
void print_m3(){
printf(\"学号 姓名 性别 班级 语文 数学 英语 \\n\");
printf(\"--------------------------------------------------------\\n\"); }
void xj() {
while(1){
printf(\"请输入第%d个学生的学号(输入0结束):\",n); scanf(\"%ld\",&stu[n].num); if(stu[n].num==0) return;
printf(\"请输入第%d个学生的姓名:\",n); scanf(\"%s\",&stu[n].name); getchar();
printf(\"请输入第%d个学生的性别:\",n); scanf(\"%c\",&stu[n].sex);
printf(\"请输入第%d个学生的班级:\",n); scanf(\"%d\",&stu[n].bj);
printf(\"请输入第%d个学生的语文成绩:\",n); scanf(\"%f\",&stu[n].yw);
printf(\"请输入第%d个学生的数学成绩:\",n); scanf(\"%f\",&stu[n].sx);
printf(\"请输入第%d个学生的英语成绩:\",n); scanf(\"%f\",&stu[n].yy); n++; } }
void print() {
print_m3();
for(i=1;i16printf(\"%-8ld%-8s%-8c%-8d%-8.2f%-8.2f%-8.2f\\n\",stu[i].num,stu[i].name,stu[i].sex,stu[i].bj,stu[i].yw,stu[i].sx,stu[i].yy); }
void px()
{ int j;
struct student t; system(\"cls\"); for(i=1;ifor(j=i+1;jif(stu[i].num>stu[j].num) {t=stu[i];
stu[i]=stu[j]; stu[j]=t; }
printf(\"排序后结果为:\\n\"); print(); }
void cx() {
int num;
printf(\"输入要查询的学生的学号:\"); scanf(\"%ld\",&num); for(i=1;iif(stu[i].num==num){ print_m3();printf(\"%-8d%-8s%-8c%-8d%-8.2f%-8.2f%-8.2f\\n\",stu[i].num,stu[i].name,stu[i].sex,stu[i].bj,stu[i].yw,stu[i].sx,stu[i].yy); return; } }
printf(\"\\n\无该学号学生记录!\\n\"); }
void xg() {
long num;
printf(\"请输入要修改信息的学生的学号:\"); scanf(\"%ld\",&num); for(i=1;iif(stu[i].num==num){17
printf(\"------------------------------------------------\\n\"); printf(\"1:学号 2:姓名 3:性别 4:班级 \\n5:语文成绩 6:数学成绩 7:英语成绩 8:退出修改 \\n\");
printf(\"------------------------------------------------\\n\"); printf(\"请选择要修改的项目(1~8)\"); while(scanf(\"%ld\",&num)) {
switch(num){ case 1:{
printf(\"请输入该学生的新学号\"); scanf(\"%ld\",&stu[i].num);break; } case 2:{
printf(\"请输入该学生的新姓名:\"); scanf(\"%s\",stu[i].name);break; } case 3:{
printf(\"请输入该学生的新性别:\"); getchar();
scanf(\"%c\",&stu[i].sex);break; } case 4:{
printf(\"请输入该学生的新班级:\"); scanf(\"%d\",&stu[i].bj);break; } case 5:{
printf(\"请输入该学生的新语文成绩:\"); scanf(\"%f\",&stu[i].yw);break; } case 6:{
printf(\"请输入该学生的新数学成绩:\"); scanf(\"%f\",&stu[i].sx);break; } case 7:{
printf(\"请输入该学生的新英语成绩:\"); scanf(\"%f\",&stu[i].yy);break; }
case 8:return; }
print_m3();
printf(\"%-8ld%-8s%-8c%-8d%-8.2f%-8.2f%-8.2f\\n\",stu[i].num,stu[i].
18
name,stu[i].sex,stu[i].bj,stu[i].yw,stu[i].sx,stu[i].yy);
printf(\"------------------------------------------------\\n\"); printf(\"1:学号 2:姓名 3:性别 4:班级 \\n5:语文成绩 6:数学成绩 7:英语成绩 8:退出修改 \\n\");
printf(\"------------------------------------------------\\n\"); printf(\"请选择要修改的项目(1~8)\"); } } }
printf(\"\\n\\查无此学生记录\\n\"); }
void pjs() {
printf(\"所有学生的平均成绩是:\\n\"); printf(\"学号 姓名 平均 \\n:\"); printf(\"-----------------------------\\n\"); for(i=1;iprintf(\"%-8ld%-8s%-8.2f\\n\",stu[i].num,stu[i].name,(stu[i].yw+stu[i].sx+stu[i].yy)/3); } }void bjg() {
printf(\"有不及格科目的学生是:\\n\"); print_m3();
for(i=1;iif(stu[i].yw<60||stu[i].sx<60||stu[i].yy<60)printf(\"%-8d%-8s%-8c%-8d%-8.2f%-8.2f%-8.2f\\n\",stu[i].num,stu[i].name,stu[i].sex,stu[i].bj,stu[i].yw,stu[i].sx,stu[i].yy); } }
void tj() {
int x;
print_m2();
while(scanf(\"%d\",&x)) switch(x){
case 1:pjs();print_m2();break; case 2:bjg();print_m2();break; case 3:system(\"cls\");return;
19
} }
void cl() {
int x;
print_m1();
while(scanf(\"%d\",&x)){ switch(x){
case 1:px();print_m1();break; case 2:cx();print_m1();break; case 3:tj();print_m1();break; case 4:system(\"cls\");return; } } }
int main(){ int x;
print_m0();
while(scanf(\"%d\",&x)) switch(x){
case 1:xj();print_m0();break; case 2:xg();print_m0();break; case 3:cl();print_m0();break; case 4:print();print_m0();break; case 5:exit(0); } }
20
《程序设计》课程设计评分表
项 目 完成情况(50%) 评 分 课程设计报告的质量(30%) 考勤与表现(20%) 综合评分
指导教师签名:
日 期:_ 年 月 日_
21